CC=gcc RPATH=$(shell pwd) all: failing_weak_app failing_strong_app weak_lib: $(CC) -fPIC -shared -o libgetopt_weak.so getopt.c strong_lib: $(CC) -D__STRONG__ -fPIC -shared -o libgetopt_strong.so getopt.c working_weak_app: weak_lib $(CC) -Wl,-rpath,$(RPATH) -fPIC -o hidden_weak hidden.c -L. -lgetopt_weak ./hidden_weak -o out.o hidden.c failing_weak_app: weak_lib $(CC) -Wl,-rpath,$(RPATH) -fno-PIE -o bad_hidden_weak hidden.c -L. -lgetopt_weak ./bad_hidden_weak -o out.o hidden.c working_strong_app: strong_lib $(CC) -Wl,-rpath,$(RPATH) -fPIC -o hidden_strong hidden.c -L. -lgetopt_strong ./hidden_strong -o out.o hidden.c failing_strong_app: strong_lib $(CC) -Wl,-rpath,$(RPATH) -fno-PIE -o bad_hidden_strong hidden.c -L. -lgetopt_strong ./bad_hidden_strong -o out.o hidden.c clean: rm -f out.o hidden_weak bad_hidden_weak hidden_strong bad_hidden_strong libgetopt_weak.so libgetopt_strong.so