#
# /emx/src/lib/startup/makefile
#
.INCLUDE: /emx/src/lib/libc.mak

.PHONY: o-crt o-crt-bsd obj-crt

ASM=gcc -c -Wall -x assembler-with-cpp
GCC_BSD=gcc -O2 -mprobe -DEMX $(LIBC_CCFLAGS) $(MT_CCFLAGS)

o-crt: $(L)crt0.o $(L)dll0.o $(L)mcrt0.o

o-crt-bsd: $(L)gcrt0.o

obj-crt: $(L)crt0.obj $(L)dll0.obj $(L)mcrt0.obj $(L)res0.obj

local: ;

cleanup.o: cleanup.c $(I)stdio.h
crt1.o: crt1.s $(ASM386H)
crtinit.o: crtinit.c
crtterm.o: crtterm.c
ctor.o: ctor.c
ctor1.o: ctor1.c $(I)stdlib.h
dtor.o: dtor.c
dtor1.o: dtor1.c $(I)stdlib.h
exit.o: exit.c $(I)stdlib.h $(I)emx/startup.h
startup.o: startup.c $(I)stdlib.h $(I)stdio.h $(I)emx/syscalls.h \
		$(FCNTL) $(ERRNO) $(I)sys/ioctl.h $(I)emx/io.h
_exit.o: _exit.c $(I)stdlib.h $(I)emx/syscalls.h

$(DSTLIB): crt1.o crtinit.o crtterm.o cleanup.o ctor.o \
    ctor1.o dtor.o dtor1.o exit.o startup.o _exit.o
	$(AR) r $(DSTLIB) *.o

$(L)crt0.o: $(CPU)/crt0.s
	$(ASM) -o $(L)crt0.o $(CPU)/crt0.s

$(L)dll0.o: $(CPU)/dll0.s
	$(ASM) -o $(L)dll0.o $(CPU)/dll0.s

$(L)mcrt0.o: $(CPU)/crt0.s
	$(ASM) -DMCRT0 -o $(L)mcrt0.o $(CPU)/crt0.s

$(L)gcrt0.o: $(CPU)/crt0.s gmon.c $(I)gmon.h
	$(ASM) -DMCRT0 -o $(CPU)/tmp1.o $(CPU)/crt0.s
	$(GCC_BSD) -c -o $(CPU)/tmp2.o gmon.c
	ld -r -o $(L)gcrt0.o $(CPU)/tmp1.o $(CPU)/tmp2.o
	-del $(CPU)\tmp1.o
	-del $(CPU)\tmp2.o

$(L)crt0.obj: $(CPU)/crt0.s
	$(ASM) -DOMF -o crt0omf.o $(CPU)/crt0.s
	emxomf -m_text -ds -o $(L)crt0.obj crt0omf.o

$(L)mcrt0.obj: $(CPU)/crt0.s
	$(ASM) -DOMF -DMCRT0 -o mcrt0omf.o $(CPU)/crt0.s
	emxomf -m_text -ds -o $(L)mcrt0.obj mcrt0omf.o

$(L)dll0.obj: $(CPU)/dll0.s
	$(ASM) -DOMF -o dll0omf.o $(CPU)/dll0.s
	emxomf -l_text -ds -o $(L)dll0.obj dll0omf.o

$(L)res0.obj: $(CPU)/res0.s
	$(ASM) -DOMF -o res0omf.o $(CPU)/res0.s
	emxomf -l_text -ds -o $(L)res0.obj res0omf.o
