# fasm demonstration of dynamic linking

all: libmsg.so dltest dlopen

# Example using dynamic linking on startup

dltest: dltest.o
	gcc -o dltest dltest.o -L. -lmsg
dltest.o: dltest.asm
	fasm dltest.asm dltest.o

# Example using the libdl interface

dlopen: dlopen.o libmsg.o
	gcc -rdynamic -o dlopen dlopen.o -ldl
dlopen.o: dlopen.asm cdecl.inc
	fasm dlopen.asm dlopen.o

# The shared object used in both examples

libmsg.so: libmsg.o
	ld -shared -soname libmsg.so.1 -o libmsg.so.1.0 -lc libmsg.o
	ldconfig -v -n .
	ln -sf libmsg.so.1 libmsg.so
	cp libmsg* /usr/lib

libmsg.o: libmsg.asm
	fasm libmsg.asm libmsg.o
