source: trunk/glib/Makefile.kmk@ 360

Last change on this file since 360 was 326, checked in by cinc, 18 years ago

Portability patches for Windows, Linux, Darwin by Bird.

File size: 12.4 KB
Line 
1# $Id: $
2## @file
3# Makefile for GLib.
4#
5# This is only intended for simplify the building of NOM
6# on OS/2 and Windows. We omit bits that aren't needed.
7#
8# The 2.16.1 GLib tarball is required. Add
9# GLIB_SRC_PATH=unpack-location to you LocalConfig.kmk file.
10#
11
12DEPTH ?= ..
13include $(PATH_KBUILD)/header.kmk
14
15
16# GLib source path.
17ifndef GLIB_SRC_PATH
18 ifeq ($(firstword $(USERNAME) $(USER)),bird)
19GLIB_SRC_PATH := $(abspath $(patsubst %/glib-2.0.pc.in,%, $(firstword $(wildcard \
20 $(PATH_SUB_CURRENT)/../../../glib/glib-2.16.1/glib-2.0.pc.in \
21 ))))
22 endif
23endif
24
25
26#
27# The GLib DLL.
28#
29DLLS += libnomglib
30libnomglib_TEMPLATE = basedll
31libnomglib_CFLAGS.win = -FI$(GLIB_SRC_PATH)/msvc_recommended_pragmas.h
32libnomglib_DEFS = \
33 HAVE_CONFIG_H \
34 GLIB_COMPILATION \
35 G_LOG_DOMAIN=\"GLib\" \
36 G_ENABLE_DEBUG \
37 PCRE_STATIC \
38 \
39 PCRE_STATIC \
40 HAVE_LONG_LONG_FORMAT \
41 SUPPORT_UCP \
42 SUPPORT_UTF8 \
43 NEWLINE=-1 \
44 MATCH_LIMIT=10000000 \
45 MATCH_LIMIT_RECURSION=10000000 \
46 MAX_NAME_SIZE=32 \
47 MAX_NAME_COUNT=10000 \
48 MAX_DUPLENGTH=30000 \
49 LINK_SIZE=2 \
50 EBCDIC=0 \
51 POSIX_MALLOC_THRESHOLD=10 \
52
53libnomglib_INCS = \
54 $(PATH_TARGET) \
55 $(GLIB_SRC_PATH)/glib \
56 $(GLIB_SRC_PATH)/glib/pcre \
57 $(GLIB_SRC_PATH)/
58libnomglib_INCS.win = \
59 $(GLIB_SRC_PATH)/build/win32/dirent
60
61libnomglib_LDFLAGS.darwin = -install_name @executable_path/../lib/libnomglib.dylib
62
63libnomglib_SOURCES = \
64 $(GLIB_SRC_PATH)/glib/gnulib/asnprintf.c \
65 $(GLIB_SRC_PATH)/glib/gnulib/printf.c \
66 $(GLIB_SRC_PATH)/glib/gnulib/printf-args.c \
67 $(GLIB_SRC_PATH)/glib/gnulib/printf-parse.c \
68 $(GLIB_SRC_PATH)/glib/gnulib/vasnprintf.c \
69 \
70 $(GLIB_SRC_PATH)/glib/pcre/pcre_compile.c \
71 $(GLIB_SRC_PATH)/glib/pcre/pcre_chartables.c \
72 $(GLIB_SRC_PATH)/glib/pcre/pcre_config.c \
73 $(GLIB_SRC_PATH)/glib/pcre/pcre_dfa_exec.c \
74 $(GLIB_SRC_PATH)/glib/pcre/pcre_exec.c \
75 $(GLIB_SRC_PATH)/glib/pcre/pcre_fullinfo.c \
76 $(GLIB_SRC_PATH)/glib/pcre/pcre_get.c \
77 $(GLIB_SRC_PATH)/glib/pcre/pcre_globals.c \
78 $(GLIB_SRC_PATH)/glib/pcre/pcre_info.c \
79 $(GLIB_SRC_PATH)/glib/pcre/pcre_maketables.c \
80 $(GLIB_SRC_PATH)/glib/pcre/pcre_newline.c \
81 $(GLIB_SRC_PATH)/glib/pcre/pcre_ord2utf8.c \
82 $(GLIB_SRC_PATH)/glib/pcre/pcre_refcount.c \
83 $(GLIB_SRC_PATH)/glib/pcre/pcre_study.c \
84 $(GLIB_SRC_PATH)/glib/pcre/pcre_tables.c \
85 $(GLIB_SRC_PATH)/glib/pcre/pcre_try_flipped.c \
86 $(GLIB_SRC_PATH)/glib/pcre/pcre_ucp_searchfuncs.c \
87 $(GLIB_SRC_PATH)/glib/pcre/pcre_valid_utf8.c \
88 $(GLIB_SRC_PATH)/glib/pcre/pcre_version.c \
89 $(GLIB_SRC_PATH)/glib/pcre/pcre_xclass.c \
90 \
91 $(GLIB_SRC_PATH)/glib/garray.c \
92 $(GLIB_SRC_PATH)/glib/gasyncqueue.c \
93 $(GLIB_SRC_PATH)/glib/gatomic.c \
94 $(GLIB_SRC_PATH)/glib/gbacktrace.c \
95 $(GLIB_SRC_PATH)/glib/gbase64.c \
96 $(GLIB_SRC_PATH)/glib/gbookmarkfile.c \
97 $(GLIB_SRC_PATH)/glib/gcache.c \
98 $(GLIB_SRC_PATH)/glib/gchecksum.c \
99 $(GLIB_SRC_PATH)/glib/gcompletion.c \
100 $(GLIB_SRC_PATH)/glib/gconvert.c \
101 $(GLIB_SRC_PATH)/glib/gdataset.c \
102 $(GLIB_SRC_PATH)/glib/gdate.c \
103 $(GLIB_SRC_PATH)/glib/gdir.c \
104 $(GLIB_SRC_PATH)/glib/gerror.c \
105 $(GLIB_SRC_PATH)/glib/gfileutils.c \
106 $(GLIB_SRC_PATH)/glib/ghash.c \
107 $(GLIB_SRC_PATH)/glib/ghook.c \
108 $(GLIB_SRC_PATH)/glib/giochannel.c \
109 $(GLIB_SRC_PATH)/glib/gkeyfile.c \
110 $(GLIB_SRC_PATH)/glib/glist.c \
111 $(GLIB_SRC_PATH)/glib/gmain.c \
112 $(GLIB_SRC_PATH)/glib/gmappedfile.c \
113 $(GLIB_SRC_PATH)/glib/gmarkup.c \
114 $(GLIB_SRC_PATH)/glib/gmem.c \
115 $(GLIB_SRC_PATH)/glib/gmessages.c \
116 $(GLIB_SRC_PATH)/glib/gnode.c \
117 $(GLIB_SRC_PATH)/glib/goption.c \
118 $(GLIB_SRC_PATH)/glib/gpattern.c \
119 $(GLIB_SRC_PATH)/glib/gprimes.c \
120 $(GLIB_SRC_PATH)/glib/gprintf.c \
121 $(GLIB_SRC_PATH)/glib/gqsort.c \
122 $(GLIB_SRC_PATH)/glib/gqueue.c \
123 $(GLIB_SRC_PATH)/glib/grand.c \
124 $(GLIB_SRC_PATH)/glib/gregex.c \
125 $(GLIB_SRC_PATH)/glib/grel.c \
126 $(GLIB_SRC_PATH)/glib/gscanner.c \
127 $(GLIB_SRC_PATH)/glib/gsequence.c \
128 $(GLIB_SRC_PATH)/glib/gshell.c \
129 $(GLIB_SRC_PATH)/glib/gslice.c \
130 $(GLIB_SRC_PATH)/glib/gslist.c \
131 $(GLIB_SRC_PATH)/glib/gstdio.c \
132 $(GLIB_SRC_PATH)/glib/gstrfuncs.c \
133 $(GLIB_SRC_PATH)/glib/gstring.c \
134 $(GLIB_SRC_PATH)/glib/gtestutils.c \
135 $(GLIB_SRC_PATH)/glib/gthread.c \
136 $(GLIB_SRC_PATH)/glib/gthreadpool.c \
137 $(GLIB_SRC_PATH)/glib/gtimer.c \
138 $(GLIB_SRC_PATH)/glib/gtree.c \
139 $(GLIB_SRC_PATH)/glib/gunibreak.c \
140 $(GLIB_SRC_PATH)/glib/gunicollate.c \
141 $(GLIB_SRC_PATH)/glib/gunidecomp.c \
142 $(GLIB_SRC_PATH)/glib/guniprop.c \
143 $(GLIB_SRC_PATH)/glib/gurifuncs.c \
144 $(GLIB_SRC_PATH)/glib/gutf8.c \
145 $(GLIB_SRC_PATH)/glib/gutils.c
146
147libnomglib_SOURCES.darwin = \
148 $(GLIB_SRC_PATH)/glib/libcharset/localcharset.c
149
150libnomglib_SOURCES.win = \
151 $(GLIB_SRC_PATH)/glib/libcharset/localcharset.c \
152 $(GLIB_SRC_PATH)/glib/gwin32.c \
153 $(GLIB_SRC_PATH)/glib/giowin32.c \
154 $(GLIB_SRC_PATH)/glib/gspawn-win32.c \
155 $(GLIB_SRC_PATH)/build/win32/dirent/dirent.c \
156 $(GLIB_SRC_PATH)/build/win32/dirent/wdirent.c \
157 $(PATH_TARGET)/glib-win.def
158
159libnomglib_ORDERDEPS = \
160 $(PATH_TARGET)/config.h \
161 $(PATH_TARGET)/glibconfig.h \
162 $(PATH_TARGET)/pcre_printint.src
163libnomglib_ORDERDEPS.darwin = \
164 $(PATH_TARGET)/libintl.h
165libnomglib_ORDERDEPS.win = \
166 $(PATH_TARGET)/libintl.h
167
168$(GLIB_SRC_PATH)/glib/libcharset/localcharset.c_DEFS += LIBDIR=\"/usr/lib\"
169
170
171#
172# Helper program for win32 spawn.
173#
174PROGRAMS.win += gspawn-win32-helper
175gspawn-win32-helper_TEMPLATE = basebin
176gspawn-win32-helper_INCS = \
177 $(libnomglib_INCS)
178gspawn-win32-helper_DEFS = \
179 $(filter-out G_LOG_DOMAIN%,$(libnomglib_DEFS)) \
180 G_LOG_DOMAIN=\"gspawn-win32-helper\"
181gspawn-win32-helper_SOURCES = \
182 $(GLIB_SRC_PATH)/glib/gspawn-win32-helper.c
183gspawn-win32-helper_LDFLAGS = /subsystem:windows
184gspawn-win32-helper_LIBS = \
185 $(PATH_LIB)/libnomglib.lib
186
187
188#
189# For later...
190#
191libnomgobject_DEFS = \
192 GOBJECT_COMPILATION
193libnomgobject_INCS = \
194 $(libnomglib_INCS) \
195 $(PATH_TARGET)/libnomglib
196libnomgobject_SOURCES = \
197 $(GLIB_SRC_PATH)/gobject/gboxed.c \
198 $(GLIB_SRC_PATH)/gobject/gclosure.c \
199 $(GLIB_SRC_PATH)/gobject/genums.c \
200 $(GLIB_SRC_PATH)/gobject/gobject.c \
201 $(GLIB_SRC_PATH)/gobject/gparam.c \
202 $(GLIB_SRC_PATH)/gobject/gparamspecs.c \
203 $(GLIB_SRC_PATH)/gobject/gsignal.c \
204 $(GLIB_SRC_PATH)/gobject/gsourceclosure.c \
205 $(GLIB_SRC_PATH)/gobject/gtype.c \
206 $(GLIB_SRC_PATH)/gobject/gtypemodule.c \
207 $(GLIB_SRC_PATH)/gobject/gtypeplugin.c \
208 $(GLIB_SRC_PATH)/gobject/gvalue.c \
209 $(GLIB_SRC_PATH)/gobject/gvaluearray.c \
210 $(GLIB_SRC_PATH)/gobject/gvaluetransform.c \
211 $(GLIB_SRC_PATH)/gobject/gvaluetypes.c \
212
213libnomgthread_SOURCES = \
214 $(GLIB_SRC_PATH)/gthread/gthread-impl.c
215
216libnomgmodule_SOURCES = \
217 $(GLIB_SRC_PATH)/gmodule/gmodule.c
218libnomgmodule_ORDERDEPS = \
219 $(PATH_TARGET)/gmoduleconf.h
220
221
222#
223# GLib header installation.
224#
225INSTALLS += glibinclude
226glibinclude_TEMPLATE = basebin
227glibinclude_INST = include/glib-2.0/
228glibinclude_SOURCES = \
229 $(GLIB_SRC_PATH)/glib/glib.h \
230 $(GLIB_SRC_PATH)/glib/glib-object.h
231
232INSTALLS += glibsubinclude
233glibsubinclude_TEMPLATE = basebin
234glibsubinclude_INST = include/glib-2.0/glib/
235glibsubinclude_SOURCES = \
236 $(GLIB_SRC_PATH)/glib/galloca.h \
237 $(GLIB_SRC_PATH)/glib/garray.h \
238 $(GLIB_SRC_PATH)/glib/gasyncqueue.h \
239 $(GLIB_SRC_PATH)/glib/gatomic.h \
240 $(GLIB_SRC_PATH)/glib/gbacktrace.h \
241 $(GLIB_SRC_PATH)/glib/gbase64.h \
242 $(GLIB_SRC_PATH)/glib/gbookmarkfile.h \
243 $(GLIB_SRC_PATH)/glib/gcache.h \
244 $(GLIB_SRC_PATH)/glib/gchecksum.h \
245 $(GLIB_SRC_PATH)/glib/gcompletion.h \
246 $(GLIB_SRC_PATH)/glib/gconvert.h \
247 $(GLIB_SRC_PATH)/glib/gdataset.h \
248 $(GLIB_SRC_PATH)/glib/gdate.h \
249 $(GLIB_SRC_PATH)/glib/gdir.h \
250 $(GLIB_SRC_PATH)/glib/gerror.h \
251 $(GLIB_SRC_PATH)/glib/gfileutils.h \
252 $(GLIB_SRC_PATH)/glib/ghash.h \
253 $(GLIB_SRC_PATH)/glib/ghook.h \
254 $(GLIB_SRC_PATH)/glib/gi18n.h \
255 $(GLIB_SRC_PATH)/glib/gi18n-lib.h \
256 $(GLIB_SRC_PATH)/glib/giochannel.h \
257 $(GLIB_SRC_PATH)/glib/gkeyfile.h \
258 $(GLIB_SRC_PATH)/glib/glist.h \
259 $(GLIB_SRC_PATH)/glib/gmacros.h \
260 $(GLIB_SRC_PATH)/glib/gmain.h \
261 $(GLIB_SRC_PATH)/glib/gmappedfile.h \
262 $(GLIB_SRC_PATH)/glib/gmarkup.h \
263 $(GLIB_SRC_PATH)/glib/gmem.h \
264 $(GLIB_SRC_PATH)/glib/gmessages.h \
265 $(GLIB_SRC_PATH)/glib/gnode.h \
266 $(GLIB_SRC_PATH)/glib/goption.h \
267 $(GLIB_SRC_PATH)/glib/gpattern.h \
268 $(GLIB_SRC_PATH)/glib/gprimes.h \
269 $(GLIB_SRC_PATH)/glib/gqsort.h \
270 $(GLIB_SRC_PATH)/glib/gquark.h \
271 $(GLIB_SRC_PATH)/glib/gqueue.h \
272 $(GLIB_SRC_PATH)/glib/grand.h \
273 $(GLIB_SRC_PATH)/glib/grel.h \
274 $(GLIB_SRC_PATH)/glib/gregex.h \
275 $(GLIB_SRC_PATH)/glib/gscanner.h \
276 $(GLIB_SRC_PATH)/glib/gsequence.h \
277 $(GLIB_SRC_PATH)/glib/gshell.h \
278 $(GLIB_SRC_PATH)/glib/gslice.h \
279 $(GLIB_SRC_PATH)/glib/gslist.h \
280 $(GLIB_SRC_PATH)/glib/gspawn.h \
281 $(GLIB_SRC_PATH)/glib/gstdio.h \
282 $(GLIB_SRC_PATH)/glib/gstrfuncs.h \
283 $(GLIB_SRC_PATH)/glib/gtestutils.h \
284 $(GLIB_SRC_PATH)/glib/gstring.h \
285 $(GLIB_SRC_PATH)/glib/gthread.h \
286 $(GLIB_SRC_PATH)/glib/gthreadpool.h \
287 $(GLIB_SRC_PATH)/glib/gtimer.h \
288 $(GLIB_SRC_PATH)/glib/gtree.h \
289 $(GLIB_SRC_PATH)/glib/gtypes.h \
290 $(GLIB_SRC_PATH)/glib/gunicode.h \
291 $(GLIB_SRC_PATH)/glib/gurifuncs.h \
292 $(GLIB_SRC_PATH)/glib/gutils.h \
293 $(GLIB_SRC_PATH)/glib/gwin32.h \
294 $(GLIB_SRC_PATH)/glib/gprintf.h
295
296INSTALLS += configexecinclude
297configexecinclude_TEMPLATE = basebin
298configexecinclude_INST = lib/glib-2.0/include/
299configexecinclude_SOURCES = \
300 $(PATH_TARGET)/glibconfig.h
301
302# HACK ALERT! Make sure the headers are installed extremely early.
303LIBRARIES += libglibdummy
304libglibdummy_TEMPLATE = baselib
305libglibdummy_NOINST = yes
306libglibdummy_ORDERDEPS = \
307 $(TARGET_glibinclude) \
308 $(TARGET_glibsubinclude) \
309 $(TARGET_configexecinclude)
310
311#
312# Generated files.
313#
314$(PATH_TARGET)/config.h: $(PATH_SUB_CURRENT)/config.h.$(BUILD_TARGET).$(BUILD_TARGET_ARCH) | $(call DIRDEP,$(PATH_TARGET))
315 $(INSTALL) $< $@
316
317$(PATH_TARGET)/glibconfig.h: $(PATH_SUB_CURRENT)/glibconfig.h.$(BUILD_TARGET).$(BUILD_TARGET_ARCH) | $(call DIRDEP,$(PATH_TARGET))
318 $(INSTALL) $< $@
319
320ifeq ($(BUILD_TARGET),win)
321$(PATH_TARGET)/gmoduleconf.h: $(GLIB_SRC_PATH)/gmodule/gmoduleconf.h.win32 | $(call DIRDEP,$(PATH_TARGET))
322 $(INSTALL) $< $@
323else
324$(PATH_TARGET)/gmoduleconf.h: $(GLIB_SRC_PATH)/gmodule/gmoduleconf.h.in | $(call DIRDEP,$(PATH_TARGET))
325 ifeq ($(BUILD_TARGET),os2)
326 $(SED) \
327 -e 's/@G_MODULE_IMPL@/G_MODULE_IMPL_OS2/'
328 -e 's/@G_MODULE_HAVE_DLERROR@/1/'
329 -e 's/@G_MODULE_NEED_USCORE@/0/'
330 -e 's/@G_MODULE_BROKEN_RTLD_GLOBAL@/0/' \
331 --output $@ \
332 $<
333 else ifeq ($(BUILD_TARGET),darwin)
334 $(SED) \
335 -e 's/@G_MODULE_IMPL@/G_MODULE_IMPL_DYLD/'
336 -e 's/@G_MODULE_HAVE_DLERROR@/1/'
337 -e 's/@G_MODULE_NEED_USCORE@/0/'
338 -e 's/@G_MODULE_BROKEN_RTLD_GLOBAL@/0/' \
339 --output $@ \
340 $<
341 else
342 $(SED) \
343 -e 's/@G_MODULE_IMPL@/G_MODULE_IMPL_DL/'
344 -e 's/@G_MODULE_HAVE_DLERROR@/1/'
345 -e 's/@G_MODULE_NEED_USCORE@/0/'
346 -e 's/@G_MODULE_BROKEN_RTLD_GLOBAL@/0/' \
347 --output $@ \
348 $<
349 endif
350endif
351
352
353$(PATH_TARGET)/libintl.h: Makefile.kmk
354 $(RM) -f $@
355 $(APPEND) $@ '#define _(String) (String)'
356 $(APPEND) $@ '#define N_(String) (String)'
357 $(APPEND) $@ '#define P_(String) (String)'
358 $(APPEND) $@ '#define textdomain(String) (String)'
359 $(APPEND) $@ '#define gettext(String) (String)'
360 $(APPEND) $@ '#define dgettext(Domain,String) (String)'
361 $(APPEND) $@ '#define dcgettext(Domain,String,Type) (String)'
362 $(APPEND) $@ '#define bindtextdomain(Domain,Directory) (Domain)'
363
364$(PATH_TARGET)/glib-win.def: $(GLIB_SRC_PATH)/glib/glib.symbols | $(call DIRDEP,$(PATH_TARGET))
365 $(RM) -f $@
366 $(APPEND) $@ 'LIBRARY libnomglib'
367 $(APPEND) $@ 'EXPORTS'
368 $(REDIRECT) -ao $@ -- $(TOOL_$(TEMPLATE_basebin_TOOL)_CC) -EP \
369 -DINCLUDE_VARIABLES \
370 -DG_OS_WIN32 \
371 -DINCLUDE_INTERNAL_SYMBOLS \
372 -DALL_FILES \
373 -DG_GNUC_MALLOC= \
374 -DG_GNUC_CONST= \
375 -DG_GNUC_NULL_TERMINATED= \
376 -DG_GNUC_NORETURN= \
377 '-DG_GNUC_PRINTF=;G_GNUC_PRINTF' \
378 $<
379
380$(PATH_TARGET)/pcre_printint.src:
381 $(RM) -f $@
382 $(APPEND) $@ ''
383 $(APPEND) $@ '#define pcre_printint(a,b,c) do {} while (0)'
384 $(APPEND) $@ ''
385
386$(PATH_TARGET)/gobject-win.def: $(GLIB_SRC_PATH)/gobject/gobject.symbols | $(call DIRDEP,$(PATH_TARGET))
387 $(RM) -f $@
388 $(APPEND) $@ 'LIBRARY libnomgobject'
389 $(APPEND) $@ 'EXPORTS'
390 $(REDIRECT) -ao $@ -- $(TOOL_$(TEMPLATE_basebin_TOOL)_CC) -EP \
391 -DINCLUDE_VARIABLES \
392 -DG_OS_WIN32 \
393 -DINCLUDE_INTERNAL_SYMBOLS \
394 -DALL_FILES \
395 -DG_GNUC_MALLOC= \
396 -DG_GNUC_CONST= \
397 -DG_GNUC_NULL_TERMINATED= \
398 -DG_GNUC_NORETURN= \
399 '-DG_GNUC_PRINTF=;G_GNUC_PRINTF' \
400 $<
401
402include $(PATH_KBUILD)/footer.kmk
403
404
Note: See TracBrowser for help on using the repository browser.