# GNU Makefile for DJP execompressor

SHELL = /bin/sh

CC = gcc
LD = ld
CFLAGS  = -O2 -fno-strength-reduce -fno-builtin -fomit-frame-pointer
#CFLAGS  = -g
CFLAGS += -Wall -W -Wwrite-strings -Wno-unused -Ilzo/include
AFLAGS = -x assembler-with-cpp -Wall
LDFLAGS = -s

# cpp for use with djasm
DJCPP = cpp -Wall -P -C -traditional

STUBS = djpstub.h startup.h stub.h


.SUFFIXES:
.SUFFIXES: .a .as_ .asm .c .cof .exe .h .inc .o .s

.PHONY: all stubs clean realclean

.SECONDARY: makeh.exe startup.cof djpstub.cof djpstub.inc


all: djp.exe djpstub.exe

stubs: $(STUBS)

clean:
	-$(RM) *.o *.cof *.as_
	-$(RM) djpstub.inc
	-$(RM) djp.exe djpstub.exe makeh.exe

realclean: clean
	-$(RM) $(STUBS) lzovers.h


djp.exe : djp.o lzo/liblzo.a
	$(CC) $(LDFLAGS) $^ -o $@

djp.o: djp.c $(STUBS)
	$(CC) $(CFLAGS) -c $< -o $@

startup.cof : startup.s
	$(CC) $(AFLAGS) -c $< -o startup.o
	$(LD) --oformat coff-go32 -s startup.o -o $@

djpstub.cof : djpstub.s
	$(CC) $(AFLAGS) -c $< -o djpstub.o
	$(LD) --oformat coff-go32 -s djpstub.o -o $@

makeh.exe : makeh.c
	$(CC) $(LDFLAGS) $(CFLAGS) $< -o $@

startup.h : makeh.exe startup.cof
	./makeh.exe 0

djpstub.inc : makeh.exe djpstub.cof
	./makeh.exe 1

djpstub.h : djpstub.asm djpstub.inc
	$(DJCPP) -DDJP $< djpstub.as_
	djasm djpstub.as_ $@

djpstub.exe : djpstub.asm djpstub.inc
	$(DJCPP) -DDJP $< djpstub.as_
	djasm djpstub.as_ $@

stub.h : djpstub.asm
	$(DJCPP) $< stub.as_
	djasm stub.as_ $@

lzo/liblzo.a:
	$(MAKE) -C lzo -f b/dos32/dj2.mak lib

lzovers.h: lzo/include/lzoconf.h
	grep " LZO_VERSION" $< > $@

# dependencies
$(STUBS): lzovers.h

