LDSO_ADDR = 62f00000
LDSO_ENTRY = "(0x$(LDSO_ADDR)+32)"

STRIP 	= -s
CFLAGS 	= -Wall -O2 #-DDEBUG
LDFLAGS = -N $(STRIP)
LDLIBS 	= -lm

ALL 	= ldconfig ldd ld.so __load.o testi testf

all:	$(ALL)

install: all
	if [ -d /sbin ] ; then \
		install -c ldconfig /sbin ; \
	else \
		install -c ldconfig /etc ; \
	fi
	install -c ldd /usr/bin
	if [ -e /lib/ld.so ] ; then \
		ln -f /lib/ld.so /lib/ld.so.old ; \
	fi
	install -c ld.so /lib/ld.so.new
	ln -f /lib/ld.so.new /lib/ld.so
	rm /lib/ld.so.new
	if [ ! -e /etc/ld.so.conf -a -d /usr/X386 ] ; then \
		install -c -m 644 ld.so.conf /etc ; \
	fi
	ar rs /usr/lib/libc.a __load.o
	ar rs /usr/lib/libc.sa __load.o
	install -c -m 644 ldd.1 /usr/man/man1
	install -c -m 644 ldconfig.8 ld.so.8 /usr/man/man8

ldconfig: ldconfig.o
	$(CC) -static $(CFLAGS) $(LDFLAGS) $< -o $@

ldd:	ldd.o __load.o

ldd.o:
	$(CC) -c $(CFLAGS) -DLDSO_ADDR=$(LDSO_ENTRY) $*.c -o $@

ld.so: 	preld.o ld.so.o fixups.o fdprintf.o vsprintf.o ctype.o
	ld -static -o $@ -T $(LDSO_ADDR) $^ -lc $(STRIP)

__load.o:
	$(CC) -c $(CFLAGS) -DLDSO_ADDR=$(LDSO_ENTRY) $*.c -o $@

testi:	testi.o __load.o

testf:	testf.o __load.o

clean:
	rm -f $(ALL) *.o *~ core

dep .depend:
	$(CC) -M *.c > .depend

include .depend
