1#
2# Makefile for AmigaOS
3#
4
5.PHONY: help all staticlib sharedlib check clean install
6
7vpath %.c ../lib ../examples ../xmlwf ../tests
8vpath %.h ../lib ../tests
9
10
11#
12# Set these for SDK installation.
13#
14tooldir = SDK:Local/C
15staticlibdir = SDK:Local/clib2/lib
16staticincludedir = SDK:Local/clib2/include
17sharedlibdir = SDK:Local/Libs
18sharedincludedir = SDK:Local/common/include
19
20
21ifeq ($(MAKECMDGOALS), staticlib)
22 DESTDIR = lib
23else
24 DESTDIR = libs
25endif
26
27STATICLIB = $(DESTDIR)/libexpat.a
28SHAREDLIB = $(DESTDIR)/expat.library
29
30XMLWF = $(DESTDIR)/xmlwf
31ELEMENTS = $(DESTDIR)/elements
32OUTLINE = $(DESTDIR)/outline
33RUNTESTS = $(DESTDIR)/runtests
34BENCHMARK = $(DESTDIR)/benchmark
35
36
37help:
38	@echo "Requires:"
39	@echo " AmigaOS 4.0"
40	@echo " SDK 51.22"
41	@echo " clib2 1.202"
42	@echo ""
43	@echo "Targets:"
44	@echo " all - make expat libraries, xmlwf, examples and run test suite"
45	@echo " install - install expat libraries and tools into SDK"
46
47all:
48	-makedir force lib libs
49	$(MAKE) staticlib
50	$(MAKE) sharedlib
51
52staticlib: $(STATICLIB) $(XMLWF) $(ELEMENTS) $(OUTLINE) $(RUNTESTS) $(BENCHMARK) check
53	@echo done
54
55sharedlib: $(SHAREDLIB) $(XMLWF) $(ELEMENTS) $(OUTLINE) $(RUNTESTS) $(BENCHMARK) check
56	@echo done
57
58check:
59	$(RUNTESTS)
60
61clean:
62	-delete lib/#?.o quiet
63	-delete libs/#?.o quiet
64
65install:
66	copy libs/xmlwf $(tooldir) quiet
67	copy /lib/expat.h /lib/expat_external.h $(staticincludedir) quiet
68	copy lib/libexpat.a $(staticlibdir) quiet
69	copy libs/expat.library $(sharedlibdir) quiet
70	copy include $(sharedincludedir) quiet all
71
72
73CC = gcc
74LIBTOOL = ar
75STRIP = strip
76
77LDFLAGS =
78LIBS =
79CFLAGS = -DNDEBUG -O2
80LTFLAGS = -crs
81STRIPFLAGS = -R.comment
82LAUNCH =
83
84ifeq ($(MAKECMDGOALS), staticlib)
85 CFLAGS += -mcrt=clib2
86 LDFLAGS += -mcrt=clib2
87 LIBS += $(STATICLIB)
88 INCLUDES = -I../lib
89endif
90
91ifeq ($(MAKECMDGOALS), sharedlib)
92 CFLAGS += -mcrt=newlib -D__USE_INLINE__
93 LDFLAGS += -mcrt=newlib
94 INCLUDES = -I. -Iinclude -Iinclude/libraries -I../lib
95 LAUNCH = $(DESTDIR)/launch.o
96endif
97
98
99COMPILE = $(CC) $(CFLAGS) $(INCLUDES) -c
100
101LINK = $(CC) $(LDFLAGS) -o $@
102
103
104$(STATICLIB): $(DESTDIR)/xmlparse.o $(DESTDIR)/xmltok.o $(DESTDIR)/xmlrole.o
105	$(LIBTOOL) $(LTFLAGS) $@ $^
106
107$(DESTDIR)/xmlparse.o: xmlparse.c expat.h xmlrole.h xmltok.h \
108	expat_external.h internal.h amigaconfig.h
109	$(COMPILE) $< -o $@
110
111$(DESTDIR)/xmlrole.o: xmlrole.c ascii.h xmlrole.h expat_external.h \
112	internal.h amigaconfig.h
113	$(COMPILE) $< -o $@
114
115$(DESTDIR)/xmltok.o: xmltok.c xmltok_impl.c xmltok_ns.c ascii.h asciitab.h \
116	iasciitab.h latin1tab.h nametab.h utf8tab.h xmltok.h xmltok_impl.h \
117	expat_external.h internal.h amigaconfig.h
118	$(COMPILE) $< -o $@
119
120
121$(SHAREDLIB): $(DESTDIR)/expat_lib.o $(DESTDIR)/expat_vectors.o $(DESTDIR)/stdlib.o lib/libexpat.a
122	$(LINK) -nostartfiles -nostdlib -o $@ $^
123
124$(DESTDIR)/expat_lib.o: expat_lib.c
125	$(COMPILE) $< -o $@
126
127$(DESTDIR)/expat_vectors.o: expat_vectors.c
128	$(COMPILE) $< -o $@
129
130$(DESTDIR)/stdlib.o: stdlib.c
131	$(COMPILE) $< -o $@
132
133$(LAUNCH): launch.c
134	$(COMPILE) $< -o $@
135
136
137$(XMLWF): $(DESTDIR)/xmlwf.o $(DESTDIR)/xmlfile.o $(DESTDIR)/codepage.o $(DESTDIR)/readfilemap.o $(LAUNCH)
138	$(LINK) $^ $(LIBS)
139	$(STRIP) $(STRIPFLAGS) $@
140
141$(DESTDIR)/xmlwf.o: xmlwf.c
142	$(COMPILE) $< -o $@
143
144$(DESTDIR)/xmlfile.o: xmlfile.c
145	$(COMPILE) $< -o $@
146
147$(DESTDIR)/codepage.o: codepage.c
148	$(COMPILE) $< -o $@
149
150$(DESTDIR)/readfilemap.o: readfilemap.c
151	$(COMPILE) $< -o $@
152
153
154$(ELEMENTS): $(DESTDIR)/elements.o $(LAUNCH)
155	$(LINK) $^ $(LIBS)
156	$(STRIP) $(STRIPFLAGS) $@
157
158$(DESTDIR)/elements.o: elements.c
159	$(COMPILE) $< -o $@
160
161
162$(OUTLINE): $(DESTDIR)/outline.o $(LAUNCH)
163	$(LINK) $^ $(LIBS)
164	$(STRIP) $(STRIPFLAGS) $@
165
166$(DESTDIR)/outline.o: outline.c
167	$(COMPILE) $< -o $@
168
169
170$(RUNTESTS): $(DESTDIR)/runtests.o $(DESTDIR)/chardata.o $(DESTDIR)/minicheck.o $(LAUNCH)
171	$(LINK) $^ $(LIBS)
172
173$(DESTDIR)/chardata.o: chardata.c chardata.h
174	$(COMPILE) $< -o $@
175
176$(DESTDIR)/minicheck.o: minicheck.c minicheck.h
177	$(COMPILE) $< -o $@
178
179$(DESTDIR)/runtests.o: runtests.c chardata.h
180	$(COMPILE) $< -o $@
181
182
183$(BENCHMARK): $(DESTDIR)/benchmark.o $(LAUNCH)
184	$(LINK) $^ $(LIBS) -lm
185
186$(DESTDIR)/benchmark.o: benchmark/benchmark.c
187	$(COMPILE) $< -o $@
188