Changeset 826 for trunk/kBuild/tools
- Timestamp:
- Feb 1, 2007, 7:39:00 AM (18 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/kBuild/tools/GCC3PLAIN.kmk
r819 r826 2 2 ## @file 3 3 # 4 # kBuild Tool Config - Generic GCC v3.2.x or later Using The System GCC .4 # kBuild Tool Config - Generic GCC v3.2.x or later Using The System GCC, any Unix Linker and Unix Archiver. 5 5 # 6 6 # Copyright (c) 2004-2007 knut st. osmundsen <bird-kBuild-spam@anduin.net> … … 25 25 # 26 26 27 TOOL_GCC3 := Generic GCC v3.2.x or later Using The System GCC and Binutils.27 TOOL_GCC3PLAIN := Generic GCC v3.2.x or later Using The System GCC, any Unix Linker and Unix Archive. 28 28 29 29 # Tool Specific Properties 30 TOOL_GCC3_CC ?= gcc$(HOSTSUFF_EXE) 31 TOOL_GCC3_CXX ?= g++$(HOSTSUFF_EXE) 32 TOOL_GCC3_AS ?= gcc$(HOSTSUFF_EXE) 33 ifeq ($(BUILD_TARGET),solaris) ## @todo drop the MRI script! 34 TOOL_GCC3_AR ?= gar$(HOSTSUFF_EXE) 35 else 36 TOOL_GCC3_AR ?= ar$(HOSTSUFF_EXE) 30 TOOL_GCC3PLAIN_CC ?= gcc$(HOSTSUFF_EXE) 31 TOOL_GCC3PLAIN_CXX ?= g++$(HOSTSUFF_EXE) 32 TOOL_GCC3PLAIN_AS ?= gcc$(HOSTSUFF_EXE) 33 TOOL_GCC3PLAIN_AR ?= ar$(HOSTSUFF_EXE) 34 TOOL_GCC3PLAIN_RANLIB ?= ranlib$(HOSTSUFF_EXE) 35 TOOL_GCC3PLAIN_LD ?= g++$(HOSTSUFF_EXE) 36 TOOL_GCC3PLAIN_LDFLAGS.dll ?= -shared 37 TOOL_GCC3PLAIN_LD_SONAME ?= -Wl,-soname=$(firstword $($(1)_SONAME.$(BUILD_TARGET).$(BUILD_TYPE)) $($(1)_SONAME.$(BUILD_TARGET)) $($(1)_SONAME.$(BUILD_TYPE)) $($(1)_SONAME) $(notdir $(2))) 38 ifdef SLKRUNS 39 TOOL_GCC3PLAIN_CC += -fmessage-length=0 40 TOOL_GCC3PLAIN_CXX += -fmessage-length=0 37 41 endif 38 ifeq ($(BUILD_TARGET),os2)39 TOOL_GCC3_AR_IMP ?= emximp$(HOSTSTUFF_EXE)40 else41 TOOL_GCC3_AR_IMP ?= $(ECHO) not supported!42 endif43 TOOL_GCC3_LD ?= g++$(HOSTSUFF_EXE)44 TOOL_GCC3_LD_SYSMOD ?= ld$(HOSTSUFF_EXE)45 ifndef TOOL_GCC3_LDFLAGS.$(BUILD_TARGET)46 TOOL_GCC3_LDFLAGS.dll ?= -shared47 else48 TOOL_GCC3_LDFLAGS.dll ?= $(TOOL_GCC3_LDFLAGS.$(BUILD_TARGET))49 endif50 TOOL_GCC3_LDFLAGS.sysmod ?= -r51 TOOL_GCC3_LD_SONAME ?= -Wl,-soname=$(firstword $($(1)_SONAME.$(BUILD_TARGET).$(BUILD_TYPE)) $($(1)_SONAME.$(BUILD_TARGET)) $($(1)_SONAME.$(BUILD_TYPE)) $($(1)_SONAME) $(notdir $(2)))52 ifeq ($(BUILD_TARGET),os2)53 TOOL_GCC3_LD_MAP ?= -Zmap=$(1)54 TOOL_GCC3_LD_SYSMOD_MAP ?= -Zmap=$(1)55 endif56 ifdef SLKRUNS57 TOOL_GCC3_CC += -fmessage-length=058 TOOL_GCC3_CXX += -fmessage-length=059 endif60 42 61 43 # General Properties used by kBuild 62 TOOL_GCC3 _COBJSUFF ?= .o63 TOOL_GCC3 _CFLAGS ?=64 TOOL_GCC3 _CFLAGS.debug ?= -g65 TOOL_GCC3 _CFLAGS.profile ?= -g -O2 #-pg66 TOOL_GCC3 _CFLAGS.release ?= -O267 TOOL_GCC3 _CINCS ?=68 TOOL_GCC3 _CDEFS ?=69 70 TOOL_GCC3 _CXXOBJSUFF ?= .o71 TOOL_GCC3 _CXXOBJSUFF ?= .o72 TOOL_GCC3 _CXXFLAGS ?=73 TOOL_GCC3 _CXXFLAGS.debug ?= -g74 TOOL_GCC3 _CXXFLAGS.profile ?= -g -O2 #-pg75 TOOL_GCC3 _CXXFLAGS.release ?= -O276 TOOL_GCC3 _CXXINCS ?=77 TOOL_GCC3 _CXXDEFS ?=78 79 TOOL_GCC3 _ASFLAGS ?= -x assembler-with-cpp80 TOOL_GCC3 _ASFLAGS.debug ?= -g81 TOOL_GCC3 _ASFLAGS.profile ?= -g82 TOOL_GCC3 _ASOBJSUFF ?= .o83 84 TOOL_GCC3 _ARFLAGS ?= cr85 TOOL_GCC3 _ARLIBSUFF ?= .a86 87 TOOL_GCC3 _LDFLAGS ?=88 TOOL_GCC3 _LDFLAGS.debug ?= -g89 TOOL_GCC3 _LDFLAGS.profile ?= -g44 TOOL_GCC3PLAIN_COBJSUFF ?= .o 45 TOOL_GCC3PLAIN_CFLAGS ?= 46 TOOL_GCC3PLAIN_CFLAGS.debug ?= -g 47 TOOL_GCC3PLAIN_CFLAGS.profile ?= -g -O2 #-pg 48 TOOL_GCC3PLAIN_CFLAGS.release ?= -O2 49 TOOL_GCC3PLAIN_CINCS ?= 50 TOOL_GCC3PLAIN_CDEFS ?= 51 52 TOOL_GCC3PLAIN_CXXOBJSUFF ?= .o 53 TOOL_GCC3PLAIN_CXXOBJSUFF ?= .o 54 TOOL_GCC3PLAIN_CXXFLAGS ?= 55 TOOL_GCC3PLAIN_CXXFLAGS.debug ?= -g 56 TOOL_GCC3PLAIN_CXXFLAGS.profile ?= -g -O2 #-pg 57 TOOL_GCC3PLAIN_CXXFLAGS.release ?= -O2 58 TOOL_GCC3PLAIN_CXXINCS ?= 59 TOOL_GCC3PLAIN_CXXDEFS ?= 60 61 TOOL_GCC3PLAIN_ASFLAGS ?= -x assembler-with-cpp 62 TOOL_GCC3PLAIN_ASFLAGS.debug ?= -g 63 TOOL_GCC3PLAIN_ASFLAGS.profile ?= -g 64 TOOL_GCC3PLAIN_ASOBJSUFF ?= .o 65 66 TOOL_GCC3PLAIN_ARFLAGS ?= cr 67 TOOL_GCC3PLAIN_ARLIBSUFF ?= .a 68 69 TOOL_GCC3PLAIN_LDFLAGS ?= 70 TOOL_GCC3PLAIN_LDFLAGS.debug ?= -g 71 TOOL_GCC3PLAIN_LDFLAGS.profile ?= -g 90 72 91 73 … … 103 85 # @param $(outbase) Output basename (full). Use this for list files and such. 104 86 # @param $(objsuff) Object suffix. 105 TOOL_GCC3 _COMPILE_C_OUTPUT =106 TOOL_GCC3 _COMPILE_C_DEPEND =107 TOOL_GCC3 _COMPILE_C_DEPORD =108 define TOOL_GCC3 _COMPILE_C_CMDS109 $(QUIET)$(TOOL_GCC3 _CC) -c\87 TOOL_GCC3PLAIN_COMPILE_C_OUTPUT = 88 TOOL_GCC3PLAIN_COMPILE_C_DEPEND = 89 TOOL_GCC3PLAIN_COMPILE_C_DEPORD = 90 define TOOL_GCC3PLAIN_COMPILE_C_CMDS 91 $(QUIET)$(TOOL_GCC3PLAIN_CC) -c\ 110 92 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\ 111 93 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\ … … 127 109 # @param $(outbase) Output basename (full). Use this for list files and such. 128 110 # @param $(objsuff) Object suffix. 129 TOOL_GCC3 _COMPILE_CXX_OUTPUT =130 TOOL_GCC3 _COMPILE_CXX_DEPEND =131 TOOL_GCC3 _COMPILE_CXX_DEPORD =132 define TOOL_GCC3 _COMPILE_CXX_CMDS133 $(QUIET)$(TOOL_GCC3 _CXX) -c\111 TOOL_GCC3PLAIN_COMPILE_CXX_OUTPUT = 112 TOOL_GCC3PLAIN_COMPILE_CXX_DEPEND = 113 TOOL_GCC3PLAIN_COMPILE_CXX_DEPORD = 114 define TOOL_GCC3PLAIN_COMPILE_CXX_CMDS 115 $(QUIET)$(TOOL_GCC3PLAIN_CXX) -c\ 134 116 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\ 135 117 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\ … … 152 134 # @param $(objsuff) Object suffix. 153 135 # 154 TOOL_GCC3 _COMPILE_AS_OUTPUT =155 TOOL_GCC3 _COMPILE_AS_DEPEND =156 TOOL_GCC3 _COMPILE_AS_DEPORD =157 define TOOL_GCC3 _COMPILE_AS_CMDS158 $(QUIET)$(TOOL_GCC3 _AS) -c\136 TOOL_GCC3PLAIN_COMPILE_AS_OUTPUT = 137 TOOL_GCC3PLAIN_COMPILE_AS_DEPEND = 138 TOOL_GCC3PLAIN_COMPILE_AS_DEPORD = 139 define TOOL_GCC3PLAIN_COMPILE_AS_CMDS 140 $(QUIET)$(TOOL_GCC3PLAIN_AS) -c\ 159 141 $(flags) $(addprefix -I, $(incs)) $(addprefix -D, $(defs))\ 160 142 -Wp,-MD,$(dep) -Wp,-MT,$(obj) -Wp,-MP\ … … 173 155 # @param $(othersrc) Unhandled sources. 174 156 # @param $(outbase) Output basename (full). Use this for list files and such. 175 TOOL_GCC3_LINK_LIBRARY_OUTPUT = $(out).ar-script $(outbase).imp.a 176 TOOL_GCC3_LINK_LIBRARY_DEPEND = $(othersrc) 177 TOOL_GCC3_LINK_LIBRARY_DEPORD = 178 ifeq ($(filter append-dash-n,$(KMK_FEATURES)),append-dash-n) 179 define TOOL_GCC3_LINK_LIBRARY_CMDS 180 $(QUIET)$(APPEND) $(out).ar-script 'CREATE $(out)' 181 $(QUIET)$(APPEND) -n $(out).ar-script \ 182 $(foreach o,$(objs), 'ADDMOD $(o)') \ 183 $(foreach o,$(filter-out %.def %.imp,$(othersrc)), 'ADDLIB $(o)') 184 $(if $(filter %.def %.imp,$(othersrc))\ 185 ,$(TOOL_GCC3_AR_IMP) -o $(outbase).imp.a $(filter %.def %.imp,$(othersrc))\ 186 $(NL)$(TAB)$(QUIET)$(APPEND) $(out).ar-script 'ADDLIB $(outbase).imp.a') 187 $(QUIET)$(APPEND) $(out).ar-script 'SAVE' 188 $(QUIET)$(APPEND) $(out).ar-script 'END' 189 $(QUIET)$(TOOL_GCC3_AR) -M < $(out).ar-script 190 endef 191 else 192 define TOOL_GCC3_LINK_LIBRARY_CMDS 193 $(QUIET)$(APPEND) $(out).ar-script "CREATE $(out)" 194 $(foreach o, $(objs)\ 195 ,$(NL)$(TAB)$(QUIET)$(APPEND) $(out).ar-script "ADDMOD $(o)") 196 $(foreach srclib, $(filter-out %.def %.imp,$(othersrc))\ 197 ,$(NL)$(TAB)$(QUIET)$(APPEND) $(out).ar-script "ADDLIB $(srclib)") 198 $(if $(filter %.def %.imp,$(othersrc))\ 199 ,$(TOOL_GCC3_AR_IMP) -o $(outbase).imp.a $(filter %.def %.imp,$(othersrc))\ 200 $(NL)$(TAB)$(QUIET)$(APPEND) $(out).ar-script "ADDLIB $(outbase).imp.a") 201 $(QUIET)$(APPEND) $(out).ar-script "SAVE" 202 $(QUIET)$(APPEND) $(out).ar-script "END" 203 $(QUIET)$(TOOL_GCC3_AR) -M < $(out).ar-script 204 endef 205 endif 157 TOOL_GCC3PLAIN_LINK_LIBRARY_OUTPUT = $(out).ar-script 158 TOOL_GCC3PLAIN_LINK_LIBRARY_DEPEND = $(othersrc) 159 TOOL_GCC3PLAIN_LINK_LIBRARY_DEPORD = 160 ## @todo archive merging! 161 #ifeq ($(filter xargs,$(KMK_FEATURES)),xargs) - I wonder if this works... 162 define TOOL_GCC3PLAIN_LINK_LIBRARY_CMDS 163 $(call xargs,$(QUIET)$(TOOL_GCC3PLAIN_AR) $(flags) $(out), $(objs)) 164 $(QUIET)$(TOOL_GCC3PLAIN_RANLIB) $(out) 165 endef 166 #else 167 #define TOOL_GCC3PLAIN_LINK_LIBRARY_CMDS 168 # $(QUIET)$(TOOL_GCC3PLAIN_AR) $(flags) $(out) $(objs) 169 # $(QUIET)$(TOOL_GCC3PLAIN_RANLIB) $(out) 170 #endef 171 #endif 206 172 207 173 … … 219 185 # @param $(custom_post) Custom step invoked after linking. 220 186 # @param $(outbase) Output basename (full). Use this for list files and such. 221 TOOL_GCC3 _LINK_PROGRAM_OUTPUT = $(outbase).map222 TOOL_GCC3 _LINK_PROGRAM_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib)))\187 TOOL_GCC3PLAIN_LINK_PROGRAM_OUTPUT = $(outbase).map 188 TOOL_GCC3PLAIN_LINK_PROGRAM_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib)))\ 223 189 $(filter %.def, $(othersrc)) 224 TOOL_GCC3 _LINK_PROGRAM_DEPORD =225 define TOOL_GCC3 _LINK_PROGRAM_CMDS226 $(QUIET)$(TOOL_GCC3 _LD) $(flags) -o $(out) $(objs)\190 TOOL_GCC3PLAIN_LINK_PROGRAM_DEPORD = 191 define TOOL_GCC3PLAIN_LINK_PROGRAM_CMDS 192 $(QUIET)$(TOOL_GCC3PLAIN_LD) $(flags) -o $(out) $(objs)\ 227 193 $(filter %.def, $(othersrc))\ 228 194 $(foreach p,$(libpath), -L$(p))\ 229 $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(basename $(lib))), $(lib)))\ 230 $(call TOOL_GCC3_LD_MAP,$(outbase).map) 195 $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(basename $(lib))), $(lib))) 231 196 endef 232 197 … … 245 210 # @param $(custom_post) Custom step invoked after linking. 246 211 # @param $(outbase) Output basename (full). Use this for list files and such. 247 TOOL_GCC3 _LINK_DLL_OUTPUT = $(outbase).map248 TOOL_GCC3 _LINK_DLL_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib)))\212 TOOL_GCC3PLAIN_LINK_DLL_OUTPUT = $(outbase).map 213 TOOL_GCC3PLAIN_LINK_DLL_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib)))\ 249 214 $(filter %.def, $(othersrc)) 250 TOOL_GCC3 _LINK_DLL_DEPORD =251 define TOOL_GCC3 _LINK_DLL_CMDS252 $(QUIET)$(TOOL_GCC3 _LD) $(TOOL_GCC3_LDFLAGS.dll) $(flags) -o $(out)\253 $(if $(filter-out win32 os2, $(BUILD_TARGET)),$(call TOOL_GCC3 _LD_SONAME,$(target),$(out)))\215 TOOL_GCC3PLAIN_LINK_DLL_DEPORD = 216 define TOOL_GCC3PLAIN_LINK_DLL_CMDS 217 $(QUIET)$(TOOL_GCC3PLAIN_LD) $(TOOL_GCC3PLAIN_LDFLAGS.dll) $(flags) -o $(out)\ 218 $(if $(filter-out win32 os2, $(BUILD_TARGET)),$(call TOOL_GCC3PLAIN_LD_SONAME,$(target),$(out)))\ 254 219 $(objs)\ 255 220 $(filter %.def, $(othersrc))\ 256 221 $(foreach p,$(libpath), -L$(p))\ 257 $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(basename $(lib))), $(lib)))\ 258 $(call TOOL_GCC3_LD_MAP,$(outbase).map) 259 endef 260 261 262 ## Link system module (windows aka driver, linux aka kernel module) 263 # @param $(target) Normalized main target name. 264 # @param $(out) System module name. 265 # @param $(objs) Object files to link together. 266 # @param $(libs) Libraries to search. 267 # @param $(libpath) Library search paths. 268 # @param $(flags) Flags. 269 # @param $(dirdep) Directory creation dependency. 270 # @param $(deps) Other dependencies. 271 # @param $(othersrc) Unhandled sources. 272 # @param $(custom_pre) Custom step invoked before linking. 273 # @param $(custom_post) Custom step invoked after linking. 274 # @param $(outbase) Output basename (full). Use this for list files and such. 275 TOOL_GCC3_LINK_SYSMOD_OUTPUT = $(outbase).map 276 TOOL_GCC3_LINK_SYSMOD_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib)))\ 277 $(filter %.def, $(othersrc)) 278 TOOL_GCC3_LINK_SYSMOD_DEPORD = 279 define TOOL_GCC3_LINK_SYSMOD_CMDS 280 $(QUIET)$(TOOL_GCC3_LD_SYSMOD) $(TOOL_GCC3_LDFLAGS.sysmod) $(flags) -o $(out) $(objs)\ 281 $(filter %.def, $(othersrc))\ 282 $(foreach p,$(libpath), -L$(p))\ 283 $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(basename $(lib))), $(lib)))\ 284 $(call TOOL_GCC3_LD_SYSMOD_MAP,$(outbase).map) 285 endef 286 222 $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(basename $(lib))), $(lib))) 223 endef 224
Note:
See TracChangeset
for help on using the changeset viewer.