diff options
author | William Joye <wjoye@cfa.harvard.edu> | 2016-10-27 18:27:18 (GMT) |
---|---|---|
committer | William Joye <wjoye@cfa.harvard.edu> | 2016-10-27 18:27:18 (GMT) |
commit | 949f96e29bfe0bd8710d775ce220e597064e2589 (patch) | |
tree | ae84b7ae710575f4debb610a126b1317a2247777 /tktable/win | |
parent | 5b44fb0d6530c4ff66a446afb69933aa8ffd014f (diff) | |
parent | 32c31a3b172990fd736e0ed21bcab1e1d6ab6570 (diff) | |
download | blt-949f96e29bfe0bd8710d775ce220e597064e2589.zip blt-949f96e29bfe0bd8710d775ce220e597064e2589.tar.gz blt-949f96e29bfe0bd8710d775ce220e597064e2589.tar.bz2 |
Merge commit '32c31a3b172990fd736e0ed21bcab1e1d6ab6570' as 'tktable'
Diffstat (limited to 'tktable/win')
-rw-r--r-- | tktable/win/makefile.vc | 264 |
1 files changed, 264 insertions, 0 deletions
diff --git a/tktable/win/makefile.vc b/tktable/win/makefile.vc new file mode 100644 index 0000000..55f3244 --- /dev/null +++ b/tktable/win/makefile.vc @@ -0,0 +1,264 @@ +# Makefile.vc +# +# This makefile builds Tktable.dll, a table widget as a dynamically +# loadable Tk extension. This makefile is suitable for use with VC++ 5+. +# +# TkTable assumes that Tcl/Tk has already been installed on Windows. +# +# This does not provide support for static builds on Windows +# + +# Set this to the appropriate value of /MACHINE: for your platform +# Choices: IX86, IA64 +MACHINE = IX86 + +PROJECT = Tktable +TBL_COMMAND = table +TBL_RUNTIME = tkTable.tcl + +# Project directories -- these may need to be customized for your site +# +# ROOT -- location of the source files. +# TMP_DIR -- location for .obj files. +# TOOLS32 -- location of VC++ compiler installation. +# DEST_DIR -- location of Tcl/Tk installation hierarchy +# DEST_DIRU -- same as above with "/" as path separator +# + +ROOT = .. +TMP_DIR = . + +!if "$(MACHINE)" == "IA64" + +# This assumes "-64" suffixes your Win64 build +v3 = 84-64 + +# IA64 support is based on the standard setup with v2 of the +# Microsoft SDK for XP, RC1 + +TOOLS32 = C:/Progra~1/Microsoft SDK + +CC = "$(TOOLS32)/bin/Win64/cl.exe" +LD = "$(TOOLS32)/bin/Win64/link.exe" +libpath32 = /LIBPATH:"$(TOOLS32)/lib/IA64" \ + /LIBPATH:"$(TOOLS32)/lib/Prerelease/IA64" +include32 = -I"$(TOOLS32)/Include/prerelease" \ + -I"$(TOOLS32)/Include/Win64/crt" \ + -I"$(TOOLS32)/Include/Win64/crt/sys" \ + -I"$(TOOLS32)/Include" + +!else + +# Visual Studio 5 default +#TOOLS32 = C:/Progra~1/devstudio/vc + +# Visual Studio 6 default +TOOLS32 = C:/Progra~1/Microsoft Visual Studio/VC98 + +CC = "$(TOOLS32)/bin/cl.exe" +LD = "$(TOOLS32)/bin/link.exe" -link50compat +libpath32 = /LIBPATH:"$(TOOLS32)/lib" +include32 = -I"$(TOOLS32)/include" + +!endif + +DEST_DIR = C:\Tcl +DEST_DIRU = C:/Tcl + +WIN_DIR = $(ROOT)\win +GENERIC_DIR = $(ROOT)\generic +VPATH = $(GENERIC_DIR):$(WIN_DIR) + +#Get version info (this is in Makefile and C format) +!include "$(GENERIC_DIR)\version.h" + +# Set your version of Tcl + +TCL_VERSION = 8.4 +TCL_VER = 84 + +INST_RUNTIME = $(DEST_DIR)\lib\$(PROJECT)$(VERSION) +INST_RUNTIMEU = $(DEST_DIRU)/lib/$(PROJECT)$(VERSION) + +# NO_EMBEDDED_RUNTIME means that the tkTable.tcl file will not be embedded +# into the executable, thus the default tkTable.tcl library file will not +# be available when the library is loaded. +# If this is defined, the tkTable.tcl file must be available in a +# predefined set of directories (see docs). +#TBL_CFLAGS += -DNO_EMBEDDED_RUNTIME + +# change the following line to compile with symbols +DEBUG = 0 + +CP = copy +RM = del + +###################################################################### +# Project specific targets +###################################################################### + +TBL_LIB_DIR = $(ROOT)\library +# Assume that WISH is already INSTALLED +TCLSH = $(DEST_DIR)\bin\tclsh$(TCL_VER) +WISH = $(DEST_DIR)\bin\wish$(TCL_VER) +WIN_LIBS = gdi32.lib user32.lib +LIBS = $(DEST_DIR)\lib\tclstub$(TCL_VER).lib \ + $(DEST_DIR)\lib\tkstub$(TCL_VER).lib $(WIN_LIBS) +LIBS = C:\build\tcl84-64\tclstub$(TCL_VER).lib \ + C:\build\tk84-64\tkstub$(TCL_VER).lib $(WIN_LIBS) +INCLUDES = -I"$(DEST_DIR)\include" -I. $(include32) + +DEFINES = -DDLL_BUILD -DBUILD_Tktable $(TBL_CFLAGS) \ + -DPACKAGE_VERSION=\"$(VERSION)\" \ + -DTBL_COMMAND=\"$(TBL_COMMAND)\" \ + -DTBL_RUNTIME="\"$(TBL_RUNTIME)\"" \ + -DTBL_RUNTIME_DIR="\"$(INST_RUNTIMEU)\"" + +## Define this if you want to use STUBS +## This only works for the dynamic library +## +DEFINES = $(DEFINES) -DUSE_TCL_STUBS -DUSE_TK_STUBS + +CC_SWITCHES = $(CFLAGS) $(EXTRA_CFLAGS) $(DEFINES) $(INCLUDES) + +#--------------------------------------------------------------------- +# Compile flags +#--------------------------------------------------------------------- + +!if !$(DEBUG) +# This cranks the optimization level to maximize speed +cdebug = -O2 -Gs +!else if "$(MACHINE)" == "IA64" +cdebug = -Od -Zi +!else +cdebug = -Z7 -Od -WX +DBGX = d +!endif + +# declarations common to all compiler options +cflags = -c -W3 -nologo -Fp$(TMP_DIR)\ -YX -MT$(DBGX) + +#--------------------------------------------------------------------- +# Link flags +#--------------------------------------------------------------------- + +!if $(DEBUG) +ldebug = -debug:full -debugtype:cv +!else +ldebug = -release +!endif + +# declarations common to all linker options +lflags = -nologo -machine:$(MACHINE) -warn:3 $(libpath32) + +# declarations for use on Intel i386, i486, and Pentium systems +!IF "$(MACHINE)" == "IX86" +DLLENTRY = @12 +dlllflags = $(lflags) -entry:_DllMainCRTStartup$(DLLENTRY) -dll +!ELSE IF "$(MACHINE)" == "IA64" +dlllflags = $(lflags) -dll +!ELSE +dlllflags = $(lflags) -entry:_DllMainCRTStartup$(DLLENTRY) -dll +!ENDIF + +conlflags = $(lflags) -subsystem:console -entry:mainCRTStartup +guilflags = $(lflags) -subsystem:windows -entry:WinMainCRTStartup + +# +# Global makefile settings +# +DLLOBJS = $(TMP_DIR)\tkTable.obj \ + $(TMP_DIR)\tkTableWin.obj \ + $(TMP_DIR)\tkTableTag.obj \ + $(TMP_DIR)\tkTableEdit.obj \ + $(TMP_DIR)\tkTableCell.obj \ + $(TMP_DIR)\tkTableCellSort.obj \ + $(TMP_DIR)\tkTableCmds.obj \ + $(TMP_DIR)\tkTableUtil.obj +# $(TMP_DIR)\tkTablePs.obj + +DLL=$(PROJECT).dll + +# +# Targets +# +all: pkgIndex.tcl + +test: pkgIndex.tcl + @"$(WISH)" << + lappend auto_path $(ROOT) + set code [catch { + package require $(PROJECT) + pack [$(TBL_COMMAND) .t] + } msg] + if {$$code != 0} { + tk_messageBox -type ok -message\ + "$(PROJECT) failed to load and run: $$msg" + } else { + tk_messageBox -type ok -message\ + "everything seems OK for 'package require $(PROJECT)'" + } + exit $$code +<< + +pkgIndex.tcl: $(DLL) + "$(TCLSH)" << pkgIndex.tcl + set out [open [lindex $$argv 0] w] + puts $$out {if {[catch {package require Tcl 8.2}]} return} + puts -nonewline $$out {package ifneeded $(PROJECT) $(VERSION) } + puts -nonewline $$out {"package require Tk 8.2; } + puts $$out {[list load [file join $$dir $(DLL)] $(PROJECT)]"} + close $$out +<< + +pkgIndex.tcl-NOSTUBS: $(DLL) + "$(TCLSH)" << pkgIndex.tcl + set out [open [lindex $$argv 0] w] + puts $$out {if {[catch {package require Tcl $(TCL_VERSION)}]} return} + puts -nonewline $$out {package ifneeded $(PROJECT) $(VERSION) } + puts -nonewline $$out {"package require Tk $(TCL_VERSION); } + puts $$out {[list load [file join $$dir $(DLL)] $(PROJECT)]"} + close $$out +<< + +$(DLL): tkTable.tcl.h $(DLLOBJS) + $(LD) $(linkdebug) $(dlllflags) $(LIBS) \ + $(guilibsdll) -out:$@ $(DLLOBJS) + +tkTable.tcl.h: $(TBL_LIB_DIR)\tkTable.tcl + "$(TCLSH)" << $(TBL_LIB_DIR)\tkTable.tcl >$(TMP_DIR)\tkTable.tcl.h + set in [open [lindex $$argv 0] r] + while {[gets $$in line] != -1} { + switch -regexp -- $$line "^$$" - {^#} continue + regsub -all {\\} $$line {\\\\} line + regsub -all {"} $$line {\"} line + puts "\"$$line\\n\"" + } +<< + +# Implicit Targets + +{$(WIN_DIR)}.c{$(TMP_DIR)}.obj: + $(CC) $(CC_SWITCHES) $(cdebug) $(cflags) $(cvarsdll) -Fo$(TMP_DIR)\ $< + +{$(GENERIC_DIR)}.c{$(TMP_DIR)}.obj: + $(CC) $(CC_SWITCHES) $(cdebug) $(cflags) $(cvarsdll) -Fo$(TMP_DIR)\ $< + +install: pkgIndex.tcl $(DLL) + if not exist "$(INST_RUNTIME)\" mkdir "$(INST_RUNTIME)" + copy "$(TBL_LIB_DIR)\tkTable.tcl" "$(INST_RUNTIME)" + copy "$(DLL)" "$(INST_RUNTIME)" + copy pkgIndex.tcl "$(INST_RUNTIME)" + +uninstall: + -$(RM) "$(INST_RUNTIME)\tkTable.tcl" + -$(RM) "$(INST_RUNTIME)\$(DLL)" + -$(RM) "$(INST_RUNTIME)\pkgIndex.tcl" + +clean: + -$(RM) $(TMP_DIR)\*.obj 2>nul + -$(RM) $(TMP_DIR)\$(DLL) 2>nul + -$(RM) $(TMP_DIR)\$(PROJECT).lib 2>nul + -$(RM) $(TMP_DIR)\$(PROJECT).exp 2>nul + -$(RM) $(TMP_DIR)\pkgIndex.tcl 2>nul + -$(RM) $(TMP_DIR)\tkTable.tcl.h 2>nul |