# Makefile for MinGW gcc64 compiler (modified from Makefile.win32) # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. # Prerequisites: - mingw x64 gcc compiler # - make (often supplied with the gcc compiler) # - Tcl x64 ver 8.5 # - gs9.02x64 # - graphicsmagick-1.3.14 # # Note: This Makefile support only the tcl build. ########################### # Configuration variables # ########################### # INSTALLDIR = C:\app\xcircuit-tcl # INSTALLDIR = C:/MinGW/msys/1.0/home/TEdwards/xcircuit-tcl INSTALLDIR = C:/OpenCircuitDesign/XCircuit-3.9 # TEMPDIR = D:\Temp # TEMPDIR = C:/Temp TEMPDIR = C:/OpenCircuitDesign/Temp # CC_EXEC = C:\app\gcc64\bin\gcc.exe CC_EXEC = C:/MinGW64/bin/x86_64-w64-mingw32-gcc.exe # GSDIR = C:\gs\gs9.02x64 GSDIR = "C:\Program Files\gs\gs9.05" # GMDIR = C:\graphicsmagick-1.3.14 GMDIR = "C:/Program Files/GraphicsMagick" WINDRES = C:/MinGW64/bin/x86_64-w64-mingw32-windres.exe # Possible values: tcl, win32 BUILD_TYPE = tcl # Additional settings for win32 build USE_WIN32_COM = 0 USE_WIN32_DOTNET = 0 XCCOMDIR = xccom2 # Additional settings for tcl build # TCLDIR = C:\app\tclx64 TCLDIR = "C:/Tcl" TCLVERSION = 85 # Some defines: SIZEOF_VOID_P := 8 SIZEOF_UNSIGNED_INT := 4 SIZEOF_UNSIGNED_LONG := 4 SIZEOF_UNSIGNED_LONG_LONG := 8 #################################################################### # End of configuration. DO NOT CHANGE ANYTHING AFTER THIS POINT!!! # #################################################################### SOURCES = menudep.c $(xcircuit_SOURCES) MK = $(MAKE) -f Makefile.mingw64 srcdir = . top_srcdir = . top_builddir = . mkinstalldirs = mkdir -p menudep_SOURCES = menudep.c menudep_OBJECTS = menudep.$(OBJEXT) menudep_LDADD = $(LDADD) xcircuit_OBJECTS = elements.$(OBJEXT) events.$(OBJEXT) \ filelist.$(OBJEXT) files.$(OBJEXT) flate.$(OBJEXT) \ fontfile.$(OBJEXT) formats.$(OBJEXT) functions.$(OBJEXT) \ graphic.$(OBJEXT) help.$(OBJEXT) keybindings.$(OBJEXT) \ libraries.$(OBJEXT) menucalls.$(OBJEXT) netlist.$(OBJEXT) \ ngspice.$(OBJEXT) parameter.$(OBJEXT) python.$(OBJEXT) \ rcfile.$(OBJEXT) render.$(OBJEXT) svg.$(OBJEXT) \ schema.$(OBJEXT) selection.$(OBJEXT) text.$(OBJEXT) \ undo.$(OBJEXT) xcircuit.$(OBJEXT) $(WIN32_OBJECTS) DEFAULT_INCLUDES = -I. -I$(srcdir) COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(CPPFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -Fe$@ #Not in use SOURCES = menudep.c $(xcircuit_SOURCES) DIST_SOURCES = menudep.c $(xcircuit_SOURCES) man1dir = $(mandir) MANS = $(man_MANS) DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) DIST_ARCHIVES = $(distdir).zip XC_CFLAGS = XC_LIBS = XC_OBJECT = XC_INCLUDES = ifeq ($(BUILD_TYPE),win32) WIN32_OBJECTS = xcwin32.$(OBJEXT) xtfuncs.$(OBJEXT) xtgui.$(OBJEXT) resources.res BUILTINS_DIR = WinBuiltinsDir() STARTUP_FILE = startup.script XC_CFLAGS = -DHAVE_XPM ifneq ($(USE_WIN32_COM),0) XC_CFLAGS = $(XC_CFLAGS) -DUSE_WIN32_COM XC_DEPEND = $(XCCOMDIR)\XCCom.lib XC_LIBS = $(XCCOMDIR)\XCCom.lib ole32.lib oleaut32.lib ifneq ($(USE_WIN32_DOTNET),0) XC_CFLAGS = $(XC_CFLAGS) -DUSE_WIN32_DOTNET endif endif else #!win32 WIN32_OBJECTS = tclxcircuit.$(OBJEXT) tkSimple.$(OBJEXT) w32x11.$(OBJEXT) BUILTINS_DIR = \"$(subst \,/,$(librarydir))\" SCRIPTS_DIR = \"$(subst \,/,$(scriptsdir))\" STARTUP_FILE = xcstartup.tcl XC_CFLAGS = -DTCL_WRAPPER XC_INCLUDES = -I$(TCLDIR)/include XC_LIBS = $(TCLDIR)/bin/base-tcl8.5-thread-win32-x86_64.dll \ $(TCLDIR)/bin/tcl$(TCLVERSION).dll \ $(TCLDIR)/bin/tk$(TCLVERSION).dll endif # Override standard "make" target when compiling under TCL ALL_TARGET = all-recursive INSTALL_TARGET = install CC = $(CC_EXEC) CFLAGS = -g -DSPICE_EXEC=\"$(subst \,/,$(SPICE_EXEC))\" -DHAVE_PUTENV -DGS_EXEC=\"$(subst \,/,$(GS_EXEC))\" -DGM_EXEC=\"$(subst \,/,$(GM_EXEC))\" -DXC_WIN32 -DDOUBLEBUFFER $(XC_CFLAGS) -DSIZEOF_VOID_P=$(SIZEOF_VOID_P) -DSIZEOF_UNSIGNED_INT=$(SIZEOF_UNSIGNED_INT) -DSIZEOF_UNSIGNED_LONG=$(SIZEOF_UNSIGNED_LONG) -DSIZEOF_UNSIGNED_LONG_LONG=$(SIZEOF_UNSIGNED_LONG_LONG) -D_MSC_VER CPP = _not_in_use_ CPPFLAGS = RM = rm RMDIR = rmdir # Main compiler arguments DEFS = $(PATHNAMES) ECHO_C = echo ECHO_N = echo ECHO_T = echo EGREP = egrep EXEEXT = .exe EXTRA_LIB_SPECS = GS_EXEC = $(GSDIR)\bin\gswin64c.exe GM_EXEC = $(GMDIR)\gm.exe INC_SPECS = -I. $(XC_INCLUDES) INSTALL_DATA = cp INSTALL_PROGRAM = cp INSTALL_SCRIPT = cp INSTALL_STRIP_PROGRAM = cp INTERP_PATH = tcl LD = link _not_in_use_ LDDL_FLAGS = LDFLAGS = LIBS = -lws2_32 -lgdi32 $(XC_LIBS) # LIBS = ws2_32.lib gdi32.lib user32.lib kernel32.lib comdlg32.lib comctl32.lib $(XC_LIBS) # imm32.lib shell32.lib comctl32.lib advapi32.lib LIB_SPECS = PP = pp.exe # Man page MAKEINFO = makeinfo OBJEXT = o PACKAGE = xcircuit PACKAGE_NAME = xcircuit PATH_SEPARATOR = \\ VERSION = 3.9 REVISION = 44 SHDLIB_EXT = .dll SHLIB_CFLAGS = -shared SHLIB_LIB_SPECS = SPICE_EXEC = ngspice.exe SUBDIRS = TCL_LIB_DIR = $(TCLDIR)\lib WISH_EXE = $(TCLDIR)\bin\wish$(TCLVERSION).exe WRAPPER_SCRIPT = XCIRCUIT_TARGET = $(BUILD_TYPE) X_EXTRA_LIBS = prefix = $(INSTALLDIR) bindir = $(prefix)/bin datadir = $(prefix) exec_prefix = $(prefix)/bin includedir = $(prefix)/include libdir = $(prefix)/lib libexecdir = $(prefix)/bin mandir = $(prefix)/doc mkdir_p = mkdir -p # Temporary directory (if not overridden by environment variable TMPDIR) tmpdir = $(TEMPDIR) # Directories for app-defaults file and manual page PATHNAMES = -DPROG_VERSION=$(VERSION) \ -DPROG_REVISION=$(REVISION) \ -DCAD_DIR=\"$(prefix)\" \ -DTEMP_DIR=\"$(tmpdir)\" \ -DSCRIPTS_DIR=\"$(scriptsdir)\" \ -DBUILTINS_DIR=$(BUILTINS_DIR) \ -DBUILTINS_FILE=\"$(BUILTINS_FILE)\" \ -DUSER_RC_FILE=\"$(USER_RC_FILE)\" \ -DPROLOGUE_DIR=$(BUILTINS_DIR) \ -DPROLOGUE_FILE=\"$(PROLOGUE_FILE)\" \ -DSTARTUP_FILE=\"$(STARTUP_FILE)\" \ -DLGF_LIB=\"$(LGF_LIB)\" xcircuit_SOURCES = elements.c events.c filelist.c files.c \ flate.c fontfile.c formats.c functions.c graphic.c \ help.c keybindings.c libraries.c menucalls.c \ netlist.c ngspice.c parameter.c python.c rcfile.c \ render.c schema.c selection.c svg.c \ text.c undo.c \ tclxcircuit.c tkSimple.c xcircuit.c w32x11.c xcircuit_DEPEND = $(XC_DEPEND) xcircuit_LDADD = man_MANS = lib/xcircuit.1 INCLUDES = $(INC_SPECS) # Library directory and files # librarydir = $(datadir)/$(PACKAGE)-$(VERSION) # scriptsdir = $(datadir)/$(PACKAGE)-$(VERSION) librarydir = $(datadir) scriptsdir = $(datadir) USER_RC_FILE = .xcircuitrc PROLOGUE_FILE = xcircps2.pro LGF_LIB = lgf.lps SIGNAL_LIB = signal.lps MUSIC_LIB = musiclib.lps FONTS_LPS = courier courieriso2 courieriso5 helvetica helveticaiso2 \ helveticaiso5 myfont symbol times_roman times_romaniso2 \ times_romaniso5 FONTS_XFE = courier courieriso courieriso2 courieriso5 helvetica \ helveticaiso helveticaiso2 helveticaiso5 myfont symbol \ times_roman times_romaniso times_romaniso2 times_romaniso5 SCRIPTS_PY = spice gettext pagebbox WRAPPER_INIT = xcircuit.tcl WRAPPER_OBJ = xcircuit$(SHDLIB_EXT) WRAPPER_SO = xcircuit.dll WRAPPER_SH = xcircuit.bat CONSOLE = tkcon.tcl CONSOLE_SCRIPT = console.tcl all: all-recursive .SUFFIXES: .SUFFIXES: .c .o .obj .rc .res .c.o: $(COMPILE) -c $< .c.obj: $(COMPILE) -c "$<" .rc.res: $(WINDRES) -o $@ -O coff $(XC_CFLAGS) -I $(XCCOMDIR) $< ################## # Building rules # ################## menudep$(EXEEXT): menudep.$(OBJEXT) $(CC) -o $@ menudep.$(OBJEXT) menudep.h: menudep$(EXEEXT) menus.h .\menudep$(EXEEXT) xcwrap.obj: xcwrap.c menudep.h $(CC) $(CPPFLAGS) $(CFLAGS) $(DEFS) $(PATHNAMES) $(INCLUDES) \ xcwrap.c -c -o xcwrap.$(OBJEXT) lib/tcl/xcircuit$(SHDLIB_EXT): xcwrap.$(OBJEXT) $(xcircuit_OBJECTS) $(xcircuit_DEPEND) -$(RM) lib\xcircuit$(SHDLIB_EXT) $(CC) $(CFLAGS) $(SHLIB_CFLAGS) -o $@ $(LDDL_FLAGS) xcwrap.$(OBJEXT) \ $(xcircuit_OBJECTS) $(xcircuit_LDADD) $(LDFLAGS) \ $(X_EXTRA_LIBS) $(EXTRA_LIBS) $(LIBS) $(EXTRA_LIB_SPECS) \ $(SHLIB_LIB_SPECS) xcircuit$(EXEEXT): $(xcircuit_OBJECTS) $(xcircuit_DEPEND) $(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) $(INCLUDES) $(xcircuit_OBJECTS) \ -o $@ $(LDFLAGS) $(LIBS) $(LIB_SPECS) $(EXTRA_LIB_SPECS) shell32.lib \ /link /SUBSYSTEM:CONSOLE xcircexec$(EXEEXT): xcircexec.$(OBJEXT) -$(RM) .\xcircexec$(EXEEXT) $(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) $(PATHNAMES) $(INCLUDES) \ xcircexec.c -o $@ $(LDFLAGS) \ $(LIBS) $(LIB_SPECS) $(EXTRA_LIB_SPECS) xcircuit-win32$(EXEEXT): xcircuit-win32.c resources.res $(CC) $(CFLAGS) $(CPPFLAGS) \ -DWISH_EXE=L\"$(subst \,/,$(WISH_EXE))\" \ -DBUILTINS_DIR=L$(BUILTINS_DIR) \ $(INCLUDES) xcircuit-win32.c resources.res \ -o $@ $(LDFLAGS) $(LIBS) $(LIB_SPECS) $(EXTRA_LIB_SPECS) -lshell32 -ladvapi32 tcl: @echo Making tcl library object $(MK) lib/tcl/xcircuit$(SHDLIB_EXT) $(MK) lib/$(INTERP_PATH)/$(WRAPPER_SH) $(MK) lib/$(INTERP_PATH)/$(WRAPPER_INIT) $(MK) xcircexec$(EXEEXT) $(MK) xcircuit-win32$(EXEEXT) win32: @echo Making win32 ifneq ($(USE_WIN32_COM),0) cd $(XCCOMDIR) && $(MK) && cd .. endif $(MK) xcircuit$(EXEEXT) help.c: menudep.h menucalls.c: menudep.h rcfile.c: menudep.h schema.c: menudep.h xcircuit.c: menudep.h parameter.c: menudep.h python.c: menudep.h tclxcircuit.c: menudep.h resources.rc: lib/pixmaps/xcircuit.ico $(PP): pp.c $(CC) -g -o $@ pp.c lib/$(INTERP_PATH)/$(WRAPPER_SH): $(PP) lib/$(INTERP_PATH)/$(WRAPPER_SH).in $(PP) $(PATHNAMES) -DXCLIBDIR=\"$(subst \,/,$(librarydir))\" \ -DWRAPPER_INIT=\"$(WRAPPER_INIT)\" -DCONSOLE=\"$(CONSOLE)\" \ -DCONSOLE_SCRIPT=\"$(CONSOLE_SCRIPT)\" \ -DSCRIPTSDIR=\"$(scriptsdir)\" \ -DTCLLIBDIR=\"$(subst \,/,$(TCL_LIB_DIR))\" \ -DWISH_EXE=\"$(subst \,/,$(WISH_EXE))\" \ lib/$(INTERP_PATH)/$(WRAPPER_SH).in > $@ lib/$(INTERP_PATH)/$(WRAPPER_INIT): $(PP) lib/$(INTERP_PATH)/$(WRAPPER_INIT).in $(PP) $(PATHNAMES) -DLIBDIR=\"$(subst \,/,$(librarydir))\" \ -DSCRIPTSDIR=\"$(scriptsdir)\" \ lib/$(INTERP_PATH)/$(WRAPPER_INIT).in > $@ lib/xcircuit.1: $(PP) lib/xcircuit.1.in $(PP) -DLIBDIR=\"$(libdir)\" \ -DSCRIPTSDIR=\"$(scriptsdir)\" \ -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) $(INSTALL_DATA) lib/$(PROLOGUE_FILE) $(DESTDIR)$(librarydir) $(INSTALL_DATA) lib/*.lps $(DESTDIR)$(librarydir) $(INSTALL_DATA) lib/$(INTERP_PATH)/$(STARTUP_FILE) $(DESTDIR)$(librarydir) @echo "Installing .lps font files" $(mkinstalldirs) $(DESTDIR)$(librarydir)/fonts $(foreach f,$(FONTS_LPS), $(INSTALL_DATA) lib/fonts/$(f).lps $(DESTDIR)$(librarydir)/fonts &) @echo "Installing .xfe font files" $(foreach f,$(FONTS_XFE), $(INSTALL_DATA) lib/fonts/$(f).xfe $(DESTDIR)$(librarydir)/fonts &) @echo "Installing scripts (if option enabled)" # Note that MacOS/Fink uses SHDLIB_EXT = .dylib but Tcl expects .so anyway. # 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 $(prefix) $(RMDIR) $(prefix) mkdir -p $(prefix) @echo "Installing standard XCircuit library files" $(MK) $(AM_MAKEFLAGS) install-data-local @echo "Installing Tcl files" $(INSTALL_DATA) lib/$(INTERP_PATH)/$(WRAPPER_OBJ) $(DESTDIR)$(librarydir) $(INSTALL_DATA) lib/$(INTERP_PATH)/*.tcl $(DESTDIR)$(librarydir) $(INSTALL_DATA) xcircexec$(EXEEXT) $(DESTDIR)$(librarydir) @echo "Installing pixmap images" $(mkinstalldirs) $(DESTDIR)$(librarydir)\pixmaps $(INSTALL_DATA) lib/pixmaps/*.gif $(DESTDIR)$(librarydir)/pixmaps $(INSTALL_DATA) lib/pixmaps/*.xbm $(DESTDIR)$(librarydir)/pixmaps @echo "Installing shell script as xcircuit executable" $(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) $(MK) $(AM_MAKEFLAGS) install-data-local "librarydir=$(prefix)" $(INSTALL_DATA) xcircuit$(EXEEXT) $(DESTDIR)$(prefix) clean: -$(RM) lib/$(INTERP_PATH)/$(WRAPPER_OBJ) lib/$(INTERP_PATH)/$(WRAPPER_SH) -for %%e in (ilk exp pdb lib) do @if exist lib/$(INTERP_PATH)/xcircuit.%%e $(RM) lib/$(INTERP_PATH)/xcircuit.%%e -$(RM) lib/$(INTERP_PATH)/$(WRAPPER_INIT) -for %%f in (*.$(OBJEXT) xcircexec$(EXEEXT) lib/xcircuit.1 xcircuit$(EXEEXT) xcircuit.suo) do $(RM) %%f -for %%e in (aps res) do $(RM) resources.%%e -for %%e in (ilk exp pdb lib) do @if exist xcircexec.%%e $(RM) xcircexec.%%e -for %%e in (ilk exp pdb lib) do @if exist xcircuit.%%e $(RM) xcircuit.%%e -for %%e in (ilk exp pdb lib) do @if exist pp.%%e $(RM) pp.%%e -for %%e in (ilk exp pdb lib exe) do @if exist xcircuit-win32.%%e $(RM) xcircuit-win32.%%e -$(RM) menudep$(EXEEXT) menudep.h -$(RM) pp$(EXEEXT) -$(RM) *.pdb -$(RM) *~ ifeq ($(BUILD_TYPE),win32) ifneq ($(USE_WIN32_COM),0) cd $(XCCOMDIR) && $(MK) clean && cd .. endif endif $(ALL_TARGET): $(MK) $(XCIRCUIT_TARGET) $(INSTALL_TARGET): $(MK) install-tcl examples: all ifeq ($(BUILD_TYPE),win32) ifneq ($(USE_WIN32_COM),0) cd $(XCCOMDIR) && $(MK) examples && cd .. endif endif ifeq ($(BUILD_TYPE),win32) xcircuit.h: xcwin32.h xcwin32.c: xcircuit.h else xcircuit.h: tkwin32.h endif elements.c: xcircuit.h events.c: xcircuit.h filelist.c: xcircuit.h files.c: xcircuit.h flate.c: xcircuit.h fontfile.c: xcircuit.h formats.c: xcircuit.h functions.c: xcircuit.h graphic.c: xcircuit.h help.c: xcircuit.h keybindings.c: xcircuit.h libraries.c: xcircuit.h menucalls.c: xcircuit.h netlist.c: xcircuit.h ngspice.c: xcircuit.h parameter.c: xcircuit.h python.c: xcircuit.h rcfile.c: xcircuit.h render.c: xcircuit.h schema.c: xcircuit.h selection.c: xcircuit.h text.c: xcircuit.h undo.c: xcircuit.h xcircuit.c: xcircuit.h xtgui.c: xcircuit.h xtfuncs.c: xcircuit.h ifeq ($(BUILD_TYPE),win32) ifneq ($(USE_WIN32_COM),0) resources.rc: $(XCCOMDIR)/XCCom.tlb endif endif