# Makefile for a small GCC Lib
# Jrg Hhle, 29-Nov-92

CC=gcc
LD=ld

.s:

.SUFFIXES: .s

LIBSHORTNAME=clisp
LIBREALNAME=lib$(LIBSHORTNAME).a

LIBCFILES=main.o wbmain.o exit.o parseargs.o asciz_length.o debug_out.o def_window.o def_handle.o
LIBAFILES=crt0.o gcc2__main.o

# This order is important:
LIBFILES =main.o wbmain.o exit.o parseargs.o asciz_length.o gcc2__main.o debug_out.o def_window.o def_handle.o

LIBSRCFILES=defs.h $(subst .o,.c,$(LIBCFILES))  $(subst .o,.s,$(LIBAFILES))

# NB: gcc doesn't allow an appended slash
LIBDIR=//lib
INCDIR=//include
INCPATH=-IAB:usr/include/Amiga20 -IAB:usr/gcc1/include -I$(INCDIR)

# Add your flags here:
FLAGS=-v -Q -DFOR_CLISP
CFLAGS=-O -nostdinc $(INCPATH) -W -Wimplicit -Wreturn-type $(FLAGS)

# Don't forget to set your stack high enough (150000 recommended here)!
GCCSTACK=200000
LDSTACK=100000
ARSTACK=50000

TESTCFILES=test.o clisp.o
TESTAFILES=
TESTFILES=$(TESTCFILES) $(TESTAFILES)
TESTSRCFILES=$(subst .o,.c,$(TESTFILES))

all: crt0.o $(LIBREALNAME)

ixconf: .INVISIBLE
	usr:bin/ixconfig >nil: -a -.

.PHONY: all ixconf

$(LIBCFILES): defs.h

$(LIBCFILES) $(TESTCFILES): $*.c
	usr:bin/ixconfig >nil: -a -.
	stack $(GCCSTACK)
	$(CC) $(CFLAGS) -c $*.c

$(LIBAFILES) $(TESTAFILES): $*.s
	usr:bin/ixconfig >nil: -a -.
	stack $(GCCSTACK)
	$(CC) $(CFLAGS) -c $*.s

# let's have a look at assembly code
$(subst .o,.s,$(LIBCFILES) $(TESTCFILES)): $*.c
	usr:bin/ixconfig >nil: -a -.
	stack $(GCCSTACK)
	$(CC) $(CFLAGS) -S $*.c

$(LIBREALNAME): $(LIBFILES)
	usr:bin/ixconfig >nil: -a -.
	stack $(ARSTACK)
	ar -rv $@ $(LIBFILES)

# -L. works and includes this directory!
test: $(TESTFILES) $(LIBREALNAME) crt0.o
	usr:bin/ixconfig >nil: -a -.
	stack $(LDSTACK)
	$(LD) -nostdlib -L. -o $@ crt0.o $(TESTFILES) -l$(LIBSHORTNAME)

clean:
	delete $(LIBFILES) crt0.o $(TESTFILES)

install:
	copy $(LIBREALNAME) crt0.o $(LIBDIR) clone

archive:
	lha a //GCCjchlib Makefile $(LIBREALNAME) crt0.o $(LIBSRCFILES) $(TESTSRCFILES)

.PHONY: clean install archive
