From 85c0090b7c62ad4bc0bc3d0b7c2fcd7460dad2ba Mon Sep 17 00:00:00 2001 From: Michael R Sweet Date: Tue, 23 Nov 2004 18:48:10 +0000 Subject: More watcom fixes (STR #627) git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@3915 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- watcom.mif | 559 ++++++++++++++++++++++++++++++------------------------------- 1 file changed, 279 insertions(+), 280 deletions(-) (limited to 'watcom.mif') diff --git a/watcom.mif b/watcom.mif index 3ba3fa6af..2a316a86c 100644 --- a/watcom.mif +++ b/watcom.mif @@ -1,280 +1,279 @@ -###################################################################### -# -# Watcom C specific makefile, multiplatform -# -# -# The following macross must be set active when this file is called -# -D parameter, e.g. -DPROJ=fltk -# ROOT = root of project (e.g. FLTK directory) -# PROJ = project name (e.g. fltk) -# -# The following environment variable must be set. If you have multiple -# Watcom versions, use the setvars file in the Watcom directory to set it. -# WATCOM = root of Watcom C -###################################################################### - -# -# The following options must be set when calling this wmake file -# (case-sensitive): -# D (debug/release mode): d for debug mode, -# r for release mode -# O (target environment): d = DOS 32 bits -# o = OS/2 32 bits -# w = Windows 32 bit -# l = Linux Intel (experimental, no graphics yet (OW 1.3)) -# -# -# If not set, debug mode and target=host (that is, no cross-compiling). -# Example: wmake -h -f makefile.wat d=r o=w -# -# Following macros can be used to add/override existing macros in -# this file. -# EXTRA_INCLUDE_DIRS # Non-Watcom (project) include dirs -# ODIR # Output directory if not default -# ROOT # Project root. If not given, . -# PROJ # Project name. -# LIBS # Extra libs to link in -# LIBDIR # Project library directory. Default: PROJ\LIB -# LIBNAMEROOT # Project rootname of output library. Default: PROJ\Lib\Proj -# EXTRA_LIBS # Target specific include libs - -!ifndef D -MODE=d # default is debug mode -!else -! ifeq D d -MODE=d -! else ifeq D r -MODE=r -! else -CONFIG_ERROR_MSG=Unrecognized mode: $(D) -! endif -!endif - -# If target is specified, check its validity; if not specified, the target is -# the host platform itself. - -!ifdef O -! ifeq O d -TARGET=dos -! else ifeq O o -TARGET=os2 -! else ifeq O w -TARGET=nt -! else ifeq O l -TARGET=linux -! else -CONFIG_ERROR_MSG=Unrecognized target: $(O) -! endif -!else -! ifdef __DOS__ -TARGET=dos -! else ifdef __OS2__ -TARGET=os2 -! else ifdef __NT__ -TARGET=nt -! else ifdef __LINUX__ -TARGET=linux -! endif -!endif - -# -# Now we know the target. Determine the link target. For fltk, this -# is always GUI for Windows and OS/2. For possible link targets (aliases -# for a set of linker directives) see wlsystem.lnk in Watcom's BINW directory. -# -!ifeq TARGET dos -LINKTARGET=dos32a -!else ifeq TARGET os2 -LINKTARGET=os2v2_pm -!else ifeq TARGET nt -LINKTARGET=nt_win -!else -LINKTARGET=linux -!endif - -# -# Very important: specify the sequence of extensions. Wmake will try to make a target -# with an extension from the first file of the same name with an extension to the right. -# E.g. it tries to make hello.obj from hello.cxx, or hello.cpp etc, but never from hello.exe -# -.EXTENSIONS : -.EXTENSIONS : .exe .lib .obj .cxx .cpp .c .h .fl - -# -# Create output directory name if not already supplied. To allow -# cross-development, must include target name. -# -!ifndef ODIR -ODIR=$(D)_$(TARGET) -!endif - -# -# Contruct the libname from the root plus D and O macros, so that -# multiple LIBS can co-exists, e.g. FLTK_DW and FLTK_RW for Win32. -# -!ifndef LIBDIR -LIBDIR=$(ROOT)\lib\ -!endif -!ifndef LIBNAMEROOT -LIBNAMEROOT=$(PROJ) -!endif -!ifndef LIBNAME -LIBNAME = $(LIBDIR)$(LIBNAMEROOT)_$(D)$(O).lib -# FLTK has other 'global' libs. Define the names here so that any application -# using FLTK can use them by just including this mif file. -LIBNAMEFL = $(LIBDIR)$(LIBNAMEROOT)_fl_$(D)$(O).lib -LIBNAMEGL = $(LIBDIR)$(LIBNAMEROOT)_gl_$(D)$(O).lib -LIBNAMEIMG = $(LIBDIR)$(LIBNAMEROOT)_img_$(D)$(O).lib -LIBS = $(LIBNAME) $(LIBNAMEFL) $(LIBNAMEGL) $(LIBNAMEIMG) -!endif - -# Set target environment options for the project - -!ifeqi TARGET nt # WINDOWS 32 bit -SYSDEF= -DWIN32 -ASYSDEF= -EXEEXT=.exe - -!else ifeqi TARGET linux # Linux Intel 32 bit generic -SYSDEF= -ASYSDEF= -EXEEXT=.exe # We need some exe extension else the build won't work - -!else ifeqi TARGET os2 # OS/2 32 bit -SYSDEF= -ASYSDEF= -EXEEXT=.exe - -!else ifeqi TARGET dos # DOS 32 bit -SYSDEF= -ASYSDEF= -EXEEXT=.exe - -!endif - - -###################################################################### -# -# End of compiler- and environment specific options -# -# Note !message will print before any actions ('PRE'processor!), and thus -# will not reflect results of any rules (like set xxx=yyy). -# echo is a rule itself, and will reflect results of preceding rules. -# -###################################################################### - -.BEFORE : -!ifdef CONFIG_ERROR_MSG -! message -! message Configuration error: -! message $(CONFIG_ERROR_MSG) -! message - %abort -!endif - @if not exist $(ODIR) -mkdir $(ODIR) -!ifeqi O d - @set INCLUDE=$(%WATCOM)\H;$(EXTRA_INCLUDE_DIRS) -!else ifeqi O o - @set INCLUDE=$(%WATCOM)\H;$(%WATCOM)\H\OS2;$(EXTRA_INCLUDE_DIRS) -!else ifeqi O w - @set INCLUDE=$(%WATCOM)\H;$(%WATCOM)\H\NT;$(EXTRA_INCLUDE_DIRS) -!else ifeqi O l - @set INCLUDE=$(%WATCOM)\LH;$(EXTRA_INCLUDE_DIRS) -!endif - -# @set LIB=$(LIBPATH) -# @echo Top dir: $(PROJ) - @echo Include dirs: $(%INCLUDE) -# @echo Lib dirs: $(LIBDIRS) -# @echo Libname=$(LIBNAME) -# @echo extra libs: $(LIBS) -# @echo Wmake version $(__VERSION__) -# @echo Wmake parameters: $(__MAKEOPTS__) -# @echo Compiler : $(CC) $(CCOPTS0) $(CCOPTS1) $(CCOPTS2) $(CCOPTS3) -# @echo Librarian: $(LIB) -# @echo Linker : $(LN) $(LNOPTS) -# @echo Project : $(P) - -!ifeqi D d -WCADEBUG=-d1 # debug opts for wasm -WCCDEBUG=-d2 -s -ors # debug opts for wcc. NOTE: -we is to make errors of all warnings -WCLDEBUG=d all # debug opts for wlink -# WCCTIMING=-et # if added to CC command line will generate timing file after execution -!else -# -# WCADEBUG= # debug opts for wasm -WCCDEBUG= -ors -s # release opts for wcc -# WCLDEBUG= # release opts for wlink -!endif - -# Conventions Watcom - -# Tell default paths based on extension -.fl : . -.h : . -#.lib : . -.c : . -.cpp : . -.cxx : . -.obj : $(ODIR) -.exe : $(ODIR) - -# -# Tell wmake to use DLL versions of some commands (much quicker) -# -!loaddll wcc386 wccd386 -!loaddll wpp386 wppd386 -!loaddll wlink wlink -!loaddll wlib wlibd - -CCOPTS0=-6r -zq -CCOPTS1=$(WCCDEBUG) -bt=$(TARGET) -fp6 -fpi87 # 1st part of Watcom opts -CCOPTS2=-mf -wce=130 -wx -zq # -j # 2nd part of Watcom opts -CCOPTS3=-fo$(ODIR)\$^&.obj # 3rd part Watcom opts -COPTS=-zm -CPPOPTS=-zmf -zv -fx - -LNOPTS=sys $(LINKTARGET) $(WCLDEBUG) op symf,q,m,el,vfr op st=32k # linker options -LIBOPTS= -b -q -p=512 -c # librarian options -LN=wlink # Watcom linker -AS=wasm # Watcom assembler -cc=wcc386 # Watcom C compiler -cpp=wpp386 # Watcom C++ compiler -LIB=wlib # Watcom librarian - -# -# Compilation -# -.c.obj: .AUTODEPEND - $(CC) $(SYSDEF) $(DEBUGDEF) $(CCOPTS0) $(CCOPTS1) $(CCOPTS2) $(CCOPTS3) $(COPTS) $[@ - -.cpp.obj: .AUTODEPEND - $(CPP) $(SYSDEF) $(DEBUGDEF) $(CCOPTS0) $(CCOPTS1) $(CCOPTS2) $(CCOPTS3) $(CPPOPTS) $[@ - -.cxx.obj: .AUTODEPEND - $(CPP) $(SYSDEF) $(DEBUGDEF) $(CCOPTS0) $(CCOPTS1) $(CCOPTS2) $(CCOPTS3) $(CPPOPTS) $[@ - -# -# Librarian stage -# -.obj.lib: - $(LIB) $(LIBOPTS) $@ $< - -# -# Linking stage. This implicit rule assumes the .exe is created from an object file with the -# same name, plus other object in macro OBJECTS, a number of .libs in macro LIBS etc. -# If the linking fails for some reason, the .lk1 file is not deleted and it can be -# examined. -# -.obj.exe: - @%create $^*.lk1 - @%append $^*.lk1 F $(ODIR)/$^& - @for %i in ($(%OBJS)) do @%append $^*.lk1 F $(ODIR)/%i - @for %i in ($(OBJECTS)) do @%append $^*.lk1 F $(ODIR)/%i - @for %i in ($(LIBS)) do @%append $^*.lk1 L %i - @for %i in ($(EXTRA_LIBS)) do @%append $^*.lk1 L %i - @for %i in ($(SYSLIBS)) do @%append $^*.lk1 L %i - $(LN) $(LNOPTS) name $^@ op map=$^* @$^*.lk1 - @del $^*.lk1 - - +###################################################################### +# +# Watcom C specific makefile, multiplatform +# +# +# The following macross must be set active when this file is called +# -D parameter, e.g. -DPROJ=fltk +# ROOT = root of project (e.g. FLTK directory) +# PROJ = project name (e.g. fltk) +# +# The following environment variable must be set. If you have multiple +# Watcom versions, use the setvars file in the Watcom directory to set it. +# WATCOM = root of Watcom C +###################################################################### + +# +# The following options must be set when calling this wmake file +# (case-sensitive): +# D (debug/release mode): d for debug mode, +# r for release mode +# O (target environment): d = DOS 32 bits +# o = OS/2 32 bits +# w = Windows 32 bit +# l = Linux Intel (experimental, no graphics yet (OW 1.3)) +# +# +# If not set, debug mode and target=host (that is, no cross-compiling). +# Example: wmake -h -f makefile.wat d=r o=w +# +# Following macros can be used to add/override existing macros in +# this file. +# EXTRA_INCLUDE_DIRS # Non-Watcom (project) include dirs +# ODIR # Output directory if not default +# ROOT # Project root. If not given, . +# PROJ # Project name. +# LIBS # Extra libs to link in +# LIBDIR # Project library directory. Default: PROJ\LIB +# LIBNAMEROOT # Project rootname of output library. Default: PROJ\Lib\Proj +# EXTRA_LIBS # Target specific include libs + +!ifndef D +MODE=d # default is debug mode +!else +! ifeq D d +MODE=d +! else ifeq D r +MODE=r +! else +CONFIG_ERROR_MSG=Unrecognized mode: $(D) +! endif +!endif + +# If target is specified, check its validity; if not specified, the target is +# the host platform itself. + +!ifdef O +! ifeq O d +TARGET=dos +! else ifeq O o +TARGET=os2 +! else ifeq O w +TARGET=nt +! else ifeq O l +TARGET=linux +! else +CONFIG_ERROR_MSG=Unrecognized target: $(O) +! endif +!else +! ifdef __DOS__ +TARGET=dos +! else ifdef __OS2__ +TARGET=os2 +! else ifdef __NT__ +TARGET=nt +! else ifdef __LINUX__ +TARGET=linux +! endif +!endif + +# +# Now we know the target. Determine the link target. For fltk, this +# is always GUI for Windows and OS/2. For possible link targets (aliases +# for a set of linker directives) see wlsystem.lnk in Watcom's BINW directory. +# +!ifeq TARGET dos +LINKTARGET=dos32a +!else ifeq TARGET os2 +LINKTARGET=os2v2_pm +!else ifeq TARGET nt +LINKTARGET=nt_win +!else +LINKTARGET=linux +!endif + +# +# Very important: specify the sequence of extensions. Wmake will try to make a target +# with an extension from the first file of the same name with an extension to the right. +# E.g. it tries to make hello.obj from hello.cxx, or hello.cpp etc, but never from hello.exe +# +.EXTENSIONS : +.EXTENSIONS : .exe .lib .obj .cxx .cpp .c .h .fl + +# +# Create output directory name if not already supplied. To allow +# cross-development, must include target name. +# +!ifndef ODIR +ODIR=$(D)_$(TARGET) +!endif + +# +# Contruct the libname from the root plus D and O macros, so that +# multiple LIBS can co-exists, e.g. FLTK_DW and FLTK_RW for Win32. +# +!ifndef LIBDIR +LIBDIR=$(ROOT)\lib\ +!endif +!ifndef LIBNAMEROOT +LIBNAMEROOT=$(PROJ) +!endif +!ifndef LIBNAME +LIBNAME = $(LIBDIR)$(LIBNAMEROOT)_$(D)$(O).lib +# FLTK has other 'global' libs. Define the names here so that any application +# using FLTK can use them by just including this mif file. +LIBNAMEFL = $(LIBDIR)$(LIBNAMEROOT)_fl_$(D)$(O).lib +LIBNAMEGL = $(LIBDIR)$(LIBNAMEROOT)_gl_$(D)$(O).lib +LIBNAMEIMG = $(LIBDIR)$(LIBNAMEROOT)_img_$(D)$(O).lib +LIBS = $(LIBNAME) $(LIBNAMEFL) $(LIBNAMEGL) $(LIBNAMEIMG) +!endif + +# Set target environment options for the project + +!ifeqi TARGET nt # WINDOWS 32 bit +SYSDEF= -DWIN32 +ASYSDEF= +SYSLIBS=wsock32.lib mpr.lib glu32.lib opengl32.lib +EXEEXT=.exe + +!else ifeqi TARGET linux # Linux Intel 32 bit generic +SYSDEF= +ASYSDEF= +EXEEXT=.exe # We need some exe extension else the build won't work + +!else ifeqi TARGET os2 # OS/2 32 bit +SYSDEF= +ASYSDEF= +EXEEXT=.exe + +!else ifeqi TARGET dos # DOS 32 bit +SYSDEF= +ASYSDEF= +EXEEXT=.exe + +!endif + + +###################################################################### +# +# End of compiler- and environment specific options +# +# Note !message will print before any actions ('PRE'processor!), and thus +# will not reflect results of any rules (like set xxx=yyy). +# echo is a rule itself, and will reflect results of preceding rules. +# +###################################################################### + +.BEFORE : +!ifdef CONFIG_ERROR_MSG +! message +! message Configuration error: +! message $(CONFIG_ERROR_MSG) +! message + %abort +!endif + @if not exist $(ODIR) mkdir $(ODIR) >nul +!ifeqi TARGET dos + @set INCLUDE=$(%WATCOM)\H;$(EXTRA_INCLUDE_DIRS) +!else ifeqi TARGET os2 + @set INCLUDE=$(%WATCOM)\H;$(%WATCOM)\H\OS2;$(EXTRA_INCLUDE_DIRS) +!else ifeqi TARGET nt + @set INCLUDE=$(%WATCOM)\H;$(%WATCOM)\H\NT;$(EXTRA_INCLUDE_DIRS) +!else ifeqi TARGET linux + @set INCLUDE=$(%WATCOM)\LH;$(EXTRA_INCLUDE_DIRS) +!endif + +# @set LIB=$(LIBPATH) +# @echo Top dir: $(PROJ) + @echo Include dirs: $(%INCLUDE) +# @echo Lib dirs: $(LIBDIRS) +# @echo Libname=$(LIBNAME) +# @echo extra libs: $(LIBS) +# @echo Wmake version $(__VERSION__) +# @echo Wmake parameters: $(__MAKEOPTS__) +# @echo Compiler : $(CC) $(CCOPTS0) $(CCOPTS1) $(CCOPTS2) $(CCOPTS3) +# @echo Librarian: $(LIB) +# @echo Linker : $(LN) $(LNOPTS) +# @echo Project : $(P) + +!ifeqi D d +WCADEBUG=-d1 # debug opts for wasm +WCCDEBUG=-d2 -s -ors # debug opts for wcc. NOTE: -we is to make errors of all warnings +WCLDEBUG=d all # debug opts for wlink +# WCCTIMING=-et # if added to CC command line will generate timing file after execution +!else +# +# WCADEBUG= # debug opts for wasm +WCCDEBUG= -ors -s # release opts for wcc +# WCLDEBUG= # release opts for wlink +!endif + +# Conventions Watcom + +# Tell default paths based on extension +.fl : . +.h : . +#.lib : . +.c : . +.cpp : . +.cxx : . +.obj : $(ODIR) +.exe : $(ODIR) + +# +# Tell wmake to use DLL versions of some commands (much quicker) +# +!loaddll wcc386 wccd386 +!loaddll wpp386 wppd386 +!loaddll wlink wlink +!loaddll wlib wlibd + +CCOPTS0=-6r -zq +CCOPTS1=$(WCCDEBUG) -bt=$(TARGET) -fp6 -fpi87 # 1st part of Watcom opts +CCOPTS2=-mf -wce=130 -wx -zq # -j # 2nd part of Watcom opts +CCOPTS3=-fo$(ODIR)\$^&.obj # 3rd part Watcom opts +COPTS=-zm +CPPOPTS=-zmf -zv -fx + +LNOPTS=sys $(LINKTARGET) $(WCLDEBUG) op symf,q,m,el,vfr op st=32k # linker options +LIBOPTS= -b -q -p=512 -c # librarian options +LN=wlink # Watcom linker +AS=wasm # Watcom assembler +cc=wcc386 # Watcom C compiler +cpp=wpp386 # Watcom C++ compiler +LIB=wlib # Watcom librarian + +# +# Compilation +# +.c.obj: .AUTODEPEND + $(CC) $(SYSDEF) $(DEBUGDEF) $(CCOPTS0) $(CCOPTS1) $(CCOPTS2) $(CCOPTS3) $(COPTS) $[@ + +.cpp.obj: .AUTODEPEND + $(CPP) $(SYSDEF) $(DEBUGDEF) $(CCOPTS0) $(CCOPTS1) $(CCOPTS2) $(CCOPTS3) $(CPPOPTS) $[@ + +.cxx.obj: .AUTODEPEND + $(CPP) $(SYSDEF) $(DEBUGDEF) $(CCOPTS0) $(CCOPTS1) $(CCOPTS2) $(CCOPTS3) $(CPPOPTS) $[@ + +# +# Librarian stage +# +.obj.lib: + $(LIB) $(LIBOPTS) $@ $< + +# +# Linking stage. This implicit rule assumes the .exe is created from an object file with the +# same name, plus other object in macro OBJECTS, a number of .libs in macro LIBS etc. +# If the linking fails for some reason, the .lk1 file is not deleted and it can be +# examined. +# +.obj.exe: + @%create $^*.lk1 + @%append $^*.lk1 F $(ODIR)/$^& + @for %i in ($(%OBJS)) do @%append $^*.lk1 F $(ODIR)/%i + @for %i in ($(OBJECTS)) do @%append $^*.lk1 F $(ODIR)/%i + @for %i in ($(LIBS)) do @%append $^*.lk1 L %i + @for %i in ($(EXTRA_LIBS)) do @%append $^*.lk1 L %i + @for %i in ($(SYSLIBS)) do @%append $^*.lk1 L %i + $(LN) $(LNOPTS) name $^@ op map=$^* @$^*.lk1 + @del $^*.lk1 -- cgit v1.2.3