From 233e355cdd10cdb6b6490df727ba36ab150edf72 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Tue, 24 Aug 1999 20:10:33 +0000 Subject: [PATCH] Trying to get the execute bit set but default... git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3467 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- utils/wxPython/distrib/build.py | 735 -------------------------------- 1 file changed, 735 deletions(-) delete mode 100755 utils/wxPython/distrib/build.py diff --git a/utils/wxPython/distrib/build.py b/utils/wxPython/distrib/build.py deleted file mode 100755 index f56df7c746..0000000000 --- a/utils/wxPython/distrib/build.py +++ /dev/null @@ -1,735 +0,0 @@ -#!/usr/bin/env python -#---------------------------------------------------------------------------- -# Name: build.py -# Purpose: This script is used to build wxPython. It reads a build -# configuration file in the requested project directory and -# based on the contents of the file can build Makefiles for -# unix or win32, and can execute make with various options -# potentially automating the entire build/install/clean process -# from a single command. -# -# Author: Robin Dunn -# -# Created: 18-Aug-1999 -# RCS-ID: $Id$ -# Copyright: (c) 1999 by Total Control Software -# Licence: wxWindows license -#---------------------------------------------------------------------------- -""" -build.py - - This script is used to build wxPython. It reads a build configuration - file in the requested project directory and based on the contents of - the file can build Makefiles for unix or win32, and can execute make - with various options potentially automating the entire - build/install/clean process from a single command. - - The default action is to build the Makefile and exit. - -Options - -C dir CD to dir before doing anything - -B file Use file as the build configuration (default ./build.cfg) - -M file Use file as the name of the makefile to create - (default Makefile) - - -b Build the module (runs make) - -i Install the module (runs make install) - -c Cleanup (runs make clean) - -u Uninstall (runs make uninstall) - - -h Show help and exit - - -Configuration Files - - The build configuration file lists targets, source files and options - for the the build process. The contents of the build.cfg are used to - dynamically generate the Makefile. - - To prevent you from getting screwed when the default build.cfg is - updated, you can override the values in build.cfg by putting your - custom definitions in a file named build.local. You can also place a - build.local file in the parent directory, or even in the grandparent - directory for project-wide overrides. Finally, command-line arguments - of the form NAME=VALUE can also be used to override simple configuration - values. The order of evaluation is: - - 0. comman-line flags (-M, -b, etc.) - 1. ./build.cfg - 2. ../../build.local (if present) - 3. ../build.local (if present) - 4. ./build.local (if present) - 5. command-line NAME=VALUEs - - The config files are actually just Python files that get exec'ed in a - separate namespace which is then used later as a configuration object. - This keeps the build script simple in that it doesn't have to parse - anything, and the config files can be much more than just names and - values as pretty much any python code can be executed. The global - variables set in the config namespace are what are used later as - configuation values. - - -Configuration Options - - The following variables can be set in the config files. Only a few are - required, the rest will either have suitable defaults or will be - calculated from your current Python runtime environment. - - MODULE The name of the extension module to produce - SWIGFILES A list of files that should be run through SWIG - SWIGFLAGS Flags for SWIG - SOURCES Other C/C++ sources that should be part of the module - PYFILES Other Python files that should be installed with the module - CFLAGS Flags to be used by the compiler - LFLAGS Flags to be used at the link step - LIBS Libraries to be linked with - - OTHERCFLAGS Extra flags to append to CFLAGS - OTHERLFLAGS Extra flags to append to LFLAGS - OTHERSWIGFLAGS Extra flags to append to SWIGFLAGS - OTHERLIBS Other libraries to be linked with, in addition to LIBS - OTHERTARGETS Other targets to be placed on the default rule line - OTHERINSTALLTARGETS - Other targets to be placed on the install rule line - OTHERRULES This text is placed at the end of the makefile and - will typically be used for adding rules and such - DEFAULTRULE Text to be used for the default rule in the makefile - - TARGETDIR Destination for the install step - - MAKE The make program to use - MAKEFILE The name of the makefile - - runBuild Setting this to 1 is eqivalent to the -b flag - runInstall Setting this to 1 is eqivalent to the -i flag - runClean Setting this to 1 is eqivalent to the -c flag - runUninstall Setting this to 1 is eqivalent to the -u flag - - PYVERSION Version number of Python used in pathnames - PYPREFIX The root of the Python install - EXECPREFIX The root of the Python install for binary files - PYTHONLIB The Python link library - -""" - -import sys, os, string, getopt - -#---------------------------------------------------------------------------- -# This is really the wxPython version number, and will be placed in the -# Makefiles for use with the distribution related targets. - -__version__ = '2.1b3' - -#---------------------------------------------------------------------------- - -def main(args): - try: - opts, args = getopt.getopt(args[1:], 'C:B:M:bicu') - except getopt.error: - usage() - sys.exit(1) - - if not os.environ.has_key('WXWIN'): - print "WARNING: WXWIN is not set in the environment. WXDIR may not\n"\ - " be set properly in the makefile, you will have to \n"\ - " set the environment variable or override in build.local." - - bldCfg = 'build.cfg' - bldCfgLocal = 'build.local' - MAKEFILE = 'Makefile' - runBuild = 0 - runInstall = 0 - runClean = 0 - runUninstall = 0 - - for flag, value in opts: - if flag == '-C': os.chdir(value) - elif flag == '-B': bldCfgFile = value - elif flag == '-M': makefile = value - elif flag == '-b': runBuild = 1 - elif flag == '-c': runClean = 1 - elif flag == '-i': runInstall = 1 - elif flag == '-u': runUninstall = 1 - - elif flag == '-h': usage(); sys.exit(1) - else: usage(); sys.exit(1) - - config = BuildConfig(bldCfg = bldCfg, - bldCfgLocal = bldCfgLocal, - MAKEFILE = MAKEFILE, - runBuild = runBuild, - runInstall = runInstall, - runClean = runClean, - runUninstall = runUninstall) - - if config.readConfigFiles(args): - config.doFixups() - config.makeMakefile() - err = 0 - - if config.runBuild: - cmd = "%s -f %s" % (config.MAKE, config.MAKEFILE) - print "Running:", cmd - err = os.system(cmd) - - if not err and config.runInstall: - cmd = "%s -f %s install" % (config.MAKE, config.MAKEFILE) - print "Running:", cmd - err = os.system(cmd) - - - if not err and config.runClean: - cmd = "%s -f %s clean" % (config.MAKE, config.MAKEFILE) - print "Running:", cmd - err = os.system(cmd) - - if not err and config.runUninstall: - cmd = "%s -f %s uninstall" % (config.MAKE, config.MAKEFILE) - print "Running:", cmd - err = os.system(cmd) - - - -#---------------------------------------------------------------------------- - -def usage(): - print __doc__ - -#---------------------------------------------------------------------------- - -def swapslash(st): - if sys.platform != 'win32': - st = string.join(string.split(st, '\\'), '/') - return st - -#---------------------------------------------------------------------------- - -def splitlines(st): - return string.join(string.split(string.strip(st), ' '), ' \\\n\t') - -#---------------------------------------------------------------------------- - -class BuildConfig: - def __init__(self, **kw): - self.__dict__.update(kw) - self.setDefaults() - - #------------------------------------------------------------ - def setDefaults(self): - self.VERSION = __version__ - self.MODULE = '' - self.SWIGFILES = [] - self.SWIGFLAGS = '-c++ -shadow -python -dnone -I$(WXPSRCDIR)' - self.SOURCES = [] - self.PYFILES = [] - self.LFLAGS = '' - self.OTHERCFLAGS = '' - self.OTHERLFLAGS = '' - self.OTHERSWIGFLAGS = '' - self.OTHERLIBS = '' - self.OTHERTARGETS = '' - self.OTHERINSTALLTARGETS = '' - self.OTHERRULES = '' - self.DEFAULTRULE = 'default: $(GENCODEDIR) $(TARGET)' - self.PYVERSION = sys.version[:3] - self.PYPREFIX = sys.prefix - self.EXECPREFIX = sys.exec_prefix - self.WXDIR = '$(WXWIN)' - self.FINAL = '0' - self.WXP_USE_THREAD = '1' - self.WXUSINGDLL = '1' - self.OTHERDEP = '' - self.WXPSRCDIR = '$(WXDIR)/utils/wxPython/src' - - - if sys.platform == 'win32': - self.MAKE = 'nmake' - self.PYTHONLIB = '$(PYPREFIX)\\libs\\python15.lib' - self.TARGETDIR = '$(PYPREFIX)\\wxPython' - self.LIBS = '$(PYTHONLIB) $(WXPSRCDIR)\wxc.lib' - self.GENCODEDIR = 'msw' - self.SWIGTOOLKITFLAG = '-D__WXMSW__' - self.OBJEXT = '.obj' - self.TARGET = '$(MODULE).pyd' - self.CFLAGS = '-I$(PYPREFIX)\include -I$(WXPSRCDIR) -I. /Fp$(MODULE).pch /YXhelpers.h -DSWIG_GLOBAL -DHAVE_CONFIG_H $(THREAD) ' - self.LFLAGS = '$(DEBUGLFLAGS) /DLL /subsystem:windows,3.50 /machine:I386 /nologo' - self.RESFILE = '' - self.RESRULE = '' - self.OVERRIDEFLAGS = '/GX-' - - else: - self.MAKE = 'make' - self.PYLIB = '$(EXECPREFIX)/lib/python$(PYVERSION)' - self.LIBPL = '$(PYLIB)/config' - self.PYTHONLIB = '$(LIBPL)/libpython$(PYVERSION).a' - self.TARGETDIR = '$(EXECPREFIX)/lib/python$(PYVERSION)/site-packages/wxPython' - self.TARGET = '$(MODULE)module$(SO)' - self.OBJEXT = '.o' - self.HELPERLIB = 'wxPyHelpers' - self.HELPERLIBDIR = '/usr/local/lib' - self.CFLAGS = '-DSWIG_GLOBAL -DHAVE_CONFIG_H $(THREAD) -I. '\ - '`wx-config --cflags` -I$(PYINCLUDE) -I$(EXECINCLUDE) '\ - '-I$(WXPSRCDIR)' - self.LFLAGS = '-L$(WXPSRCDIR) `wx-config --libs`' - self.LIBS = '-l$(HELPERLIB)' - - # **** What to do when I start supporting Motif, etc.??? - self.GENCODEDIR = 'gtk' - self.SWIGTOOLKITFLAG = '-D__WXGTK__' - - # Extract a few things from Python's Makefile... - try: - filename = os.path.join(self.EXECPREFIX, - 'lib/python'+self.PYVERSION, - 'config/Makefile') - mfText = string.split(open(filename, 'r').read(), '\n') - except IOError: - raise SystemExit, "Python development files not found" - - self.CCC = self.findMFValue(mfText, 'CCC') - self.CC = self.findMFValue(mfText, 'CC') - self.OPT = self.findMFValue(mfText, 'OPT') - self.SO = self.findMFValue(mfText, 'SO') - self.LDSHARED = self.findMFValue(mfText, 'LDSHARED') - self.CCSHARED = self.findMFValue(mfText, 'CCSHARED') - #self.LINKFORSHARED = self.findMFValue(mfText, 'LINKFORSHARED') - #self. = self.findMFValue(mfText, '') - #self. = self.findMFValue(mfText, '') - - - # The majority of cases will require LDSHARED to be - # modified to use the C++ driver instead of the C driver - # for linking. We'll try to do it here and if we goof up - # then the user can correct it in their build.local file. - self.LDSHARED = string.join(['$(CCC)'] + - string.split(self.LDSHARED, ' ')[1:], - ' ') - - - #------------------------------------------------------------ - def doFixups(self): - # This is called after the config files have been evaluated - # so we can do some sanity checking... - if sys.platform != 'win32': - if not self.CCC: - print "Warning: C++ compiler not specified (CCC). Assuming c++" - self.CCC = 'c++' - if not self.CC: - print "Warning: C compiler not specified (CC). Assuming cc" - self.CC = 'cc' - - #------------------------------------------------------------ - def findMFValue(self, mfText, st): - # Find line begining with st= and return the value - # Regex would probably be to cooler way to do this, but - # I think this is the most understandable. - for line in mfText: - if string.find(line, st+'=') == 0: - st = string.strip(line[len(st)+1:]) - return st - return None - - #------------------------------------------------------------ - def makeMakefile(self): - - # make a list of object file names - objects = "" - for name in self.SWIGFILES: - objects = objects + os.path.splitext(name)[0] + self.OBJEXT + ' ' - for name in self.SOURCES: - obj = os.path.basename(name) - objects = objects + os.path.splitext(obj)[0] + self.OBJEXT + ' ' - self.OBJECTS = splitlines(objects) - - - # now build the text for the dependencies - depends = "" - for name in self.SWIGFILES: - text = '$(GENCODEDIR)/%s.cpp $(GENCODEDIR)/%s.py : %s.i\n' \ - '$(TARGETDIR)\\%s.py : $(GENCODEDIR)\\%s.py\n' % \ - tuple([os.path.splitext(name)[0]] * 5) - depends = depends + text - for name in self.PYFILES: - text = '$(TARGETDIR)\\%s.py : %s.py\n' % \ - tuple([os.path.splitext(name)[0]] * 2) - depends = depends + text - self.DEPENDS = swapslash(depends) - - - # and the list of .py files - pymodules = "" - for name in self.SWIGFILES: - pymodules = pymodules + '$(TARGETDIR)\\%s.py ' % os.path.splitext(name)[0] - for name in self.PYFILES: - pymodules = pymodules + '$(TARGETDIR)\\%s.py ' % os.path.splitext(name)[0] - self.PYMODULES = splitlines(swapslash(pymodules)) - - - - # finally, build the makefile - if sys.platform == 'win32': - if self.RESFILE: - self.RESFILE = '$(MODULE).res' - self.RESRULE = '$(MODULE).res : $(MODULE).rc $(WXDIR)\\include\\wx\\msw\\wx.rc\n\t'\ - '$(rc) -r /i$(WXDIR)\\include -fo$@ $(MODULE).rc' - text = win32Template % self.__dict__ - else: - text = unixTemplate % self.__dict__ - f = open(self.MAKEFILE, 'w') - f.write(text) - f.close() - - print "Makefile created: ", self.MAKEFILE - - - #------------------------------------------------------------ - def readConfigFiles(self, args): - return self.processFile(self.bldCfg, 1) and \ - self.processFile(os.path.join('../..', self.bldCfgLocal)) and \ - self.processFile(os.path.join('..', self.bldCfgLocal)) and \ - self.processFile(os.path.join('.', self.bldCfgLocal)) and \ - self.processArgs(args) - - #------------------------------------------------------------ - def processFile(self, filename, required=0): - try: - text = open(filename, 'r').read() - except IOError: - if required: - print "Unable to open %s" % filename - return 0 - else: - return 1 - - try: - exec(text, self.__dict__) - except: - print "Error evaluating %s" % filename - import traceback - traceback.print_exc() - return 0 - return 1 - - - #------------------------------------------------------------ - def processArgs(self, args): - try: - for st in args: - pair = string.split(st, '=') - name = pair[0] - value = pair[1] - self.__dict__[name] = value - except: - print "Error parsing command-line: %s" % st - return 0 - - return 1 - - - #------------------------------------------------------------ - - - - - -#---------------------------------------------------------------------------- -#---------------------------------------------------------------------------- - -win32Template = ''' -#---------------------------------------------------------------------- -# This makefile was autogenerated from build.py. Your changes will be -# lost if the generator is run again. You have been warned. -#---------------------------------------------------------------------- - -WXDIR = %(WXDIR)s -VERSION = %(VERSION)s -MODULE = %(MODULE)s -SWIGFLAGS = %(SWIGFLAGS)s %(SWIGTOOLKITFLAG)s %(OTHERSWIGFLAGS)s -CFLAGS = %(CFLAGS)s %(OTHERCFLAGS)s -LFLAGS = %(LFLAGS)s %(OTHERLFLAGS)s -PYVERSION = %(PYVERSION)s -PYPREFIX = %(PYPREFIX)s -EXECPREFIX = %(EXECPREFIX)s -PYTHONLIB = %(PYTHONLIB)s -FINAL = %(FINAL)s -WXP_USE_THREAD = %(WXP_USE_THREAD)s -WXUSINGDLL = %(WXUSINGDLL)s -GENCODEDIR = %(GENCODEDIR)s -RESFILE = %(RESFILE)s -WXPSRCDIR = %(WXPSRCDIR)s - - -TARGETDIR = %(TARGETDIR)s - -OBJECTS = %(OBJECTS)s -PYMODULES = %(PYMODULES)s -TARGET = %(TARGET)s - - - - -!if "$(FINAL)" == "0" -DEBUGLFLAGS = /DEBUG /INCREMENTAL:YES -!else -DEBUGLFLAGS = /INCREMENTAL:NO -!endif -!if "$(WXP_USE_THREAD)" == "1" -THREAD=-DWXP_USE_THREAD=1 -!endif - - - - -NOPCH=1 -OVERRIDEFLAGS=%(OVERRIDEFLAGS)s %(OTHERCFLAGS)s -EXTRAFLAGS = %(CFLAGS)s - -LFLAGS = %(LFLAGS)s %(OTHERLFLAGS)s -EXTRALIBS = %(LIBS)s %(OTHERLIBS)s - -#---------------------------------------------------------------------- - -!include $(WXDIR)\\src\\makevc.env - -#---------------------------------------------------------------------- - -%(DEFAULTRULE)s %(OTHERTARGETS)s - - - -install: $(TARGETDIR) $(TARGETDIR)\\$(TARGET) pycfiles %(OTHERINSTALLTARGETS)s - -clean: - -erase *.obj - -erase *.exe - -erase *.res - -erase *.map - -erase *.sbr - -erase *.pdb - -erase *.pch - -erase $(MODULE).exp - -erase $(MODULE).lib - -erase $(MODULE).ilk - -erase $(TARGET) - - -uninstall: - -erase $(TARGETDIR)\\$(TARGET) - -erase $(PYMODULES) - -#---------------------------------------------------------------------- -# implicit rule for compiling .cpp and .c files -{}.cpp{}.obj: - $(cc) @<< -$(CPPFLAGS) /c /Tp $< -<< - -{$(GENCODEDIR)}.cpp{}.obj: - $(cc) @<< -$(CPPFLAGS) /c /Tp $< -<< - -{}.c{}.obj: - $(cc) @<< -$(CPPFLAGS) /c $< -<< - -.SUFFIXES : .i .py - -# Implicit rules to run SWIG -{}.i{$(GENCODEDIR)}.cpp: - swig $(SWIGFLAGS) -c -o $@ $< - -{}.i{$(GENCODEDIR)}.py: - swig $(SWIGFLAGS) -c -o $(GENCODEDIR)\\tmp_wrap.cpp $< - -erase $(GENCODEDIR)\\tmp_wrap.cpp - - -{$(GENCODEDIR)}.py{$(TARGETDIR)}.py: - copy $< $@ - -{}.py{$(TARGETDIR)}.py: - copy $< $@ - -#---------------------------------------------------------------------- - -$(TARGET) : $(DUMMYOBJ) $(WXLIB) $(OBJECTS) $(RESFILE) - $(link) @<< -/out:$@ -$(LFLAGS) /def:$(MODULE).def /implib:./$(MODULE).lib -$(DUMMYOBJ) $(OBJECTS) $(RESFILE) -$(LIBS) -<< - - -%(RESRULE)s - - -$(TARGETDIR)\\$(TARGET) : $(TARGET) - copy $(TARGET) $@ - - -pycfiles : $(PYMODULES) - $(EXECPREFIX)\\python $(PYPREFIX)\\Lib\\compileall.py -l $(TARGETDIR) - $(EXECPREFIX)\\python -O $(PYPREFIX)\Lib\\compileall.py -l $(TARGETDIR) - - -$(TARGETDIR) : - mkdir $(TARGETDIR) - -$(GENCODEDIR): - mkdir $(GENCODEDIR) - -#---------------------------------------------------------------------- - -%(DEPENDS)s - -#---------------------------------------------------------------------- - - -%(OTHERRULES)s -''' - -#---------------------------------------------------------------------------- -#---------------------------------------------------------------------------- -#---------------------------------------------------------------------------- - -unixTemplate = ''' -#---------------------------------------------------------------------- -# This makefile was autogenerated from build.py. Your changes will be -# lost if the generator is run again. You have been warned. -#---------------------------------------------------------------------- - - - -WXDIR = %(WXDIR)s -VERSION = %(VERSION)s -MODULE = %(MODULE)s -SWIGFLAGS = %(SWIGFLAGS)s %(SWIGTOOLKITFLAG)s %(OTHERSWIGFLAGS)s -CFLAGS = %(CFLAGS)s %(OTHERCFLAGS)s -LFLAGS = %(LFLAGS)s %(OTHERLFLAGS)s -LIBS = %(LIBS)s %(OTHERLIBS)s -PYVERSION = %(PYVERSION)s -PYPREFIX = %(PYPREFIX)s -EXECPREFIX = %(EXECPREFIX)s -PYINCLUDE = $(PYPREFIX)/include/python$(PYVERSION) -EXECINCLUDE = $(EXECPREFIX)/include/python$(PYVERSION) -PYLIB = %(PYLIB)s -LIBPL = %(LIBPL)s -PYTHONLIB = %(PYTHONLIB)s -FINAL = %(FINAL)s -WXP_USE_THREAD = %(WXP_USE_THREAD)s -GENCODEDIR = %(GENCODEDIR)s -WXPSRCDIR = %(WXPSRCDIR)s -HELPERLIB = %(HELPERLIB)s -HELPERLIBDIR = %(HELPERLIBDIR)s - -TARGETDIR = %(TARGETDIR)s - - -CCC = %(CCC)s -CC = %(CC)s -OPT = %(OPT)s -SO = %(SO)s -LDSHARED = %(LDSHARED)s -CCSHARED = %(CCSHARED)s - - -OBJECTS = %(OBJECTS)s -PYMODULES = %(PYMODULES)s -TARGET = %(TARGET)s - - -ifeq ($(WXP_USE_THREAD), 1) -THREAD=-DWXP_USE_THREAD -endif - -#---------------------------------------------------------------------- - -%(DEFAULTRULE)s %(OTHERTARGETS)s - -install: $(TARGETDIR) $(TARGETDIR)/$(TARGET) pycfiles %(OTHERINSTALLTARGETS)s - -clean: - -rm -f *.o *.so *~ - -rm -f $(TARGET) - -uninstall: - -rm -f $(TARGETDIR)/$(TARGET) - -rm -f $(PYMODULES) - - -#---------------------------------------------------------------------- - -%%.o : %%.cpp - $(CCC) $(CCSHARED) $(CFLAGS) $(OTHERCFLAGS) -c $< - -%%.o : $(GENCODEDIR)/%%.cpp - $(CCC) $(CCSHARED) $(CFLAGS) $(OTHERCFLAGS) -c $< - -%%.o : %%.c - $(CC) $(CCSHARED) $(CFLAGS) $(OTHERCFLAGS) -c $< - -%%.o : $(GENCODEDIR)/%%.c - $(CC) $(CCSHARED) $(CFLAGS) $(OTHERCFLAGS) -c $< - -$(GENCODEDIR)/%%.cpp : %%.i - swig $(SWIGFLAGS) -c -o $@ $< - -$(GENCODEDIR)/%%.py : %%.i - swig $(SWIGFLAGS) -c -o $(GENCODEDIR)/tmp_wrap.cpp $< - rm $(GENCODEDIR)/tmp_wrap.cpp - -$(TARGETDIR)/%% : %% - cp -f $< $@ - -$(TARGETDIR)/%% : $(GENCODEDIR)/%% - cp -f $< $@ - -#---------------------------------------------------------------------- - -%(DEPENDS)s - -#---------------------------------------------------------------------- - -$(TARGET) : $(OBJECTS) - $(LDSHARED) $(OBJECTS) $(LFLAGS) $(LIBS) $(OTHERLIBS) -o $(TARGET) - - - -pycfiles : $(PYMODULES) - $(EXECPREFIX)/bin/python $(PYLIB)/compileall.py -l $(TARGETDIR) - $(EXECPREFIX)/bin/python -O $(PYLIB)/compileall.py -l $(TARGETDIR) - - -$(TARGETDIR) : - mkdir $(TARGETDIR) - -$(GENCODEDIR): - mkdir $(GENCODEDIR) - -#---------------------------------------------------------------------- - - -%(OTHERRULES)s - - - -''' - - -#---------------------------------------------------------------------------- - -if __name__ == '__main__': - main(sys.argv) - -#---------------------------------------------------------------------------- - - - - - - - - -- 2.45.2