source: trunk/third/libxslt/win32/Makefile.mingw @ 20733

Revision 20733, 9.7 KB checked in by ghudson, 20 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r20732, which included commits to RCS files with non-trunk default branches.
Line 
1# Makefile for libxslt, specific for Windows, GCC (mingw) and GNU make.
2#
3# Take a look at the beginning and modify the variables to suit your
4# environment. Having done that, you can do a
5#
6# make [all]     to build the libxslt and the accompanying utilities.
7# make clean     to remove all compiler output files and return to a
8#                clean state.
9# make rebuild   to rebuild everything from scratch. This basically does
10#                a 'make clean' and then a 'make all'.
11# make install   to install the library and its header files.
12#
13# November 2002, Igor Zlatkovic <igor@zlatkovic.com>
14
15AUTOCONF = .\config.mingw
16include $(AUTOCONF)
17
18# There should never be a need to modify anything below this line.
19# ----------------------------------------------------------------
20
21BASEDIR = ..
22XSLT_SRCDIR = $(BASEDIR)\libxslt
23EXSLT_SRCDIR = $(BASEDIR)\libexslt
24UTILS_SRCDIR = $(BASEDIR)\xsltproc
25BINDIR = bin.mingw
26
27# Names of various input and output components.
28XSLT_NAME = xslt
29XSLT_BASENAME = lib$(XSLT_NAME)
30XSLT_SO = $(XSLT_BASENAME).dll
31XSLT_IMP = $(XSLT_BASENAME).lib
32XSLT_A = $(XSLT_BASENAME).a
33EXSLT_NAME = exslt
34EXSLT_BASENAME = lib$(EXSLT_NAME)
35EXSLT_SO = $(EXSLT_BASENAME).dll
36EXSLT_IMP = $(EXSLT_BASENAME).lib
37EXSLT_A = $(EXSLT_BASENAME).a
38
39# Places where intermediate files produced by the compiler go
40XSLT_INTDIR = int.xslt.mingw
41XSLT_INTDIR_A = int.xslta.mingw
42EXSLT_INTDIR = int.exslt.mingw
43EXSLT_INTDIR_A = int.exslta.mingw
44UTILS_INTDIR = int.utils.mingw
45
46# The preprocessor and its options.
47CPP = gcc.exe -E
48CPPFLAGS +=
49
50# The compiler and its options.
51CC = gcc.exe
52CFLAGS += -DWIN32 -D_WINDOWS -D_MBCS
53CFLAGS += -I$(BASEDIR) -I$(XSLT_SRCDIR) -I$(INCPREFIX)
54
55# The linker and its options.
56LD = gcc.exe
57LDFLAGS += -Wl,-L,$(BINDIR) -Wl,-L,$(LIBPREFIX)
58LIBS = -lwsock32
59
60# The archiver and its options.
61AR = ar.exe
62ARFLAGS = -r
63
64# Optimisation and debug symbols.
65ifeq ($(DEBUG),1)
66CFLAGS += -D_DEBUG -g
67LDFLAGS +=
68else
69CFLAGS += -DNDEBUG -O2
70LDFLAGS +=
71endif
72
73# Libxslt object files.
74XSLT_OBJS = $(XSLT_INTDIR)/attributes.o\
75        $(XSLT_INTDIR)/documents.o\
76        $(XSLT_INTDIR)/extensions.o\
77        $(XSLT_INTDIR)/extra.o\
78        $(XSLT_INTDIR)/functions.o\
79        $(XSLT_INTDIR)/imports.o\
80        $(XSLT_INTDIR)/keys.o\
81        $(XSLT_INTDIR)/namespaces.o\
82        $(XSLT_INTDIR)/numbers.o\
83        $(XSLT_INTDIR)/pattern.o\
84        $(XSLT_INTDIR)/preproc.o\
85        $(XSLT_INTDIR)/security.o\
86        $(XSLT_INTDIR)/templates.o\
87        $(XSLT_INTDIR)/transform.o\
88        $(XSLT_INTDIR)/variables.o\
89        $(XSLT_INTDIR)/xslt.o\
90        $(XSLT_INTDIR)/xsltutils.o
91XSLT_SRCS = $(subst .o,.c,$(subst $(XSLT_INTDIR),$(XSLT_SRCDIR),$(XSLT_OBJS)))
92
93# Static libxslt object files.
94XSLT_OBJS_A = $(XSLT_INTDIR_A)/attributes.o\
95        $(XSLT_INTDIR_A)/documents.o\
96        $(XSLT_INTDIR_A)/extensions.o\
97        $(XSLT_INTDIR_A)/extra.o\
98        $(XSLT_INTDIR_A)/functions.o\
99        $(XSLT_INTDIR_A)/imports.o\
100        $(XSLT_INTDIR_A)/keys.o\
101        $(XSLT_INTDIR_A)/namespaces.o\
102        $(XSLT_INTDIR_A)/numbers.o\
103        $(XSLT_INTDIR_A)/pattern.o\
104        $(XSLT_INTDIR_A)/preproc.o\
105        $(XSLT_INTDIR_A)/security.o\
106        $(XSLT_INTDIR_A)/templates.o\
107        $(XSLT_INTDIR_A)/transform.o\
108        $(XSLT_INTDIR_A)/variables.o\
109        $(XSLT_INTDIR_A)/xslt.o\
110        $(XSLT_INTDIR_A)/xsltutils.o
111
112# Libexslt object files.
113EXSLT_OBJS = $(EXSLT_INTDIR)/common.o\
114        $(EXSLT_INTDIR)/crypto.o\
115        $(EXSLT_INTDIR)/date.o\
116        $(EXSLT_INTDIR)/exslt.o\
117        $(EXSLT_INTDIR)/functions.o\
118        $(EXSLT_INTDIR)/math.o\
119        $(EXSLT_INTDIR)/saxon.o\
120        $(EXSLT_INTDIR)/sets.o\
121        $(EXSLT_INTDIR)/strings.o\
122        $(EXSLT_INTDIR)/dynamic.o
123EXSLT_SRCS = $(subst .o,.c,$(subst $(EXSLT_INTDIR)/,$(EXSLT_SRCDIR)/,$(EXSLT_OBJS)))
124
125# Static libexslt object files.
126EXSLT_OBJS_A = $(EXSLT_INTDIR_A)/common.o\
127        $(EXSLT_INTDIR_A)/crypto.o\
128        $(EXSLT_INTDIR_A)/date.o\
129        $(EXSLT_INTDIR_A)/exslt.o\
130        $(EXSLT_INTDIR_A)/functions.o\
131        $(EXSLT_INTDIR_A)/math.o\
132        $(EXSLT_INTDIR_A)/saxon.o\
133        $(EXSLT_INTDIR_A)/sets.o\
134        $(EXSLT_INTDIR_A)/strings.o\
135        $(EXSLT_INTDIR_A)/dynamic.o
136
137
138# Xsltproc and friends executables.
139UTILS = $(BINDIR)/xsltproc.exe
140
141all : dep libxslt libxslta libexslt libexslta utils
142
143libxslt : $(BINDIR)\$(XSLT_SO)
144
145libxslta : $(BINDIR)\$(XSLT_A)
146
147libexslt : $(BINDIR)\$(EXSLT_SO)
148
149libexslta : $(BINDIR)\$(EXSLT_A)
150
151utils : $(UTILS)
152
153clean :
154        cmd.exe /C if exist $(XSLT_INTDIR) rmdir /S /Q $(XSLT_INTDIR)
155        cmd.exe /C if exist $(XSLT_INTDIR_A) rmdir /S /Q $(XSLT_INTDIR_A)
156        cmd.exe /C if exist $(EXSLT_INTDIR) rmdir /S /Q $(EXSLT_INTDIR)
157        cmd.exe /C if exist $(EXSLT_INTDIR_A) rmdir /S /Q $(EXSLT_INTDIR_A)
158        cmd.exe /C if exist $(UTILS_INTDIR) rmdir /S /Q $(UTILS_INTDIR)
159        cmd.exe /C if exist $(BINDIR) rmdir /S /Q $(BINDIR)
160        cmd.exe /C if exist depends.mingw del depends.mingw
161
162rebuild : clean all
163
164distclean : clean
165        cmd.exe /C if exist config.* del config.*
166        cmd.exe /C if exist depends.* del depends.*
167        cmd.exe /C if exist Makefile del Makefile
168
169install : all
170        cmd.exe /C if not exist $(INCPREFIX)\$(XSLT_BASENAME) mkdir $(INCPREFIX)\$(XSLT_BASENAME)
171        cmd.exe /C if not exist $(INCPREFIX)\$(EXSLT_BASENAME) mkdir $(INCPREFIX)\$(EXSLT_BASENAME)
172        cmd.exe /C if not exist $(BINPREFIX) mkdir $(BINPREFIX)
173        cmd.exe /C if not exist $(LIBPREFIX) mkdir $(LIBPREFIX)
174        cmd.exe /C copy $(XSLT_SRCDIR)\*.h $(INCPREFIX)\$(XSLT_BASENAME)
175        cmd.exe /C copy $(EXSLT_SRCDIR)\*.h $(INCPREFIX)\$(EXSLT_BASENAME)
176        cmd.exe /C copy $(BINDIR)\$(XSLT_SO) $(SOPREFIX)
177        cmd.exe /C copy $(BINDIR)\$(XSLT_A) $(LIBPREFIX)
178        cmd.exe /C copy $(BINDIR)\$(XSLT_IMP) $(LIBPREFIX)
179        cmd.exe /C copy $(BINDIR)\$(EXSLT_SO) $(SOPREFIX)
180        cmd.exe /C copy $(BINDIR)\$(EXSLT_A) $(LIBPREFIX)
181        cmd.exe /C copy $(BINDIR)\$(EXSLT_IMP) $(LIBPREFIX)
182        cmd.exe /C copy $(BINDIR)\*.exe $(BINPREFIX)
183
184# This is a target for me, to make a binary distribution. Not for the public use,
185# keep your hands off :-)
186BDVERSION = $(LIBXSLT_MAJOR_VERSION).$(LIBXSLT_MINOR_VERSION).$(LIBXSLT_MICRO_VERSION)
187BDPREFIX = $(XSLT_BASENAME)-$(BDVERSION).win32
188bindist : all
189        $(MAKE) PREFIX=$(BDPREFIX) SOPREFIX=$(BDPREFIX)/bin install
190        cscript //NoLogo configure.js genreadme $(XSLT_BASENAME) $(BDVERSION) $(BDPREFIX)\readme.txt
191
192
193# Creates the dependency files
194dep :
195        $(CC) $(subst \,/,$(CFLAGS)) -MM $(subst \,/,$(XSLT_SRCS)) $(subst \,/,$(EXSLT_SRCS)) > depends.mingw
196
197
198# Makes the compiler output directory.
199$(BINDIR) :
200        cmd.exe /C if not exist $(BINDIR) mkdir $(BINDIR)
201
202
203# Makes the libxslt intermediate directory.
204$(XSLT_INTDIR) :
205        cmd.exe /C if not exist $(XSLT_INTDIR) mkdir $(XSLT_INTDIR)
206
207# Makes the static libxslt intermediate directory.
208$(XSLT_INTDIR_A) :
209        cmd.exe /C if not exist $(XSLT_INTDIR_A) mkdir $(XSLT_INTDIR_A)
210
211# An implicit rule for libxslt compilation.
212$(XSLT_INTDIR)/%.o : $(XSLT_SRCDIR)/%.c
213        $(CC) $(CFLAGS) -c -o $@ $<
214
215# An implicit rule for static libxslt compilation.
216$(XSLT_INTDIR_A)/%.o : $(XSLT_SRCDIR)/%.c
217        $(CC) $(CFLAGS) -DLIBXML_STATIC -DLIBXSLT_STATIC -o $@ -c $<
218
219# Compiles libxslt source. Uses the implicit rule for commands.
220$(XSLT_OBJS) : $(XSLT_INTDIR)
221
222# Compiles static libxslt source. Uses the implicit rule for commands.
223$(XSLT_OBJS_A) : $(XSLT_INTDIR_A)
224
225# Creates the libxslt shared object.
226XSLTSO_LDFLAGS = $(LDFLAGS) -shared -Wl,--dll -Wl,--out-implib,$(BINDIR)/$(XSLT_IMP)
227XSLTSO_LDFLAGS += -Wl,--major-image-version,$(LIBXSLT_MAJOR_VERSION)
228XSLTSO_LDFLAGS += -Wl,--minor-image-version,$(LIBXSLT_MINOR_VERSION)
229$(BINDIR)\$(XSLT_SO) : $(BINDIR) $(XSLT_OBJS)
230        $(LD) $(XSLTSO_LDFLAGS) -o $(BINDIR)/$(XSLT_SO) $(XSLT_OBJS) $(LIBS) -llibxml2
231
232# Creates the libxslt archive.
233$(BINDIR)\$(XSLT_A) : $(BINDIR) $(XSLT_OBJS_A)
234        $(AR) $(ARFLAGS) $(BINDIR)/$(XSLT_A) $(XSLT_OBJS_A)
235
236
237# Creates the libexslt intermediate directory.
238$(EXSLT_INTDIR) :
239        cmd.exe /C if not exist $(EXSLT_INTDIR) mkdir $(EXSLT_INTDIR)
240
241# Creates the static libexslt intermediate directory.
242$(EXSLT_INTDIR_A) :
243        cmd.exe /C if not exist $(EXSLT_INTDIR_A) mkdir $(EXSLT_INTDIR_A)
244
245# An implicit rule for libexslt compilation.
246$(EXSLT_INTDIR)/%.o : $(EXSLT_SRCDIR)/%.c
247        $(CC) $(CFLAGS) -I$(EXSLT_SRCDIR) -o $@ -c $<
248
249# An implicit rule for static libexslt compilation.
250$(EXSLT_INTDIR_A)/%.o : $(EXSLT_SRCDIR)/%.c
251        $(CC) $(CFLAGS) -DLIBXML_STATIC -DLIBXSLT_STATIC -DLIBEXSLT_STATIC \
252                -I$(EXSLT_SRCDIR) -o $@ -c $<
253
254# Compiles libxslt source. Uses the implicit rule for commands.
255$(EXSLT_OBJS) : $(EXSLT_INTDIR)
256
257# Compiles libxslt source. Uses the implicit rule for commands.
258$(EXSLT_OBJS_A) : $(EXSLT_INTDIR_A)
259
260# Creates the libexslt shared object.
261EXSLTSO_LDFLAGS = $(LDFLAGS) -shared -Wl,--dll -Wl,--out-implib,$(BINDIR)/$(EXSLT_IMP)
262EXSLTSO_LDFLAGS += -Wl,--major-image-version,$(LIBEXSLT_MAJOR_VERSION)
263EXSLTSO_LDFLAGS += -Wl,--minor-image-version,$(LIBEXSLT_MINOR_VERSION)
264$(BINDIR)\$(EXSLT_SO) : $(BINDIR) $(EXSLT_OBJS) libxslt
265        $(LD) $(EXSLTSO_LDFLAGS) -o $(BINDIR)/$(EXSLT_SO) $(EXSLT_OBJS) $(LIBS) -l$(XSLT_BASENAME) -llibxml2
266
267# Creates the libexslt archive.
268$(BINDIR)\$(EXSLT_A) : $(BINDIR) $(EXSLT_OBJS_A) libxslta
269        $(AR) $(ARFLAGS) $(BINDIR)\$(EXSLT_A) $(EXSLT_OBJS_A)
270
271
272# Creates the utils intermediate directory.
273$(UTILS_INTDIR) :
274        cmd.exe /C if not exist $(UTILS_INTDIR) mkdir $(UTILS_INTDIR)
275
276# An implicit rule for xsltproc and friends.
277APPLIBS = $(LIBS)
278APPLIBS += -llibxml2 -l$(XSLT_BASENAME) -l$(EXSLT_BASENAME)
279APP_LDFLAGS = $(LDFLAGS)
280APP_LDFLAGS += -Wl,--major-image-version,$(LIBXSLT_MAJOR_VERSION)
281APP_LDFLAGS += -Wl,--minor-image-version,$(LIBXSLT_MINOR_VERSION)
282ifeq ($(STATIC),1)
283CFLAGS += -DLIBXML_STATIC -DLIBXSLT_STATIC -DLIBEXSLT_STATIC
284APP_LDFLAGS += -Bstatic
285$(BINDIR)/%.exe : $(UTILS_SRCDIR)/%.c
286        $(CC) $(CFLAGS) -o $(subst .c,.o,$(UTILS_INTDIR)/$(<F)) -c $<
287        $(LD) $(APP_LDFLAGS) -o $@ $(APPLIBS) $(subst .c,.o,$(UTILS_INTDIR)/$(<F))
288else
289$(BINDIR)/%.exe : $(UTILS_SRCDIR)/%.c
290        $(CC) $(CFLAGS) -o $(subst .c,.o,$(UTILS_INTDIR)/$(<F)) -c $<
291        $(LD) $(APP_LDFLAGS) -o $@ $(APPLIBS) $(subst .c,.o,$(UTILS_INTDIR)/$(<F))
292endif
293
294# Builds xsltproc and friends. Uses the implicit rule for commands.
295$(UTILS) : $(UTILS_INTDIR) $(BINDIR) libxslt libxslta libexslt libexslta
296
297
298# Source dependencies, just how?
299#-include depends.mingw
300
Note: See TracBrowser for help on using the repository browser.