Hi,
I spent a little bit of time trying to get XCircuit 3.6.139 compiled on
my Windows Vista computer using MS Visual Studio Express 2008 and
ActiveTcl 8.5.4 . The compile was mostly ok, with only a few changes
needed in Makefile.win32, tclxcircuit.c and files.c. I am attaching the
patch file.
The changes are related to
1) Defining SCRIPTS_DIR for various compilation steps
2) MSVC only accepts declarations at the beginning of a scope.
3) S_ISDIR is undefined on Windows. tclWinPort.h provides it.
Thanks
Satya
diff -urw xcircuit-3.6.139/Makefile.win32 xcircuit-modified/Makefile.win32
--- xcircuit-3.6.139/Makefile.win32 Thu Jul 20 11:42:06 2006
+++ xcircuit-modified/Makefile.win32 Fri Sep 12 08:20:51 2008
@@ -15,10 +15,10 @@
# Configuration variables #
###########################
-INSTALLDIR = D:\Software\XCircuit-tcl-dev
-TEMPDIR = D:\Temp
+INSTALLDIR = C:\Local
+TEMPDIR = $(TEMP)
-GSDIR = C:\gs\gs8.15
+GSDIR = C:\Programs\gs\gs8.63
# Possible values: tcl, win32
BUILD_TYPE = tcl
@@ -29,8 +29,8 @@
XCCOMDIR = xccom2
# Additional settings for tcl build
-TCLDIR = D:\Software\Tcl
-TCLVERSION = 84
+TCLDIR = C:\Tcl
+TCLVERSION = 85
####################################################################
# End of configuration. DO NOT CHANGE ANYTHING AFTER THIS POINT!!! #
@@ -222,10 +222,10 @@
.SUFFIXES: .c .o .obj .rc .res
.c.o:
- $(COMPILE) -c $<
+ $(COMPILE) -DSCRIPTS_DIR=$(SCRIPTS_DIR) -c $<
.c.obj:
- $(COMPILE) -c "$<"
+ $(COMPILE) -DSCRIPTS_DIR=$(SCRIPTS_DIR) -c "$<"
.rc.res:
rc -fo$@ $(XC_CFLAGS) /i$(XCCOMDIR) $<
@@ -241,7 +241,8 @@
.\menudep$(EXEEXT)
xcwrap.obj: xcwrap.c menudep.h
- $(CC) $(CPPFLAGS) $(CFLAGS) $(DEFS) $(PATHNAMES) $(INCLUDES) \
+ $(CC) $(CPPFLAGS) $(CFLAGS) $(DEFS) $(PATHNAMES) \
+ $(INCLUDES) -DSCRIPTS_DIR=$(SCRIPTS_DIR) \
xcwrap.c -c -Foxcwrap.$(OBJEXT)
lib\tcl\xcircuit$(SHDLIB_EXT): xcwrap.$(OBJEXT) $(xcircuit_OBJECTS)
$(xcircuit_DEPEND)
@@ -259,7 +260,7 @@
xcircexec$(EXEEXT): xcircexec.$(OBJEXT)
-$(RM) .\xcircexec$(EXEEXT)
$(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) $(PATHNAMES) $(INCLUDES) \
- xcircexec.c -Fe$@ $(LDFLAGS) \
+ -DSCRIPTS_DIR=$(SCRIPTS_DIR) xcircexec.c -Fe$@ $(LDFLAGS) \
$(LIBS) $(LIB_SPECS) $(EXTRA_LIB_SPECS)
xcircuit-win32$(EXEEXT): xcircuit-win32.c resources.res
@@ -307,17 +308,18 @@
lib\$(INTERP_PATH)\$(WRAPPER_INIT): $(PP) lib\$(INTERP_PATH)\$(WRAPPER_INIT).in
$(PP) $(PATHNAMES) -DLIBDIR=\"$(librarydir:\=/)\" \
+ -DSCRIPTSDIR=$(SCRIPTS_DIR) \
lib/$(INTERP_PATH)/$(WRAPPER_INIT).in > $@
lib\xcircuit.1: $(PP) lib\xcircuit.1.in
$(PP) -DLIBDIR=\"$(libdir)\" \
- -DSCRIPTSDIR=\"$(scriptsdir)\" \
+ -DSCRIPTSDIR=$(SCRIPTS_DIR) \
-DLGF=1 -DPYTHON=0 -DTCL=1 -DNOINTERP=0 \
lib\xcircuit.1.in > $@
install-data-local: lib/xcircuit.1
@echo "Installing library files"
- $(mkinstalldirs) $(DESTDIR)$(librarydir)
+ -$(mkinstalldirs) $(DESTDIR)$(librarydir)
cd lib
for %i in ($(PROLOGUE_FILE) *.lps) do $(INSTALL_DATA) %i
$(DESTDIR)$(librarydir)
cd ..
@@ -325,7 +327,7 @@
for %i in ($(STARTUP_FILE)) do $(INSTALL_DATA) %i
$(DESTDIR)$(librarydir)
cd ..\..
@echo "Installing .lps font files"
- $(mkinstalldirs) $(DESTDIR)$(librarydir)\fonts
+ -$(mkinstalldirs) $(DESTDIR)$(librarydir)\fonts
for %i in ($(FONTS_LPS)) do $(INSTALL_DATA) lib\fonts\%i.lps
$(DESTDIR)$(librarydir)\fonts
@echo "Installing .xfe font files"
for %i in ($(FONTS_XFE)) do $(INSTALL_DATA) lib\fonts\%i.xfe
$(DESTDIR)$(librarydir)\fonts
@@ -335,7 +337,6 @@
# So we make a symbolic link if SHDLIB_EXT != .so
install-tcl: xcircexec$(EXEEXT) lib/$(INTERP_PATH)/$(WRAPPER_OBJ)
lib/$(INTERP_PATH)/$(WRAPPER_SH) lib/$(INTERP_PATH)/$(WRAPPER_INIT)
xcircuit-win32$(EXEEXT)
- if exist $(prefix) $(RMDIR) $(prefix)
@echo "Installing standard XCircuit library files"
$(MAKE) $(AM_MAKEFLAGS) install-data-local
@echo "Installing Tcl files"
@@ -344,17 +345,16 @@
cd ..\..
$(INSTALL_DATA) xcircexec$(EXEEXT) $(DESTDIR)$(librarydir)
@echo "Installing pixmap images"
- $(mkinstalldirs) $(DESTDIR)$(librarydir)\pixmaps
+ -$(mkinstalldirs) $(DESTDIR)$(librarydir)\pixmaps
cd lib\pixmaps
for %i in (*.gif *.xbm) do $(INSTALL_DATA) %i
$(DESTDIR)$(librarydir)\pixmaps
cd ..\..
@echo "Installing shell script as xcircuit executable"
- $(mkinstalldirs) $(DESTDIR)$(bindir)
+ -$(mkinstalldirs) $(DESTDIR)$(bindir)
$(INSTALL_DATA) lib\$(INTERP_PATH)\$(WRAPPER_SH) $(DESTDIR)$(bindir)
$(INSTALL_DATA) xcircuit-win32$(EXEEXT) $(DESTDIR)$(bindir)
install-win32: xcircuit$(EXEEXT)
- if exist $(prefix) $(RMDIR) $(prefix)
$(MAKE) $(AM_MAKEFLAGS) install-data-local "librarydir=$(prefix)"
$(INSTALL_DATA) xcircuit$(EXEEXT) $(DESTDIR)$(prefix)
diff -urw xcircuit-3.6.139/files.c xcircuit-modified/files.c
--- xcircuit-3.6.139/files.c Wed Jul 2 23:15:54 2008
+++ xcircuit-modified/files.c Fri Sep 12 07:51:24 2008
@@ -24,6 +24,9 @@
#ifdef TCL_WRAPPER
#include <tk.h>
+#ifdef _MSC_VER
+#include <tclWinPort.h>
+#endif
#else
#ifndef XC_WIN32
#include "Xw/TextEdit.h" /* for XwTextCopyBuffer() */
diff -urw xcircuit-3.6.139/tclxcircuit.c xcircuit-modified/tclxcircuit.c
--- xcircuit-3.6.139/tclxcircuit.c Wed Jul 2 23:15:54 2008
+++ xcircuit-modified/tclxcircuit.c Fri Sep 12 07:43:58 2008
@@ -16,11 +16,13 @@
#include <sys/stat.h>
#include <errno.h>
-#include <tk.h>
#ifndef _MSC_VER
#include <X11/Intrinsic.h>
#include <X11/StringDefs.h>
+#include <tk.h>
+#else
+#include <tkWin.h>
#endif
#ifdef OPENGL
@@ -5458,8 +5460,8 @@
case ObjectIdx:
if ((objc - nidx) == 1) {
- numfound = 0;
Tcl_Obj *listPtr;
+ numfound = 0;
for (i = 0; i < areawin->selects; i++) {
if (SELECTTYPE(areawin->selectlist + i) == OBJINST) {
pinst = SELTOOBJINST(areawin->selectlist + i);
@@ -5487,8 +5489,8 @@
case ScaleIdx:
if ((objc - nidx) == 1) {
- numfound = 0;
Tcl_Obj *listPtr;
+ numfound = 0;
for (i = 0; i < areawin->selects; i++) {
if (SELECTTYPE(areawin->selectlist + i) == OBJINST) {
pinst = SELTOOBJINST(areawin->selectlist + i);
@@ -5521,8 +5523,8 @@
case CenterIdx:
if ((objc - nidx) == 1) {
- numfound = 0;
Tcl_Obj *listPtr, *coord;
+ numfound = 0;
for (i = 0; i < areawin->selects; i++) {
if (SELECTTYPE(areawin->selectlist + i) == OBJINST) {
pinst = SELTOOBJINST(areawin->selectlist + i);
@@ -5570,8 +5572,8 @@
case BBoxIdx:
if ((objc - nidx) == 1) {
- numfound = 0;
Tcl_Obj *listPtr, *coord;
+ numfound = 0;
for (i = 0; i < areawin->selects; i++) {
if (SELECTTYPE(areawin->selectlist + i) == OBJINST) {
pinst = SELTOOBJINST(areawin->selectlist + i);
_______________________________________________
Xcircuit-dev mailing list
[email protected]
http://www.opencircuitdesign.com/mailman/listinfo/xcircuit-dev