543 lines
10 KiB
Text
543 lines
10 KiB
Text
# Copyright (c) 1993 Argonaut Software Ltd. All rights reserved.
|
|
#
|
|
# $Id: makedefs.wtc 1.9 1995/06/30 16:09:34 sam Exp $
|
|
# $Locker: sam $
|
|
#
|
|
# General defines, rules and macros for BRender built with watcom C32 9.5
|
|
#
|
|
|
|
# Pick up configuration from environment, if not defined, pick defaults
|
|
#
|
|
# Watcom build uses LIB_SUFFIX as the compiler model, R or S
|
|
#
|
|
.IMPORT .IGNORE: SERIAL LONG_ARGS LIB_SUFFIX
|
|
|
|
# Type of executable to produce - debug, profile, or release
|
|
#
|
|
.IF $(BUILD) ==
|
|
.IMPORT .IGNORE: BUILD
|
|
.ENDIF
|
|
|
|
BUILD*:=RELEASE
|
|
|
|
# Target type
|
|
#
|
|
.IF $(TARGET_TYPE) ==
|
|
.IMPORT .IGNORE: TARGET_TYPE
|
|
.END
|
|
|
|
TARGET_TYPE*:=LIB
|
|
|
|
# Extender
|
|
#
|
|
.IF $(EXTENDER) ==
|
|
.IMPORT .IGNORE: EXTENDER
|
|
.END
|
|
|
|
EXTENDER*:=DOS4GW
|
|
|
|
# Library base type
|
|
#
|
|
.IF $(BASE_TYPE) ==
|
|
.IMPORT .IGNORE: BASE_TYPE
|
|
.ENDIF
|
|
|
|
BASE_TYPE*:=FIXED
|
|
|
|
# Compiler part of library name - Watcom
|
|
#
|
|
LIB_SUFFIX_C=w
|
|
|
|
# Pick a library suffix based on library type
|
|
#
|
|
.IF $(BASE_TYPE) == FLOAT
|
|
LIB_SUFFIX_T=f
|
|
.ELIF $(BASE_TYPE) == FIXED
|
|
LIB_SUFFIX_T=x
|
|
.ELIF $(BASE_TYPE) == NONE
|
|
LIB_SUFFIX_T=
|
|
.ELSE
|
|
Unknown_BASE_TYPE:
|
|
.ENDIF
|
|
|
|
# Default to register calling
|
|
#
|
|
LIB_SUFFIX*:=r
|
|
|
|
## Build flags
|
|
##
|
|
OBJ_EXT:=.obj
|
|
LIB_EXT:=.lib
|
|
AS:=ml
|
|
CC:=wcc386
|
|
H2I:=h2inc
|
|
MKDEPFLAGS= -s -t -I$(BLD_DIR) $(INCLUDES)
|
|
4DOS=+c:\4dos\4dos.com /e:3048 /c
|
|
PERL=perl
|
|
|
|
# Flags for each process are constructed from
|
|
# a common prt, a per build part, and a per app. part
|
|
#
|
|
ASFLAGS=$(BASE_ASFLAGS) $(BUILD_ASFLAGS) $(EXTRA_ASFLAGS)
|
|
CFLAGS=$(BASE_CFLAGS) $(BUILD_CFLAGS) $(EXTRA_CFLAGS)
|
|
H2IFLAGS=$(BASE_H2IFLAGS) $(BUILD_H2IFLAGS) $(EXTRA_H2IFLAGS)
|
|
|
|
# Base flags
|
|
#
|
|
BASE_CFLAGS =-wx -we -zp4 -5$(LIB_SUFFIX) -DBASED_$(BASE_TYPE)=1 $(INCLUDES)
|
|
|
|
BASE_ASFLAGS =-nologo -Cp -D__WATCOMC__=1\
|
|
-DBASED_$(BASE_TYPE)=1 -I$(BLD_DIR) $(INCLUDES)
|
|
|
|
BASE_H2IFLAGS=/nologo /G3 /Zp4 /C /D__WATCOMC__ /D__H2INC__\
|
|
/D_NO_PROTOTYPES -DBASED_$(BASE_TYPE)=1 $(INCLUDES)
|
|
|
|
.IF $(BUILD) == RELEASE
|
|
# Release Flags
|
|
#
|
|
BUILD_CFLAGS =-omaxnet -fp3 -DDEBUG=0 -DPARANOID=0 -DSTATIC=static
|
|
BUILD_LDFLAGS =$(RELEASE_LDFLAGS)
|
|
BUILD_ASFLAGS =
|
|
BUILD_H2IFLAGS=
|
|
LIB_SUFFIX_B:=r
|
|
|
|
.ELIF $(BUILD) == TEST
|
|
# Check Flags (Release library with validation checks for debugging user code)
|
|
#
|
|
BUILD_CFLAGS =-omaxnet -fp3 -DDEBUG=0 -DPARANOID=1 -DSTATIC=static
|
|
BUILD_LDFLAGS =$(TEST_LDFLAGS)
|
|
BUILD_ASFLAGS =-DDEBUG=0 -DCHECK=1
|
|
BUILD_H2IFLAGS=-DDEBUG=0 -DCHECK=1
|
|
LIB_SUFFIX_B:=t
|
|
|
|
|
|
.ELIF $(BUILD) == DEBUG
|
|
# Debug Flags
|
|
#
|
|
# -en -ep -ee
|
|
#
|
|
BUILD_CFLAGS =-s -d2 -DDEBUG=1 -DPARANOID=1 -DSTATIC=
|
|
BUILD_LDFLAGS =$(DEBUG_LDFLAGS)
|
|
BUILD_ASFLAGS =-Zd
|
|
BUILD_H2IFLAGS=
|
|
LIB_SUFFIX_B:=d
|
|
|
|
.ELIF $(BUILD) == PROFILE
|
|
# Profile Flags
|
|
#
|
|
BUILD_CFLAGS =-omaxnet -fp3 -d1 -DDEBUG=0 -DPARANOID=0 -DSTATIC=
|
|
BUILD_LDFLAGS =$(PROFILE_LDFLAGS)
|
|
BUILD_ASFLAGS =-Zd
|
|
BUILD_H2IFLAGS=
|
|
LIB_SUFFIX_B:=p
|
|
|
|
.ELSE
|
|
Unknown_BASE_TYPE:
|
|
.ENDIF
|
|
|
|
## The build directory
|
|
##
|
|
LIB_TYPE:=$(LIB_SUFFIX_C)$(LIB_SUFFIX_T)$(LIB_SUFFIX_B)$(LIB_SUFFIX)
|
|
|
|
BLD_BASE*:=bld
|
|
|
|
BLD_DIR:=$(BLD_BASE)_$(LIB_TYPE)
|
|
|
|
## The library name <part><compiler><type><build><optional>.lib
|
|
##
|
|
LIB_NAME:=$(BASE_DIR)/lib/$(LIB_PART)$(LIB_TYPE).lib
|
|
|
|
# Keep proper dependencies (per build type)
|
|
#
|
|
.KEEP_STATE:=$(BLD_DIR)/state.out
|
|
|
|
## Generic rule for building objects and ASM header files
|
|
##
|
|
.IF $(LONG_ARGS)X != X
|
|
|
|
# Use environment variables to cut down the cmmand line size
|
|
#
|
|
$(BLD_DIR)/%.obj : %.c
|
|
@[
|
|
set _ARGS=$(CFLAGS) -fo$(@:s,/,\,) $<
|
|
$(CC) @_ARGS
|
|
]
|
|
|
|
# $(CC) @$(mktmp,wcl386.rsp $(CFLAGS:s,\,\\,)) -c -fo$(@:s,/,\,) $<
|
|
|
|
$(BLD_DIR)/%.obj : %.asm
|
|
$(AS) @$(mktmp,wcl386.rsp $(ASFLAGS:s,\,\\,) -c -Fo$(@:s,\,\\,:s,/,\\,)) $<
|
|
|
|
%.obj : %.c
|
|
@[
|
|
set _ARGS=$(CFLAGS) -fo$(@:s,/,\,) $<
|
|
$(CC) @_ARGS
|
|
]
|
|
|
|
%.pp : %.c
|
|
@[
|
|
set _ARGS=$(CFLAGS) -fo$(@:s,/,\,) -p $<
|
|
$(CC) @_ARGS
|
|
]
|
|
|
|
%.pp : %.h
|
|
@[
|
|
set _ARGS=$(CFLAGS) -fo$(@:s,/,\,) -p -D_NO_PROTOTYPES $<
|
|
$(CC) @_ARGS
|
|
]
|
|
|
|
%.obj : %.asm
|
|
$(AS) @$(mktmp $(ASFLAGS) -c -Fo$(@:s,/,\,) $<
|
|
|
|
$(BLD_DIR)/%.inc : %.h
|
|
@[
|
|
set H2INC=$(H2IFLAGS) /Fa$@ $<
|
|
$(H2I)
|
|
]
|
|
|
|
$(BLD_DIR)\%.inc : %.h
|
|
@[
|
|
set H2INC=$(H2IFLAGS) /Fa$@ $<
|
|
$(H2I)
|
|
]
|
|
|
|
.ELSE
|
|
# Pass argumants normally
|
|
#
|
|
$(BLD_DIR)/%.obj : %.c
|
|
$(CC) $(CFLAGS) -fo$(@:s,/,\,) $<
|
|
|
|
$(BLD_DIR)/%.obj : %.asm
|
|
$(AS) $(ASFLAGS) -c -Fo$(@:s,/,\,) $<
|
|
|
|
%.obj : %.c
|
|
$(CC) $(CFLAGS) -fo$(@:s,/,\,) $<
|
|
|
|
%.pp : %.c
|
|
$(CC) $(CFLAGS) -fo$(@:s,/,\,) -p $<
|
|
|
|
%.pp : %.h
|
|
$(CC) $(CFLAGS) -fo$(@:s,/,\,) -p $<
|
|
|
|
|
|
%.obj : %.asm
|
|
$(AS) $(ASFLAGS) -c -Fo$(@:s,/,\,) $<
|
|
|
|
$(BLD_DIR)/%.inc : %.h
|
|
cp $(mktmp set H2INC=$(H2IFLAGS:s,\,\\,) /Fa$(@:s,\,\\,) $<\n\
|
|
$(H2I)) _h2inc.bat
|
|
$(4DOS) _h2inc.bat
|
|
|
|
$(BLD_DIR)\%.inc : %.h
|
|
cp $(mktmp set H2INC=$(H2IFLAGS:s,\,\\,) /Fa$(@:s,\,\\,) $<\n\
|
|
$(H2I)) _h2inc.bat
|
|
$(4DOS) _h2inc.bat
|
|
|
|
.ENDIF
|
|
|
|
## Build ASM function prototype files
|
|
##
|
|
%.h .NOSTATE: %.fns
|
|
$(PERL) $(BASE_DIR)\bin\genasmpr.pl $< >$@
|
|
|
|
## The final target
|
|
##
|
|
OBJS := $(OBJS_C) $(OBJS_ASM) $(OBJS_EXTRA)
|
|
LDLIBS=$(BASE_LDLIBS) $(EXTRA_LDLIBS)
|
|
|
|
.IF $(TARGET_TYPE) == LIB
|
|
|
|
# Library
|
|
#
|
|
"$(LIB_NAME)": $(OBJS)
|
|
-rm -f $@
|
|
wlib -n -q $(@:s,/,\\) @$(mktmp,lib.rsp +$(<:t" +":s,\,\\,:s,/,\\)\n)
|
|
|
|
.ELIF $(TARGET_TYPE) == DRIVER
|
|
|
|
# Driver - Build a Win32 DLL
|
|
#
|
|
BASE_LDFLAGS:=option quiet,objalign=4k,stub=brdstub.exe
|
|
DEBUG_LDFLAGS:=debug all
|
|
PROFILE_LDFLAGS:=debug all
|
|
RELEASE_LDFLAGS:=
|
|
TEST_LDFLAGS:=
|
|
|
|
BASE_LDLIBS=clib3$(LIB_SUFFIX)
|
|
|
|
$(TARGET): $(EXTRA_LDLIBS)
|
|
$(TARGET): $(OBJS)
|
|
wlink @$(mktmp,link.rsp name $@\n\
|
|
system nt_dll\n\
|
|
$(BASE_LDFLAGS)\n\
|
|
$(BUILD_LDFLAGS)\n\
|
|
$(EXTRA_LDFLAGS)\n\
|
|
file $(<:t"\nfile ":s,\,/,)\n\
|
|
library $(LDLIBS:t"\nlibrary ":s,\,/,)\n\
|
|
)
|
|
|
|
.ELSE
|
|
|
|
.IF $(EXTENDER) == DOS4GW
|
|
|
|
# Executable - DOS4GW
|
|
#
|
|
BASE_LDFLAGS:=option dosseg,caseexact,quiet,stack=128k
|
|
DEBUG_LDFLAGS:=debug all
|
|
PROFILE_LDFLAGS:=debug all
|
|
RELEASE_LDFLAGS:=
|
|
TEST_LDFLAGS:=
|
|
|
|
BASE_LDLIBS=
|
|
|
|
LIB_SUFFIX_EXTENDER:=4g
|
|
|
|
$(TARGET): $(EXTRA_LDLIBS)
|
|
$(TARGET): $(OBJS)
|
|
wlink @$(mktmp,link.rsp name $@\n\
|
|
system dos4g\n\
|
|
$(BASE_LDFLAGS)\n\
|
|
$(BUILD_LDFLAGS)\n\
|
|
$(EXTRA_LDFLAGS)\n\
|
|
file $(<:t"\nfile ":s,\,/,)\n\
|
|
library $(LDLIBS:t"\nlibrary ":s,\,/,)\n\
|
|
)
|
|
|
|
.ELIF $(EXTENDER) == DOS4GWPRO
|
|
|
|
# Executable - DOS4GW Professional
|
|
#
|
|
BASE_LDFLAGS:=option dosseg,caseexact,quiet,stack=128k
|
|
DEBUG_LDFLAGS:=debug all
|
|
PROFILE_LDFLAGS:=debug all
|
|
RELEASE_LDFLAGS:=
|
|
TEST_LDFLAGS:=
|
|
|
|
BASE_LDLIBS=
|
|
|
|
LIB_SUFFIX_EXTENDER:=4g
|
|
|
|
$(TARGET): $(EXTRA_LDLIBS)
|
|
$(TARGET): $(OBJS)
|
|
wlink @$(mktmp,link.rsp name _tmp.exe\n\
|
|
system dos4g\n\
|
|
$(BASE_LDFLAGS)\n\
|
|
$(BUILD_LDFLAGS)\n\
|
|
$(EXTRA_LDFLAGS)\n\
|
|
file $(<:t"\nfile ":s,\,/,)\n\
|
|
library $(LDLIBS:t"\nlibrary ":s,\,/,)\n\
|
|
)
|
|
4gwbind 4gwpro.exe _tmp.exe $(TARGET) -Q
|
|
rm _tmp.exe
|
|
|
|
.ELIF $(EXTENDER) == X32
|
|
|
|
# Executable - Flashtek X-32
|
|
#
|
|
BASE_LDFLAGS:=option dosseg,caseexact,quiet
|
|
DEBUG_LDFLAGS:=debug all
|
|
PROFILE_LDFLAGS:=debug all
|
|
RELEASE_LDFLAGS:=
|
|
TEST_LDFLAGS:=
|
|
|
|
BASE_LDLIBS=
|
|
|
|
LIB_SUFFIX_EXTENDER:=x3
|
|
|
|
$(TARGET): $(EXTRA_LDLIBS)
|
|
$(TARGET): $(OBJS)
|
|
wlink @$(mktmp,link.rsp name $@\n\
|
|
$(BASE_LDFLAGS)\n\
|
|
$(BUILD_LDFLAGS)\n\
|
|
$(EXTRA_LDFLAGS)\n\
|
|
system x32$(LIB_SUFFIX)\n\
|
|
file $(<:t"\nfile ":s,\,/,)\n\
|
|
library $(LDLIBS:t"\nlibrary ":s,\,/,)\n\
|
|
)
|
|
x32fix $(TARGET)
|
|
|
|
.ELIF $(EXTENDER) == X32VM
|
|
|
|
# Executable - Flashtek X-32 with virtual memory
|
|
#
|
|
BASE_LDFLAGS:=option dosseg,caseexact,quiet
|
|
DEBUG_LDFLAGS:=debug all
|
|
PROFILE_LDFLAGS:=debug all
|
|
RELEASE_LDFLAGS:=
|
|
TEST_LDFLAGS:=
|
|
|
|
BASE_LDLIBS=
|
|
|
|
LIB_SUFFIX_EXTENDER:=x3
|
|
|
|
$(TARGET): $(EXTRA_LDLIBS)
|
|
$(TARGET): $(OBJS)
|
|
wlink @$(mktmp,link.rsp name $@\n\
|
|
$(BASE_LDFLAGS)\n\
|
|
$(BUILD_LDFLAGS)\n\
|
|
$(EXTRA_LDFLAGS)\n\
|
|
system x32$(LIB_SUFFIX)v\n\
|
|
file $(<:t"\nfile ":s,\,/,)\n\
|
|
library $(LDLIBS:t"\nlibrary ":s,\,/,)\n\
|
|
)
|
|
x32fix $(TARGET)
|
|
|
|
.ELIF $(EXTENDER) == PHARLAPz
|
|
|
|
# Executable - Pharlap TNT using 386link
|
|
#
|
|
|
|
BASE_LDFLAGS =-stack 65536 -offset 16384 -libpath t:\watcom10\lib386,t:\watcom10\lib386\dos
|
|
DEBUG_LDFLAGS:=-fullsym
|
|
PROFILE_LDFLAGS:=-fullsym
|
|
|
|
RELEASE_LDFLAGS:=
|
|
TEST_LDFLAGS:=
|
|
|
|
BASE_LDLIBS=
|
|
|
|
LIB_SUFFIX_EXTENDER:=pl
|
|
|
|
$(TARGET): $(EXTRA_LDLIBS)
|
|
$(TARGET): $(OBJS)
|
|
386link @wc386.dos -exe $(@:s,/,\,) @$(mktmp,386link.rsp $(<:t"\n":s,\,\\,)\n\
|
|
$(BASE_LDFLAGS)\n\
|
|
$(BUILD_LDFLAGS)\n\
|
|
$(EXTRA_LDFLAGS)\n\
|
|
-lib $(LDLIBS:s,\,\\,:s,/,\\,)\n\
|
|
)
|
|
# rebind $(TARGET)
|
|
|
|
.ELIF $(EXTENDER) == PHARLAP
|
|
|
|
# Executable - Pharlap TNT using wlink
|
|
#
|
|
|
|
BASE_LDFLAGS:=option dosseg,caseexact,quiet
|
|
DEBUG_LDFLAGS:=debug all
|
|
PROFILE_LDFLAGS:=debug all
|
|
|
|
RELEASE_LDFLAGS:=
|
|
TEST_LDFLAGS:=
|
|
|
|
BASE_LDLIBS=
|
|
|
|
LIB_SUFFIX_EXTENDER:=pl
|
|
|
|
$(TARGET): $(EXTRA_LDLIBS)
|
|
$(TARGET): $(OBJS)
|
|
wlink @$(mktmp,link.rsp name $@\n\
|
|
$(BASE_LDFLAGS)\n\
|
|
$(BUILD_LDFLAGS)\n\
|
|
$(EXTRA_LDFLAGS)\n\
|
|
system tnt\n\
|
|
file $(<:t"\nfile ":s,\,/,)\n\
|
|
library $(LDLIBS:t"\nlibrary ":s,\,/,)\n\
|
|
)
|
|
rebind $(TARGET)
|
|
|
|
.ELIF $(EXTENDER) == PHARLAP3
|
|
|
|
# Executable - Pharlap v3
|
|
#
|
|
BASE_LDFLAGS:=-stack 65536 -nobanner -twocase -pack -callbufs 16 -nomap \
|
|
-backcompat -libpath t:\watcom10\lib386,t:\watcom10\lib386\dos -lib clib3s,math387s,emu387
|
|
DEBUG_LDFLAGS:=-fullsym
|
|
PROFILE_LDFLAGS:=-fullsym
|
|
RELEASE_LDFLAGS:=
|
|
TEST_LDFLAGS:=
|
|
|
|
BASE_LDLIBS=
|
|
|
|
LIB_SUFFIX_EXTENDER:=p3
|
|
|
|
$(TARGET): $(EXTRA_LDLIBS)
|
|
$(TARGET): $(OBJS)
|
|
386link -exe $*.exp @$(mktmp,386link.rsp $(<:t"\n":s,\,\\,)\n\
|
|
$(BASE_LDFLAGS)\n\
|
|
$(BUILD_LDFLAGS)\n\
|
|
$(EXTRA_LDFLAGS)\n\
|
|
-lib $(LDLIBS:s,\,\\,:s,/,\\,)\n\
|
|
)
|
|
|
|
.ELIF $(EXTENDER) == OS2
|
|
|
|
# Executable - OS/2 VIO
|
|
#
|
|
BASE_LDFLAGS:=option dosseg,caseexact,quiet,stack=128k
|
|
DEBUG_LDFLAGS:=debug all
|
|
PROFILE_LDFLAGS:=debug all
|
|
RELEASE_LDFLAGS:=
|
|
TEST_LDFLAGS:=
|
|
|
|
BASE_LDLIBS=
|
|
|
|
#LIB_SUFFIX_EXTENDER:=4g
|
|
|
|
$(TARGET): $(EXTRA_LDLIBS)
|
|
$(TARGET): $(OBJS)
|
|
wlink @$(mktmp,link.rsp name $@\n\
|
|
system os2v2\n\
|
|
$(BASE_LDFLAGS)\n\
|
|
$(BUILD_LDFLAGS)\n\
|
|
$(EXTRA_LDFLAGS)\n\
|
|
file $(<:t"\nfile ":s,\,/,)\n\
|
|
library $(LDLIBS:t"\nlibrary ":s,\,/,)\n\
|
|
)
|
|
|
|
.ELIF $(EXTENDER) == NT
|
|
|
|
# Executable - NT Console App.
|
|
#
|
|
BASE_LDFLAGS:=option dosseg,caseexact,quiet,stack=128k
|
|
DEBUG_LDFLAGS:=debug all
|
|
PROFILE_LDFLAGS:=debug all
|
|
RELEASE_LDFLAGS:=
|
|
TEST_LDFLAGS:=
|
|
|
|
BASE_LDLIBS=
|
|
|
|
#LIB_SUFFIX_EXTENDER:=4g
|
|
|
|
$(TARGET): $(EXTRA_LDLIBS)
|
|
$(TARGET): $(OBJS)
|
|
wlink @$(mktmp,link.rsp name $@\n\
|
|
system nt\n\
|
|
$(BASE_LDFLAGS)\n\
|
|
$(BUILD_LDFLAGS)\n\
|
|
$(EXTRA_LDFLAGS)\n\
|
|
file $(<:t"\nfile ":s,\,/,)\n\
|
|
library $(LDLIBS:t"\nlibrary ":s,\,/,)\n\
|
|
)
|
|
.ELSE
|
|
Unknown_EXTENDER:
|
|
.ENDIF
|
|
|
|
.ENDIF
|
|
|
|
## Object directory
|
|
##
|
|
$(BLD_DIR)/exists:
|
|
-mkdir $(BLD_DIR)
|
|
echo $(BLD_DIR) >$(BLD_DIR)\exists
|
|
.IF $(LIB_INC)
|
|
%$(MAKE) $(MAKEFILE) $(BLD_DIR)/$(LIB_INC).inc
|
|
.ENDIF
|
|
|
|
|
|
|
|
# Dependencies
|
|
#
|
|
SRCS:=$(OBJS_C:s/.obj/.c/) $(OBJS_ASM:s/.obj/.asm/)
|
|
|
|
depend: $(BLD_DIR)/exists
|
|
|
|
depend:
|
|
sed "s/^$(BLD_DIR)\///" <$(mktmp,_mkdep.tmp $(SRCS:t"\n":s,\,/,)\n) >_mkdep.rsp
|
|
$(MKDEP) $(MKDEPFLAGS) @_mkdep.rsp -o_depend.tmp
|
|
sed "s/^/$(BLD_DIR)\//" <_depend.tmp >$(BLD_DIR)\\depend.out
|
|
$(RM) _mkdep.rsp
|
|
$(RM) _depend.tmp
|
|
|
|
.INCLUDE .IGNORE: $(BLD_DIR)/depend.out
|
|
|