CC = gcc
LIB = /usr/local/lib

AESSRC = aesappl.c aescrap.c aesevnt.c aesforms.c aesfsel.c aesgraf.c \
	aeshell.c aesmenu.c aesobj.c aesrc.c aesrsrc.c aeswin.c

VDISRC = vdiatrib.c vdictrl1.c vdictrl2.c vdiesc.c vdiesc1.c vdifsm.c \
	vdigdp.c vdiinp.c vdiinq.c vdiout.c vdiqgdos.c vdiras.c vdibez.c

COMSRC = common.c ident.c

AESOBJS = $(AESSRC:%.c=$(OUT_DIR)/%.o)

VDIOBJS = $(VDISRC:%.c=$(OUT_DIR)/%.o)

COMOBJS = $(COMSRC:%.c=$(OUT_DIR)/%.o)

SRC = $(AESSRC) $(VDISRC) $(COMSRC)
OBJS = $(AESOBJS) $(VDIOBJS) $(COMOBJS)

all: gem16 gem32

gem16:
	@echo "Making gem 16"
	@GEMLIB=gem16.olb; OUT_DIR=gemlib16; LIB_DIR=./; \
		CFLAGS="-Wall -bm68k-tos -D__DEF_ALL__ -mshort"; \
		export GEMLIB OUT_DIR LIB_DIR CFLAGS; $(MAKE) build

gem32:
	@echo "Making gem 32"
	@GEMLIB=gem.olb; OUT_DIR=gemlib32; LIB_DIR=./; \
		CFLAGS="-Wall -bm68k-tos -D__DEF_ALL__"; \
		export GEMLIB OUT_DIR LIB_DIR CFLAGS; $(MAKE) build

build:
	@ if test -z "$(OUT_DIR)";\
        then\
          "OUT_DIR not defined!"; exit 1;\
        fi
	@ if test ! -d $(OUT_DIR);\
        then\
	  echo "Creating object target directory $(OUT_DIR)";\
          mkdir $(OUT_DIR);\
        else\
          echo "Object target directory $(OUT_DIR) exists";\
        fi
	@ if test -z "$(LIB_DIR)";\
        then\
          "LIB_DIR not defined!"; exit 1;\
        fi
	@ if test ! -d $(LIB_DIR);\
        then\
	  echo "Creating library target directory $(LIB_DIR)";\
          mkdir $(LIB_DIR);\
        else\
          echo "Library target directory $(LIB_DIR) exists";\
        fi
	@$(MAKE) $(GEMLIB)

$(OBJS) : common.h

$(OUT_DIR)/aesappl.o: aesappl.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/aescrap.o: aescrap.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/aesevnt.o: aesevnt.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/aesforms.o: aesforms.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/aesfsel.o: aesfsel.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/aesgraf.o: aesgraf.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/aeshell.o: aeshell.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/aesmenu.o: aesmenu.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/aesobj.o: aesobj.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/aesrc.o: aesrc.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/aesrsrc.o: aesrsrc.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/aeswin.o: aeswin.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/vdiatrib.o: vdiatrib.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/vdictrl1.o: vdictrl1.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/vdictrl2.o: vdictrl2.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/vdiesc.o: vdiesc.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/vdiesc1.o: vdiesc1.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/vdifsm.o: vdifsm.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/vdigdp.o: vdigdp.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/vdiinp.o: vdiinp.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/vdiinq.o: vdiinq.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/vdiout.o: vdiout.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/vdiqgdos.o: vdiqgdos.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/vdiras.o: vdiras.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/vdibez.o: vdibez.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/common.o: common.c
	$(COMPILE.c) $< -o $@

$(OUT_DIR)/ident.o: ident.c
	$(COMPILE.c) $< -o $@

$(GEMLIB) : $(OBJS)
	@ echo "----------------------------------------"
	@ for object in $?;\
        do\
	   echo Inserting $$object in $(GEMLIB);\
           $(AR) r $(LIB_DIR)/$@ $$object;\
        done
	$(AR) t   $(LIB_DIR)/$@
	@ echo "----------------------------------------"

install: $(GEMLIB)
	cp $(GEMLIB) $(LIB)

clean :
	rm -rf gemlib16 gemlib32

realclean : clean
	rm -f *~ *.o *.pdb *.lib *.olb

