###############################################################################
# File:         src/makewat.env
# Purpose:      Watcom environments for wxWindows makefiles.
# Author:       Julian Smart and others
# Version:      $Id$
# Changelist:	2003-02-25 - Juergen Ulbts - update from wxWindows 2.5.x/HEAD branch
###############################################################################

# The following environment variables must be set:
#
#   WATCOM:    set to where the compiler is installed
#   WXWIN:     set to where the wxWindows is installed
#   PATH:      set correctly, i.e. contains all Watcom directories
#   LIB:       same as PATH
#   INCLUDE:   same as PATH

# set wxUSE_GUI=0 to build wxBase instead of (default) wxMSW
!ifndef wxUSE_GUI
wxUSE_GUI=1
!endif

# set FINAL=1 to disable debug and enable optimizations
!ifndef FINAL
FINAL=0
!endif

# set WATCOM_SUFFIX to nothing if you use only Watcom compiler, set it to
# something Watcom-specific if you want to build wxWindows with more than one
# compiler
WATCOM_SUFFIX=_w

# change/remove this if you want to create programs for older Windows versions,
# increase the version to be able to use more Win2K+-only features
WINVERFLAGS = /dWINVER=0x400 /d_WIN32_IE=0x0300

# optimize for space/time: /os or /ot
!ifeq FINAL 1
OPTFLAGS=/oails /5r
!else
OPTFLAGS=/od
!endif


###############################################################################
# You shouldn't have to modify anything after this point
###############################################################################

.EXTENSIONS:
.EXTENSIONS: .exe .obj .c .cc .cpp .res .rc .def

!ifndef %WATCOM
!error WATCOM environment variable must be set!
!endif
WATCOMDIR=$(%WATCOM)

!ifndef %WXWIN
!error WXWIN environment variable must be set!
!endif
WXDIR = $(%WXWIN)

# Suffixes
OBJSUFF=obj
SRCSUFF=cpp

!ifeq FINAL 1
WXDEBUG=0
!else
WXDEBUG=1
!endif

!ifeq WXDEBUG 1
DEBUGFLAGS  = /D__WXDEBUG__
DEBUGCFLAGS = $(DEBUGFLAGS) /d2
DEBUGCXXFLAGS = $(DEBUGFLAGS) /d2i
DEBUGINFO   = debug all
DEBUGSUFFIX = d
!else
DEBUGCFLAGS =
DEBUGCXXFLAGS =
DEBUGINFO   =
DEBUGSUFFIX = 
!endif

# TOOLKIT is used as the name of lib subdir containing wx/setup.h
# BASEDIRPREFIX is used to construct OUTPUTDIR
!ifeq wxUSE_GUI 0
TOOLKIT = base
BASEDIRPREFIX = Base
LINKSYSTEM = nt
!else
TOOLKIT = msw
LINKSYSTEM = nt_win
BASEDIRPREFIX = 
!endif

ARCHINCDIR=$(WXDIR)\lib\$(TOOLKIT)$(DEBUGSUFFIX)

# set the things which depend on debug/release
#
# note that the values for LIBPAGESIZE are minimal possible, the library
# doesn't link (Error! Library too large) with values smaller than given
!ifeq FINAL 1
CONFIGURATION=Release
LIBPAGESIZE=/p=1024
!else
CONFIGURATION=Debug
LIBPAGESIZE=/p=2048
!endif

# set OUTPUTDIR to the directory to be used for the .obj files created during
# the build (under $WXWIN)
!ifndef OUTPUTDIR
OUTPUTDIR=$(WXDIR)\$(BASEDIRPREFIX)$(CONFIGURATION)Watcom
# no trailing slash for win98
!endif

!ifneq NOPRECOMP 1
PRECOMP     = /fh=$(OUTPUTDIR)\watcom.pch
!endif

# the basename of the library
LIBNAME=wx$(TOOLKIT)$(DEBUGSUFFIX)$(WATCOM_SUFFIX)

# only LEVEL=386 is currently supported, 16 bit compilation is probably broken
LEVEL       = 386
CXX         = wpp$(LEVEL)
CC          = wcc$(LEVEL)
LIB         = wlib /q
RC          = wrc
BINDCOMMAND = wrc
WATLIBDIR   = $(WATCOMDIR)\lib386\nt
STACK       = option stack=64k
LIBS        = $(WXDIR)\lib\$(LIBNAME).lib &
              $(WXDIR)\lib\regex$(WATCOM_SUFFIX).lib &
              $(WXDIR)\lib\zlib$(WATCOM_SUFFIX).lib &
!ifneq wxUSE_GUI 0
              $(WXDIR)\lib\png$(WATCOM_SUFFIX).lib &
              $(WXDIR)\lib\tiff$(WATCOM_SUFFIX).lib &
              $(WXDIR)\lib\jpeg$(WATCOM_SUFFIX).lib &
!endif
              $(WATLIBDIR)\comctl32.lib &
              $(WATLIBDIR)\comdlg32.lib &
              $(WATLIBDIR)\odbc32.lib &
              $(WATLIBDIR)\ole32.lib &
              $(WATLIBDIR)\oleaut32.lib &
              $(WATLIBDIR)\opengl32.lib &
              $(WATLIBDIR)\uuid.lib
IFLAGS      = -i=$(ARCHINCDIR);$(WXDIR)\include &
              -i=$(%watcom)\h;$(%watcom)\h\nt &
              -i=$(WXDIR)\src\regex;$(WXDIR)\src\png;$(WXDIR)\src\zlib;$(WXDIR)\src\jpeg;$(WXDIR)\src\tiff &
              -i=$(WXDIR)\include\wx\msw\gnuwin32
RESFLAGS    = -q -r -bt=nt /i$(WXDIR)\include /i$(WXDIR)\contrib\include $(WINVERFLAGS)

# NB: /bm switch is needed for thread-safe runtime, if you don't use
#     wxThread you may remove it
CPPFLAGS = /dWIN32 /bm /fo=$(OUTPUTDIR)\ /fr /zq $(IFLAGS) $(OPTFLAGS) $(WINVERFLAGS) $(EXTRACPPFLAGS)
!ifeq wxUSE_GUI 0
CPPFLAGS += /dwxUSE_GUI=0
!endif

# zm and zv as well as the liker options below are used to make the resulting
# .exe smaller
CFLAGS = $(CPPFLAGS) $(DEBUGCFLAGS) $(EXTRACFLAGS) /zm
CXXFLAGS = $(CPPFLAGS) $(DEBUGCXXFLAGS) $(PRECOMP) /zm /zv /w=8 $(EXTRACXXFLAGS)
LDFLAGS = option eliminate, vfremoval

.cpp.obj: # $< # .AUTODEPEND
    *$(CXX) $(CXXFLAGS) $<

.c.obj: # $< # .AUTODEPEND
    *$(CC) $(CFLAGS) $<

defaulttarget: all .SYMBOLIC

erasepch:   .SYMBOLIC
    -erase $(OUTPUTDIR)\watcom.pch