source: trunk/make/setup.mak@ 9136

Last change on this file since 9136 was 9131, checked in by bird, 23 years ago

ODIN32_USERAPP and defines.

File size: 10.7 KB
RevLine 
[9131]1# $Id: setup.mak,v 1.14 2002-08-25 04:23:39 bird Exp $
[8197]2
3#
[8253]4# Generic makefile system.
[8197]5#
6# Setting up the build environment variables
7#
[8253]8# Many of the variables are a subject to change from project to project.
[8197]9#
10
11
12!ifndef MAKE_SETUP_INCLUDED
13MAKE_SETUP_INCLUDED=YES
14
15
[8253]16# -----------------------------------------------------------------------------
17# Validate the build the requested environment setup.
18# -----------------------------------------------------------------------------
[8197]19
[8253]20SHT_TRGPLTFRM=
[8197]21!if "$(BUILD_PLATFORM)" == "OS2"
[8253]22SHT_TRGPLTFRM=os2
[8197]23!endif
24!if "$(BUILD_PLATFORM)" == "WIN32"
[8253]25SHT_TRGPLTFRM=win32
[8197]26!endif
[8253]27!if "$(SHT_TRGPLTFRM)" == ""
28! error Fatal error: Env.var BUILD_PLATFORM is either unspecified or incorrect. ($(BUILD_PLATFORM)) Valid values: OS2 and WIN32
[8197]29!endif
30
31
[8253]32SHT_BLDMD=
[8197]33!if "$(BUILD_MODE)" == "RELEASE"
[8253]34SHT_BLDMD=rel
[8197]35!endif
36!if "$(BUILD_MODE)" == "DEBUG"
[8253]37SHT_BLDMD=deb
[8197]38!endif
39!if "$(BUILD_MODE)" == "PROFILE"
[8253]40SHT_BLDMD=prf
[8197]41!endif
[8253]42!if "$(SHT_BLDMD)" == ""
43! error Fatal error: Env.var BUILD_MODE is either unspecified or incorrect. ($(BUILD_MODE)) Valid values: RELEASE, DEBUG and PROFILE
[8197]44!endif
45
46
[8253]47SHT_BLDENV=
[8197]48!if "$(BUILD_ENV)" == "VAC308"
[8253]49SHT_BLDENV=vac308
[8197]50!endif
51!if "$(BUILD_ENV)" == "VAC365"
[8253]52SHT_BLDENV=vac365
[8197]53!endif
54!if "$(BUILD_ENV)" == "VAC4"
[8253]55SHT_BLDENV=vac4
[8197]56!endif
57!if "$(BUILD_ENV)" == "EMX"
[8253]58SHT_BLDENV=emx
[8197]59!endif
60!if "$(BUILD_ENV)" == "MSCV6"
[8253]61SHT_BLDENV=mscv6
[8197]62!endif
[8353]63!if "$(BUILD_ENV)" == "MSCV6-16"
64SHT_BLDENV=mscv6-16
65!endif
[8294]66!if "$(BUILD_ENV)" == "WAT11C"
[8253]67SHT_BLDENV=wat11
68!endif
[8353]69!if "$(BUILD_ENV)" == "WAT11C-16"
70SHT_BLDENV=wat11-16
71!endif
[8253]72!if "$(SHT_BLDENV)" == ""
[8353]73! error Fatal error: Env.var BUILD_ENV is either unspecified or incorrect. ($(BUILD_MODE)) Valid values: VAC308, VAC365, VAC4, EMX, MSCV6-16, WAT11C and WAT11C-16.
[8197]74!endif
75
76
[8294]77!ifdef BUILD_ENV_FORCE
78SHT_BLDENVFRC=
79!if "$(BUILD_ENV_FORCE)" == "VAC308"
80SHT_BLDENVFRC=vac308
81!endif
82!if "$(BUILD_ENV_FORCE)" == "VAC365"
83SHT_BLDENVFRC=vac365
84!endif
85!if "$(BUILD_ENV_FORCE)" == "VAC4"
86SHT_BLDENVFRC=vac4
87!endif
88!if "$(BUILD_ENV_FORCE)" == "EMX"
89SHT_BLDENVFRC=emx
90!endif
91!if "$(BUILD_ENV_FORCE)" == "MSCV6"
92SHT_BLDENVFRC=mscv6
93!endif
[8353]94!if "$(BUILD_ENV_FORCE)" == "MSCV6-16"
95SHT_BLDENVFRC=mscv6-16
96!endif
[8294]97!if "$(BUILD_ENV_FORCE)" == "WAT11C"
98SHT_BLDENVFRC=wat11
99!endif
[8353]100!if "$(BUILD_ENV_FORCE)" == "WAT11C-16"
101SHT_BLDENVFRC=wat11-16
102!endif
[8294]103!if "$(SHT_BLDENVFRC)" == ""
[8353]104! error Fatal error: Var BUILD_ENV_FORCE is incorrect. ($(BUILD_ENV_FORCE)) Valid values: VAC308, VAC365, VAC4, EMX, MSCV6-16, WAT11C and WAT11C-16.
[8294]105!endif
106!else
107BUILD_ENV_FORCE=$(BUILD_ENV)
108SHT_BLDENVFRC=$(SHT_BLDENV)
109!endif
[8253]110
[8294]111
[8253]112# -----------------------------------------------------------------------------
113# Directories
114# -----------------------------------------------------------------------------
115
116# current directory.
117PATH_CURRENT = $(MAKEDIR)
118# Where build system files are located. (like this file)
119PATH_MAKE = $(PATH_ROOT)\make
120# Where the bulid system and other tools are located
121PATH_TOOLS = $(PATH_ROOT)\tools\bin
122# Where platform-specific files are located. (like the .def files)
123PATH_DEF = .
124# Where the include files are located.
[9117]125PATH_INCLUDES = $(PATH_ROOT)\include\win;.;$(PATH_ROOT)\include
[8253]126# Where the temporary files goes.
[9127]127PATH_OBJ = $(PATH_ROOT)\obj\$(SHT_TRGPLTFRM)$(SHT_BLDMD)$(SHT_BLDENV)
128# Where the libraries goes.
129PATH_LIB = $(PATH_ROOT)\lib\$(BUILD_MODE)
130# Base directory of the published files.
131PATH_PUB = $(PATH_ROOT)\bin\$(BUILD_MODE)
132# Base directory of the unstripped published files. (release mode only)
133PATH_PUB_DEB = $(PATH_ROOT)\bin\$(BUILD_MODE).unstripped
134# Sub dir where the executable binaries goes.
135PATH_SUB_BIN = .
136# Sub dir where the dynamic link libraries goes.
137PATH_SUB_DLL = .
138# Sub dir where the drivers goes. (common for IFS and SYS.)
139PATH_SUB_SYS = .
140# Sub dir where the virtual dos drivers goes.
141PATH_SUB_VDD = .
142# Sub dir where the documentation goes.
143PATH_SUB_DOC = .
144# Sub dir where the helpfiles goes.
145PATH_SUB_HLP = .
[8253]146
147
[9127]148
[8253]149# Note: Makefiles are supposed to set the correct *RELATIVE* path to the
150# projects root. Using '\' slashes please. No trailing slash.
151#
152# Example:
153# PATH_ROOT= ..\..\..
154# Assert PATH_ROOT
155!if "$(PATH_ROOT)" == ""
156!error fatal error: PATH_ROOT empty or undefined.
[8197]157!endif
158
[8715]159#
160# A workaround for SlickEdits inability to find the buggy files..
161# This fixes the relative paths of includes.
162# Set the make line to:
163# '%v && cd %p && nmake PATH_ROOT_ABS=%rp. %n.obj -a'
164# (NB! Set the project directory to the root dir by creating the project there!)
165#
166!ifdef SLKRUNS
167! ifdef PATH_ROOT_ABS
168PATH_ROOT = $(PATH_ROOT_ABS)
169! endif
170!endif
[8197]171
[8715]172
173
[8253]174# -----------------------------------------------------------------------------
175# Common variables / Project variables
176# -----------------------------------------------------------------------------
[8197]177
[8253]178# The default definitions.
[9131]179!ifndef ODIN32_USERAPP
180BUILD_DEFINES = -D__WIN32OS2__ -DTCPV40HDRS -DCOMCTL32UNDOC -D__WINE__
181!else
182BUILD_DEFINES = -D__WIN32OS2__ #-DTCPV40HDRS -DCOMCTL32UNDOC -D__WINE__
183!endif
[8333]184BUILD_BLDLEVEL_FLAGS = -V^"^#define=ODIN32_VERSION,$(PATH_ROOT)\include\odinbuild.h^" \
185 -M^"^#define=ODIN32_BUILD_NR,$(PATH_ROOT)\include\odinbuild.h^"
[8423]186BUILD_PROJECT = Odin32
[8253]187
[9117]188# Project Specific definitions.
189!if "$(BUILD_MODE)" != "DEBUG"
190LIB_ODINCRT = $(PATH_LIB)\odincrt.$(EXT_LIB)
191!else
192LIB_ODINCRT = $(PATH_LIB)\odincrtd.$(EXT_LIB)
193!endif
194!ifndef CUSTOMBUILD
195OBJ_DLLENTRY = $(PATH_LIB)\dllentry.$(EXT_OBJ)
196!else
197OBJ_DLLENTRY =
198!endif
199
[8253]200# This is the process file to include at end of the makefile.
201MAKE_INCLUDE_PROCESS = $(PATH_MAKE)\process.mak
202
203
[9131]204
[8253]205# -----------------------------------------------------------------------------
206# Include the setup.
207# First the default common tools setup is included.
208# The the environment specific setup.
209# -----------------------------------------------------------------------------
210
211!include $(PATH_MAKE)\setup.tools.mk
212
213MAKE_INCLUDE_SETUP = $(PATH_MAKE)\setup.$(SHT_TRGPLTFRM)$(SHT_BLDMD)$(SHT_BLDENV).mk
214!ifndef BUILD_QUIET
[8715]215! ifndef MAKEVER
216! if [$(ECHO) Including platform setup file $(CLRFIL)$(MAKE_INCLUDE_SETUP)$(CLRRST)]
217! endif
218! else
219$(ECHO) Including platform setup file $(CLRFIL)$(MAKE_INCLUDE_SETUP)$(CLRRST)
[8197]220! endif
221!endif
[8253]222!include $(MAKE_INCLUDE_SETUP)
[8197]223
224
[8253]225# -----------------------------------------------------------------------------
226# Verify the environment setups.
227# -----------------------------------------------------------------------------
[8197]228
229!ifndef ENV_NAME
230!error No environment signature has been defined ($(NAME_COMPLETE))
231!endif
232
233!ifndef MAKE_INCLUDE_SETUP
234!error No setup to include has been determined (MAKE_INCLUDE_SETUP)
235!endif
236
237!if "$(ENV_STATUS)" != "OK"
238!error Environment $(ENV_NAME) does work yet (ENV_STATUS is not OK).
239!endif
240
241!ifndef CC
242!error Environment $(ENV_NAME) does not define variable (CC).
243!endif
244
245!ifndef CC_FLAGS_EXE
246!error Environment $(ENV_NAME) does not define variable (CC_FLAGS_EXE).
247!endif
248
249!ifndef LINK
250!error Environment $(ENV_NAME) does not define variable (LINK).
251!endif
252
253!ifndef LINK_FLAGS_EXE
254!error Environment $(ENV_NAME) does not define variable (LINK_FLAGS_EXE).
255!endif
256
257
[8253]258# -----------------------------------------------------------------------------
[8294]259# Build the environments
260# -----------------------------------------------------------------------------
261
262# In the makefiles you're allowed to use the BUILD_ENVS_PRE,
263# BUILD_ENV_FORCE, BUILD_ENVS_POST variables to make private changes to the
264# environment. These are combined with the two base ones as follows:
265# $(BUILD_ENVS_BASE_PRE) $(BUILD_ENVS_PRE) $(ENV_ENVS) $(BUILD_ENVS_BASE_POST) $(BUILD_ENVS_POST)
266#
267# BUILD_ENV_FORCE is used for changing the base compiler. Do *NOT* use
268# BUILD_ENV for that! BUILD_ENV_FORCE isn't used directly but in the setup
269# string above, but ENV_ENVS from the setup.[w]xyz.mk setup file is used.
270#
271
272# These strings are passed on to the BuildEnv.cmd script to setup the correct
273# shell environment.
274# TODO Should these be overridable by setup.[w]xyz.mak ? (kso)
275
276BUILD_ENVS_BASE_POST = toolkit40
[8423]277BUILD_ENVS_BASE_POST_16 =
278BUILD_ENVS_BASE_PRE = buildsetup emx cvs
279BUILD_ENVS_BASE_PRE_16 = buildsetup emx cvs toolkit40 ddkbase
[8294]280
281
[8423]282# Check if there is any change in the environment OR if the environment is
283# uncertain (_BUILD_PROJECT not right).
284# If there are Then we will have to forward all target commands to the
[8294]285# correct shell environment
[8423]286!if "$(_BUILD_PROJECT)" != "$(BUILD_PROJECT)" || "$(BUILD_ENV)" != "$(BUILD_ENV_FORCE)" || "$(BUILD_ENVS_PRE)" != "" || "$(BUILD_ENVS_POST)" != ""
[8294]287MAKE_INCLUDE_PROCESS = $(PATH_MAKE)\process.forwarder.mak
288
[9047]289# Debug - find the reason for forwarding.
290#! if 0
291#! if "$(_BUILD_PROJECT)" != "$(BUILD_PROJECT)"
292#! if [echo debug - _BUILD_PROJECT: "$(_BUILD_PROJECT)" != "$(BUILD_PROJECT)"]
293#! endif
294#! endif
295#! if "$(BUILD_ENV)" != "$(BUILD_ENV_FORCE)"
296#! if [echo debug - BUILD_ENV: "$(BUILD_ENV)" != "$(BUILD_ENV_FORCE)"]
297#! endif
298#! endif
299#! if "$(BUILD_ENVS_PRE)" != ""
300#! if [echo debug - BUILD_ENVS_PRE: "$(BUILD_ENVS_PRE)" != ""]
301#! endif
302#! endif
303#! if "$(BUILD_ENVS_POST)" != ""
304#! if [echo debug - BUILD_ENVS_POST: "$(BUILD_ENVS_POST)" != ""]
305#! endif
306#! endif
307#! endif
308
309# flag that we're forwarding.
310BUILD_FORWARDING = 1
311
[8423]312# set the secret _build_project env.var.
[9047]313# Note: This 'SET' operation doesn't allways work as designed.
314# Therefore we have a workaround in the forwarder statement which makes
315# sure that the internal variable is set. The problem seems to be to
316# create new environment variables.
317! if "$(_BUILD_PROJECT)" != "$(BUILD_PROJECT)"
318! if [SET _BUILD_PROJECT=$(BUILD_PROJECT)]
319! endif
[8423]320! endif
[8294]321
322# Compiler change or just environment change.
323! if "$(BUILD_ENV)" != "$(BUILD_ENV_FORCE)"
324MAKE_INCLUDE_SETUP_FORCE = $(PATH_MAKE)\setup.$(SHT_TRGPLTFRM)$(SHT_BLDMD)$(SHT_BLDENVFRC).mk
325! ifndef BUILD_QUIET
[8715]326! ifndef MAKEVER
327! if [$(ECHO) Including forced platform setup file $(CLRFIL)$(MAKE_INCLUDE_SETUP_FORCE)$(CLRRST)]
328! endif
329! else
330$(ECHO) Including forced platform setup file $(CLRFIL)$(MAKE_INCLUDE_SETUP_FORCE)$(CLRRST)
[8294]331! endif
332! endif
333! include $(MAKE_INCLUDE_SETUP_FORCE)
[8423]334! ifdef ENV_16BIT
335BUILD_ENVS_CHANGE = $(ENV_ENVS: =- )- $(BUILD_ENVS_BASE_PRE_16) $(BUILD_ENVS_PRE) $(ENV_ENVS_FORCE) $(BUILD_ENVS_BASE_POST_16) $(BUILD_ENVS_POST)
336! else
[8294]337BUILD_ENVS_CHANGE = $(ENV_ENVS: =- )- $(BUILD_ENVS_BASE_PRE) $(BUILD_ENVS_PRE) $(ENV_ENVS_FORCE) $(BUILD_ENVS_BASE_POST) $(BUILD_ENVS_POST)
[8423]338! endif
[8294]339! else
[8423]340! ifdef ENV_16BIT
341BUILD_ENVS_CHANGE = $(BUILD_ENVS_BASE_PRE_16) $(BUILD_ENVS_PRE) $(ENV_ENVS) $(BUILD_ENVS_BASE_POST_16) $(BUILD_ENVS_POST)
342! else
[8294]343BUILD_ENVS_CHANGE = $(BUILD_ENVS_BASE_PRE) $(BUILD_ENVS_PRE) $(ENV_ENVS) $(BUILD_ENVS_BASE_POST) $(BUILD_ENVS_POST)
[8423]344! endif
[8294]345! endif
346
[9047]347!else
348# Flag that we're not forwarding
349BUILD_FORWARDING = 0
[8294]350!endif
351
352
353!endif # MAKE_SETUP_INCLUDED
Note: See TracBrowser for help on using the repository browser.