#
# Makefile for AmigaOS
#
.PHONY: help all staticlib sharedlib check clean install
vpath %.c ../lib ../examples ../xmlwf ../tests
vpath %.h ../lib ../tests
#
# Set these for SDK installation.
#
tooldir = SDK:Local/C
staticlibdir = SDK:Local/clib2/lib
staticincludedir = SDK:Local/clib2/include
sharedlibdir = LIBS:
sharedincludedir = SDK:Local/common/include
ifeq ($(MAKECMDGOALS), staticlib)
DESTDIR = lib
else
DESTDIR = libs
endif
STATICLIB = $(DESTDIR)/libexpat.a
SHAREDLIB = $(DESTDIR)/expat.library
XMLWF = $(DESTDIR)/xmlwf
ELEMENTS = $(DESTDIR)/elements
OUTLINE = $(DESTDIR)/outline
RUNTESTS = $(DESTDIR)/runtests
BENCHMARK = $(DESTDIR)/benchmark
help:
@echo "Requires:"
@echo " AmigaOS 4.0"
@echo " SDK 51.15"
@echo " clib2 1.198"
@echo ""
@echo "Targets:"
@echo " all - make expat libraries, xmlwf, examples and run test suite"
@echo " install - install expat libraries and tools into SDK"
all:
-makedir lib libs
$(MAKE) staticlib
$(MAKE) sharedlib
staticlib: $(STATICLIB) $(XMLWF) $(ELEMENTS) $(OUTLINE) $(RUNTESTS) $(BENCHMARK) check
@echo done
sharedlib: $(SHAREDLIB) $(XMLWF) $(ELEMENTS) $(OUTLINE) $(RUNTESTS) $(BENCHMARK) check
@echo done
check:
$(RUNTESTS)
clean:
-delete lib/#?.o quiet
-delete libs/#?.o quiet
install:
copy lib/xmlwf $(tooldir) quiet
copy /lib/expat.h /lib/expat_external.h $(staticincludedir) quiet
copy lib/libexpat.a $(staticlibdir) quiet
copy libs/expat.library $(sharedlibdir) quiet
copy include $(sharedincludedir) quiet all
CC = gcc
LIBTOOL = ar
STRIP = strip
LDFLAGS =
LIBS =
LOCAL_CFLAGS = -DNDEBUG -O2
LTFLAGS = -crs
STRIPFLAGS = -R.comment
LAUNCH =
ifeq ($(MAKECMDGOALS), staticlib)
LIBS += $(STATICLIB)
INCLUDES = -I../lib
endif
ifeq ($(MAKECMDGOALS), sharedlib)
LOCAL_CFLAGS += -DAMIGA_SHARED_LIB -D__USE_INLINE__
INCLUDES = -I. -Iinclude -Iinclude/libraries -I../lib
LAUNCH = $(DESTDIR)/launch.o
endif
COMPILE = $(CC) $(CFLAGS) $(INCLUDES) -c
LINK = $(CC) $(LDFLAGS) -o $@
$(STATICLIB): $(DESTDIR)/xmlparse.o $(DESTDIR)/xmltok.o $(DESTDIR)/xmlrole.o
$(LIBTOOL) $(LTFLAGS) $@ $^
$(DESTDIR)/xmlparse.o: xmlparse.c expat.h xmlrole.h xmltok.h \
expat_external.h internal.h amigaconfig.h
$(COMPILE) $< -o $@
$(DESTDIR)/xmlrole.o: xmlrole.c ascii.h xmlrole.h expat_external.h \
internal.h amigaconfig.h
$(COMPILE) $< -o $@
$(DESTDIR)/xmltok.o: xmltok.c xmltok_impl.c xmltok_ns.c ascii.h asciitab.h \
iasciitab.h latin1tab.h nametab.h utf8tab.h xmltok.h xmltok_impl.h \
expat_external.h internal.h amigaconfig.h
$(COMPILE) $< -o $@
$(SHAREDLIB): $(DESTDIR)/expat_lib.o $(DESTDIR)/expat_vectors.o $(DESTDIR)/stdlib.o lib/libexpat.a
$(LINK) -nostartfiles -nostdlib -o $@ $^
$(DESTDIR)/expat_lib.o: expat_lib.c
$(COMPILE) $< -o $@
$(DESTDIR)/expat_vectors.o: expat_vectors.c
$(COMPILE) $< -o $@
$(DESTDIR)/stdlib.o: stdlib.c
$(COMPILE) $< -o $@
$(LAUNCH): launch.c
$(COMPILE) $< -o $@
$(XMLWF): $(DESTDIR)/xmlwf.o $(DESTDIR)/xmlfile.o $(DESTDIR)/codepage.o $(DESTDIR)/readfilemap.o $(LAUNCH)
$(LINK) $^ $(LIBS)
$(STRIP) $(STRIPFLAGS) $@
$(DESTDIR)/xmlwf.o: xmlwf.c
$(COMPILE) $< -o $@
$(DESTDIR)/xmlfile.o: xmlfile.c
$(COMPILE) $< -o $@
$(DESTDIR)/codepage.o: codepage.c
$(COMPILE) $< -o $@
$(DESTDIR)/readfilemap.o: readfilemap.c
$(COMPILE) $< -o $@
$(ELEMENTS): $(DESTDIR)/elements.o $(LAUNCH)
$(LINK) $^ $(LIBS)
$(STRIP) $(STRIPFLAGS) $@
$(DESTDIR)/elements.o: elements.c
$(COMPILE) $< -o $@
$(OUTLINE): $(DESTDIR)/outline.o $(LAUNCH)
$(LINK) $^ $(LIBS)
$(STRIP) $(STRIPFLAGS) $@
$(DESTDIR)/outline.o: outline.c
$(COMPILE) $< -o $@
$(RUNTESTS): $(DESTDIR)/runtests.o $(DESTDIR)/chardata.o $(DESTDIR)/minicheck.o $(LAUNCH)
$(LINK) $^ $(LIBS)
$(DESTDIR)/chardata.o: chardata.c chardata.h
$(COMPILE) $< -o $@
$(DESTDIR)/minicheck.o: minicheck.c minicheck.h
$(COMPILE) $< -o $@
$(DESTDIR)/runtests.o: runtests.c chardata.h
$(COMPILE) $< -o $@
$(BENCHMARK): $(DESTDIR)/benchmark.o $(LAUNCH)
$(LINK) $^ $(LIBS) -lm
$(DESTDIR)/benchmark.o: benchmark/benchmark.c
$(COMPILE) $< -o $@