CC_OPT=-O2 -Wall -I../include LD_OPT=-s FILES=dlmapi dlmexcp dlmimage dlmreslv dlmsig dlmsym hash main npxsetup EXE=dlmstub SRC=*.cc *.h OBJECTS=$(foreach name, $(FILES) dlmexp, $(name).o) DET_OBJECTS=$(foreach name, $(FILES) ~dlmexp, $(name).o) REMOVE=$(foreach name, $(FILES) dlmexp, $(name).dep $(name).o) $(EXE).exe REMOVE+=~dlmexp.o dlmexp.hh ~dlmstub.exe parsemap.exe dlmstub.mpd REMOVE+=libc/* libc.dlm SOURCES=$(foreach name, $(FILES) dlmexp, $(name).c) DEPLIST = $(foreach name, $(FILES), $(name).dep) MAKEDEPS=$(CC) $(CC_OPT) -MM $< | sed -e 's/\($*\.o\)[ :]*/\1 $@ : /g' >$@ all : start $(EXE).exe libc.dlm done install : all @echo Installing cp libc.dlm ../../lib/dlm cp dlmstub.exe ../../lib/dlm start : parsemap.exe @echo Building : $(EXE).exe parsemap.exe : util/parsemap.c @echo Building : parsemap.exe gcc -Xlinker -s -o parsemap.exe util/parsemap.c done : @echo Done. clean : @echo Removing rebuildable files : @echo $(REMOVE) @rm -f $(REMOVE) deps : $(DEPLIST) # include $(SOURCES:.c=.dep) %.dep: %.c @echo Creating dependencies for $< @echo >dlmexp.hh @$(MAKEDEPS) dlmstub.mpd : $(DET_OBJECTS) gcc -o ~$(EXE).exe $(foreach opt,$(LD_OPT), -Xlinker $(opt)) -Xlinker -Map -Xlinker dlmstub.mpd $(DET_OBJECTS) $(foreach lib,$(LIBS), -l$(lib)) $(EXE).exe : $(OBJECTS) gcc -o $(EXE).exe $(foreach opt,$(LD_OPT), -Xlinker $(opt)) $(OBJECTS) $(foreach lib,$(LIBS), -l$(lib)) %.o: %.c gcc $(CC_OPT) -c $< -o $@ ~dlmexp.o: dlmexp.c gcc $(CC_OPT) -c $< -o $@ -DDETECT_USED dlmexp.hh: dlmstub.mpd @echo Generating implicit export list @parsemap $< s > $@ dlmexp.o : dlmexp.hh # =========================== # This will build libc.dlm # =========================== libc.dlm: parsemap.exe dlmstub.mpd @echo Building libc.dlm rm -f libc/* parsemap dlmstub.mpd o >libc/rmobj.lst cd libc cp $(DJDIR)/lib/libc.a . cp $(DJDIR)/lib/gcc-lib/djgpp/2.81/libgcc.a . ar x libc.a rm libc.a ar x libgcc.a rm libgcc.a rm @rmobj.lst ld -r -o ~libc.o *.o -T../../../lib/dlm/dlm.djl dlmman ~libc.o -c ../libc.dlm rm ~libc.o cd ..