src/Makefile.kmk: new sed on windows
[kbuild-mirror.git] / kBuild / tools / WATCOMC11C.kmk
blobb7357cb3df60ef6f03b0dfa3a52a2aea4f6c2de8
1 # $Id$
2 ## @file
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*)
39 endif
40 ifeq ($(PATH_TOOL_WATCOMC11C),)
41 PATH_TOOL_WATCOMC11C := $(wildcard $(KBUILD_DEVTOOLS_TRG)/watcom/v11.0c*)
42 endif
43 ifeq ($(PATH_TOOL_WATCOMC11C),)
44 PATH_TOOL_WATCOMC11C := $(wildcard $(KBUILD_DEVTOOLS)/common/watcom/v11.0c*)
45 endif
46 ifeq ($(PATH_TOOL_WATCOMC11C)$(KBUILD_HOST),os2)
47 if1of ($(USER) $(USERNAME) $(LOGNAME), bird)
48 PATH_TOOL_WATCOMC11C := $(wildcard d:/dev/Watcom/v11.0c*)
49 endif
50 endif
51 PATH_TOOL_WATCOMC11C := $(firstword $(sort $(PATH_TOOL_WATCOMC11C)))
52 # if not found, we'll enter 'pathless' mode.
53 else
54 # Resolve any fancy stuff once and for all.
55 PATH_TOOL_WATCOMC11C := $(PATH_TOOL_WATCOMC11C)
56 endif
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' \
70 -E 'LIB=$1' \
71 -E 'INCLUDE=' \
72 $2 --
73 else
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' \
80 -E 'LIB=$1' \
81 -E 'INCLUDE=' \
82 $2 --
83 endif
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)
96 else
97 # Pathless, relies on the environment.
98 TOOL_WATCOMC11C_PATHLESS :=
99 TOOL_WATCOMC11C_ENV_SETUP ?= $(REDIRECT) \
100 -E 'LIB=$1' \
101 -E 'INCLUDE=' \
102 $2 --
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)
114 endif
116 if $(KBUILD_KMK_REVISION) >= 2747
117 TOOL_WATCOMC11C_ENV_SETUP_BD ?= $(call TOOL_WATCOMC11C_ENV_SETUP,$1,$2 --wcc-brain-damage)
118 else
119 TOOL_WATCOMC11C_ENV_SETUP_BD ?= $(call TOOL_WATCOMC11C_ENV_SETUP,$1,$2)
120 endif
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
131 endif
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
140 endif
142 TOOL_WATCOMC11C_RCOBJSUFF ?= .res
143 TOOL_WATCOMC11C_RCFLAGS ?= -r
144 ifdef PATH_TOOL_WATCOMC11C
145 TOOL_WATCOMC11C_RCINCS ?= $(PATH_TOOL_WATCOMC11C)/h
146 endif
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) \
162 $(flags) \
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
170 endef
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) \
177 $(flags) \
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
185 endef
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\
193 $(flags) \
194 $(addprefix -i=, $(subst /,\\,$(incs))) \
195 $(qaddprefix sh,-d, $(defs)) \
196 -fo=$(subst /,\\,$(obj)) \
197 $(subst /,\\,$(abspath $(source)))
198 endef
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
206 endef
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) \
214 $(flags) \
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))))
225 endef
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) \
233 $(flags) \
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))))
244 endef
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) \
252 $(flags) \
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))))
263 endef