source: trunk/kBuild/tools/WATCOMC11C.kmk@ 2079

Last change on this file since 2079 was 2079, checked in by bird, 17 years ago

*watcom: wlink, EDPATH and binl.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 9.3 KB
Line 
1# $Id: WATCOMC11C.kmk 2079 2008-11-19 01:43:34Z bird $
2## @file
3# kBuild Tool Config - Watcom C v11.0c
4#
5
6#
7# Copyright (c) 2008 knut st. osmundsen <bird-kBuild-spam@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_WATCOMC11C = Watcom C/C++ v11.0c (generic)
35
36ifeq ($(PATH_TOOL_WATCOMC11C),)
37 ifeq ($(PATH_TOOL_WATCOMC11C),)
38 PATH_TOOL_WATCOMC11C := $(wildcard $(PATH_DEVTOOLS_BLD)/watcom/v11.0c*)
39 endif
40 ifeq ($(PATH_TOOL_WATCOMC11C),)
41 PATH_TOOL_WATCOMC11C := $(wildcard $(PATH_DEVTOOLS_TRG)/watcom/v11.0c*)
42 endif
43 ifeq ($(PATH_TOOL_WATCOMC11C),)
44 PATH_TOOL_WATCOMC11C := $(wildcard $(PATH_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.
53else
54 # Resolve any fancy stuff once and for all.
55 PATH_TOOL_WATCOMC11C := $(PATH_TOOL_WATCOMC11C)
56endif
57
58ifneq ($(PATH_TOOL_WATCOMC11C),)
59 TOOL_WATCOMC11C_PATHLESS := no
60
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 --
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 --
83 endif
84
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)
95
96else
97 # Pathless, relies on the environment.
98 TOOL_WATCOMC11C_PATHLESS :=
99 TOOL_WATCOMC11C_ENV_SETUP ?= $(REDIRECT) \
100 -E 'LIB=$1' \
101 -E 'INCLUDE=' \
102 --
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)
113
114endif
115
116# General Properties used by kBuild
117TOOL_WATCOMC11C_COBJSUFF ?= .obj
118TOOL_WATCOMC11C_CFLAGS ?= -zq
119TOOL_WATCOMC11C_CFLAGS.os2 ?= -bt=os2
120TOOL_WATCOMC11C_CFLAGS.win ?= -bt=nt
121TOOL_WATCOMC11C_CFLAGS.debug ?=
122TOOL_WATCOMC11C_CFLAGS.release ?=
123TOOL_WATCOMC11C_CINCS ?= $(PATH_TOOL_WATCOMC11C)/h
124TOOL_WATCOMC11C_CDEFS ?=
125
126TOOL_WATCOMC11C_CXXOBJSUFF ?= .obj
127TOOL_WATCOMC11C_CXXFLAGS ?= -zq
128TOOL_WATCOMC11C_CXXFLAGS.os2 ?= -bt=os2
129TOOL_WATCOMC11C_CXXFLAGS.win ?= -bt=nt
130TOOL_WATCOMC11C_CXXFLAGS.debug ?=
131TOOL_WATCOMC11C_CXXFLAGS.release ?=
132TOOL_WATCOMC11C_CXXINCS ?= $(PATH_TOOL_WATCOMC11C)/h
133TOOL_WATCOMC11C_CXXDEFS ?=
134
135TOOL_WATCOMC11C_RCOBJSUFF ?= .res
136TOOL_WATCOMC11C_RCFLAGS ?= -r
137TOOL_WATCOMC11C_RCINCS ?= $(PATH_TOOL_WATCOMC11C)/h
138TOOL_WATCOMC11C_RCDEFS ?=
139
140TOOL_WATCOMC11C_ARFLAGS ?= -q
141TOOL_WATCOMC11C_ARLIBSUFF ?= .lib
142
143TOOL_WATCOMC11C_LDFLAGS ?= -zq -y
144TOOL_WATCOMC11C_LDFLAGS.os2 ?= -bt=os2
145TOOL_WATCOMC11C_LDFLAGS.win ?= -bt=nt
146TOOL_WATCOMC11C_LDFLAGS.debug ?=
147
148
149TOOL_WATCOMC11C_COMPILE_C_DEPEND =
150TOOL_WATCOMC11C_COMPILE_C_DEPORD =
151TOOL_WATCOMC11C_COMPILE_C_OUTPUT = $(obj).err
152define TOOL_WATCOMC11C_COMPILE_C_CMDS
153 $(QUIET) $(call TOOL_WATCOMC11C_ENV_SETUP) $(TOOL_WATCOMC11C_CC) \
154 $(flags) \
155 $(addsuffix , $(addprefix -i=, $(subst /,\\,$(incs)))) \
156 $(addprefix -d, $(defs)) \
157 -fo=$(subst /,\\,$(obj)) \
158 -fr=$(subst /,\\,$(obj)).err \
159 $(subst /,\\,$(abspath $(source)))
160 $(QUIET)$(APPEND) -n $(obj).err
161## @todo dependencies
162endef
163
164TOOL_WATCOMC11C_COMPILE_CXX_DEPEND =
165TOOL_WATCOMC11C_COMPILE_CXX_DEPORD =
166TOOL_WATCOMC11C_COMPILE_CXX_OUTPUT = $(obj).err
167define TOOL_WATCOMC11C_COMPILE_CXX_CMDS
168 $(QUIET) $(call TOOL_WATCOMC11C_ENV_SETUP) $(TOOL_WATCOMC11C_CXX) \
169 $(flags) \
170 $(addsuffix , $(addprefix -i=, $(subst /,\\,$(incs)))) \
171 $(addprefix -d, $(defs)) \
172 -fo=$(subst /,\\,$(obj)) \
173 -fr=$(subst /,\\,$(obj)).err \
174 $(subst /,\\,$(abspath $(source)))
175 $(QUIET)$(APPEND) -n $(obj).err
176## @todo dependencies
177endef
178
179TOOL_WATCOMC11C_COMPILE_RC_OUTPUT =
180TOOL_WATCOMC11C_COMPILE_RC_DEPEND =
181TOOL_WATCOMC11C_COMPILE_RC_DEPORD =
182define TOOL_WATCOMC11C_COMPILE_RC_CMDS
183 $(QUIET) $(call TOOL_WATCOMC11C_ENV_SETUP) \
184 $(TOOL_WATCOMC11C_RC) -r\
185 $(flags) \
186 $(addprefix -i=, $(subst /,\\,$(incs))) \
187 $(addprefix -d, $(defs))\
188 -fo=$(subst /,\\,obj) \
189 $(subst /,\\,$(abspath $(source)))
190endef
191
192TOOL_WATCOMC11C_LINK_LIBRARY_OUTPUT = $(outbase).rsp
193TOOL_WATCOMC11C_LINK_LIBRARY_DEPEND = $(othersrc)
194TOOL_WATCOMC11C_LINK_LIBRARY_DEPORD =
195define TOOL_WATCOMC11C_LINK_LIBRARY_CMDS
196 $(QUIET)$(APPEND) -tn $(outbase).rsp $(foreach obj,$(subst /,\,$(objs) $(othersrc)),'+"$(obj)"')
197 $(QUIET)$(TOOL_WATCOMC11C_ENV_SETUP) $(TOOL_WATCOMC11C_AR) $(flags) $(subst /,\\,$(out)) @$(outbase).rsp
198endef
199
200TOOL_WATCOMC11C_LINK_PROGRAM_OUTPUT = $(outbase).map
201TOOL_WATCOMC11C_LINK_PROGRAM_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc)
202TOOL_WATCOMC11C_LINK_PROGRAM_DEPORD =
203define TOOL_WATCOMC11C_LINK_PROGRAM_CMDS
204 $(QUIET)$(call TOOL_WATCOMC11C_ENV_SETUP,$(subst $(SP),,$(addsuffix ;,$(libpath)))) \
205 $(TOOL_WATCOMC11C_LD) \
206 $(flags) \
207 -fe=$(subst /,\\,$(out)) \
208 -fm=$(subst /,\\,$(outbase).map) \
209 $(subst /,\\,$(filter-out %.res,$(objs))) \
210 $(subst /,\\,$(libs)) \
211 $(subst /,\\,$(othersrc))
212 $(if $(filter %.res,$(objs)), $(QUIET)$(call TOOL_WATCOMC11C_ENV_SETUP) \
213 $(TOOL_WATCOMC11C_RC) \
214 $(filter -bt=%,$(flags)) \
215 /fe=$(subst /,\\,$(out)) \
216 $(subst /,\\,$(filter %.res,$(objs))))
217endef
218
219TOOL_WATCOMC11C_LINK_DLL_OUTPUT = $(outbase).map
220TOOL_WATCOMC11C_LINK_DLL_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc)
221TOOL_WATCOMC11C_LINK_DLL_DEPORD =
222define TOOL_WATCOMC11C_LINK_DLL_CMDS
223 $(QUIET)$(call TOOL_WATCOMC11C_ENV_SETUP,$(subst $(SP),,$(addsuffix ;,$(libpath)))) \
224 $(TOOL_WATCOMC11C_LD) \
225 $(flags) \
226 -fe=$(subst /,\\,$(out)) \
227 -fm=$(subst /,\\,$(outbase).map) \
228 $(subst /,\\,$(filter-out %.res,$(objs))) \
229 $(subst /,\\,$(libs)) \
230 $(subst /,\\,$(othersrc))
231 $(if $(filter %.res,$(objs)), $(QUIET)$(call TOOL_WATCOMC11C_ENV_SETUP) \
232 $(TOOL_WATCOMC11C_RC) \
233 $(filter -bt=%,$(flags)) \
234 /fe=$(subst /,\\,$(out)) \
235 $(subst /,\\,$(filter %.res,$(objs))))
236endef
237
238TOOL_WATCOMC11C_LINK_SYSMOD_OUTPUT = $(outbase).map
239TOOL_WATCOMC11C_LINK_SYSMOD_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib))) $(othersrc)
240TOOL_WATCOMC11C_LINK_SYSMOD_DEPORD =
241define TOOL_WATCOMC11C_LINK_SYSMOD_CMDS
242 $(QUIET)$(call TOOL_WATCOMC11C_ENV_SETUP,$(subst $(SP),,$(addsuffix ;,$(libpath)))) \
243 $(TOOL_WATCOMC11C_LD) \
244 $(flags) \
245 -fe=$(subst /,\\,$(out)) \
246 -fm=$(subst /,\\,$(outbase).map) \
247 $(subst /,\\,$(filter-out %.res,$(objs))) \
248 $(subst /,\\,$(libs)) \
249 $(subst /,\\,$(othersrc))
250 $(if $(filter %.res,$(objs)), $(QUIET)$(call TOOL_WATCOMC11C_ENV_SETUP) \
251 $(TOOL_WATCOMC11C_RC) \
252 $(filter -bt=%,$(flags)) \
253 /fe=$(subst /,\\,$(out)) \
254 $(subst /,\\,$(filter %.res,$(objs))))
255endef
256
257
Note: See TracBrowser for help on using the repository browser.