3 # kBuild Tool Config - Watcom C v11.0c
7 # Copyright (c) 2008-2017 knut st. osmundsen <bird-kBuild-spam-xviiv@anduin.net>
9 # This file is part of kBuild.
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.
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.
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
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.
34 TOOL_WATCOMC11C
= Watcom C
/C
++ v11.0c
(generic
)
36 ifeq ($(PATH_TOOL_WATCOMC11C
),)
37 ifeq ($(PATH_TOOL_WATCOMC11C
),)
38 PATH_TOOL_WATCOMC11C
:= $(wildcard $(KBUILD_DEVTOOLS_HST
)/watcom
/v11.0c
*)
40 ifeq ($(PATH_TOOL_WATCOMC11C
),)
41 PATH_TOOL_WATCOMC11C
:= $(wildcard $(KBUILD_DEVTOOLS_TRG
)/watcom
/v11.0c
*)
43 ifeq ($(PATH_TOOL_WATCOMC11C
),)
44 PATH_TOOL_WATCOMC11C
:= $(wildcard $(KBUILD_DEVTOOLS
)/common
/watcom
/v11.0c
*)
46 ifeq ($(PATH_TOOL_WATCOMC11C
)$(KBUILD_HOST
),os2
)
47 if1of
($(USER
) $(USERNAME
) $(LOGNAME
), bird
)
48 PATH_TOOL_WATCOMC11C
:= $(wildcard d
:/dev
/Watcom
/v11.0c
*)
51 PATH_TOOL_WATCOMC11C
:= $(firstword $(sort $(PATH_TOOL_WATCOMC11C
)))
52 # if not found, we'll enter 'pathless' mode.
54 # Resolve any fancy stuff once and for all.
55 PATH_TOOL_WATCOMC11C
:= $(PATH_TOOL_WATCOMC11C
)
58 ifneq ($(PATH_TOOL_WATCOMC11C
),)
59 TOOL_WATCOMC11C_PATHLESS
:= no
61 ifeq ($(KBUILD_HOST
),os2
)
62 PATH_TOOL_WATCOMC11C_BIN
= $(PATH_TOOL_WATCOMC11C
)/binp
63 PATH_TOOL_WATCOMC11C_BIN2
= $(PATH_TOOL_WATCOMC11C
)/binw
64 TOOL_WATCOMC11C_ENV_SETUP ?
= $(REDIRECT
) \
65 -E
'BEGINLIBPATH=$(PATH_TOOL_WATCOMC11C)/binp/dll;$(BEGINLIBPATH)' \
66 -E
'LIBPATHSTRICT=T' \
67 -E
'PATH=$(PATH_TOOL_WATCOMC11C_BIN);$(PATH_TOOL_WATCOMC11C_BIN2)' \
68 -E
'WATCOM=$(PATH_TOOL_WATCOMC11C)' \
69 -E
'EDPATH=$(PATH_TOOL_WATCOMC11C)/EDDAT' \
74 PATH_TOOL_WATCOMC11C_BIN
= $(PATH_TOOL_WATCOMC11C
)/binnt
75 PATH_TOOL_WATCOMC11C_BIN2
= $(PATH_TOOL_WATCOMC11C_BIN
)
76 TOOL_WATCOMC11C_ENV_SETUP ?
= $(REDIRECT
) \
77 -E
'PATH=$(PATH_TOOL_WATCOMC11C_BIN);$(PATH_TOOL_WATCOMC11C)/binw' \
78 -E
'WATCOM=$(PATH_TOOL_WATCOMC11C)' \
79 -E
'EDPATH=$(PATH_TOOL_WATCOMC11C)/EDDAT' \
85 TOOL_WATCOMC11C_CC ?
= $(PATH_TOOL_WATCOMC11C_BIN
)/wcc386
$(HOSTSUFF_EXE
)
86 TOOL_WATCOMC11C_CC16 ?
= $(PATH_TOOL_WATCOMC11C_BIN
)/wcc
$(HOSTSUFF_EXE
)
87 TOOL_WATCOMC11C_CXX ?
= $(PATH_TOOL_WATCOMC11C_BIN
)/wpp386
$(HOSTSUFF_EXE
)
88 TOOL_WATCOMC11C_CXX16 ?
= $(PATH_TOOL_WATCOMC11C_BIN
)/wpp
$(HOSTSUFF_EXE
)
89 TOOL_WATCOMC11C_AS ?
= $(PATH_TOOL_WATCOMC11C_BIN
)/wasm
$(HOSTSUFF_EXE
)
90 TOOL_WATCOMC11C_AR ?
= $(PATH_TOOL_WATCOMC11C_BIN
)/wlib
$(HOSTSUFF_EXE
)
91 TOOL_WATCOMC11C_RC ?
= $(PATH_TOOL_WATCOMC11C_BIN2
)/wrc
$(HOSTSUFF_EXE
)
92 TOOL_WATCOMC11C_LD ?
= $(PATH_TOOL_WATCOMC11C_BIN2
)/wcl386
$(HOSTSUFF_EXE
)
93 TOOL_WATCOMC11C_LD16 ?
= $(PATH_TOOL_WATCOMC11C_BIN2
)/wcl
$(HOSTSUFF_EXE
)
94 TOOL_WATCOMC11C_WLINK ?
= $(PATH_TOOL_WATCOMC11C_BIN2
)/wlink
$(HOSTSUFF_EXE
)
97 # Pathless, relies on the environment.
98 TOOL_WATCOMC11C_PATHLESS
:=
99 TOOL_WATCOMC11C_ENV_SETUP ?
= $(REDIRECT
) \
103 TOOL_WATCOMC11C_CC ?
= wcc386
$(HOSTSUFF_EXE
)
104 TOOL_WATCOMC11C_CC16 ?
= wcc
$(HOSTSUFF_EXE
)
105 TOOL_WATCOMC11C_CXX ?
= wpp386
$(HOSTSUFF_EXE
)
106 TOOL_WATCOMC11C_CXX16 ?
= wpp
$(HOSTSUFF_EXE
)
107 TOOL_WATCOMC11C_AS ?
= wasm
$(HOSTSUFF_EXE
)
108 TOOL_WATCOMC11C_AR ?
= wlib
$(HOSTSUFF_EXE
)
109 TOOL_WATCOMC11C_RC ?
= wrc
$(HOSTSUFF_EXE
)
110 TOOL_WATCOMC11C_LD ?
= wcl386
$(HOSTSUFF_EXE
)
111 TOOL_WATCOMC11C_LD16 ?
= wcl
$(HOSTSUFF_EXE
)
112 TOOL_WATCOMC11C_WLINK ?
= wcl
$(HOSTSUFF_EXE
)
116 if
$(KBUILD_KMK_REVISION
) >= 2747
117 TOOL_WATCOMC11C_ENV_SETUP_BD ?
= $(call TOOL_WATCOMC11C_ENV_SETUP
,$1,$2 --wcc-brain-damage
)
119 TOOL_WATCOMC11C_ENV_SETUP_BD ?
= $(call TOOL_WATCOMC11C_ENV_SETUP
,$1,$2)
123 # General Properties used by kBuild
124 TOOL_WATCOMC11C_COBJSUFF ?
= .obj
125 TOOL_WATCOMC11C_CFLAGS ?
= -zq
126 TOOL_WATCOMC11C_CFLAGS.dos ?
= -bt
=dos
127 TOOL_WATCOMC11C_CFLAGS.os2 ?
= -bt
=os2
128 TOOL_WATCOMC11C_CFLAGS.win ?
= -bt
=nt
129 ifdef PATH_TOOL_WATCOMC11C
130 TOOL_WATCOMC11C_CINCS ?
= $(PATH_TOOL_WATCOMC11C
)/h
133 TOOL_WATCOMC11C_CXXOBJSUFF ?
= .obj
134 TOOL_WATCOMC11C_CXXFLAGS ?
= -zq
135 TOOL_WATCOMC11C_CXXFLAGS.dos ?
= -bt
=dos
136 TOOL_WATCOMC11C_CXXFLAGS.os2 ?
= -bt
=os2
137 TOOL_WATCOMC11C_CXXFLAGS.win ?
= -bt
=nt
138 ifdef PATH_TOOL_WATCOMC11C
139 TOOL_WATCOMC11C_CXXINCS ?
= $(PATH_TOOL_WATCOMC11C
)/h
142 TOOL_WATCOMC11C_RCOBJSUFF ?
= .res
143 TOOL_WATCOMC11C_RCFLAGS ?
= -r
144 ifdef PATH_TOOL_WATCOMC11C
145 TOOL_WATCOMC11C_RCINCS ?
= $(PATH_TOOL_WATCOMC11C
)/h
148 TOOL_WATCOMC11C_ARFLAGS ?
= -q
149 TOOL_WATCOMC11C_ARLIBSUFF ?
= .lib
151 TOOL_WATCOMC11C_LDFLAGS ?
= -zq
-y
152 TOOL_WATCOMC11C_LDFLAGS.dos ?
= -bt
=dos
153 TOOL_WATCOMC11C_LDFLAGS.os2 ?
= -bt
=os2
154 TOOL_WATCOMC11C_LDFLAGS.win ?
= -bt
=nt
157 TOOL_WATCOMC11C_COMPILE_C_DEPEND
=
158 TOOL_WATCOMC11C_COMPILE_C_DEPORD
=
159 TOOL_WATCOMC11C_COMPILE_C_OUTPUT
= $(obj
).err
160 define TOOL_WATCOMC11C_COMPILE_C_CMDS
161 $(QUIET
) $(call TOOL_WATCOMC11C_ENV_SETUP_BD
) $(TOOL_WATCOMC11C_CC
) \
163 $(addsuffix , $(addprefix -i
=, $(subst /,\\,$(incs
)))) \
164 $(qaddprefix sh
,-d
, $(defs
)) \
165 -fo
=$(subst /,\\,$(obj
)) \
166 -fr
=$(subst /,\\,$(obj
)).err \
167 $(subst /,\\,$(abspath
$(source
)))
168 $(QUIET
)$(APPEND
) -n
$(obj
).err
169 ## @todo dependencies
172 TOOL_WATCOMC11C_COMPILE_CXX_DEPEND
=
173 TOOL_WATCOMC11C_COMPILE_CXX_DEPORD
=
174 TOOL_WATCOMC11C_COMPILE_CXX_OUTPUT
= $(obj
).err
175 define TOOL_WATCOMC11C_COMPILE_CXX_CMDS
176 $(QUIET
) $(call TOOL_WATCOMC11C_ENV_SETUP_BD
) $(TOOL_WATCOMC11C_CXX
) \
178 $(addsuffix , $(addprefix -i
=, $(subst /,\\,$(incs
)))) \
179 $(qaddprefix sh
,-d
, $(defs
)) \
180 -fo
=$(subst /,\\,$(obj
)) \
181 -fr
=$(subst /,\\,$(obj
)).err \
182 $(subst /,\\,$(abspath
$(source
)))
183 $(QUIET
)$(APPEND
) -n
$(obj
).err
184 ## @todo dependencies
187 TOOL_WATCOMC11C_COMPILE_RC_OUTPUT
=
188 TOOL_WATCOMC11C_COMPILE_RC_DEPEND
=
189 TOOL_WATCOMC11C_COMPILE_RC_DEPORD
=
190 define TOOL_WATCOMC11C_COMPILE_RC_CMDS
191 $(QUIET
) $(call TOOL_WATCOMC11C_ENV_SETUP
) \
192 $(TOOL_WATCOMC11C_RC
) -r\
194 $(addprefix -i
=, $(subst /,\\,$(incs
))) \
195 $(qaddprefix sh
,-d
, $(defs
)) \
196 -fo
=$(subst /,\\,$(obj
)) \
197 $(subst /,\\,$(abspath
$(source
)))
200 TOOL_WATCOMC11C_LINK_LIBRARY_OUTPUT
= $(outbase
).rsp
201 TOOL_WATCOMC11C_LINK_LIBRARY_DEPEND
= $(othersrc
)
202 TOOL_WATCOMC11C_LINK_LIBRARY_DEPORD
=
203 define TOOL_WATCOMC11C_LINK_LIBRARY_CMDS
204 $(QUIET
)$(APPEND
) -tn
$(outbase
).rsp
$(foreach obj
,$(subst /,\
,$(objs
) $(othersrc
)),'+"$(obj)"')
205 $(QUIET
)$(TOOL_WATCOMC11C_ENV_SETUP_BD
) $(TOOL_WATCOMC11C_AR
) $(flags
) $(subst /,\\,$(out
)) @
$(outbase
).rsp
208 TOOL_WATCOMC11C_LINK_PROGRAM_OUTPUT
= $(outbase
).map
209 TOOL_WATCOMC11C_LINK_PROGRAM_DEPEND
= $(foreach lib
,$(libs
),$(if
$(findstring $(lib
),$(subst /,x
,$(lib
))),, $(lib
))) $(othersrc
)
210 TOOL_WATCOMC11C_LINK_PROGRAM_DEPORD
=
211 define TOOL_WATCOMC11C_LINK_PROGRAM_CMDS
212 $(QUIET
)$(call TOOL_WATCOMC11C_ENV_SETUP_BD
,$(subst $(SP
),,$(addsuffix ;,$(libpath
))),-C
$(dir $(out
))) \
213 $(TOOL_WATCOMC11C_LD
) \
215 -fe
=$(subst /,\\,$(out
)) \
216 -fm
=$(subst /,\\,$(outbase
).map
) \
217 $(subst /,\\,$(filter-out %.res
,$(objs
))) \
218 $(subst /,\\,$(libs
)) \
219 $(subst /,\\,$(othersrc
))
220 $(if
$(filter %.res
,$(objs
)), $(QUIET
)$(call TOOL_WATCOMC11C_ENV_SETUP
) \
221 $(TOOL_WATCOMC11C_RC
) \
222 $(filter -bt
=%,$(flags
)) \
223 /fe
=$(subst /,\\,$(out
)) \
224 $(subst /,\\,$(filter %.res
,$(objs
))))
227 TOOL_WATCOMC11C_LINK_DLL_OUTPUT
= $(outbase
).map
228 TOOL_WATCOMC11C_LINK_DLL_DEPEND
= $(foreach lib
,$(libs
),$(if
$(findstring $(lib
),$(subst /,x
,$(lib
))),, $(lib
))) $(othersrc
)
229 TOOL_WATCOMC11C_LINK_DLL_DEPORD
=
230 define TOOL_WATCOMC11C_LINK_DLL_CMDS
231 $(QUIET
)$(call TOOL_WATCOMC11C_ENV_SETUP_BD
,$(subst $(SP
),,$(addsuffix ;,$(libpath
))),-C
$(dir $(out
))) \
232 $(TOOL_WATCOMC11C_LD
) \
234 -fe
=$(subst /,\\,$(out
)) \
235 -fm
=$(subst /,\\,$(outbase
).map
) \
236 $(subst /,\\,$(filter-out %.res
,$(objs
))) \
237 $(subst /,\\,$(libs
)) \
238 $(subst /,\\,$(othersrc
))
239 $(if
$(filter %.res
,$(objs
)), $(QUIET
)$(call TOOL_WATCOMC11C_ENV_SETUP
) \
240 $(TOOL_WATCOMC11C_RC
) \
241 $(filter -bt
=%,$(flags
)) \
242 /fe
=$(subst /,\\,$(out
)) \
243 $(subst /,\\,$(filter %.res
,$(objs
))))
246 TOOL_WATCOMC11C_LINK_SYSMOD_OUTPUT
= $(outbase
).map
247 TOOL_WATCOMC11C_LINK_SYSMOD_DEPEND
= $(foreach lib
,$(libs
),$(if
$(findstring $(lib
),$(subst /,x
,$(lib
))),, $(lib
))) $(othersrc
)
248 TOOL_WATCOMC11C_LINK_SYSMOD_DEPORD
=
249 define TOOL_WATCOMC11C_LINK_SYSMOD_CMDS
250 $(QUIET
)$(call TOOL_WATCOMC11C_ENV_SETUP_BD
,$(subst $(SP
),,$(addsuffix ;,$(libpath
))),-C
$(dir $(out
))) \
251 $(TOOL_WATCOMC11C_LD
) \
253 -fe
=$(subst /,\\,$(out
)) \
254 -fm
=$(subst /,\\,$(outbase
).map
) \
255 $(subst /,\\,$(filter-out %.res
,$(objs
))) \
256 $(subst /,\\,$(libs
)) \
257 $(subst /,\\,$(othersrc
))
258 $(if
$(filter %.res
,$(objs
)), $(QUIET
)$(call TOOL_WATCOMC11C_ENV_SETUP
) \
259 $(TOOL_WATCOMC11C_RC
) \
260 $(filter -bt
=%,$(flags
)) \
261 /fe
=$(subst /,\\,$(out
)) \
262 $(subst /,\\,$(filter %.res
,$(objs
))))