LIBTOOL=libtool
CFLAGS=-g -O0

all: loader loader_static loader_stdcall loader_stdcall_static

loader: loader.lo libmodule.la
	$(LIBTOOL) --mode=link gcc $(CFLAGS) -o $@ $< libltdl.a -dlopen libmodule.la
loader_static: loader.lo libmodule.la
	$(LIBTOOL) --mode=link gcc $(CFLAGS) -static -o $@ $< libltdl.a -dlopen libmodule.la
loader_stdcall: loader_stdcall.lo libmodule_stdcall.la
	$(LIBTOOL) --mode=link gcc $(CFLAGS) -o $@ $< libltdl.a -dlopen libmodule_stdcall.la
loader_stdcall_static: loader_stdcall.lo libmodule_stdcall.la
	$(LIBTOOL) --mode=link gcc $(CFLAGS) -static -o $@ $< libltdl.a -dlpreopen libmodule_stdcall.la

clean:
	-$(LIBTOOL) --mode=clean rm -f loader loader_static loader_stdcall loader_stdcall_static
	-$(LIBTOOL) --mode=clean rm -f libmodule.la libmodule_static.la *.lo

libmodule.la: module.lo
	$(LIBTOOL) --mode=link gcc $(CFLAGS) -rpath / -no-undefined -avoid-version -o $@ $<

libmodule_stdcall.la: module_stdcall.lo
	$(LIBTOOL) --mode=link gcc $(CFLAGS) -rpath / -no-undefined -avoid-version -Wl,--kill-at -o $@ $<

%.lo: %.c
	$(LIBTOOL) --mode=compile gcc $(CFLAGS) -c -o $@ $<

%_stdcall.lo: %.c
	$(LIBTOOL) --mode=compile gcc $(CFLAGS) -DSTDCALL -c -o $@ $<






