CXX_SOURCES := main.cpp USE_LIBDL := 1 all: t2_0 t2_1 t1 a.out include Makefile.rules ifeq "$(OS)" "Darwin" # In macOS 12, dyld switched to using chained fixups. As a result, all # symbols are bound at launch and there are no lazy pointers any more. # Since we wish to import/dlopen() a dylib with missing symbols, we need # to use a weak import. This applies to all macOS 12-aligned OS releases, # e.g. iOS 15, etc. LINKFLAGS := "-Wl,-weak-lt2_0" else LINKFLAGS := "-lt2_0" endif t1: t2_0 $(MAKE) VPATH=$(SRCDIR) -f $(MAKEFILE_RULES) \ DYLIB_ONLY=YES DYLIB_C_SOURCES=t1.c DYLIB_NAME=t1 LD_EXTRAS="-L. $(LINKFLAGS)" t2_0: $(MAKE) VPATH=$(SRCDIR) -f $(MAKEFILE_RULES) \ DYLIB_ONLY=YES DYLIB_C_SOURCES=t2_0.c DYLIB_NAME=t2_0 t2_1: $(MAKE) VPATH=$(SRCDIR) -f $(MAKEFILE_RULES) \ DYLIB_ONLY=YES DYLIB_C_SOURCES=t2_1.c DYLIB_NAME=t2_1