#
# Makefile for compiling Tk for OS/2 with EMX/GCC
#

### Build choices

# uncomment the following line to compile with symbols
#DEBUGGING=1

# Uncomment the following to make binaries that run only on Warp or higher
#TARGET_WARP=yes

# Format is OMF (.obj) or A.OUT (.o)
#FORMAT = A.OUT
FORMAT = OMF

# uncomment the following two lines to compile with TCL_MEM_DEBUG
#DEBUGDEFINES = -DTCL_MEM_DEBUG

# Choose the following line to use a default font of "9.WarpSans" (available
# on Warp 4 and later);
FONTDEFS=-DWARP4LATER
#FONTDEFS=

# Choose the following line to ignore the resolution Presentation Manager
# tells us the device offers if it's 120dpi and just use 96dpi.
# requested by Ilya Zakharevich, see also tkOS2Font.c
#RESDEFS=-DIGNOREPMRES
RESDEFS=

# Where to build target dist
DISTDIR = d:\TclTk805\TclTk

### End of build choices

# Version
TCLVER = 80
TKVER = 80
LONGVER = 8.0
FULLVERSION = 8.0.5
SHORTVERSION = 805

#
# Project directories
#
# ROOT = top of source tree
# TMPDIR = location where .$(OBJ) files should be stored during build
# TCLDIR = location of top of Tcl source hierarchy
#

ROOT	= ..
GENERIC_DIR = $(ROOT)/generic
UNIX_DIR = $(ROOT)/unix
XLIB_DIR = $(ROOT)/xlib
OS2_DIR = $(ROOT)/os2
TMPDIR	= .
TCLDIR	= ../../tcl8.0.5
EMXDIR  = d:/emx

# Choose packing
ifdef TARGET_WARP
    # Warp 3 and higher
    EXEPACKING=/EXEPACK:2
    RESPACKING=-x2
    LXLITE=lxlite /ML1
#    LXLITE=echo lxlite /ML1
else
    # All 32bit versions of OS/2
    EXEPACKING=/EXEPACK
    RESPACKING=-x1
    LXLITE=lxlite /MR3
#    LXLITE=echo lxlite /MR3
endif

ifeq ($(FORMAT),A.OUT)
   ARCH=a
   OBJ=o
   OUTPUTFLAG=
   EXTRALINK =
   RC = emxbind -br
else
   ARCH=lib
   OBJ=obj
   OUTPUTFLAG=-Zomf
   EXTRALINK = -Zlinker /FARCALLTRANSLATION -Zlinker /RUNFROMVDM -Zlinker /BASE:0x10000 -Zlinker /ALIGN:2 -Zlinker $(EXEPACKING)
   # space after RC value
   RC = rc -p $(RESPACKING) 
endif
RCPRE = rc -r -p $(RESPACKING)

TCLBASE = tcl$(TCLVER)
TKBASE = tk$(TKVER)
WISHBASE = wish$(TKVER)
TCLLIB = $(TCLBASE).$(ARCH)
TKLIB = $(TKBASE).$(ARCH)
TKOMFLIB = $(TKBASE).lib
TKARCHIVE = $(TKBASE).a
TCLDLL = $(TCLBASE).dll
TKDLL = $(TKBASE).dll
WISH = $(WISHBASE).exe
TKTESTBASE = tktest$(TKVER)
TKTEST = $(TKTESTBASE).exe

IMPLIB  = emximp
CC      = gcc
LINK    = gcc
# Careful, there has to be a space after '-o' !
LINK_OUT = -o 
RC	= rc -p $(RESPACKING)
CP      = copy
RM      = del /f
MKDIR	= mkdir
EMXIMP  = emximp

DEFINES =       -D__OS2__ -DHAS_DIRENT -DHAS_STDARG -D"wchar_t=unsigned short" \
	        -D_WCHAR_T $(RESDEFS) $(FONTDEFS)
STD_INCLUDES =  -I$(OS2_DIR) -I$(EMXDIR)/include
TCL_INCLUDES =  -I$(TCLDIR)/os2 -I$(TCLDIR)/generic
TK_INCLUDES =   -I$(ROOT)/generic -I$(ROOT)/bitmaps -I$(XLIB_DIR) -I$(ROOT) \
	        -I$(UNIX_DIR)
INCLUDES =	$(STD_INCLUDES) $(TCL_INCLUDES) $(TK_INCLUDES)
LIBDIRS =	-L$(EMXDIR)/lib -L$(ROOT)/os2
TCLLIBDIR =	$(TCLDIR)/os2

ifndef DEBUGGING
  # these macros cause maximum optimization and no symbols
  CFLAGS =      -O -Wall -mprobe -m486 $(OUTPUTFLAG) -Zmtd -s $(DEFINES) $(INCLUDES)
else
  # these macros enable debugging
  CFLAGS =      -g -mprobe -m486 $(OUTPUTFLAG) -Zmtd -fhandle-exceptions \
                $(DEFINES) $(DEBUGDEFINES) $(INCLUDES) -DVERBOSE -DTCL_DEBUG
endif
CC_SWITCHES =   $(CFLAGS)

ifndef DEBUGGING
  LNFLAGS_exe = $(OUTPUTFLAG) -Zmtd $(EXTRALINK) -lwrap -s
  LNFLAGS_dll = -mprobe -Zcrtdll -Zdll $(OUTPUTFLAG) -Zmt \
                $(EXTRALINK) -lm -lwrap -s
else
  LNFLAGS_exe = $(OUTPUTFLAG) -Zmtd $(EXTRALINK)
  LNFLAGS_dll = -mprobe -Zcrtdll -Zdll $(OUTPUTFLAG) -Zmt $(EXTRALINK) -lm
endif

# 
# Global makefile settings
#

#.AUTODEPEND
#.CACHEAUTODEPEND

#
# Targets
#

all: $(TKDLL) $(WISH) $(TKTEST)
test: $(TKDLL) $(TKTEST)

.SUFFIXES: .c .dll .$(ARCH) .$(OBJ) .exe

WISHOBJS = \
	os2Main.$(OBJ)

TKTESTOBJS = \
	tkTest.$(OBJ) \
	tkSquare.$(OBJ) \
	testMain.$(OBJ)

XLIBOBJS = \
	xcolors.$(OBJ) \
	xdraw.$(OBJ) \
	xgc.$(OBJ) \
	ximage.$(OBJ) \
	xutil.$(OBJ)

UNIXOBJS = \
	tkUnixMenubu.$(OBJ) \
	tkUnixScale.$(OBJ)

OS2TKOBJS = \
	tkOS23d.$(OBJ) \
	tkOS2Button.$(OBJ) \
	tkOS2Clipboard.$(OBJ) \
	tkOS2Color.$(OBJ) \
	tkOS2Cursor.$(OBJ) \
	tkOS2Dialog.$(OBJ) \
	tkOS2Dll.$(OBJ) \
	tkOS2Draw.$(OBJ) \
	tkOS2Embed.$(OBJ) \
	tkOS2Font.$(OBJ) \
	tkOS2Image.$(OBJ) \
	tkOS2ImgUtil.$(OBJ) \
	tkOS2Init.$(OBJ) \
	tkOS2Key.$(OBJ) \
	tkOS2Menu.$(OBJ) \
	tkOS2Pixmap.$(OBJ) \
	tkOS2Pointer.$(OBJ) \
	tkOS2Region.$(OBJ) \
	tkOS2Scrlbr.$(OBJ) \
	tkOS2Send.$(OBJ) \
	tkOS2Window.$(OBJ) \
	tkOS2Wm.$(OBJ) \
	tkOS2X.$(OBJ) \
	stubs.$(OBJ)

OS2TKOBJSPEC = tkOS2*.$(OBJ) stubs.$(OBJ)

GENTKOBJS = \
	tk3d.$(OBJ) \
	tkArgv.$(OBJ) \
	tkAtom.$(OBJ) \
	tkBind.$(OBJ) \
	tkBitmap.$(OBJ) \
	tkButton.$(OBJ) \
	tkCanvArc.$(OBJ) \
	tkCanvBmap.$(OBJ) \
	tkCanvImg.$(OBJ) \
	tkCanvLine.$(OBJ) \
	tkCanvPoly.$(OBJ) \
	tkCanvPs.$(OBJ) \
	tkCanvText.$(OBJ) \
	tkCanvUtil.$(OBJ) \
	tkCanvWind.$(OBJ) \
	tkCanvas.$(OBJ) \
	tkClipboard.$(OBJ) \
	tkCmds.$(OBJ) \
	tkColor.$(OBJ) \
	tkConfig.$(OBJ) \
	tkConsole.$(OBJ) \
	tkCursor.$(OBJ) \
	tkEntry.$(OBJ) \
	tkError.$(OBJ) \
	tkEvent.$(OBJ) \
	tkFileFilter.$(OBJ) \
	tkFocus.$(OBJ) \
	tkFont.$(OBJ) \
	tkFrame.$(OBJ) \
	tkGC.$(OBJ) \
	tkGeometry.$(OBJ) \
	tkGet.$(OBJ) \
	tkGrab.$(OBJ) \
	tkGrid.$(OBJ) \
	tkImage.$(OBJ) \
	tkImgBmap.$(OBJ) \
	tkImgGIF.$(OBJ) \
	tkImgPPM.$(OBJ) \
	tkImgPhoto.$(OBJ) \
	tkListbox.$(OBJ) \
	tkMacWinMenu.$(OBJ) \
	tkMain.$(OBJ) \
	tkMenu.$(OBJ) \
	tkMenubutton.$(OBJ) \
	tkMenuDraw.$(OBJ) \
	tkMessage.$(OBJ) \
	tkOption.$(OBJ) \
	tkPack.$(OBJ) \
	tkPlace.$(OBJ) \
	tkPointer.$(OBJ) \
	tkRectOval.$(OBJ) \
	tkScale.$(OBJ) \
	tkScrollbar.$(OBJ) \
	tkSelect.$(OBJ) \
	tkText.$(OBJ) \
	tkTextBTree.$(OBJ) \
	tkTextDisp.$(OBJ) \
	tkTextImage.$(OBJ) \
	tkTextIndex.$(OBJ) \
	tkTextMark.$(OBJ) \
	tkTextTag.$(OBJ) \
	tkTextWind.$(OBJ) \
	tkTrig.$(OBJ) \
	tkUtil.$(OBJ) \
	tkVisual.$(OBJ) \
	tkWindow.$(OBJ) \
	$(XLIBOBJS) $(UNIXOBJS)

tkTestInit.$(OBJ): tkAppInit.c
	$(RM) tkTestInit.c
	$(CP) $(UNIX_DIR)/tkAppInit.c tkTestInit.c
	$(CC) -c $(CC_SWITCHES) -DTK_TEST tkTestInit.c
	$(RM) tkTestInit.c

tk3d.$(OBJ): $(GENERIC_DIR)/tk3d.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tk3d.c

#tkAppInit.$(OBJ): $(UNIX_DIR)/tkAppInit.c
#	$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tkAppInit.c

tkArgv.$(OBJ): $(GENERIC_DIR)/tkArgv.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkArgv.c

tkAtom.$(OBJ): $(GENERIC_DIR)/tkAtom.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkAtom.c

tkBind.$(OBJ): $(GENERIC_DIR)/tkBind.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkBind.c

tkBitmap.$(OBJ): $(GENERIC_DIR)/tkBitmap.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkBitmap.c

tkClipboard.$(OBJ): $(GENERIC_DIR)/tkClipboard.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkClipboard.c

tkCmds.$(OBJ): $(GENERIC_DIR)/tkCmds.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkCmds.c

tkColor.$(OBJ): $(GENERIC_DIR)/tkColor.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkColor.c

tkConfig.$(OBJ): $(GENERIC_DIR)/tkConfig.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkConfig.c

tkConsole.$(OBJ): $(GENERIC_DIR)/tkConsole.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkConsole.c

tkCursor.$(OBJ): $(GENERIC_DIR)/tkCursor.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkCursor.c

tkError.$(OBJ): $(GENERIC_DIR)/tkError.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkError.c

tkEvent.$(OBJ): $(GENERIC_DIR)/tkEvent.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkEvent.c

tkFileFilter.$(OBJ): $(GENERIC_DIR)/tkFileFilter.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkFileFilter.c

tkFocus.$(OBJ): $(GENERIC_DIR)/tkFocus.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkFocus.c

tkFont.$(OBJ): $(GENERIC_DIR)/tkFont.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkFont.c

tkGet.$(OBJ): $(GENERIC_DIR)/tkGet.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkGet.c

tkGC.$(OBJ): $(GENERIC_DIR)/tkGC.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkGC.c

tkGeometry.$(OBJ): $(GENERIC_DIR)/tkGeometry.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkGeometry.c

tkGrab.$(OBJ): $(GENERIC_DIR)/tkGrab.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkGrab.c

tkGrid.$(OBJ): $(GENERIC_DIR)/tkGrid.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkGrid.c

tkMacWinMenu.$(OBJ): $(GENERIC_DIR)/tkMacWinMenu.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkMacWinMenu.c

#tkMain.$(OBJ): $(GENERIC_DIR)/tkMain.c
#	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkMain.c
tkMain.$(OBJ): tkMain.c
	$(CC) -c $(CC_SWITCHES) tkMain.c

tkOption.$(OBJ): $(GENERIC_DIR)/tkOption.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkOption.c

tkPack.$(OBJ): $(GENERIC_DIR)/tkPack.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkPack.c

tkPlace.$(OBJ): $(GENERIC_DIR)/tkPlace.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkPlace.c

tkPointer.$(OBJ): $(GENERIC_DIR)/tkPointer.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkPointer.c

tkSelect.$(OBJ): $(GENERIC_DIR)/tkSelect.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkSelect.c

#tkSend.$(OBJ): $(GENERIC_DIR)/tkSend.c
#	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkSend.c
tkSend.$(OBJ): tkSend.c
	$(CC) -c $(CC_SWITCHES) tkSend.c

tkUtil.$(OBJ): $(GENERIC_DIR)/tkUtil.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkUtil.c

tkVisual.$(OBJ): $(GENERIC_DIR)/tkVisual.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkVisual.c

#tkWindow.$(OBJ): $(GENERIC_DIR)/tkWindow.c
#	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkWindow.c
tkWindow.$(OBJ): tkWindow.c
	$(CC) -c $(CC_SWITCHES) tkWindow.c

tkButton.$(OBJ): $(GENERIC_DIR)/tkButton.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkButton.c

tkEntry.$(OBJ): $(GENERIC_DIR)/tkEntry.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkEntry.c

tkFrame.$(OBJ): $(GENERIC_DIR)/tkFrame.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkFrame.c

tkListbox.$(OBJ): $(GENERIC_DIR)/tkListbox.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkListbox.c

tkMenu.$(OBJ): $(GENERIC_DIR)/tkMenu.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkMenu.c

tkMenubutton.$(OBJ): $(GENERIC_DIR)/tkMenubutton.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkMenubutton.c

tkMenuDraw.$(OBJ): $(GENERIC_DIR)/tkMenuDraw.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkMenuDraw.c

tkMessage.$(OBJ): $(GENERIC_DIR)/tkMessage.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkMessage.c

tkScale.$(OBJ): $(GENERIC_DIR)/tkScale.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkScale.c

tkScrollbar.$(OBJ): $(GENERIC_DIR)/tkScrollbar.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkScrollbar.c

tkSquare.$(OBJ): $(GENERIC_DIR)/tkSquare.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkSquare.c

tkCanvas.$(OBJ): $(GENERIC_DIR)/tkCanvas.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkCanvas.c

tkCanvArc.$(OBJ): $(GENERIC_DIR)/tkCanvArc.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkCanvArc.c

tkCanvBmap.$(OBJ): $(GENERIC_DIR)/tkCanvBmap.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkCanvBmap.c

tkCanvImg.$(OBJ): $(GENERIC_DIR)/tkCanvImg.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkCanvImg.c

tkCanvLine.$(OBJ): $(GENERIC_DIR)/tkCanvLine.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkCanvLine.c

tkCanvPoly.$(OBJ): $(GENERIC_DIR)/tkCanvPoly.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkCanvPoly.c

#tkCanvPs.$(OBJ): $(GENERIC_DIR)/tkCanvPs.c
#	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkCanvPs.c
tkCanvPs.$(OBJ): tkCanvPs.c
	$(CC) -c $(CC_SWITCHES) tkCanvPs.c

tkCanvText.$(OBJ): $(GENERIC_DIR)/tkCanvText.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkCanvText.c

tkCanvUtil.$(OBJ): $(GENERIC_DIR)/tkCanvUtil.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkCanvUtil.c

tkCanvWind.$(OBJ): $(GENERIC_DIR)/tkCanvWind.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkCanvWind.c

tkRectOval.$(OBJ): $(GENERIC_DIR)/tkRectOval.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkRectOval.c

tkTrig.$(OBJ): $(GENERIC_DIR)/tkTrig.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkTrig.c

tkImage.$(OBJ): $(GENERIC_DIR)/tkImage.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkImage.c

tkImgBmap.$(OBJ): $(GENERIC_DIR)/tkImgBmap.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkImgBmap.c

tkImgGIF.$(OBJ): $(GENERIC_DIR)/tkImgGIF.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkImgGIF.c

tkImgPPM.$(OBJ): $(GENERIC_DIR)/tkImgPPM.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkImgPPM.c

#tkImgPhoto.$(OBJ): $(GENERIC_DIR)/tkImgPhoto.c
#	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkImgPhoto.c
tkImgPhoto.$(OBJ): tkImgPhoto.c
	$(CC) -c $(CC_SWITCHES) tkImgPhoto.c

#tkImgUtil.$(OBJ): $(GENERIC_DIR)/tkImgUtil.c
#	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkImgUtil.c
tkOS2ImgUtil.$(OBJ): tkOS2ImgUtil.c
	$(CC) -c $(CC_SWITCHES) tkOS2ImgUtil.c

#tkTest.$(OBJ): $(GENERIC_DIR)/tkTest.c
#	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkTest.c
tkTest.$(OBJ): tkTest.c
	$(CC) -c $(CC_SWITCHES) tkTest.c

tkText.$(OBJ): $(GENERIC_DIR)/tkText.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkText.c

tkTextBTree.$(OBJ): $(GENERIC_DIR)/tkTextBTree.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkTextBTree.c

tkTextDisp.$(OBJ): $(GENERIC_DIR)/tkTextDisp.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkTextDisp.c

tkTextIndex.$(OBJ): $(GENERIC_DIR)/tkTextIndex.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkTextIndex.c

tkTextImage.$(OBJ): $(GENERIC_DIR)/tkTextImage.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkTextImage.c

tkTextMark.$(OBJ): $(GENERIC_DIR)/tkTextMark.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkTextMark.c

tkTextTag.$(OBJ): $(GENERIC_DIR)/tkTextTag.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkTextTag.c

tkTextWind.$(OBJ): $(GENERIC_DIR)/tkTextWind.c
	$(CC) -c $(CC_SWITCHES) $(GENERIC_DIR)/tkTextWind.c

xcolors.$(OBJ): $(XLIB_DIR)/xcolors.c
	$(CC) -c $(CC_SWITCHES) $(XLIB_DIR)/xcolors.c

xdraw.$(OBJ): $(XLIB_DIR)/xdraw.c
	$(CC) -c $(CC_SWITCHES) $(XLIB_DIR)/xdraw.c

xgc.$(OBJ): $(XLIB_DIR)/xgc.c
	$(CC) -c $(CC_SWITCHES) $(XLIB_DIR)/xgc.c

ximage.$(OBJ): $(XLIB_DIR)/ximage.c
	$(CC) -c $(CC_SWITCHES) $(XLIB_DIR)/ximage.c

xutil.$(OBJ): $(XLIB_DIR)/xutil.c
	$(CC) -c $(CC_SWITCHES) $(XLIB_DIR)/xutil.c

tkUnixMenubu.$(OBJ): $(UNIX_DIR)/tkUnixMenubu.c
	$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tkUnixMenubu.c

tkUnixScale.$(OBJ): $(UNIX_DIR)/tkUnixScale.c
	$(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tkUnixScale.c

#####################

# Implicit Targets

.c.$(OBJ):
	$(CC) -c $(CFLAGS) $<

#.dll.$(ARCH):
#	$(IMPLIB) -c $@ $<

.rc.res:
	$(RC) -i$(INCLUDES) $<

$(TKOMFLIB): $(TKBASE).imp
	$(IMPLIB) -o $(TKOMFLIB) $(TKBASE).imp

$(TKBASE).imp: $(TKBASE).def
	$(IMPLIB) -o $(TKBASE).imp $(TKBASE).def

$(TKARCHIVE): $(TKBASE).imp
	$(EMXIMP) -o $(TKARCHIVE) $(TKBASE).imp

#
# Special case object file targets
#

testMain.$(OBJ) : os2Main.c
	$(CC) -c $(CC_SWITCHES) $(LINK_OUT)$@ -DTK_TEST os2Main.c

#
# Executable targets
#

$(TKDLL): $(OS2TKOBJS) $(GENTKOBJS) $(TKBASE).def $(TCLLIBDIR)/$(TCLLIB) \
	  $(TKBASE).res
	$(LINK) $(LINK_OUT)$@ $(LNFLAGS_dll) $(OS2TKOBJS) $(GENTKOBJS) \
	         $(TKBASE).def $(TCLLIBDIR)/$(TCLLIB)
	$(RC) $(TKBASE).res $(TKDLL)
ifndef DEBUGGING
	-$(LXLITE) $(TKDLL)
endif

$(TKBASE).res: $(TKBASE).rc rc/$(TKBASE).ico rc/buttons.bmp
	$(RCPRE) $(TKBASE).rc

$(WISH): $(WISHOBJS) $(TKLIB) $(TCLLIBDIR)/$(TCLLIB) $(WISHBASE).def $(WISHBASE).res
	$(LINK) $(LINK_OUT)$@ $(LNFLAGS_exe) $(WISHOBJS) $(TKLIB) \
		$(TCLLIBDIR)/$(TCLLIB) $(WISHBASE).def
	$(RC) $(WISHBASE).res $(WISHBASE).exe
ifndef DEBUGGING
	-$(LXLITE) $(WISHBASE).exe
endif

$(WISHBASE).res: $(WISHBASE).rc rc/$(WISHBASE).ico
	$(RCPRE) $(WISHBASE).rc

$(TKTEST): $(TKTESTOBJS) $(TKLIB) $(TCLLIBDIR)/$(TCLLIB) $(TKTESTBASE).def
	$(LINK) $(LINK_OUT)$@ $(LNFLAGS_exe) $(TKTESTOBJS) $(TKLIB) \
		$(TCLLIBDIR)/$(TCLLIB) $(TKTESTBASE).def
	$(RC) $(WISHBASE).res $(TKTESTBASE).exe
ifndef DEBUGGING
	-$(LXLITE) $(TKTESTBASE).exe
endif

# 
# Other dependencies
#

# The following rule automatically generates a $(TKBASE).def file containing
# an export entry for every public symbol in the $(TKDLL) library.

# Giving $(OS2TKOBJS) $(GENTKOBJS) to emxexp makes its command line longer
# than allowed, so you get an error like "Cannot open input file `tkTextWin'"
# Give a wildcard
$(TKBASE).def: $(OS2TKOBJS) $(GENTKOBJS) $(TKBASE)def.base
	type $(TKBASE)def.base > $(TKBASE).def
	emxexp -o $(OS2TKOBJSPEC) $(GENTKOBJS) >> $(TKBASE).def

# Always make an a.out archive when creating distribution
aoutarchive: $(TKARCHIVE)
	-$(CP) $(TKARCHIVE) $(DISTDIR)\lib

# distribution
dist: all aoutarchive
# test for writability
	$(CP) README PR.TXT $(DISTDIR)
	-$(MKDIR) $(DISTDIR)\bin
	-$(CP) $(WISH) $(DISTDIR)\bin
	-$(CP) $(TKDLL) $(DISTDIR)\bin
	-$(CP) $(TKTEST) $(DISTDIR)\bin
	-$(MKDIR) $(DISTDIR)\lib
	-$(CP) $(TKLIB) $(DISTDIR)\lib
	-$(MKDIR) $(DISTDIR)\lib\tk$(LONGVER)
	-$(CP) ..\library\\* $(DISTDIR)\lib\tk$(LONGVER)
	-$(MKDIR) $(DISTDIR)\lib\tk$(LONGVER)\demos
	-$(CP) ..\library\demos\\* $(DISTDIR)\lib\tk$(LONGVER)\demos
	-$(MKDIR) $(DISTDIR)\lib\tk$(LONGVER)\demos\images
	-$(CP) ..\library\demos\images\\* $(DISTDIR)\lib\tk$(LONGVER)\demos\images
	-$(MKDIR) $(DISTDIR)\include
	-$(CP) tkOS2.h $(DISTDIR)\include
	-$(CP) ..\generic\tk.h $(DISTDIR)\include
	-$(MKDIR) $(DISTDIR)\include\X11
	-$(CP) ..\xlib\X11\\* $(DISTDIR)\include\X11

# remove all generated files
clean:
	-$(RM) $(TKBASE) $(TKDLL) $(TKBASE).res $(TKBASE).map $(TKBASE).def
	-$(RM) $(WISHBASE) $(WISH) $(WISHBASE).res $(WISHBASE).map
	-$(RM) $(TKTESTBASE) $(TKTEST) $(TKTEST).map
	-$(RM) *.$(OBJ)
