diff options
| author | Michael R Sweet <michael.r.sweet@gmail.com> | 2004-11-20 03:19:59 +0000 |
|---|---|---|
| committer | Michael R Sweet <michael.r.sweet@gmail.com> | 2004-11-20 03:19:59 +0000 |
| commit | 23bb0590651da3f342cddcd3c87aee38a1d067cc (patch) | |
| tree | bee2ca6b14fcf94b4754a310164e0a864832dcd6 /watcom.mif | |
| parent | a5a683f35f71f1e7ebe9a70660634cbf518b1dcd (diff) | |
Watcom fixes (STR #584, STR #594, STR #595)
Fixed library include order when building DSOs on MacOS X (STR
#596)
fl_xid() could cause a WIN32 application to crash (STR #560, STR
#576, STR #618)
Fl_Browser::remove_() removed the item from the list before
computing the item height, which caused problems with some
programs (STR #613)
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@3897 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'watcom.mif')
| -rw-r--r-- | watcom.mif | 284 |
1 files changed, 284 insertions, 0 deletions
diff --git a/watcom.mif b/watcom.mif new file mode 100644 index 000000000..f4deaf01a --- /dev/null +++ b/watcom.mif @@ -0,0 +1,284 @@ +######################################################################
+#
+# 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
+
+!ifeq TARGET os2
+WATCOMTARGET=os2v2
+!else
+WATCOMTARGET=$(TARGET)
+!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
+
+!ifeqi TARGET nt # WINDOWS 32 bit
+SYSDEF= -DWIN32
+ASYSDEF=
+EXEEXT=.exe
+
+!else ifeqi TARGET linux # Linux Intel 32 bit generic
+SYSDEF=
+ASYSDEF=
+EXEEXT=
+
+!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 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
+
+!ifeqi O D
+LIBPATH=$(%WATCOM)\lib386;$(%WATCOM)\lib386\dos;
+SYSLIBS=
+!else ifeqi O O
+LIBPATH=$(%WATCOM)\lib386;$(%WATCOM)\lib386\os2
+SYSLIBS=
+!else ifeqi O W
+LIBPATH=$(%WATCOM)\lib386;$(%WATCOM)\lib386\nt
+SYSLIBS=netapi32.lib wsock32.lib mpr.lib glu32.lib opengl32.lib
+!else ifeqi O L
+LIBPATH=$(%WATCOM)\lib386;$(%WATCOM)\lib386\linux
+SYSLIBS=
+!endif
+CCOPTS0=-6r -zq
+CCOPTS1=$(WCCDEBUG) -bt=$(TARGET) -fp6 -fpi87 # 1st part of Watcom opts
+CCOPTS2=-mf -wce=130 -wx -zm -zq # -j # 2nd part of Watcom opts
+CCOPTS3=-fo$(ODIR)\$^&.obj # 3rd part Watcom opts
+COPTS=-zm
+CPPOPTS=-zm -zv -fx
+
+LNOPTS=sys $(WATCOMTARGET) $(WCLDEBUG) op symf,q,m,el,vfr op st=32k ru native libpath $(LIBPATH) # 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
+
+
|
