CXX=g++
CXXFLAGS=-O0 -g
LDFLAGS=-Wl,-rpath,.,-z,loadfltr
LD=g++
INIT=-E --no-whole-archive
INITCXX=
#INIT=-init initdso -E --no-whole-archive
#INITCXX=-Wl,-init,initdso

AR            = ar vru

all: main-s main-d


.SUFFIXES:	.cc .o

.cc.o:
	$(CXX) $(CXXFLAGS) -c $<

main-s:	main.o libmydso.a
	$(LD) $(LDFLAGS) -o $@ main.o libmydso.a
	
main-d:	libmydso.so main.o
	$(LD) $(LDFLAGS) -o $@ main.o -L. -lmydso

libmydso.so: dso.o
	$(LD) $(INITCXX) -shared -Wl,-E,--no-whole-archive -g $(LDFLAGS) -o $@ dso.o

libmydso.a: dso.o
	$(AR) $@ dso.o
	
libmydso2.so: dso.o
	ld  $(INIT) -rpath . -shared -o $@ dso.o

main-dd: libmydso2.so main.o
	$(LD) $(LDFLAGS) -o $@ main.o -L. -lmydso2

test: main-d main-s main-dd
	env LD_LIBRARY_PATH=. ./main-d
	./main-s
	env LD_LIBRARY_PATH=. ./main-dd

clean:
	rm -f *.o *.so *.a main-d main-dd main-s