source: trunk/make/process.mak@ 9280

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

Updated some headers.

File size: 49.2 KB
RevLine 
[9280]1# $Id: process.mak,v 1.33 2002-09-20 04:24:05 bird Exp $
[8197]2#
[9280]3# Generic Buildsystem
[8197]4#
5# The common build process rules
6#
[9280]7# Copyright (c) 2001-2002 knut st. osmundsen <bird@anduin.net>
8# Copyright (c) 2001 Patrick Haller
[8197]9#
[9280]10# This file is part of Generic Buildsystem.
11#
[8197]12
13
[8253]14# -----------------------------------------------------------------------------
15# Assertions.
16# This makefile expects setup.mak and the specific setup to be included
17# already.
18# It also requires the TARGET_NAME to be specified in the makefile.
19# -----------------------------------------------------------------------------
[8714]20!if "$(MAKE_SETUP_INCLUDED)" != "YES"
21! ifndef MAKEVER
22! if [$(ECHO) $(CLRERR)Fatal error: You must include setup.mak before process.mak in the makefile.$(CLRRST)]
23! endif
24! error
25!else
26! error $(CLRERR)Fatal error: You must include setup.mak before process.mak in the makefile.$(CLRRST)
[8197]27!endif
[8714]28!endif
[8253]29!if "$(ENV_STATUS)" != "OK"
[8714]30! ifndef MAKEVER
31! if [$(ECHO) $(CLRERR)Fatal error: The environment is not valid. Bad setup.mak?$(CLRRST)]
32! endif
33! error
34! else
35! error $(CLRERR)Fatal error: The environment is not valid. Bad setup.mak?$(CLRRST)
[8423]36! endif
[8253]37!endif
[8197]38
[8423]39!if "$(TARGET_NAME)" == "" && "$(TARGET_MODE)" != "EMPTY"
[8714]40! ifndef MAKEVER
41! if [$(ECHO) $(CLRERR)Fatal error: TARGET_NAME is not defined! Should be set in the makefile.$(CLRRST)]
42! endif
43! error
44! else
45! error $(CLRERR)Fatal error: TARGET_NAME is not defined! Should be set in the makefile.$(CLRRST)
[8423]46! endif
[8253]47!endif
48
[8290]49!ifdef TARGET_MODE
50# Executable target mode.
51! if "$(TARGET_MODE)" != "EXE"
52# Dynamic Load Library target mode.
53! if "$(TARGET_MODE)" != "DLL"
54# Drive (/ system software) target mode.
[8423]55! if "$(TARGET_MODE)" != "SYS"
[8290]56# Installable File System Drive target mode. (Also called FSD, File System Driver.)
[8423]57! if "$(TARGET_MODE)" != "IFS"
[8290]58# Virtual Device Driver target mode.
[8423]59! if "$(TARGET_MODE)" != "VDD"
[8290]60# Object Library target mode.
[8423]61! if "$(TARGET_MODE)" != "LIB"
[8290]62# Object Library target mode - Special variant which is to be linked with a SYS target.
[8423]63! if "$(TARGET_MODE)" != "SYSLIB"
[8290]64# Object Library target mode - Special variant which is to be linked with an IFS target.
[8423]65! if "$(TARGET_MODE)" != "IFSLIB"
[8290]66# Dummy/Hub/TopLevel empty makefile. This has no target.
[8423]67! if "$(TARGET_MODE)" != "EMPTY"
[9028]68# Dependency only makefile. (typical for include directories)
69! if "$(TARGET_MODE)" != "DEPEND"
70# Testcase makefile.
71! if "$(TARGET_MODE)" != "TESTCASE"
72# Bad TARGET_MODE complain.
73! ifndef MAKEVER
[9127]74! if [$(ECHO) $(CLRERR)Fatal Error: Bad TARGET_MODE="$(TARGET_MODE)". Valid ones are: EXE, DLL, SYS, IFS, VDD, LIB, SYSLIB, IFSLIB, DEPEND, TESTCASE and EMPTY.$(CLRRST)]
[9028]75! endif
76! error
77! else
[9127]78! error $(CLRERR)Fatal Error: Bad TARGET_MODE="$(TARGET_MODE)". Valid ones are: EXE, DLL, SYS, IFS, VDD, LIB, SYSLIB, IFSLIB, DEPEND, TESTCASE and EMPTY.$(CLRRST)
[8714]79! endif
80! endif
[8290]81! endif
82! endif
83! endif
84! endif
85! endif
86! endif
87! endif
88! endif
89! endif
90! endif
91!endif
92
[9127]93# stuff which has changed behavior.
94!if 1
[8290]95
[9127]96! ifdef TARGET_PUBNAME
97! if [$(ECHO) $(CLRERR)Fatal error: TARGET_PUBNAME isn't supported. The pubname stuff has changed!$(CLRRST)]
98! endif
99! error
100! endif
101
102! ifdef PATH_INCLUDE
103! if [$(ECHO) $(CLRERR)Fatal error: PATH_INCLUDE has changed name to PATH_INCLUDES!$(CLRRST)]
104! endif
105! error
106! endif
107
108!endif
109
110
111
[8253]112# -----------------------------------------------------------------------------
113# Provide overridable defaults
114# -----------------------------------------------------------------------------
115
116# Default target mode is executable.
117!ifndef TARGET_MODE
[9135]118! if "$(_BUILD_PROJECT)" != "Odin32"
[8253]119TARGET_MODE = EXE
[9116]120! else
121# Odin32 defaults.
122! ifndef CUSTOMBUILD
123TARGET_MODE = DLL
124! else
125TARGET_MODE = LIB
126! endif
127! endif
[8253]128!endif
129
130# Default extension corresponds to the target mode.
131!ifndef TARGET_EXT
[8423]132! if "$(TARGET_MODE)" == "DLL"
[8253]133TARGET_EXT = $(EXT_DLL)
134! endif
135! if "$(TARGET_MODE)" == "SYS"
136TARGET_EXT = $(EXT_SYS)
137! endif
[8290]138! if "$(TARGET_MODE)" == "IFS"
139TARGET_EXT = $(EXT_IFS)
140! endif
141! if "$(TARGET_MODE)" == "VDD"
142TARGET_EXT = $(EXT_VDD)
143! endif
[8253]144! if "$(TARGET_MODE)" == "EXE"
145TARGET_EXT = $(EXT_EXE)
146! endif
[8290]147! if "$(TARGET_MODE)" == "LIB" || "$(TARGET_MODE)" == "SYSLIB" || "$(TARGET_MODE)" == "IFSLIB"
[8253]148TARGET_EXT = $(EXT_LIB)
149! endif
150! if "$(TARGET_MODE)" == "EMPTY"
151TARGET_EXT = empty
152! endif
[9028]153! if "$(TARGET_MODE)" == "DEPEND"
154TARGET_EXT = depend
155! endif
[8714]156! if "$(TARGET_MODE)" == "TESTCASE"
157TARGET_EXT = testcase
158! endif
[8253]159! ifndef TARGET_EXT
[8714]160! ifndef MAKEVER
161! if [$(ECHO) $(CLRERR)Internal Error: TARGET_EXT not set. Probably invalid TARGET_MODE. (TARGET_MODE="$(TARGET_MODE)")$(CLRRST)]
162! endif
163! error
164! else
165! error $(CLRERR)Internal Error: TARGET_EXT not set. Probably invalid TARGET_MODE. (TARGET_MODE="$(TARGET_MODE)")$(CLRRST)
[8423]166! endif
[8253]167! endif
168!endif
169
170# Default target path. (where all the generated stuff for this target goes)
171!ifndef PATH_TARGET
[9127]172!if "$(TARGET_SUB)" != ""
173PATH_TARGET = $(PATH_OBJ)\$(TARGET_SUB)\$(TARGET_NAME).$(TARGET_EXT)
174!else
[8253]175PATH_TARGET = $(PATH_OBJ)\$(TARGET_NAME).$(TARGET_EXT)
176!endif
[9127]177!endif
[8253]178
179# Default target file. (output)
[8197]180!ifndef TARGET
[8270]181! if "$(TARGET_MODE)" != "EMPTY"
[8714]182! if "$(TARGET_MODE)" != "TESTCASE"
[8253]183TARGET = $(PATH_TARGET)\$(TARGET_NAME).$(TARGET_EXT)
[8714]184! else
185TARGET = testcase
186! endif
[8270]187! endif
[8197]188!endif
189
[8333]190# Default target .sym file. (output)
191!ifndef TARGET_SYM
192TARGET_SYM = $(PATH_TARGET)\$(TARGET_NAME).$(EXT_SYM)
193!endif
[8270]194
[8253]195# Default object file. (output)
[8197]196!ifndef TARGET_OBJS
[8253]197TARGET_OBJS = $(PATH_TARGET)\$(TARGET_NAME).$(EXT_OBJ)
[8197]198!endif
199
[8253]200# Default libraries. (input)
[8197]201!ifndef TARGET_LIBS
[8253]202TARGET_LIBS = $(LIB_C_DLL) $(LIB_OS) $(LIB_C_RTDLL)
[8197]203!endif
204
[8253]205# Default definition file. (input)
[8197]206!ifndef TARGET_DEF
[8253]207TARGET_DEF = $(MAKEDIR)\$(PATH_DEF)\$(TARGET_NAME).def
[8197]208!endif
209
[8333]210# Default modified definition filename. (output)
211!ifndef TARGET_DEF_LINK
212TARGET_DEF_LINK = $(PATH_TARGET)\$(TARGET_NAME)_link.def
213!endif
214
[8253]215# Default definition file for generating the import library. (input)
[8197]216!ifndef TARGET_IDEF
[9135]217! if "$(_BUILD_PROJECT)" != "Odin32"
[8253]218TARGET_IDEF = $(TARGET_DEF)
[9116]219! else
[9135]220! if defined(TARGET_IDEF_CONV) || "$(TARGET_IDEF_ORG)" != ""
[9116]221TARGET_IDEF = $(PATH_TARGET)\$(TARGET_NAME)_implib.def
[9135]222! ifndef TARGET_IDEF_ORG
[9116]223TARGET_IDEF_ORG = $(TARGET_DEF)
[9135]224! endif
[9116]225! else
226TARGET_IDEF = $(TARGET_DEF)
227TARGET_IDEF_ORG = $(TARGET_DEF)
228! endif
229! endif
[9135]230
[8197]231!endif
232
[8253]233# Default map file. (output)
[8197]234!ifndef TARGET_MAP
[8333]235TARGET_MAP = $(PATH_TARGET)\$(TARGET_NAME).$(EXT_MAP)
[8197]236!endif
237
[8253]238# Default link file. (output)
[8197]239!ifndef TARGET_LNK
[8253]240TARGET_LNK = $(PATH_TARGET)\$(TARGET_NAME).lnk
[8197]241!endif
242
[8253]243# Default import library file. (output)
244!ifndef TARGET_ILIB
[9090]245! if "$(TARGET_MODE)" == "DLL" || "$(TARGET_ILIB_YES)" != ""
[9127]246TARGET_ILIB = $(PATH_LIB)\$(TARGET_NAME).$(EXT_ILIB)
[8253]247! endif
[8197]248!endif
249
[9127]250# Default public base directory. (publish)
251!ifndef TARGET_PUB_BASE
[9224]252! if "$(TARGET_MODE)" == "LIB" || "$(TARGET_MODE)" == "SYSLIB" || "$(TARGET_MODE)" == "IFSLIB"
253TARGET_PUB_BASE = $(PATH_LIB)
254! else
[9127]255TARGET_PUB_BASE = $(PATH_PUB)
256!endif
[9224]257!endif
[9127]258
259# Default public base directory for unstripped release version.
260!ifndef TARGET_PUB_BASE_DEB
261! if "$(BUILD_MODE)" == "RELEASE" && "$(TARGET_MODE:LIB=...)" == "$(TARGET_MODE)"
262! if "$(TARGET_MODE)" == "EXE" || "$(TARGET_MODE)" == "DLL" || "$(TARGET_MODE)" == "SYS" || "$(TARGET_MODE)" == "IFS" || "$(TARGET_MODE)" == "VDD"
263TARGET_PUB_BASE_DEB = $(PATH_PUB_DEB)
[8290]264! endif
[9127]265! endif
266!endif
267
268# Default sub directory.
269!ifndef TARGET_PUB_SUB
270! if "$(TARGET_SUB)" != ""
271TARGET_PUB_SUB = $(TARGET_SUB)
272! else
[8290]273! if "$(TARGET_MODE)" == "EXE"
[9127]274TARGET_PUB_SUB = $(PATH_SUB_BIN)
[8290]275! endif
[8423]276! if "$(TARGET_MODE)" == "DLL"
[9127]277TARGET_PUB_SUB = $(PATH_SUB_DLL)
[8290]278! endif
[9127]279! if "$(TARGET_MODE)" == "LIB" || "$(TARGET_MODE)" == "SYSLIB" || "$(TARGET_MODE)" == "IFSLIB"
[9224]280TARGET_PUB_SUB = .
[9127]281! endif
[8290]282! if "$(TARGET_MODE)" == "SYS" || "$(TARGET_MODE)" == "IFS"
[9127]283TARGET_PUB_SUB = $(PATH_SUB_SYS)
[8290]284! endif
285! if "$(TARGET_MODE)" == "VDD"
[9127]286TARGET_PUB_SUB = $(PATH_SUB_VDD)
[8290]287! endif
[8253]288! endif
[8197]289!endif
[8253]290
[9127]291# Default public directory.
292!ifndef TARGET_PUB_DIR
293TARGET_PUB_DIR = $(TARGET_PUB_BASE)\$(TARGET_PUB_SUB)
294!endif
295
296# Default unstripped public directory.
297!if !defined(TARGET_PUB_DIR_DEB) && "$(TARGET_PUB_BASE_DEB)" != ""
298TARGET_PUB_DIR_DEB = $(TARGET_PUB_BASE_DEB)\$(TARGET_PUB_SUB)
299!endif
300
301# Default public name.
302!ifndef TARGET_PUB_NAME
303TARGET_PUB_NAME = $(TARGET_NAME)
304!endif
305
306# Default public ext.
307!ifndef TARGET_PUB_EXT
308TARGET_PUB_EXT = $(TARGET_EXT)
309!endif
310
311# Default public full name.
312!ifndef TARGET_PUB
313TARGET_PUB = $(TARGET_PUB_DIR)\$(TARGET_PUB_NAME).$(TARGET_PUB_EXT)
314!endif
315
316# Default public full name of unstripped version.
317!if !defined(TARGET_PUB_DEB) && "$(TARGET_PUB_DIR_DEB)" != ""
318TARGET_PUB_DEB = $(TARGET_PUB_DIR_DEB)\$(TARGET_PUB_NAME).$(TARGET_PUB_EXT)
319!endif
320
[9275]321# Default public book dirs
322!ifndef TARGET_BOOK_PUB_BASE
323TARGET_BOOK_PUB_BASE = $(PATH_PUB)
324!endif
325!ifndef TARGET_BOOK_PUB_SUB
326TARGET_BOOK_PUB_SUB = $(PATH_SUB_BOOK)
327!endif
328!ifndef TARGET_BOOK_PUB_DIR
329TARGET_BOOK_PUB_DIR = $(TARGET_BOOK_PUB_BASE)\$(TARGET_BOOK_PUB_SUB)
330!endif
331
332# Default public help dirs
333!ifndef TARGET_HELP_PUB_BASE
334TARGET_HELP_PUB_BASE = $(PATH_PUB)
335!endif
336!ifndef TARGET_HELP_PUB_SUB
337TARGET_HELP_PUB_SUB = $(PATH_SUB_HELP)
338!endif
339!ifndef TARGET_HELP_PUB_DIR
340TARGET_HELP_PUB_DIR = $(TARGET_HELP_PUB_BASE)\$(TARGET_HELP_PUB_SUB)
341!endif
342
343# Default public docs dirs
344!ifndef TARGET_DOC_PUB_BASE
345TARGET_DOC_PUB_BASE = $(PATH_PUB)
346!endif
347!ifndef TARGET_DOC_PUB_SUB
348TARGET_DOC_PUB_SUB = $(PATH_SUB_DOC)
349!endif
350!ifndef TARGET_DOC_PUB_DIR
351TARGET_DOC_PUB_DIR = $(TARGET_DOC_PUB_BASE)\$(TARGET_DOC_PUB_SUB)
352!endif
353
[8253]354# Default depend filename.
355!ifndef TARGET_DEPEND
356TARGET_DEPEND = $(PATH_TARGET)\.depend
[8197]357!endif
358
[8423]359# Default makefile names.
360!ifndef BUILD_MAKEFILE
361BUILD_MAKEFILE = Makefile
362!endif
363
[8253]364# Default makefile name.
365!ifndef MAKEFILE
[8423]366MAKEFILE = $(BUILD_MAKEFILE)
[8197]367!endif
368
[8253]369# Ignore linker warnings for some target modes.
370!ifndef TARGET_IGNORE_LINKER_WARNINGS
[8423]371! if "$(TARGET_MODE)" == "DLL"
[8253]372TARGET_IGNORE_LINKER_WARNINGS = 1
373! endif
[8197]374!endif
375
376
[8253]377# Default stacksize
[8355]378# If 16bit: 8KB
379# Else (32bit): 64KB
[8197]380!ifndef TARGET_STACKSIZE
[8355]381! ifdef ENV_16BIT
[8197]382TARGET_STACKSIZE=0x2000
383! else
384TARGET_STACKSIZE=0x10000
385! endif
386!endif
387
[8253]388
389
390# -----------------------------------------------------------------------------
[9127]391# Internal helper macros - don't mess!
392# -----------------------------------------------------------------------------
393
394# Helper for doing early publish of a target.
395!if defined(TARGET_NEEDED) || defined(TARGET_PUBLIC)
396_TARGET_EARLY_PUBLISH = publish_target
397!else
398_TARGET_EARLY_PUBLISH =
399!endif
400
401# The unstripped release name (internal!)
402_TARGET_DEB = $(TARGET).unstripped
403
404
405
406# -----------------------------------------------------------------------------
[8253]407# Tell user what we're building.
408# -----------------------------------------------------------------------------
409!ifndef BUILD_QUIET
[9044]410! if "$(TARGET)" != ""
411! ifndef MAKEVER
412! if [$(ECHO) Target is $(CLRFIL)$(TARGET)$(CLRRST)]
413! endif
414! else
415$(ECHO) Target is $(CLRFIL)$(TARGET)$(CLRRST)
[8714]416! endif
417! endif
[8197]418!endif
419
420
[8253]421# -----------------------------------------------------------------------------
422# Ensure the platform-specific target path exists
423# -----------------------------------------------------------------------------
424
425!if "$(TARGET_MODE)" != "EMPTY"
426! if "$(PATH_TARGET)" != ""
[8714]427! ifndef MAKEVER
428! if [$(TOOL_EXISTS) $(PATH_TARGET)] != 0
429! ifndef BUILD_QUIET
430! if [$(ECHO) Target path $(CLRFIL)$(PATH_TARGET)$(CLRTXT) does NOT exist. Creating. $(CLRRST)]
431! endif
[8253]432! endif
[8714]433! if [$(TOOL_CREATEPATH) $(PATH_TARGET)]
434! if [$(ECHO) $(CLRERR)Error: Could not create $(CLRFIL)$(PATH_TARGET)$(CLRRST)]
435! endif
436! error
437! endif
[8253]438! endif
[8714]439! else
440! if %exist($(PATH_TARGET)) == 0
441! ifndef BUILD_QUIET
442$(ECHO) Target path $(CLRFIL)$(PATH_TARGET)$(CLRTXT) does NOT exist. Creating. $(CLRRST)
[8423]443! endif
[8714]444! else
445! if [$(TOOL_CREATEPATH) $(PATH_TARGET)]
446! error $(CLRERR)Error: Could not create $(CLRFIL)$(PATH_TARGET)$(CLRRST)
447! endif
[8253]448! endif
[8197]449! endif
450! endif
451!endif
[8253]452# not 100% sure about the != EMPTY stuff, but this is way faster.
[8197]453
454
[9135]455# -----------------------------------------------------------------------------
456# Make all targets 'unprecious'. (works only on nmake5)
457# -----------------------------------------------------------------------------
458.PRECIOUS: .force
[8197]459
[9135]460
[8253]461# -----------------------------------------------------------------------------
462# Common inference rules
463# -----------------------------------------------------------------------------
[8197]464.SUFFIXES:
[9275]465.SUFFIXES: .c .cpp .orc .asm .$(EXT_OBJ) .$(EXT_RES) .rc .ii .s .ipp .ipf .$(EXT_INF) .$(EXT_HLP)
[8197]466
[8714]467#
468# A workaround for SlickEdits inability to find the buggy files..
469# This makes the source filenames in the error listing have full path.
470# See setup.mak for compile command line.
471#
472_SRC = $<
473!ifdef SLKRUNS
474_SRC = $(PATH_CURRENT)\$<
475!endif
[9165]476_DST = $(PATH_TARGET)\$(@F)
[8197]477
[8714]478
[8197]479# Assembling assembly source.
480.asm{$(PATH_TARGET)}.$(EXT_OBJ):
[8714]481 @$(ECHO) Assembling $(CLRFIL)$(_SRC) $(CLRTXT)$(TOOL_JOB_SUB_MSG) $(CLRRST)
482 \
[8423]483! ifndef BUILD_VERBOSE
[8290]484 @ \
[8423]485! endif
[8213]486!if "$(TARGET_MODE)" == "SYS" || "$(TARGET_MODE)" == "SYSLIB" || "$(TARGET_MODE)" == "IFS" || "$(TARGET_MODE)" == "IFSLIB"
[9165]487! ifdef AS_CMD_SYS
488 $(TOOL_JOB_SUB) $(AS_CMD_SYS)
489! else
490 $(TOOL_JOB_SUB) $(AS) $(AS_FLAGS_SYS) $(_SRC) $(AS_OBJ_OUT)$(_DST)
491! endif
[8197]492!else
[9165]493! ifdef AS_CMD
494 $(TOOL_JOB_SUB) $(AS_CMD)
495! else
496 $(TOOL_JOB_SUB) $(AS) $(AS_FLAGS) $(_SRC) $(AS_OBJ_OUT)$(_DST)
497! endif
[8197]498!endif
499
500.asm.$(EXT_OBJ):
[8714]501 @$(ECHO) Assembling $(CLRFIL)$(_SRC) $(CLRRST)
502 \
[8290]503!ifndef BUILD_VERBOSE
504 @ \
505!endif
[8213]506!if "$(TARGET_MODE)" == "SYS" || "$(TARGET_MODE)" == "SYSLIB" || "$(TARGET_MODE)" == "IFS" || "$(TARGET_MODE)" == "IFSLIB"
[9165]507! ifdef AS_CMD_SYS
508 $(AS_CMD_SYS)
509! else
510 $(AS) $(AS_FLAGS_SYS) $(_SRC) $(AS_OBJ_OUT)$(_DST)
511! endif
[8197]512!else
[9165]513! ifdef AS_CMD
514 $(AS_CMD)
515! else
516 $(AS) $(AS_FLAGS) $(_SRC) $(AS_OBJ_OUT)$(_DST)
517! endif
[8197]518!endif
519
[8714]520# C++ Compiler base line
521_CXX_BASELINE = $(CXX) \
[8290]522!if "$(TARGET_MODE)" == "EXE" || "$(TARGET_MODE)" == "LIB"
[8197]523 $(CXX_FLAGS_EXE) \
524!endif
525!if "$(TARGET_MODE)" == "DLL"
526 $(CXX_FLAGS_DLL) \
527!endif
528!if "$(TARGET_MODE)" == "SYS" || "$(TARGET_MODE)" == "SYSLIB"
529 $(CXX_FLAGS_SYS) \
530!endif
[8213]531!if "$(TARGET_MODE)" == "IFS" || "$(TARGET_MODE)" == "IFSLIB"
532 $(CXX_FLAGS_IFS) \
533!endif
[8714]534
535# Compiling C++ source.
536.cpp{$(PATH_TARGET)}.$(EXT_OBJ):
537 @$(ECHO) C++ Compiler $(CLRFIL)$(_SRC) $(CLRTXT)$(TOOL_JOB_SUB_MSG) $(CLRRST)
538 \
539!ifndef BUILD_VERBOSE
540 @ \
541!endif
542 $(TOOL_JOB_SUB) $(_CXX_BASELINE) \
[8253]543!if "$(CXX_LST_OUT)" != ""
[8213]544 $(CXX_LST_OUT)$(PATH_TARGET)\$(@B).s \
545!endif
[9165]546 $(CXX_OBJ_OUT)$(_DST) $(_SRC)
[8197]547
548.cpp.$(EXT_OBJ):
[8714]549 @$(ECHO) C++ Compiler $(CLRFIL)$(_SRC) $(CLRRST)
550 \
[8290]551!ifndef BUILD_VERBOSE
552 @ \
553!endif
[8714]554 $(_CXX_BASELINE) \
[8253]555!if "$(CXX_LST_OUT)" != ""
[8213]556 $(CXX_LST_OUT)$(PATH_TARGET)\$(@B).s \
557!endif
[9165]558 $(CXX_OBJ_OUT)$(_DST) $(_SRC)
[8197]559
560
561# Pre-Compiling C++ source.
[8714]562.cpp.ii:
563 @$(ECHO) C++ Compiler $(CLRFIL)$(_SRC) $(CLRRST)
564 \
[8290]565!ifndef BUILD_VERBOSE
566 @ \
567!endif
[8714]568 $(_CXX_BASELINE) \
569 $(CXX_PC_2_STDOUT) $(_SRC) > $@
[8197]570
571
[8714]572# Compiler C++ source to assembly.
573!if "$(CXX_AS_2_FILE)" != ""
574.cpp.s:
575 @$(ECHO) C++ To Assembly $(CLRFIL)$(_SRC) $(CLRRST)
576 \
[8290]577!ifndef BUILD_VERBOSE
578 @ \
579!endif
[8714]580 $(_CXX_BASELINE) \
581 $(CXX_AS_2_FILE)$@ $(_SRC)
582!endif
583
584
585
586# C Compiler base line
587_CC_BASELINE = $(CC) \
[8290]588!if "$(TARGET_MODE)" == "EXE" || "$(TARGET_MODE)" == "LIB"
[8197]589 $(CC_FLAGS_EXE) \
590!endif
591!if "$(TARGET_MODE)" == "DLL"
592 $(CC_FLAGS_DLL) \
593!endif
594!if "$(TARGET_MODE)" == "SYS" || "$(TARGET_MODE)" == "SYSLIB"
595 $(CC_FLAGS_SYS) \
596!endif
[8213]597!if "$(TARGET_MODE)" == "IFS" || "$(TARGET_MODE)" == "IFSLIB"
598 $(CC_FLAGS_IFS) \
599!endif
[8714]600
601# Compiling C source.
602.c{$(PATH_TARGET)}.$(EXT_OBJ):
603 @$(ECHO) C Compiler $(CLRFIL)$(_SRC) $(CLRTXT)$(TOOL_JOB_SUB_MSG) $(CLRRST)
604 \
605!ifndef BUILD_VERBOSE
606 @ \
607!endif
608 $(TOOL_JOB_SUB) $(_CC_BASELINE) \
[8253]609!if "$(CC_LST_OUT)" != ""
[8213]610 $(CC_LST_OUT)$(PATH_TARGET)\$(@B).s \
611!endif
[9165]612 $(CC_OBJ_OUT)$(_DST) $(_SRC)
[8197]613
614.c.$(EXT_OBJ):
[8714]615 @$(ECHO) C Compiler $(CLRFIL)$(_SRC) $(CLRRST)
616 \
[8290]617!ifndef BUILD_VERBOSE
618 @ \
619!endif
[8714]620 $(_CC_BASELINE) \
[8253]621!if "$(CC_LST_OUT)" != ""
[8213]622 $(CC_LST_OUT)$(PATH_TARGET)\$(@B).s \
623!endif
[9165]624 $(CC_OBJ_OUT)$(_DST) $(_SRC)
[8197]625
626
627# Pre-Compiling C source.
[8714]628.c.ii:
629 @$(ECHO) C PreCompiler $(CLRFIL)$(_SRC) $(CLRRST)
630 \
[8290]631!ifndef BUILD_VERBOSE
632 @ \
633!endif
[8714]634 $(_CC_BASELINE) \
635 $(CC_PC_2_STDOUT) $(_SRC) > $@
636
637
638# Compiler C source to assembly.
639!if "$(CC_AS_2_FILE)" != ""
640.c.s:
641 @$(ECHO) C To Assembly $(CLRFIL)$(_SRC) $(CLRRST)
642 \
643!ifndef BUILD_VERBOSE
644 @ \
[8197]645!endif
[8714]646 $(_CC_BASELINE) \
647 $(CC_AS_2_FILE)$@ $(_SRC)
[8197]648!endif
649
650
651# Compiling resources.
652.rc{$(PATH_TARGET)}.res:
[8714]653 @$(ECHO) RC Compiler $(CLRFIL)$(_SRC) $(CLRTXT)$(TOOL_JOB_SUB_MSG)$(CLRRST)
654 \
[8290]655!ifndef BUILD_VERBOSE
656 @ \
657!endif
[9165]658 $(TOOL_JOB_SUB) $(RC) $(RC_FLAGS) $(_SRC) $(_DST)
[8197]659
660.rc.res:
[8714]661 @$(ECHO) RC Compiler $(CLRFIL)$(_SRC) $(CLRRST)
662 \
[8290]663!ifndef BUILD_VERBOSE
664 @ \
665!endif
[9165]666 $(RC) $(RC_FLAGS) $(_SRC) $(_DST)
[8197]667
668
[9116]669# Compiling Odin32 resources.
670.orc{$(PATH_TARGET)}.obj:
671 @$(ECHO) ORC Compiler $(CLRFIL)$(_SRC) $(CLRTXT)$(TOOL_JOB_SUB_MSG)$(CLRRST)
672 \
673!ifndef BUILD_VERBOSE
674 @ \
675!endif
676 $(ORC) $(ORC_FLAGS) $(ORC_ASM_OUT)$(PATH_TARGET)\$(@B).asm $(_SRC)
677 \
678!ifndef BUILD_VERBOSE
679 @ \
680!endif
[9165]681 $(AS) $(AS_FLAGS) $(PATH_TARGET)\$(@B).asm $(AS_OBJ_OUT)$(_DST)
[8253]682
[9116]683.orc.obj:
684 @$(ECHO) ORC Compiler $(CLRFIL)$(_SRC) $(CLRRST)
685 \
686!ifndef BUILD_VERBOSE
687 @ \
688!endif
689 $(ORC) $(ORC_FLAGS) $(ORC_ASM_OUT)$(PATH_TARGET)\$(@B).asm $(_SRC)
690 \
691!ifndef BUILD_VERBOSE
692 @ \
693!endif
[9165]694 $(AS) $(AS_FLAGS) $(PATH_TARGET)\$(@B).asm $(AS_OBJ_OUT)$(_DST)
[8253]695
696
[9275]697# Compiling INFs.
698.ipf{$(PATH_TARGET)}.$(EXT_INF):
699 @$(ECHO) BOOK Compiler $(CLRFIL)$(_SRC)$(CLRRST)
700 \
701!ifndef BUILD_VERBOSE
702 @ \
703!endif
704 $(INFC_CMD)
[9116]705
[9275]706.ipf.inf:
707 @$(ECHO) BOOK Compiler $(CLRFIL)$(_SRC)$(CLRRST)
708 \
709!ifndef BUILD_VERBOSE
710 @ \
711!endif
712 $(INFC_CMD)
[9116]713
714
[9275]715# Compiling INFs with pre-compiling
716.ipp{$(PATH_TARGET)}.$(EXT_INF):
717 @$(ECHO) CC Pre + BOOK Compiler $(CLRFIL)$(_SRC)$(CLRRST)
718!ifndef CC_PC_2_STRIPPED_STDOUT
719 $(TOOL_ECHO) $(CLRERR)fatal error: CC_PC_2_STRIPPED_STDOUT isn't supported on this compiler. $(CLRRST) && false
720!endif
721 \
722!ifndef BUILD_VERBOSE
723 @ \
724!endif
725 $(INFC_CMD_PRE)
726
727.ipp.inf:
728 @$(ECHO) CC Pre + BOOK Compiler $(CLRFIL)$(_SRC)$(CLRRST)
729!ifndef CC_PC_2_STRIPPED_STDOUT
730 $(TOOL_ECHO) $(CLRERR)fatal error: CC_PC_2_STRIPPED_STDOUT isn't supported on this compiler. $(CLRRST) && false
731!endif
732 \
733!ifndef BUILD_VERBOSE
734 @ \
735!endif
736 $(INFC_CMD_PRE)
737
738
739# Compiling HLPs
740.ipf{$(PATH_TARGET)}.$(EXT_HLP):
741 @$(ECHO) HELP Compiler $(CLRFIL)$(_SRC)$(CLRRST)
742 \
743!ifndef BUILD_VERBOSE
744 @ \
745!endif
746 $(HLPC_CMD)
747
748.ipf.hlp:
749 @$(ECHO) HELP Compiler $(CLRFIL)$(_SRC)$(CLRRST)
750 \
751!ifndef BUILD_VERBOSE
752 @ \
753!endif
754 $(HLPC_CMD)
755
756
757# Compiling HLPs with pre-compiling
758.ipp{$(PATH_TARGET)}.$(EXT_HLP):
759 @$(ECHO) CC Pre + HELP Compiler $(CLRFIL)$(_SRC)$(CLRRST)
760!ifndef CC_PC_2_STRIPPED_STDOUT
761 $(TOOL_ECHO) $(CLRERR)fatal error: CC_PC_2_STRIPPED_STDOUT isn't supported on this compiler. $(CLRRST) && false
762!endif
763 \
764!ifndef BUILD_VERBOSE
765 @ \
766!endif
767 $(HLPC_CMD_PRE)
768
769.ipp.hlp:
770 @$(ECHO) CC Pre + HELP Compiler $(CLRFIL)$(_SRC)$(CLRRST)
771!ifndef CC_PC_2_STRIPPED_STDOUT
772 $(TOOL_ECHO) $(CLRERR)fatal error: CC_PC_2_STRIPPED_STDOUT isn't supported on this compiler. $(CLRRST) && false
773!endif
774 \
775!ifndef BUILD_VERBOSE
776 @ \
777!endif
778 $(HLPC_CMD_PRE)
779
780
781
[8253]782# -----------------------------------------------------------------------------
783# The all rule - The default one, as it's the first rule in the file.
784# -----------------------------------------------------------------------------
[8197]785all: build
786
787
[8253]788
789# -----------------------------------------------------------------------------
[9031]790# The build rule - This runs all passes:
791# 1. Make Dependencies
[9090]792# 2. Make Needed Tools (stuff required in the next steps)
793# 3. Make Libraries (all kinds)
[9275]794# 4. Make Binaries (ie. executable files)
[9090]795# 5. Make Miscellaneous Targets
796# 6. Make Install
[9031]797# Note: In order to load dependencies we'll do a forwarding after making them.
[8253]798# -----------------------------------------------------------------------------
[9031]799build: _build
800!if "$(MAKEFLAGS:I=_)" == "$(MAKEFLAGS)" # this is of course broken in nmake v5.0 for OS/2.
801 @$(ECHO)$(CLRMAK)[Successfully Built Everything!] $(CLRRST)
802!else
803 @$(ECHO)$(CLRMAK)[Built Everything! (Ignore option specified)] $(CLRRST)
804!endif
805
806# internal rule shared by rebuild and build.
807_build: _build_banner_dep dep
808!ifndef BUILD_QUIET
809 @$(ECHO) Restarting $(CLRFIL)$(MAKEFILE)$(CLRTXT) with new dependencies. $(CLRRST)
810!endif
811 \
812!ifndef BUILD_VERBOSE
813 @ \
814!endif
815 $(TOOL_MAKE) -f $(MAKEFILE) _build_new_dependencies_
816
817# internal rule used to reload dependencies.
818_build_new_dependencies_: \
[9090]819 _build_banner_needed needed \
[9031]820 _build_banner_lib lib \
[9275]821 _build_banner_binary binary \
822 _build_banner_misc misc \
[9127]823 _build_banner_publish publish
[9031]824
[9228]825
[9031]826# Banners for rebuild and build.
827_build_banner_clean:
828 @$(ECHO)$(CLRMAK)[Start Pass 0 - Make Clean] $(CLRRST)
829 @SET _BUILD_PASS=0
830_build_banner_dep:
831 @$(ECHO)$(CLRMAK)[Start Pass 1 - Make Dependencies] $(CLRRST)
832 @SET _BUILD_PASS=1
[9090]833_build_banner_needed:
834 @$(ECHO)$(CLRMAK)[Start Pass 2 - Make Needed Tools] $(CLRRST)
835 @SET _BUILD_PASS=2
[9031]836_build_banner_lib:
[9090]837 @$(ECHO)$(CLRMAK)[Start Pass 3 - Make Libraries] $(CLRRST)
838 @SET _BUILD_PASS=3
[9275]839_build_banner_binary:
840 @$(ECHO)$(CLRMAK)[Start Pass 4 - Make Binaries] $(CLRRST)
[9090]841 @SET _BUILD_PASS=4
[9275]842_build_banner_misc:
[9090]843 @$(ECHO)$(CLRMAK)[Start Pass 5 - Make Miscellaneous Targets] $(CLRRST)
844 @SET _BUILD_PASS=5
[9127]845_build_banner_publish:
846 @$(ECHO)$(CLRMAK)[Start Pass 6 - Make Public (i.e. Publish)] $(CLRRST)
[9090]847 @SET _BUILD_PASS=6
[9031]848
849
850
851# -----------------------------------------------------------------------------
852# The rebuild rule - Same as build but does a clean first (as Pass 0).
853# -----------------------------------------------------------------------------
854rebuild: \
855 _build_banner_clean clean \
856 _build
857!if "$(MAKEFLAGS:i=_)" == "$(MAKEFLAGS)"
858 @$(ECHO)$(CLRMAK)[Successfully Rebuilt Everything!] $(CLRRST)
859!else
860 @$(ECHO)$(CLRMAK)[Rebuilt Everything! (Ignore option specified)] $(CLRRST)
861!endif
862
863
864
865# -----------------------------------------------------------------------------
[9228]866# A number of shortcuts for lazy programmers.
867# -----------------------------------------------------------------------------
868pass1: build
869
870pass2: _build_new_dependencies_
871
872pass3: _build_banner_lib lib \
[9275]873 _build_banner_binary binary \
874 _build_banner_misc misc \
[9228]875 _build_banner_publish publish
876
[9275]877pass4: _build_banner_binary binary \
878 _build_banner_misc misc \
[9228]879 _build_banner_publish publish
880
[9275]881pass5: _build_banner_misc misc \
[9228]882 _build_banner_publish publish
883
884pass6: _build_banner_publish publish
885
886quick: _build_banner_lib lib \
[9275]887 _build_banner_binary binary \
[9228]888 _build_banner_publish publish
889
890
891
892# -----------------------------------------------------------------------------
[9031]893# Pass 0 - The clean rule - Clean up output files.
[9127]894# The current setup doesn't clean the published ones.
[9031]895# -----------------------------------------------------------------------------
896!if "$(TARGET_MODE)" != "TESTCASE"
897clean:
898 @$(ECHO) Cleaning... $(CLRRST)
899 \
900! ifndef BUILD_VERBOSE
901 @ \
902! endif
[9116]903 $(TOOL_RM) @<<
904"$(PATH_TARGET)\*.$(EXT_OBJ)"
905"$(PATH_TARGET)\*.$(EXT_ILIB)"
906"$(PATH_TARGET)\*.$(EXT_EXE)"
907"$(PATH_TARGET)\*.$(EXT_DLL)"
908"$(PATH_TARGET)\*.$(EXT_RES)"
909"$(PATH_TARGET)\*.$(EXT_SYS)"
910"$(PATH_TARGET)\*.$(EXT_LIB)"
911"$(PATH_TARGET)\*.$(EXT_IFS)"
912"$(PATH_TARGET)\*.$(EXT_MAP)"
913"$(PATH_TARGET)\*.$(EXT_SYM)"
914"$(PATH_TARGET)\*.$(EXT_DEF)"
915"$(PATH_TARGET)\*.s"
916"$(PATH_TARGET)\*.lst"
917"$(PATH_TARGET)\*.lnk"
918"$(PATH_TARGET)\*.ii"
919"$(PATH_TARGET)\.depend"
920"$(TARGET_DEPEND)"
921.\*.ii
922.\*.err
923.\.depend
924<<
[9090]925!ifdef SUBDIRS_CLEAN
926 @$(TOOL_DODIRS) "$(SUBDIRS_CLEAN)" $(TOOL_MAKE) -f $(BUILD_MAKEFILE) NODEP=1 $@
927!else
[9275]928! if "$(SUBDIRS)$(SUBDIRS_NEEDED)$(SUBDIRS_LIB)$(SUBDIRS_BINARY)$(SUBDIRS_MISC)" != ""
929 @$(TOOL_DODIRS) "$(SUBDIRS) $(SUBDIRS_NEEDED) $(SUBDIRS_LIB) $(SUBDIRS_BINARY) $(SUBDIRS_MISC)" $(TOOL_MAKE) -f $(BUILD_MAKEFILE) NODEP=1 $@
[9090]930! endif
[8197]931!endif
[9090]932!ifdef PREMAKEFILES_CLEAN
933 @$(TOOL_DOMAKES) "$(PREMAKEFILES_CLEAN)" $(TOOL_MAKE) NODEP=1 $@
934!else
[9275]935! if "$(PREMAKEFILES)$(PREMAKEFILES_NEEDED)$(PREMAKEFILES_LIB)$(PREMAKEFILES_BINARY)$(PREMAKEFILES_MISC)" != ""
936 @$(TOOL_DOMAKES) "$(PREMAKEFILES) $(PREMAKEFILES_NEEDED) $(PREMAKEFILES_LIB) $(PREMAKEFILES_BINARY) $(PREMAKEFILES_MISC)" $(TOOL_MAKE) NODEP=1 $@
[9090]937! endif
[9031]938!endif
[9090]939!ifdef POSTMAKEFILES_CLEAN
940 @$(TOOL_DOMAKES) "$(POSTMAKEFILES_CLEAN)" $(TOOL_MAKE) NODEP=1 $@
941!else
[9275]942! if "$(POSTMAKEFILES)$(POSTMAKEFILES_NEEDED)$(POSTMAKEFILES_LIB)$(POSTMAKEFILES_BINARY)$(POSTMAKEFILES_MISC)" != ""
943 @$(TOOL_DOMAKES) "$(POSTMAKEFILES) $(POSTMAKEFILES_NEEDED) $(POSTMAKEFILES_LIB) $(POSTMAKEFILES_BINARY) $(POSTMAKEFILES_MISC)" $(TOOL_MAKE) NODEP=1 $@
[9090]944! endif
[9031]945!endif
[9090]946
[9031]947!endif #!TESTCASE
[8197]948
[9031]949
950
951# -----------------------------------------------------------------------------
952# Pass 1 - The dep rule - Make dependencies.
953# -----------------------------------------------------------------------------
954dep:
[9044]955!if "$(TARGET_MODE)" != "EMPTY" && "$(TARGET_MODE)" != "TESTCASE"
[9031]956 @$(ECHO) Making dependencies... $(CLRRST)
957 \
[9044]958! ifndef BUILD_VERBOSE
[9031]959 @ \
[9044]960! endif
[9240]961 $(TOOL_DEP) \
[9031]962! ifdef TARGET_NO_DEP
963 -x$(TARGET_NO_DEP: =;)\
964! endif
[9240]965 @<<
966$(TOOL_DEP_FLAGS)
967-o$$(PATH_TARGET)
968-d$(TARGET_DEPEND)
969-srcadd AS:$$(MAKE_INCLUDE_AS_SETUP)
970-srcadd AS:$$(MAKE_INCLUDE_AS_OPT)
971-srcadd RC:$$(MAKE_INCLUDE_RC_SETUP)
972-srcadd ORC:$$(MAKE_INCLUDE_ORC_SETUP)
973-srcadd CX:$$(MAKE_INCLUDE_SETUP)
974-srcadd CX:$$(MAKE_INCLUDE_CX_OPT)
975$(TOOL_DEP_FILES)
976<<
[9031]977!endif
[9090]978!ifdef SUBDIRS_DEP
979 @$(TOOL_DODIRS) "$(SUBDIRS_DEP)" $(TOOL_MAKE) -f $(BUILD_MAKEFILE) NODEP=1 $@
980!else
[9275]981! if "$(SUBDIRS)$(SUBDIRS_NEEDED)$(SUBDIRS_LIB)$(SUBDIRS_BINARY)$(SUBDIRS_MISC)" != ""
982 @$(TOOL_DODIRS) "$(SUBDIRS) $(SUBDIRS_NEEDED) $(SUBDIRS_LIB) $(SUBDIRS_BINARY) $(SUBDIRS_MISC)" $(TOOL_MAKE) -f $(BUILD_MAKEFILE) NODEP=1 $@
[9090]983! endif
[9031]984!endif
[9090]985!ifdef PREMAKEFILES_DEP
986 @$(TOOL_DOMAKES) "$(PREMAKEFILES_DEP)" $(TOOL_MAKE) NODEP=1 $@
987!else
[9275]988! if "$(PREMAKEFILES)$(PREMAKEFILES_NEEDED)$(PREMAKEFILES_LIB)$(PREMAKEFILES_BINARY)$(PREMAKEFILES_MISC)" != ""
989 @$(TOOL_DOMAKES) "$(PREMAKEFILES) $(PREMAKEFILES_NEEDED) $(PREMAKEFILES_LIB) $(PREMAKEFILES_BINARY) $(PREMAKEFILES_MISC)" $(TOOL_MAKE) NODEP=1 $@
[9090]990! endif
[8197]991!endif
[9090]992!ifdef POSTMAKEFILES_DEP
993 @$(TOOL_DOMAKES) "$(POSTMAKEFILES_DEP)" $(TOOL_MAKE) NODEP=1 $@
994!else
[9275]995! if "$(POSTMAKEFILES)$(POSTMAKEFILES_NEEDED)$(POSTMAKEFILES_LIB)$(POSTMAKEFILES_BINARY)$(POSTMAKEFILES_MISC)" != ""
996 @$(TOOL_DOMAKES) "$(POSTMAKEFILES) $(POSTMAKEFILES_NEEDED) $(POSTMAKEFILES_LIB) $(POSTMAKEFILES_BINARY) $(POSTMAKEFILES_MISC)" $(TOOL_MAKE) NODEP=1 $@
[9090]997! endif
[8197]998!endif
999
1000
[8253]1001
1002# -----------------------------------------------------------------------------
[9090]1003# Pass 2 - The needed rule - Make need tools.
1004# That is tools and stuff that is required for the next passes.
1005# WARNING! These tools and stuff shouldn't rely on libraries and other
1006# results of later passes.
[8253]1007# -----------------------------------------------------------------------------
[9090]1008!ifdef SUBDIRS_NEEDED
1009_SUBDIRS_NEEDED = _subdir_needed
1010$(_SUBDIRS_NEEDED):
1011 @$(TOOL_DODIRS) "$(SUBDIRS_NEEDED)" $(TOOL_MAKE) -f $(BUILD_MAKEFILE) needed
1012!else
1013! ifdef SUBDIRS
1014_SUBDIRS_NEEDED = _subdir_needed
1015$(_SUBDIRS_NEEDED):
1016 @$(TOOL_DODIRS) "$(SUBDIRS)" $(TOOL_MAKE) -f $(BUILD_MAKEFILE) needed
1017! endif
1018!endif
1019
1020!ifdef PREMAKEFILES_NEEDED
1021_PREMAKEFILES_NEEDED = _premakefiles_needed
1022$(_PREMAKEFILES_NEEDED):
1023 @$(TOOL_DOMAKES) "$(PREMAKEFILES_NEEDED)" $(TOOL_MAKE) needed
1024!else
1025! ifdef PREMAKEFILES
1026_PREMAKEFILES_NEEDED = _premakefiles_needed
1027$(_PREMAKEFILES_NEEDED):
1028 @$(TOOL_DOMAKES) "$(PREMAKEFILES)" $(TOOL_MAKE) needed
1029! endif
1030!endif
1031
[9127]1032!ifdef TARGET_NEEDED
[9090]1033needed: $(_SUBDIRS_NEEDED) $(_PREMAKEFILES_NEEDED) target
1034!else
1035needed: $(_SUBDIRS_NEEDED) $(_PREMAKEFILES_NEEDED)
1036!endif
1037!ifdef POSTMAKEFILES_NEEDED
1038 @$(TOOL_DOMAKES) "$(POSTMAKEFILES_NEEDED)" $(TOOL_MAKE) $@
1039!else
1040! ifdef POSTMAKEFILES
1041 @$(TOOL_DOMAKES) "$(POSTMAKEFILES)" $(TOOL_MAKE) $@
1042! endif
1043!endif
1044
1045
1046
1047# -----------------------------------------------------------------------------
1048# Pass 3 - The lib rule - Make libraries.
1049# -----------------------------------------------------------------------------
1050!ifdef SUBDIRS_LIB
1051_SUBDIRS_LIB = _subdir_lib
1052$(_SUBDIRS_LIB):
1053 @$(TOOL_DODIRS) "$(SUBDIRS_LIB)" $(TOOL_MAKE) -f $(BUILD_MAKEFILE) lib
1054!else
1055! ifdef SUBDIRS
1056_SUBDIRS_LIB = _subdir_lib
1057$(_SUBDIRS_LIB):
[8423]1058 @$(TOOL_DODIRS) "$(SUBDIRS)" $(TOOL_MAKE) -f $(BUILD_MAKEFILE) lib
[9090]1059! endif
[8197]1060!endif
1061
[9090]1062!ifdef PREMAKEFILES_LIB
1063_PREMAKEFILES_LIB = _premakefiles_lib
1064$(_PREMAKEFILES_LIB):
1065 @$(TOOL_DOMAKES) "$(PREMAKEFILES_LIB)" $(TOOL_MAKE) lib
1066!else
1067! ifdef PREMAKEFILES
1068_PREMAKEFILES_LIB = _premakefiles_lib
1069$(_PREMAKEFILES_LIB):
[8197]1070 @$(TOOL_DOMAKES) "$(PREMAKEFILES)" $(TOOL_MAKE) lib
[9090]1071! endif
[8197]1072!endif
1073
[9090]1074lib: $(_SUBDIRS_LIB) $(_PREMAKEFILES_LIB) \
[9127]1075!if !defined(TARGET_NEEDED) && ("$(TARGET_MODE)" == "LIB" || "$(TARGET_MODE)" == "SYSLIB" || "$(TARGET_MODE)" == "IFSLIB")
1076 $(TARGET) $(_TARGET_EARLY_PUBLISH) \
[9031]1077!endif
1078 $(TARGET_ILIB)
[9090]1079!ifdef POSTMAKEFILES_LIB
1080 @$(TOOL_DOMAKES) "$(POSTMAKEFILES_LIB)" $(TOOL_MAKE) $@
1081!else
1082! ifdef POSTMAKEFILES
[9031]1083 @$(TOOL_DOMAKES) "$(POSTMAKEFILES)" $(TOOL_MAKE) $@
[9090]1084! endif
[9031]1085!endif
1086
1087
1088
1089# -----------------------------------------------------------------------------
[9275]1090# Pass 4 - The binary rule - Build the binary.
[9031]1091# -----------------------------------------------------------------------------
[9275]1092!ifdef SUBDIRS_BINARY
1093_SUBDIRS_BINARY = _subdir_binary
1094$(_SUBDIRS_BINARY):
1095 @$(TOOL_DODIRS) "$(SUBDIRS_BINARY)" $(TOOL_MAKE) -f $(BUILD_MAKEFILE) binary
[9090]1096!else
1097! ifdef SUBDIRS
[9275]1098_SUBDIRS_BINARY = _subdir_binary
1099$(_SUBDIRS_BINARY):
1100 @$(TOOL_DODIRS) "$(SUBDIRS)" $(TOOL_MAKE) -f $(BUILD_MAKEFILE) binary
[9090]1101! endif
[9031]1102!endif
1103
[9275]1104!ifdef PREMAKEFILES_BINARY
1105_PREMAKEFILES_BINARY = _premakefiles_binary
1106$(_PREMAKEFILES_BINARY):
1107 @$(TOOL_DOMAKES) "$(PREMAKEFILES_BINARY)" $(TOOL_MAKE) binary
[9090]1108!else
1109! ifdef PREMAKEFILES
[9275]1110_PREMAKEFILES_BINARY = _premakefiles_binary
1111$(_PREMAKEFILES_BINARY):
1112 @$(TOOL_DOMAKES) "$(PREMAKEFILES)" $(TOOL_MAKE) binary
[9090]1113! endif
[9031]1114!endif
1115
[9275]1116binary executable: \
[9127]1117!if "$(TARGET_MODE)" != "LIB" && "$(TARGET_MODE)" != "SYSLIB" && "$(TARGET_MODE)" != "IFSLIB" && !defined(TARGET_NEEDED)
[9275]1118 $(_SUBDIRS_BINARY) $(_PREMAKEFILES_BINARY) $(TARGET) $(_TARGET_EARLY_PUBLISH)
[8290]1119!else
[9275]1120 $(_SUBDIRS_BINARY) $(_PREMAKEFILES_BINARY)
[8290]1121!endif
[9275]1122!ifdef POSTMAKEFILES_BINARY
1123 @$(TOOL_DOMAKES) "$(POSTMAKEFILES_BINARY)" $(TOOL_MAKE) $@
[9090]1124!else
1125! ifdef POSTMAKEFILES
[8197]1126 @$(TOOL_DOMAKES) "$(POSTMAKEFILES)" $(TOOL_MAKE) $@
[9090]1127! endif
[8197]1128!endif
1129
1130
[8253]1131
1132# -----------------------------------------------------------------------------
[9275]1133# Pass 5 - The misc(ellaneous) rule - Makes miscellaneous stuff like
1134# help, documentations etc. This is experimental for the moment.
[9031]1135# -----------------------------------------------------------------------------
[9090]1136!ifdef SUBDIRS_MISC
1137_SUBDIRS_MISC = _subdir_misc
[9178]1138$(_SUBDIRS_MISC):
[9275]1139 @$(TOOL_DODIRS) "$(SUBDIRS_MISC)" $(TOOL_MAKE) -f $(BUILD_MAKEFILE) misc
[9090]1140!else
1141! ifdef SUBDIRS
1142_SUBDIRS_MISC = _subdir_misc
1143$(_SUBDIRS_MISC):
[9275]1144 @$(TOOL_DODIRS) "$(SUBDIRS)" $(TOOL_MAKE) -f $(BUILD_MAKEFILE) misc
[9090]1145! endif
[9031]1146!endif
1147
[9090]1148!ifdef PREMAKEFILES_MISC
1149_PREMAKEFILES_MISC = _premakefiles_misc
[9031]1150$(PREMAKEFILES_MISC):
[9275]1151 @$(TOOL_DOMAKES) "$(PREMAKEFILES_MISC)" $(TOOL_MAKE) misc
[9090]1152!else
1153! ifdef PREMAKEFILES
1154_PREMAKEFILES_MISC = _premakefiles_misc
1155$(_PREMAKEFILES_MISC):
[9275]1156 @$(TOOL_DOMAKES) "$(PREMAKEFILES)" $(TOOL_MAKE) misc
[9090]1157! endif
[9031]1158!endif
1159
[9275]1160misc miscellaneous: $(_SUBDIRS_MISC) $(_PREMAKEFILES_MISC) \
1161 $(TARGET_BOOKS) $(TARGET_HELPS) $(TARGET_DOCS) $(TARGET_MISC)
1162!if "$(TARGET_BOOKS)$(TARGET_HELPS)$(TARGET_DOCS)$(TARGET_MISC)" != ""
1163 @$(ECHO) Successfully Built $(CLRFIL)$(TARGET_BOOKS) $(TARGET_HELPS) $(TARGET_DOCS) $(TARGET_MISC)$(CLRRST)
[9090]1164!endif
1165!ifdef POSTMAKEFILES_MISC
1166 @$(TOOL_DOMAKES) "$(POSTMAKEFILES_MISC)" $(TOOL_MAKE) $@
[9031]1167!else
[9090]1168! ifdef POSTMAKEFILES
[9031]1169 @$(TOOL_DOMAKES) "$(POSTMAKEFILES)" $(TOOL_MAKE) $@
[9090]1170! endif
[9031]1171!endif
1172
1173
1174
1175# -----------------------------------------------------------------------------
[9127]1176# Pass 6 - The publish rule - Copies target to main binary directory.
[8253]1177# Installation order is not concidered vital, so subdirectories and
[9127]1178# pre-makefiles are processed after this directory.
1179# However, this order might be changed!
[8253]1180# -----------------------------------------------------------------------------
[9127]1181!if "$(_TARGET_EARLY_PUBLISH)" != ""
1182publish:
1183!else
1184publish: publish_target
[8197]1185!endif
[9127]1186!ifdef SUBDIRS_PUBLISH
1187 @$(TOOL_DODIRS) "$(SUBDIRS_PUBLISH)" $(TOOL_MAKE) -f $(BUILD_MAKEFILE) $@
[9090]1188!else
1189! ifdef SUBDIRS
[8423]1190 @$(TOOL_DODIRS) "$(SUBDIRS)" $(TOOL_MAKE) -f $(BUILD_MAKEFILE) $@
[9090]1191! endif
[8197]1192!endif
[9127]1193!ifdef PREMAKEFILES_PUBLISH
1194 @$(TOOL_DOMAKES) "$(PREMAKEFILES_PUBLISH)" $(TOOL_MAKE) $@
[9090]1195!else
1196! ifdef PREMAKEFILES
[8197]1197 @$(TOOL_DOMAKES) "$(PREMAKEFILES)" $(TOOL_MAKE) $@
[9090]1198! endif
[8197]1199!endif
[9127]1200!ifdef POSTMAKEFILES_PUBLISH
1201 @$(TOOL_DOMAKES) "$(POSTMAKEFILES_PUBLISH)" $(TOOL_MAKE) $@
[9090]1202!else
1203! ifdef POSTMAKEFILES
[8197]1204 @$(TOOL_DOMAKES) "$(POSTMAKEFILES)" $(TOOL_MAKE) $@
[9090]1205! endif
[8197]1206!endif
1207
[9135]1208
[9127]1209#
1210# Publish rule which doesn't go down into subdirs and submakes.
1211# This one is invoked when a target is 'needed' or early published.
1212#
1213publish_target:
1214!if "$(_TARGET_EARLY_PUBLISH)" != "" || "$(TARGET_MODE:LIB=cute)" == "$(TARGET_MODE)"
1215! if "$(TARGET_MODE)" != "EMPTY" && "$(TARGET_MODE)" != "TESTCASE" && "$(TARGET_MODE)" != "DEPEND"
1216 @$(ECHO) Publishing $(CLRFIL)$(TARGET)$(CLRTXT) to directory $(CLRFIL)$(TARGET_PUB_DIR)\$(TARGET_PUB_SUB)$(CLRRST)
1217 @if not exist "$(TARGET)" $(TOOL_ECHO) $(CLRERR)WARNING: $(CLRFIL)$(TARGET)$(CLRERR) doesn't exist. $(CLRRST)
1218 @if not exist "$(TARGET_PUB_DIR)" $(TOOL_CREATEPATH) $(TARGET_PUB_DIR)
1219 @if exist "$(TARGET)" $(TOOL_COPY) "$(TARGET)" "$(TARGET_PUB)"
1220 @if exist "$(TARGET_SYM)" $(TOOL_COPY) "$(TARGET_SYM)" "$(TARGET_PUB_DIR)"
1221! if "$(TARGET_PUB_DEB)" != ""
1222 @$(ECHO) Publishing unstripped $(CLRFIL)$(TARGET)$(CLRTXT) to directory $(CLRFIL)$(TARGET_PUB_DIR_DEB)$(CLRRST)
1223 @if not exist "$(_TARGET_DEB)" $(TOOL_ECHO) $(CLRERR)WARNING: $(CLRFIL)$(_TARGET)$(CLRERR) doesn't exist. $(CLRRST)
1224 @if not exist "$(TARGET_PUB_DIR_DEB)" $(TOOL_CREATEPATH) $(TARGET_PUB_DIR_DEB)
1225 @if exist "$(_TARGET_DEB)" $(TOOL_COPY) "$(_TARGET_DEB)" "$(TARGET_PUB_DEB)"
1226 @if exist "$(TARGET_SYM)" $(TOOL_COPY) "$(TARGET_SYM)" "$(TARGET_PUB_DIR_DEB)"
1227! endif
1228! endif
1229!endif
[9275]1230!if "$(TARGET_BOOKS)" != ""
1231 @$(ECHO) Publishing Book(s) $(CLRFIL)$(TARGET_BOOKS)$(CLRTXT) to directory $(CLRFIL)$(TARGET_BOOK_PUB_DIR)$(CLRRST)
1232 @if not exist "$(TARGET_BOOK_PUB_DIR)" $(TOOL_CREATEPATH) $(TARGET_BOOK_PUB_DIR)
1233 @$(TOOL_COPY) $(TARGET_BOOKS) $(TARGET_BOOK_PUB_DIR)
1234!endif
1235!if "$(TARGET_HELPS)" != ""
1236 @$(ECHO) Publishing Help file(s) $(CLRFIL)$(TARGET_HELPS)$(CLRTXT) to directory $(CLRFIL)$(TARGET_HELP_PUB_DIR)$(CLRRST)
1237 @if not exist "$(TARGET_HELP_PUB_DIR)" $(TOOL_CREATEPATH) $(TARGET_HELP_PUB_DIR)
1238 @$(TOOL_COPY) $(TARGET_HELPS) $(TARGET_HELP_PUB_DIR)
1239!endif
[9127]1240!if "$(TARGET_DOCS)" != ""
[9275]1241 @$(ECHO) Publishing Doc(s) $(CLRFIL)$(TARGET_DOCS)$(CLRTXT) to directory $(CLRFIL)$(TARGET_DOC_PUB_DIR)$(CLRRST)
1242 @if not exist "$(TARGET_DOC_PUB_DIR)" $(TOOL_CREATEPATH) $(TARGET_DOC_PUB_DIR)
1243 @$(TOOL_COPY) $(TARGET_DOCS) $(TARGET_DOC_PUB_DIR)
[9127]1244!endif
[8197]1245
[8253]1246
[9127]1247
[9031]1248# -----------------------------------------------------------------------------
1249# Pass x - The testcase rule - Execute testcases when present.
1250# Testcases are either a testcase.mak file or a testcase subdirectory.
1251# -----------------------------------------------------------------------------
[8714]1252!if "$(TARGET_MODE)" != "TESTCASE"
1253!ifndef BUILD_OWN_TESTCASE_RULE
[9090]1254
[8714]1255!ifndef MAKEVER
1256_TESTCASE_TST1 = [$(TOOL_EXISTS) testcase] == 0
1257_TESTCASE_TST2 = [$(TOOL_EXISTS) testcase.mak] == 0
1258!else
1259_TESTCASE_TST1 = exists(testcase) != 0
1260_TESTCASE_TST2 = exists(testcase.mak) != 0
1261!endif
[9031]1262
[8290]1263testcase:
[9031]1264 @$(ECHO) Executing testcases $(CLRRST)
[8714]1265!if $(_TESTCASE_TST1)
[8423]1266 @$(TOOL_DODIRS) "testcase" $(TOOL_MAKE) -f $(BUILD_MAKEFILE) $@
[8197]1267!endif
[8714]1268!if $(_TESTCASE_TST2)
[8197]1269 @$(TOOL_DOMAKES) "testcase.mak" $(TOOL_MAKE) $@
1270!endif
[9090]1271!ifdef SUBDIRS_TESTCASE
1272 @$(TOOL_DODIRS) "$(SUBDIRS_TESTCASE)" $(TOOL_MAKE) -f $(BUILD_MAKEFILE) $@
1273!else
1274! ifdef SUBDIRS
[8423]1275 @$(TOOL_DODIRS) "$(SUBDIRS)" $(TOOL_MAKE) -f $(BUILD_MAKEFILE) $@
[9090]1276! endif
[8197]1277!endif
[9090]1278!ifdef PREMAKEFILES_TESTCASE
1279 @$(TOOL_DOMAKES) "$(PREMAKEFILES_TESTCASE)" $(TOOL_MAKE) $@
1280!else
1281! ifdef PREMAKEFILES
[8197]1282 @$(TOOL_DOMAKES) "$(PREMAKEFILES)" $(TOOL_MAKE) $@
[9090]1283! endif
[8197]1284!endif
[9090]1285!ifdef POSTMAKEFILES_TESTCASE
1286 @$(TOOL_DOMAKES) "$(POSTMAKEFILES_TESTCASE)" $(TOOL_MAKE) $@
1287!else
1288! ifdef POSTMAKEFILES
[8197]1289 @$(TOOL_DOMAKES) "$(POSTMAKEFILES)" $(TOOL_MAKE) $@
[9090]1290! endif
[8197]1291!endif
[9090]1292
1293!endif # BUILD_OWN_TESTCASE_RULE
[8714]1294!endif #!TESTCASE
[8197]1295
1296
[9178]1297# -----------------------------------------------------------------------------
1298# Pass x - The packing rule - traverse subdirs etc.
1299# -----------------------------------------------------------------------------
1300!ifdef SUBDIRS_PACKING
1301_SUBDIRS_PACKING = _subdir_packing
1302$(_SUBDIRS_PACKING):
1303 @$(TOOL_DODIRS) "$(SUBDIRS_PACKING)" $(TOOL_MAKE) -f $(BUILD_MAKEFILE) packing
1304!else
1305! ifdef SUBDIRS
1306_SUBDIRS_PACKING = _subdir_packing
1307$(_SUBDIRS_PACKING):
1308 @$(TOOL_DODIRS) "$(SUBDIRS)" $(TOOL_MAKE) -f $(BUILD_MAKEFILE) packing
1309! endif
1310!endif
[8253]1311
[9178]1312!ifdef PREMAKEFILES_PACKING
1313_PREMAKEFILES_PACKING = _premakefiles_packing
1314$(PREMAKEFILES_PACKING):
1315 @$(TOOL_DOMAKES) "$(PREMAKEFILES_PACKING)" $(TOOL_MAKE) packing
1316!else
1317! ifdef PREMAKEFILES
1318_PREMAKEFILES_PACKING = _premakefiles_packing
1319$(_PREMAKEFILES_PACKING):
1320 @$(TOOL_DOMAKES) "$(PREMAKEFILES)" $(TOOL_MAKE) packing
1321! endif
1322!endif
1323
1324!if "$(RULE_PACKING)" == "packing"
1325_packing: \
1326!else
1327packing: \
1328!endif
1329 $(_SUBDIRS_PACKING) $(_PREMAKEFILES_PACKING) $(RULE_PACKING)
1330!ifdef POSTMAKEFILES_PACKING
1331 @$(TOOL_DOMAKES) "$(POSTMAKEFILES_PACKING)" $(TOOL_MAKE) $@
1332!else
1333! ifdef POSTMAKEFILES
1334 @$(TOOL_DOMAKES) "$(POSTMAKEFILES)" $(TOOL_MAKE) $@
1335! endif
1336!endif
1337 $(ECHO) .$(CLRRST)
1338
1339
1340
[8253]1341# -----------------------------------------------------------------------------
[9031]1342# The target rule - Build the target.
[9090]1343# NOTE! NO SUBDIRS OR POST/PREMAKED INVOLVED!
[8298]1344# -----------------------------------------------------------------------------
[9127]1345target: $(TARGET) $(TARGET_ILIB) $(_TARGET_EARLY_PUBLISH)
1346!if "$(TARGET)$(TARGET_ILIB)" != ""
[9031]1347 @$(ECHO) Successfully Built $(CLRFIL)$(TARGET) $(TARGET_ILIB)$(CLRRST)
[9127]1348!else
1349 @$(ECHO) .$(CLRRST)
1350!endif
[8197]1351
1352
[8253]1353
1354# -----------------------------------------------------------------------------
[9031]1355# The shell rule - Setup the correcte shell environment and start a shell.
[8253]1356# -----------------------------------------------------------------------------
[9031]1357shell:
1358 @$(ECHO) Creating work shell $(CLRRST)
1359 \
1360!ifndef BUILD_VERBOSE
1361 @ \
[8197]1362!endif
[9031]1363 -$(TOOL_BUILDENV) $(BUILD_ENVS_BASE_PRE) $(BUILD_ENVS_PRE) $(ENV_ENVS) \
1364 $(BUILD_ENVS_BASE_POST) $(BUILD_ENVS_POST) * $(COMSPEC)
[8714]1365
1366
1367
1368# -----------------------------------------------------------------------------
1369# The nothing rule - Rule for testing the makefile structure.
1370# -----------------------------------------------------------------------------
1371nothing:
[9031]1372 @$(ECHO) Doing nothing in $(MAKEFILE).
[8714]1373!ifdef SUBDIRS
[8423]1374 @$(TOOL_DODIRS) "$(SUBDIRS)" $(TOOL_MAKE) -f $(BUILD_MAKEFILE) $@
[8197]1375!endif
1376!ifdef PREMAKEFILES
1377 @$(TOOL_DOMAKES) "$(PREMAKEFILES)" $(TOOL_MAKE) $@
1378!endif
1379!ifdef POSTMAKEFILES
1380 @$(TOOL_DOMAKES) "$(POSTMAKEFILES)" $(TOOL_MAKE) $@
1381!endif
[8714]1382 @$(ECHO) Completed nothing in $(MAKEFILE).
[8197]1383
1384
[8253]1385
1386# -----------------------------------------------------------------------------
1387# The $(TARGET) rule - For EXE, DLL, SYS and IFS targets
1388# -----------------------------------------------------------------------------
[8423]1389!if "$(TARGET_MODE)" == "EXE" || "$(TARGET_MODE)" == "DLL" || "$(TARGET_MODE)" == "SYS" || "$(TARGET_MODE)" == "IFS" || "$(TARGET_MODE)" == "VDD"
[9240]1390$(TARGET): $(TARGET_OBJS) $(TARGET_RES) $(TARGET_DEF) $(TARGET_DEPS) $(TARGET_LIBS) \
1391 $(MAKEFILE) $(MAKE_INCLUDE_SETUP) $(MAKE_INCLUDE_LD_SETUP) $(MAKE_INCLUDE_LD_OPT) $(PATH_ROOT)\$(BUILD_SETUP_MAK) $(MAKE_INCLUDE_PROCESS) $(PATH_MAKE)\setup.tools.mk
[8423]1392!if "$(TOOL_JOB_WAIT)" != ""
1393! ifndef BUILD_QUIET
[8714]1394 @$(ECHO) Waiting for jobs to complete $(CLRRST)
[8423]1395! endif
[8714]1396 \
[8423]1397! ifndef BUILD_VERBOSE
[8714]1398 @ \
[8423]1399! endif
[8714]1400 $(TOOL_JOB_WAIT)
[8423]1401!endif
[9225]1402!if "$(TARGET_DEF_LINK)" != "$(TARGET_DEF)"
1403! ifndef BUILD_QUIET
1404 @$(ECHO) Stamping deffile with build level info.$(CLRRST)
1405! endif
1406 \
1407! ifndef BUILD_VERBOSE
1408 @ \
1409! endif
1410 $(TOOL_BLDLEVEL) $(BUILD_BLDLEVEL_FLAGS) $(TARGET_BLDLEVEL_FLAGS) -R$(TARGET_DEF) $(TARGET_DEF) $(TARGET_DEF_LINK)
1411!endif
1412!ifndef TOOL_DEFCONV
1413 @$(TOOL_ECHOTXT) Creating Linker Input File $(CLRRST)<<$(TARGET_LNK)
1414$(LINK_LNK1)
1415$(LINK_LNK2)
1416$(LINK_LNK3)
1417$(LINK_LNK4)
1418$(LINK_LNK5)
1419<<KEEP
1420!else
1421 @$(ECHO) Creating Linker Input File $(CLRRST) $(TARGET_LNK)
1422 @$(TOOL_RM) "$(TARGET_LNK)"
1423 \
[9240]1424! ifndef BUILD_VERBOSE
[9225]1425 @ \
1426! endif
1427 $(TOOL_DEFCONV) $(TARGET_DEF_LINK) $(TARGET_LNK) <<$(TARGET_LNK)2
1428$(LINK_LNK1)
1429$(LINK_LNK2)
1430$(LINK_LNK3)
1431$(LINK_LNK4)
1432$(LINK_LNK5)
1433<<keep
1434!endif
1435!ifdef BUILD_VERBOSE
1436 @type $(TARGET_LNK)
1437!endif
[8197]1438 @$(ECHO) Linking $(TARGET_MODE) $(CLRFIL)$@ $(CLRRST)
[8714]1439 \
[8290]1440!ifndef BUILD_VERBOSE
1441 @ \
1442!endif
[8197]1443!ifdef TARGET_IGNORE_LINKER_WARNINGS
1444 -4 \
1445!endif
1446!if "$(TARGET_MODE)" == "EXE"
[8253]1447 $(LINK_CMD_EXE)
[8197]1448!endif
[8423]1449!if "$(TARGET_MODE)" == "DLL"
[8290]1450 $(LINK_CMD_DLL)
[8197]1451!endif
1452!if "$(TARGET_MODE)" == "SYS"
[8290]1453 $(LINK_CMD_SYS)
[8197]1454!endif
[8213]1455!if "$(TARGET_MODE)" == "IFS"
[8290]1456 $(LINK_CMD_IFS)
[8213]1457!endif
[8290]1458!if "$(TARGET_MODE)" == "VDD"
1459 $(LINK_CMD_VDD)
1460!endif
[8197]1461!if "$(TARGET_RES)" != "" && "$(RL)" != ""
1462 @$(ECHO) Linking Resources $(CLRRST)
[8714]1463 \
[8290]1464! ifndef BUILD_VERBOSE
1465 @ \
1466! endif
1467 $(RL) $(RL_FLAGS) $(TARGET_RES) $@
[8197]1468!endif
1469!if "$(TARGET_DLLRNAME)" != ""
1470 @$(ECHO) Dll Rename $(TARGET_DLLRNAME)
[8714]1471 \
[8290]1472! ifndef BUILD_VERBOSE
1473 @ \
1474! endif
[8197]1475 $(TOOL_DLLRNAME) $(TARGET) $(TARGET_DLLRNAME)
1476!endif
[8333]1477!if "$(TOOL_MAPSYM)" != "" && "$(TARGET_SYM)" != "" && "$(TARGET_MAP)" != ""
[8714]1478 \
[8333]1479! ifndef BUILD_VERBOSE
1480 @ \
1481! endif
1482 $(TOOL_MAPSYM) $(TARGET_MAP) $(TARGET_SYM)
1483!endif
[9127]1484!if "$(BUILD_MODE)" == "RELEASE"
1485 \
1486! ifndef BUILD_VERBOSE
1487 @ \
1488! endif
1489 $(TOOL_COPY) "$@" "$(_TARGET_DEB)"
1490! if "$(TOOL_STRIP)" != ""
1491 \
1492! ifndef BUILD_VERBOSE
1493 @ \
1494! endif
1495 $(TOOL_STRIP) $@
1496! endif
1497!endif
[8197]1498
[8362]1499!endif
[8333]1500
1501
[8253]1502# -----------------------------------------------------------------------------
[8290]1503# The $(TARGET) rule - For LIB, SYSLIB, and IFSLIB targets.
[8253]1504# -----------------------------------------------------------------------------
[8290]1505!if "$(TARGET_MODE)" == "LIB" || "$(TARGET_MODE)" == "SYSLIB" || "$(TARGET_MODE)" == "IFSLIB"
[8197]1506$(TARGET): $(TARGET_OBJS) $(TARGET_LNK) $(TARGET_DEPS)
[8423]1507!if "$(TOOL_JOB_WAIT)" != ""
1508! ifndef BUILD_QUIET
1509 @$(ECHO) Waiting for jobs to complete $(CLRRST)
1510! endif
[8714]1511 \
[8423]1512! ifndef BUILD_VERBOSE
1513 @ \
1514! endif
1515 $(TOOL_JOB_WAIT)
1516!endif
[8197]1517 @$(ECHO) Creating Library $(CLRFIL)$@ $(CLRRST)
[8290]1518!ifndef BUILD_VERBOSE
[9044]1519 @$(TOOL_RM) "$@"
[8290]1520 @$(AR_CMD)
1521!else
[9044]1522 $(TOOL_RM) "$@"
[8197]1523 $(AR_CMD)
[8290]1524!endif
[8197]1525
1526
1527#
1528# Lib parameter file.
1529#
[9240]1530$(TARGET_LNK): $(MAKEFILE) $(MAKE_INCLUDE_SETUP) $(MAKE_INCLUDE_AR_SETUP) $(PATH_ROOT)\$(BUILD_SETUP_MAK)
[9116]1531 @$(TOOL_ECHOTXT) Creating Lib Input File $(CLRRST)<<$@
[8197]1532$(AR_LNK1)
1533$(AR_LNK2)
1534$(AR_LNK3)
1535$(AR_LNK4)
1536$(AR_LNK5)
1537<<KEEP
[8423]1538!ifdef BUILD_VERBOSE
1539 @type $@
[8197]1540!endif
[8423]1541!endif
[8197]1542
1543
[9031]1544# -----------------------------------------------------------------------------
1545# The $(TARGET) rule - For DEPEND targets.
[8253]1546# -----------------------------------------------------------------------------
[9028]1547!if "$(TARGET_MODE)" == "DEPEND"
1548$(TARGET):
1549 @$(ECHO) .
[8197]1550!endif
1551
1552
[8253]1553
1554# -----------------------------------------------------------------------------
1555# The $(TARGET_ILIB) rule - Make import library.
1556# -----------------------------------------------------------------------------
1557!ifdef TARGET_ILIB
[9240]1558$(TARGET_ILIB): $(TARGET_IDEF) $(MAKEFILE) $(MAKE_INCLUDE_SETUP) $(MAKE_INCLUDE_AR_SETUP) $(PATH_MAKE)\setup.tools.mk
[8253]1559 @$(ECHO) Creating Import Library $(CLRFIL)$@ $(CLRRST)
[8714]1560 \
[8290]1561!ifndef BUILD_VERBOSE
[9065]1562 @if not exist $(@D) $(ECHO) Target implib path $(CLRFIL)$(@D)$(CLRTXT) does NOT exist. Creating. $(CLRRST)
1563!endif
1564 @if not exist $(@D) $(TOOL_CREATEPATH) $(@D)
1565 \
1566!ifndef BUILD_VERBOSE
[8290]1567 @ \
1568!endif
[8253]1569 $(IMPLIB) $(IMPLIB_FLAGS) $@ $(TARGET_IDEF)
[9116]1570
1571
1572#
1573# Conversion rule for converting the .def file before passing along to implib.
1574#
1575! if "$(TARGET_IDEF_ORG)" != "" && "$(TARGET_IDEF_ORG)" != "$(TARGET_IDEF)"
1576$(TARGET_IDEF): $(TARGET_IDEF_ORG)
1577 @$(ECHO) Making Import Definition File $(CLRFIL)$@ $(CLRRST)
1578 \
1579!ifndef BUILD_VERBOSE
1580 @if not exist $(@D) $(ECHO) Target .def path $(CLRFIL)$(@D)$(CLRTXT) does NOT exist. Creating. $(CLRRST)
[8253]1581!endif
[9116]1582 @if not exist $(@D) $(TOOL_CREATEPATH) $(@D)
1583 \
1584!ifndef BUILD_VERBOSE
1585 @ \
1586!endif
1587 $(TOOL_IDEFCONV) $(TOOL_IDEFCONV_FLAGS) $(TARGET_IDEF_ORG) $@
1588! endif
[8253]1589
[9116]1590!endif
[8253]1591
1592
[9116]1593
[8253]1594# -----------------------------------------------------------------------------
1595# The .force rule - Force a remake of something everytime.
1596# -----------------------------------------------------------------------------
1597.force:
[8290]1598!ifndef BUILD_VERBOSE
[8253]1599 @$(ECHO) .
[8290]1600!else
1601 @$(ECHO) . (force) .
1602!endif
[8253]1603
1604
1605
1606# -----------------------------------------------------------------------------
1607# Read Dependencies.
1608# -----------------------------------------------------------------------------
[9028]1609!if "$(TARGET_MODE)" != "TESTCASE" && "$(TARGET_MODE)" != "DEPEND"
[8714]1610!if "$(TARGET_MODE)" != "EMPTY" && "$(NODEP)" == ""
[8253]1611
[8197]1612#
[8253]1613# Read dependency file for current directory
[8197]1614#
[8714]1615!ifndef MAKEVER
1616! if [$(TOOL_EXISTS) $(TARGET_DEPEND)] == 0
1617! ifdef BUILD_VERBOSE
1618! if [$(ECHO) Including dependency $(CLRFIL)$(TARGET_DEPEND)$(CLRRST)]
1619! endif
[8197]1620! endif
[8714]1621! include $(TARGET_DEPEND)
1622! else
[9062]1623#! ifndef NODEP
1624#! if [$(ECHO) $(CLRERR)WARNING: Please make dependencies first. $(TARGET_DEPEND) is missing.$(CLRRST)]
1625#! endif
1626#! endif
[8253]1627! endif
[8714]1628!else
1629! if %exists($(TARGET_DEPEND)) != 0
1630! ifdef BUILD_VERBOSE
1631$(ECHO) Including dependency $(CLRFIL)$(TARGET_DEPEND)$(CLRRST)
1632! endif
1633! include $(TARGET_DEPEND)
1634! else
[9062]1635#! ifndef NODEP
1636#$(ECHO) $(CLRERR)WARNING: Please make dependencies first. $(TARGET_DEPEND) is missing.$(CLRRST)
1637#! endif
[8714]1638! endif
[8253]1639!endif
1640
1641
1642#
1643# Read global dependency files.
1644#
1645!ifdef BUILD_DEPEND1
[8714]1646! ifndef MAKEVER
1647! if [$(TOOL_EXISTS) $(BUILD_DEPEND1)] == 0
1648! ifdef BUILD_VERBOSE
1649! if [$(ECHO) Including dependency $(CLRFIL)$(BUILD_DEPEND1)$(CLRRST)]
1650! endif
[8253]1651! endif
[8714]1652! include $(BUILD_DEPEND1)
1653! else
1654! ifndef NODEP
[8253]1655! if [$(ECHO) $(CLRERR)WARNING: Please make dependencies first. $(BUILD_DEPEND1) is missing.$(CLRRST)]
[8197]1656! endif
[8714]1657! endif
[8197]1658! endif
[8714]1659! else
1660! if %exists($(BUILD_DEPEND1)) != 0
1661! ifdef BUILD_VERBOSE
1662$(ECHO) Including dependency $(CLRFIL)$(BUILD_DEPEND1)$(CLRRST)
1663! endif
1664! include $(BUILD_DEPEND1)
1665! else
1666! ifndef NODEP
1667$(ECHO) $(CLRERR)WARNING: Please make dependencies first. $(BUILD_DEPEND1) is missing.$(CLRRST)
1668! endif
1669! endif
[8197]1670! endif
1671!endif
1672
[8714]1673
[8253]1674!ifdef BUILD_DEPEND2
[8714]1675! ifndef MAKEVER
1676! if [$(TOOL_EXISTS) $(BUILD_DEPEND2)] == 0
1677! ifdef BUILD_VERBOSE
1678! if [$(ECHO) Including dependency $(CLRFIL)$(BUILD_DEPEND2)$(CLRRST)]
1679! endif
[8253]1680! endif
[8714]1681! include $(BUILD_DEPEND2)
1682! else
1683! ifndef NODEP
[8253]1684! if [$(ECHO) $(CLRERR)WARNING: Please make dependencies first. $(BUILD_DEPEND2) is missing.$(CLRRST)]
1685! endif
[8714]1686! endif
[8253]1687! endif
[8714]1688! else
1689! if %exists($(BUILD_DEPEND2)) != 0
1690! ifdef BUILD_VERBOSE
1691$(ECHO) Including dependency $(CLRFIL)$(BUILD_DEPEND2)$(CLRRST)
1692! endif
1693! include $(BUILD_DEPEND2)
1694! else
1695! ifndef NODEP
1696$(ECHO) $(CLRERR)WARNING: Please make dependencies first. $(BUILD_DEPEND2) is missing.$(CLRRST)
1697! endif
1698! endif
[8253]1699! endif
1700!endif
[8197]1701
1702
[8253]1703!ifdef BUILD_DEPEND3
[8714]1704! ifndef MAKEVER
1705! if [$(TOOL_EXISTS) $(BUILD_DEPEND3)] == 0
1706! ifdef BUILD_VERBOSE
1707! if [$(ECHO) Including dependency $(CLRFIL)$(BUILD_DEPEND3)$(CLRRST)]
1708! endif
[8253]1709! endif
[8714]1710! include $(BUILD_DEPEND3)
1711! else
1712! ifndef NODEP
[8253]1713! if [$(ECHO) $(CLRERR)WARNING: Please make dependencies first. $(BUILD_DEPEND3) is missing.$(CLRRST)]
1714! endif
[8714]1715! endif
[8253]1716! endif
[8714]1717! else
1718! if %exists($(BUILD_DEPEND3)) != 0
1719! ifdef BUILD_VERBOSE
1720$(ECHO) Including dependency $(CLRFIL)$(BUILD_DEPEND3)$(CLRRST)
1721! endif
1722! include $(BUILD_DEPEND3)
1723! else
1724! ifndef NODEP
1725$(ECHO) $(CLRERR)WARNING: Please make dependencies first. $(BUILD_DEPEND3) is missing.$(CLRRST)
1726! endif
1727! endif
[8253]1728! endif
1729!endif
1730
1731
1732!endif
1733
[8423]1734
1735#
1736# If BUILD_MULTIJOBS is nonempty make sure the job daemon is up running.
1737#
1738!if "$(BUILD_MULTIJOBS)" != ""
1739! if [$(TOOL_JOB_UP)] != 0
1740! if "$(BUILD_QUITE)" == ""
[8714]1741! ifndef MAKEVER
1742! if [$(ECHO) Starting Job Daemon With $(TOOL_JOB_WORKERS) Workers...$(CLRRST)]
1743! endif
1744! else
1745$(ECHO) Starting Job Daemon With $(TOOL_JOB_WORKERS) Workers...$(CLRRST)
[8423]1746! endif
1747! endif
1748! if [$(TOOL_JOB_INIT) $(TOOL_JOB_WORKERS)] != 0
[8714]1749! ifndef MAKEVER
1750! if [$(ECHO) $(CLRERR)Fatal error: Failed to start job daemon.$(CLRRST)]
1751! endif
1752! error
1753!else
1754! error $(CLRERR)Fatal error: Failed to start job daemon.$(CLRRST)
1755!endif
[8423]1756! endif
1757! endif
1758!endif
1759
[8714]1760!endif #!TESTCASE
[9178]1761
1762
1763#
1764# Include system library dependency stubs.
1765#
1766!include $(PATH_MAKE)\setup.$(SHT_TRGPLTFRM)libs.mk
1767
1768
1769#
1770# Check if TARGET_ALWAYS needs to be forced built.
1771#
1772!if "$(TARGET_ALWAYS)" != ""
1773! ifndef BUILD_FORCED_BUILD_TEST
[9188]1774! if [$(TOOL_MAKE) BUILD_FORCED_BUILD_TEST=1 -f $(MAKEFILE) -q $(TARGET) $(TARGET_ILIB) >nul 2>nul] != 0
[9178]1775$(TARGET_ALWAYS): .force
1776! endif
1777! endif
1778!endif
1779
Note: See TracBrowser for help on using the repository browser.