source: trunk/kBuild/tools/GCC4MACHO.kmk@ 2524

Last change on this file since 2524 was 2523, checked in by bird, 14 years ago

kBuild: debug info installation support, core hacking + mac os x.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 18.3 KB
Line 
1# $Id: GCC4MACHO.kmk 2523 2011-07-31 23:45:20Z bird $
2## @file
3# kBuild Tool Config - GCC v4 targeting Darwin (Mac OS X) Mach-o.
4#
5
6#
7# Copyright (c) 2004-2010 knut st. osmundsen <bird-kBuild-spamx@anduin.net>
8#
9# This file is part of kBuild.
10#
11# kBuild is free software; you can redistribute it and/or modify
12# it under the terms of the GNU General Public License as published by
13# the Free Software Foundation; either version 2 of the License, or
14# (at your option) any later version.
15#
16# kBuild is distributed in the hope that it will be useful,
17# but WITHOUT ANY WARRANTY; without even the implied warranty of
18# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19# GNU General Public License for more details.
20#
21# You should have received a copy of the GNU General Public License
22# along with kBuild; if not, write to the Free Software
23# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24#
25#
26# As a special exception you are granted permission to include this file, via
27# the kmk include directive, as you wish without this in itself causing the
28# resulting makefile, program or whatever to be covered by the GPL license.
29# This exception does not however invalidate any other reasons why the makefile,
30# program, whatever should not be covered the GPL.
31#
32#
33
34TOOL_GCC4MACHO := GCC v4 targeting Darwin (Mac OS X) Mach-o.
35
36# Tool Specific Properties
37TOOL_GCC4MACHO_PREFIX ?=
38TOOL_GCC4MACHO_SUFFIX ?= $(HOSTSUFF_EXE)
39TOOL_GCC4MACHO_CC ?= $(TOOL_GCC4MACHO_PREFIX)gcc$(TOOL_GCC4MACHO_SUFFIX)
40TOOL_GCC4MACHO_CXX ?= $(TOOL_GCC4MACHO_PREFIX)g++$(TOOL_GCC4MACHO_SUFFIX)
41TOOL_GCC4MACHO_OBJC ?= $(TOOL_GCC4MACHO_PREFIX)gcc$(TOOL_GCC4MACHO_SUFFIX)
42TOOL_GCC4MACHO_OBJCXX ?= $(TOOL_GCC4MACHO_PREFIX)gcc$(TOOL_GCC4MACHO_SUFFIX)
43TOOL_GCC4MACHO_AS ?= $(TOOL_GCC4MACHO_PREFIX)gcc$(TOOL_GCC4MACHO_SUFFIX)
44TOOL_GCC4MACHO_LD ?= $(TOOL_GCC4MACHO_PREFIX)gcc$(TOOL_GCC4MACHO_SUFFIX)
45TOOL_GCC4MACHO_LD_SYSMOD ?= $(TOOL_GCC4MACHO_PREFIX)gcc$(TOOL_GCC4MACHO_SUFFIX)
46ifndef TOOL_GCC4MACHO_LDFLAGS.$(KBUILD_TARGET)
47TOOL_GCC4MACHO_LDFLAGS.dll ?= -dynamiclib
48else
49TOOL_GCC4MACHO_LDFLAGS.dll ?= $(TOOL_GCC4MACHO_LDFLAGS.$(KBUILD_TARGET))
50endif
51TOOL_GCC4MACHO_LDFLAGS.sysmod ?= -r
52#TOOL_GCC4MACHO_LD_SONAME = -Wl,-dylib_install_name $(firstword $($(1)_SONAME.$(KBUILD_TARGET).$(KBUILD_TYPE)) $($(1)_SONAME.$(KBUILD_TARGET)) $($(1)_SONAME.$(KBUILD_TYPE)) $($(1)_SONAME) $(notdir $(2)))
53TOOL_GCC4MACHO_DSYMUTIL ?= dsymutil
54
55ifdef SLKRUNS
56TOOL_GCC4MACHO_CC += -fmessage-length=0
57TOOL_GCC4MACHO_CXX += -fmessage-length=0
58TOOL_GCC4MACHO_OBJC += -fmessage-length=0
59TOOL_GCC4MACHO_OBJCXX += -fmessage-length=0
60endif
61
62# General Properties used by kBuild
63TOOL_GCC4MACHO_COBJSUFF ?= .o
64TOOL_GCC4MACHO_CFLAGS ?=
65TOOL_GCC4MACHO_CFLAGS.debug ?= -g
66TOOL_GCC4MACHO_CFLAGS.profile ?= -g -O2 #-pg
67TOOL_GCC4MACHO_CFLAGS.release ?= -O2
68TOOL_GCC4MACHO_CINCS ?=
69TOOL_GCC4MACHO_CDEFS ?=
70
71TOOL_GCC4MACHO_CXXOBJSUFF ?= .o
72TOOL_GCC4MACHO_CXXFLAGS ?=
73TOOL_GCC4MACHO_CXXFLAGS.debug ?= -g
74TOOL_GCC4MACHO_CXXFLAGS.profile ?= -g -O2 #-pg
75TOOL_GCC4MACHO_CXXFLAGS.release ?= -O2
76TOOL_GCC4MACHO_CXXINCS ?=
77TOOL_GCC4MACHO_CXXDEFS ?=
78
79TOOL_GCC4MACHO_OBJCOBJSUFF ?= .o
80TOOL_GCC4MACHO_OBJCFLAGS ?=
81TOOL_GCC4MACHO_OBJCFLAGS.debug ?= -g
82TOOL_GCC4MACHO_OBJCFLAGS.profile?= -O2 #-g -pg
83TOOL_GCC4MACHO_OBJCFLAGS.release?= -O2
84TOOL_GCC4MACHO_OBJCINCS ?=
85TOOL_GCC4MACHO_OBJCDEFS ?=
86
87TOOL_GCC4MACHO_OBJCXXOBJSUFF ?= .o
88TOOL_GCC4MACHO_OBJCXXFLAGS ?=
89TOOL_GCC4MACHO_OBJCXXFLAGS.debug ?= -g
90TOOL_GCC4MACHO_OBJCXXFLAGS.profile ?= -O2 #-g -pg
91TOOL_GCC4MACHO_OBJCXXFLAGS.release ?= -O2
92TOOL_GCC4MACHO_OBJCXXINCS ?=
93TOOL_GCC4MACHO_OBJCXXDEFS ?=
94
95TOOL_GCC4MACHO_ASFLAGS ?= -x assembler-with-cpp
96TOOL_GCC4MACHO_ASFLAGS.debug ?= -g
97TOOL_GCC4MACHO_ASFLAGS.profile ?= -g
98TOOL_GCC4MACHO_ASOBJSUFF ?= .o
99
100TOOL_GCC4MACHO_AR ?= ar$(HOSTSUFF_EXE)
101TOOL_GCC4MACHO_ARFLAGS ?= -c -rs
102TOOL_GCC4MACHO_ARLIBSUFF ?= .a
103
104TOOL_GCC4MACHO_LDFLAGS ?=
105TOOL_GCC4MACHO_LDFLAGS.debug ?= -g
106TOOL_GCC4MACHO_LDFLAGS.profile ?= -g
107
108
109##
110# Calculate the files in the debug bundle.
111# @param 1 The whole output filename.
112# @param 2 The output filename sans suffix.
113TOOL_GCC4MACHO_DEBUG_BUNDLE_FN = \
114 $(1).dSYM/ \
115 $(1).dSYM/Contents/ \
116 $(1).dSYM/Contents/Resources/ \
117 $(1).dSYM/Contents/Resources/DWARF/ \
118 $(1).dSYM/Contents/Info.plist \
119 $(1).dSYM/Contents/Resources/DWARF/$(notdir $(1))
120
121##
122# Calculate the files in the debug bundle.
123# @param 1 The whole linker output filename.
124# @param 2 The linker output filename sans suffix.
125# @param 3 The desired install name (no dir slash).
126TOOL_GCC4MACHO_DEBUG_INSTALL_FN= \
127 $(3).dSYM/ \
128 $(3).dSYM/Contents/ \
129 $(3).dSYM/Contents/Resources/ \
130 $(3).dSYM/Contents/Resources/DWARF/ \
131 $(1).dSYM/Contents/Info.plist=>$(3).dSYM/Contents/Info.plist \
132 $(1).dSYM/Contents/Resources/DWARF/$(notdir $(1))=>$(3).dSYM/Contents/Resources/DWARF/$(notdir $(1))
133
134
135## Compile C source.
136# @param $(target) Normalized main target name.
137# @param $(source) Source filename (relative).
138# @param $(obj) Object file name. This shall be (re)created by the compilation.
139# @param $(dep) Dependcy file. This shall be (re)created by the compilation.
140# @param $(flags) Flags.
141# @param $(defs) Definitions. No -D or something.
142# @param $(incs) Includes. No -I or something.
143# @param $(dirdep) Directory creation dependency.
144# @param $(deps) Other dependencies.
145#
146# @param $(outbase) Output basename (full). Use this for list files and such.
147# @param $(objsuff) Object suffix.
148TOOL_GCC4MACHO_COMPILE_C_DEPEND =
149TOOL_GCC4MACHO_COMPILE_C_DEPORD =
150ifdef KBUILD_USE_KOBJCACHE
151TOOL_GCC4MACHO_COMPILE_C_USES_KOBJCACHE = 1
152TOOL_GCC4MACHO_COMPILE_C_OUTPUT = $(outbase).i
153define TOOL_GCC4MACHO_COMPILE_C_CMDS
154 $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -p\
155 --kObjCache-cpp $(outbase).i\
156 $(TOOL_GCC4MACHO_CC) -E -o -\
157 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
158 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
159 $(abspath $(source))\
160 --kObjCache-cc $(obj)\
161 $(TOOL_GCC4MACHO_CC) -c\
162 $(flags) -fpreprocessed -x c\
163 -o $(obj)\
164 -
165 $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
166endef
167else # !KBUILD_USE_KOBJCACHE
168TOOL_GCC4MACHO_COMPILE_C_OUTPUT =
169define TOOL_GCC4MACHO_COMPILE_C_CMDS
170 $(QUIET)$(TOOL_GCC4MACHO_CC) -c\
171 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
172 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
173 -o $(obj)\
174 $(abspath $(source))
175 $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
176endef
177endif # !KUSE_OBJCACHE
178
179
180## Compile C++ source.
181# @param $(target) Normalized main target name.
182# @param $(source) Source filename (relative).
183# @param $(obj) Object file name. This shall be (re)created by the compilation.
184# @param $(dep) Dependcy file. This shall be (re)created by the compilation.
185# @param $(flags) Flags.
186# @param $(defs) Definitions. No -D or something.
187# @param $(incs) Includes. No -I or something.
188# @param $(dirdep) Directory creation dependency.
189# @param $(deps) Other dependencies.
190# @param $(outbase) Output basename (full). Use this for list files and such.
191# @param $(objsuff) Object suffix.
192TOOL_GCC4MACHO_COMPILE_CXX_DEPEND =
193TOOL_GCC4MACHO_COMPILE_CXX_DEPORD =
194ifdef KBUILD_USE_KOBJCACHE
195TOOL_GCC4MACHO_COMPILE_CXX_USES_KOBJCACHE = 1
196TOOL_GCC4MACHO_COMPILE_CXX_OUTPUT = $(outbase).ii
197define TOOL_GCC4MACHO_COMPILE_CXX_CMDS
198 $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -p\
199 --kObjCache-cpp $(outbase).ii\
200 $(TOOL_GCC4MACHO_CXX) -E -o -\
201 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
202 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
203 $(abspath $(source))\
204 --kObjCache-cc $(obj)\
205 $(TOOL_GCC4MACHO_CXX) -c\
206 $(flags) -fpreprocessed -x c++\
207 -o $(obj)\
208 -
209 $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
210endef
211else # !KBUILD_USE_KOBJCACHE
212TOOL_GCC4MACHO_COMPILE_CXX_OUTPUT =
213define TOOL_GCC4MACHO_COMPILE_CXX_CMDS
214 $(QUIET)$(TOOL_GCC4MACHO_CXX) -c\
215 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
216 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
217 -o $(obj)\
218 $(abspath $(source))
219 $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
220endef
221endif # !KBUILD_USE_KOBJCACHE
222
223
224## Compile Objective-C source.
225# @param $(target) Normalized main target name.
226# @param $(source) Source filename (relative).
227# @param $(obj) Object file name. This shall be (re)created by the compilation.
228# @param $(dep) Dependcy file. This shall be (re)created by the compilation.
229# @param $(flags) Flags.
230# @param $(defs) Definitions. No -D or something.
231# @param $(incs) Includes. No -I or something.
232# @param $(dirdep) Directory creation dependency.
233# @param $(deps) Other dependencies.
234# @param $(outbase) Output basename (full). Use this for list files and such.
235# @param $(objsuff) Object suffix.
236TOOL_GCC4MACHO_COMPILE_OBJC_DEPEND =
237TOOL_GCC4MACHO_COMPILE_OBJC_DEPORD =
238ifdef KBUILD_USE_KOBJCACHE
239TOOL_GCC4MACHO_COMPILE_OBJC_USES_KOBJCACHE = 1
240TOOL_GCC4MACHO_COMPILE_OBJC_OUTPUT = $(outbase).mi
241define TOOL_GCC4MACHO_COMPILE_OBJC_CMDS
242 $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -p\
243 --kObjCache-cpp $(outbase).ii\
244 $(TOOL_GCC4MACHO_OBJC) -E -o -\
245 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
246 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
247 $(abspath $(source))\
248 --kObjCache-cc $(obj)\
249 $(TOOL_GCC4MACHO_OBJC) -c\
250 $(flags) -fpreprocessed -x cbjective-c\
251 -o $(obj)\
252 -
253 $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
254endef
255else # !KBUILD_USE_KOBJCACHE
256TOOL_GCC4MACHO_COMPILE_OBJC_OUTPUT =
257define TOOL_GCC4MACHO_COMPILE_OBJC_CMDS
258 $(QUIET)$(TOOL_GCC4MACHO_OBJC) -c\
259 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
260 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
261 -o $(obj)\
262 $(abspath $(source))
263 $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
264endef
265endif # !KBUILD_USE_KOBJCACHE
266
267
268## Compile Objective-C++ source.
269# @param $(target) Normalized main target name.
270# @param $(source) Source filename (relative).
271# @param $(obj) Object file name. This shall be (re)created by the compilation.
272# @param $(dep) Dependcy file. This shall be (re)created by the compilation.
273# @param $(flags) Flags.
274# @param $(defs) Definitions. No -D or something.
275# @param $(incs) Includes. No -I or something.
276# @param $(dirdep) Directory creation dependency.
277# @param $(deps) Other dependencies.
278# @param $(outbase) Output basename (full). Use this for list files and such.
279# @param $(objsuff) Object suffix.
280TOOL_GCC4MACHO_COMPILE_OBJCXX_DEPEND =
281TOOL_GCC4MACHO_COMPILE_OBJCXX_DEPORD =
282ifdef KBUILD_USE_KOBJCACHE
283TOOL_GCC4MACHO_COMPILE_OBJCXX_USES_KOBJCACHE = 1
284TOOL_GCC4MACHO_COMPILE_OBJCXX_OUTPUT = $(outbase).mii
285define TOOL_GCC4MACHO_COMPILE_OBJCXX_CMDS
286 $(QUIET)$(KOBJCACHE) -f $(outbase).koc -d $(PATH_OBJCACHE) -t $(bld_trg).$(bld_trg_arch) -p\
287 --kObjCache-cpp $(outbase).mii\
288 $(TOOL_GCC4MACHO_OBJCXX) -E -o -\
289 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
290 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
291 $(abspath $(source))\
292 --kObjCache-cc $(obj)\
293 $(TOOL_GCC4MACHO_OBJCXX) -c\
294 $(flags) -fpreprocessed -x objective-c++\
295 -o $(obj)\
296 -
297 $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
298endef
299else # !KBUILD_USE_KOBJCACHE
300TOOL_GCC4MACHO_COMPILE_OBJCXX_OUTPUT =
301define TOOL_GCC4MACHO_COMPILE_OBJCXX_CMDS
302 $(QUIET)$(TOOL_GCC4MACHO_OBJCXX) -c\
303 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
304 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
305 -o $(obj)\
306 $(abspath $(source))
307 $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
308endef
309endif # !KBUILD_USE_KOBJCACHE
310
311
312## Compile Assembly source.
313# @param $(target) Normalized main target name.
314# @param $(source) Source filename (relative).
315# @param $(obj) Object file name. This shall be (re)created by the compilation.
316# @param $(dep) Dependcy file. This shall be (re)created by the compilation.
317# @param $(flags) Flags.
318# @param $(defs) Definitions. No -D or something.
319# @param $(incs) Includes. No -I or something.
320# @param $(dirdep) Directory creation dependency.
321# @param $(deps) Other dependencies.
322# @param $(outbase) Output basename (full). Use this for list files and such.
323# @param $(objsuff) Object suffix.
324#
325TOOL_GCC4MACHO_COMPILE_AS_OUTPUT =
326TOOL_GCC4MACHO_COMPILE_AS_DEPEND =
327TOOL_GCC4MACHO_COMPILE_AS_DEPORD =
328define TOOL_GCC4MACHO_COMPILE_AS_CMDS
329 $(QUIET)$(TOOL_GCC4MACHO_AS) -c\
330 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\
331 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\
332 -o $(obj)\
333 $(abspath $(source))
334 $(QUIET)$(APPEND) -n "$(dep)" "" "$(source):" ""
335endef
336
337
338## Link library
339# @param $(target) Normalized main target name.
340# @param $(out) Library name.
341# @param $(objs) Object files to put in the library.
342# @param $(flags) Flags.
343# @param $(dirdep) Directory creation dependency.
344# @param $(deps) Other dependencies.
345# @param $(othersrc) Unhandled sources.
346# @param $(outbase) Output basename (full). Use this for list files and such.
347TOOL_GCC4MACHO_LINK_LIBRARY_OUTPUT =
348TOOL_GCC4MACHO_LINK_LIBRARY_DEPEND = $(othersrc)
349TOOL_GCC4MACHO_LINK_LIBRARY_DEPORD =
350define TOOL_GCC4MACHO_LINK_LIBRARY_CMDS
351 $(if $(strip $(objs)),$(call xargs,$(QUIET)$(TOOL_GCC4MACHO_AR) $(flags) $(out),$(objs)))
352 $(foreach lib,$(othersrc)\
353 ,$(NL)$(TAB)$(call MSG_AR_MERGE,$(target),$(out),$(lib)) \
354 $(NL)$(TAB)$(QUIET)$(RM_EXT) -f $(dir $(outbase))ar.tmp.dir/* \
355 $(NL)$(TAB)$(QUIET)$(MKDIR) -p $(dir $(outbase))/ar.tmp.dir/ \
356 $(NL)$(TAB)$(QUIET)(cd $(dir $(outbase))ar.tmp.dir/ \
357 && $(TOOL_GCC4MACHO_AR) -x $(abspath $(lib)) \
358 && $(RM_EXT) -f ./__.SYMDEF* \
359 && $(TOOL_GCC4MACHO_AR) $(flags) $(out) *) \
360 $(NL)$(TAB)$(QUIET)$(RM_EXT) -f $(dir $(outbase))/ar.tmp.dir/* \
361 $(NL)$(TAB)$(QUIET)$(RMDIR) $(dir $(outbase))ar.tmp.dir/)
362endef
363
364
365## Link program
366# @param $(target) Normalized main target name.
367# @param $(out) Program name.
368# @param $(objs) Object files to link together.
369# @param $(libs) Libraries to search.
370# @param $(libpath) Library search paths.
371# @param $(flags) Flags.
372# @param $(dirdep) Directory creation dependency.
373# @param $(deps) Other dependencies.
374# @param $(othersrc) Unhandled sources.
375# @param $(custom_pre) Custom step invoked before linking.
376# @param $(custom_post) Custom step invoked after linking.
377# @param $(outbase) Output basename (full). Use this for list files and such.
378TOOL_GCC4MACHO_LINK_PROGRAM_OUTPUT = $(outbase).rsp
379TOOL_GCC4MACHO_LINK_PROGRAM_OUTPUT_DEBUG = $(call TOOL_GCC4MACHO_DEBUG_BUNDLE_FN,$(out))
380TOOL_GCC4MACHO_LINK_PROGRAM_DEBUG_INSTALL_FN = $(TOOL_GCC4MACHO_DEBUG_INSTALL_FN)
381TOOL_GCC4MACHO_LINK_PROGRAM_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib)))
382TOOL_GCC4MACHO_LINK_PROGRAM_DEPORD =
383define TOOL_GCC4MACHO_LINK_PROGRAM_CMDS
384 $(QUIET)$(APPEND) -n $(outbase).rsp $(objs)
385 $(QUIET)$(TOOL_GCC4MACHO_LD) $(flags) -o $(out)\
386 -filelist $(outbase).rsp\
387 $(foreach p,$(libpath), -L$(p))\
388 $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(lib)), $(lib)))
389 ifeq ($(ld_debug),split)
390 $(QUIET)$(TOOL_GCC4MACHO_DSYMUTIL) --verbose -o $(out).dSYM/ $(out)
391 endif
392endef
393
394
395
396## Link DLL
397# @param $(target) Normalized main target name.
398# @param $(out) Program name.
399# @param $(objs) Object files to link together.
400# @param $(libs) Libraries to search.
401# @param $(libpath) Library search paths.
402# @param $(flags) Flags.
403# @param $(dirdep) Directory creation dependency.
404# @param $(deps) Other dependencies.
405# @param $(othersrc) Unhandled sources.
406# @param $(custom_pre) Custom step invoked before linking.
407# @param $(custom_post) Custom step invoked after linking.
408# @param $(outbase) Output basename (full). Use this for list files and such.
409TOOL_GCC4MACHO_LINK_DLL_OUTPUT = $(outbase).rsp
410TOOL_GCC4MACHO_LINK_DLL_OUTPUT_DEBUG = $(call TOOL_GCC4MACHO_DEBUG_BUNDLE_FN,$(out))
411TOOL_GCC4MACHO_LINK_DLL_DEBUG_INSTALL_FN = $(TOOL_GCC4MACHO_DEBUG_INSTALL_FN)
412TOOL_GCC4MACHO_LINK_DLL_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib)))
413TOOL_GCC4MACHO_LINK_DLL_DEPORD =
414define TOOL_GCC4MACHO_LINK_DLL_CMDS
415 $(QUIET)$(APPEND) -n $(outbase).rsp $(objs)
416 $(QUIET)$(TOOL_GCC4MACHO_LD) $(TOOL_GCC4MACHO_LDFLAGS.dll) $(flags) -o $(out)\
417 $(call TOOL_GCC4MACHO_LD_SONAME,$(target),$(out))\
418 -filelist $(outbase).rsp\
419 $(foreach p,$(libpath), -L$(p))\
420 $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(lib)), $(lib)))
421 ifeq ($(ld_debug),split)
422 $(QUIET)$(TOOL_GCC4MACHO_DSYMUTIL) --verbose -o $(out).dSYM/ $(out)
423 endif
424endef
425
426
427## Link system module (windows aka driver, linux aka kernel module)
428# @param $(target) Normalized main target name.
429# @param $(out) System module name.
430# @param $(objs) Object files to link together.
431# @param $(libs) Libraries to search.
432# @param $(libpath) Library search paths.
433# @param $(flags) Flags.
434# @param $(dirdep) Directory creation dependency.
435# @param $(deps) Other dependencies.
436# @param $(othersrc) Unhandled sources.
437# @param $(custom_pre) Custom step invoked before linking.
438# @param $(custom_post) Custom step invoked after linking.
439# @param $(outbase) Output basename (full). Use this for list files and such.
440TOOL_GCC4MACHO_LINK_SYSMOD_OUTPUT = $(outbase).rsp
441TOOL_GCC4MACHO_LINK_SYSMOD_OUTPUT_DEBUG = $(call TOOL_GCC4MACHO_DEBUG_BUNDLE_FN,$(out))
442TOOL_GCC4MACHO_LINK_SYSMOD_DEBUG_INSTALL_FN = $(TOOL_GCC4MACHO_DEBUG_INSTALL_FN)
443TOOL_GCC4MACHO_LINK_SYSMOD_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib)))
444TOOL_GCC4MACHO_LINK_SYSMOD_DEPORD =
445define TOOL_GCC4MACHO_LINK_SYSMOD_CMDS
446 $(QUIET)$(APPEND) -n $(outbase).rsp $(objs)
447 $(QUIET)$(TOOL_GCC4MACHO_LD_SYSMOD) $(TOOL_GCC4MACHO_LDFLAGS.sysmod) $(flags) -o $(out)\
448 -filelist $(outbase).rsp\
449 $(foreach p,$(libpath), -L$(p))\
450 $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(lib)), $(lib)))
451 ifeq ($(ld_debug),split)
452 $(QUIET)$(TOOL_GCC4MACHO_DSYMUTIL) --verbose -o $(out).dSYM/ $(out)
453 endif
454endef
455
Note: See TracBrowser for help on using the repository browser.