Modified build to make only one extension module, including contribs,

which can each be turned on or off at compile time


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@8638 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2000-10-25 21:17:52 +00:00
parent 285c885e12
commit f658d298bb
10 changed files with 340 additions and 96 deletions

View File

@@ -39,7 +39,7 @@ Okay, now on the the fun stuff...
A. First of all, check and see if you've already got glib/gtk+ on your A. First of all, check and see if you've already got glib/gtk+ on your
system, all the Linux distributions I know of come with it, at system, all the Linux distributions I know of come with it, at
least as an option. Look for libglib* and libgtk* in your system's least as an option. Look for libglib.* and libgtk.* in your system's
standard library directories. You'll also need the headers and standard library directories. You'll also need the headers and
config scripts in order to build things that use glib/gtk. Try config scripts in order to build things that use glib/gtk. Try
running gtk-config: running gtk-config:
@@ -120,7 +120,7 @@ D. If using the sources (either from the tarball or from CVS) then
macro. You'll get some extra asserts, failure logging, etc. macro. You'll get some extra asserts, failure logging, etc.
E. Now just compile and install. You need to use GNU make, so if your E. Now just compile and install. You need to use GNU make, so if your
system has something else get GNU make and build, install it and system has something else get GNU make and build and install it and
use it instead of your system's default make command. use it instead of your system's default make command.
make make
@@ -147,7 +147,7 @@ A. You have the same options (and same advantages/disadvantages) for
above) in the wxWindows/wxPython directory. above) in the wxWindows/wxPython directory.
B. As mentioned previouslly, wxPython is built with the standard B. As mentioned previouslly, wxPython is built with the standard
Python Distutils tool. If you are using Python 2.0c1 or later you Python Distutils tool. If you are using Python 2.0 or later you
are all set, otherwise you need to download and install Distutils are all set, otherwise you need to download and install Distutils
1.0 from http://www.python.org/sigs/distutils-sig/. 1.0 from http://www.python.org/sigs/distutils-sig/.
@@ -193,10 +193,10 @@ C. Change to the root wxPython directory and look at the setup.py
file. This is the script that configures and defines all the file. This is the script that configures and defines all the
information that Distutils needs to build wxPython. There are some information that Distutils needs to build wxPython. There are some
options near the begining of the script that you may want or need options near the begining of the script that you may want or need
to change based on what options you have selected up to this point, to change based on your system and what options you have selected
(sources from tar.gz or from CVS, etc.) You can either change up to this point, (sources from tar.gz or from CVS, etc.) You can
these flags directly in setup.py or supply them on the either change these flags directly in setup.py or supply them on
command-line. the command-line.
BUILD_GLCANVAS Set to zero if you don't want to build the BUILD_GLCANVAS Set to zero if you don't want to build the
Open GL canvas extension module. If you don't Open GL canvas extension module. If you don't
@@ -215,18 +215,18 @@ C. Change to the root wxPython directory and look at the setup.py
will be executed to regenerate the wrapper C++ will be executed to regenerate the wrapper C++
and shadow python files. and shadow python files.
IN_CVS_TREE If you using the CVS version of the wxWindows IN_CVS_TREE If you are using the CVS version of the
and wxPython sources then you will need to set wxWindows and wxPython sources then you will
this flag to non-zero. This is needed because need to set this flag to non-zero. This is
some source files from the wxWindows tree are needed because some source files from the
copied to be under the wxPython tree in order wxWindows tree are copied to be under the
to keep Distutils happy. With this flag set wxPython tree in order to keep Distutils happy.
then setup.py will automatically keep these With this flag set then setup.py will
copied sources up to date if the original automatically keep these copied sources up to
version is ever updated. If you are using the date if the original version is ever updated.
tar.gz version of the Python sources then these If you are using the tar.gz version of the
copied sources are already present in your Python sources then these copied sources are
source tree. already present in your source tree.
D. To build and install wxPython you simply need to execute the D. To build and install wxPython you simply need to execute the

View File

@@ -218,18 +218,18 @@ B. Change to the root wxPython directory and look at the setup.py
will be executed to regenerate the wrapper C++ will be executed to regenerate the wrapper C++
and shadow python files. and shadow python files.
IN_CVS_TREE If you using the CVS version of the wxWindows IN_CVS_TREE If you are using the CVS version of the
and wxPython sources then you will need to set wxWindows and wxPython sources then you will
this flag to non-zero. This is needed because need to set this flag to non-zero. This is
some source files from the wxWindows tree are needed because some source files from the
copied to be under the wxPython tree in order wxWindows tree are copied to be under the
to keep Distutils happy. With this flag set wxPython tree in order to keep Distutils happy.
then setup.py will automatically keep these With this flag set then setup.py will
copied sources up to date if the original automatically keep these copied sources up to
version is ever updated. If you are using the date if the original version is ever updated.
tar.gz version of the Python sources then these If you are using the tar.gz version of the
copied sources are already present in your Python sources then these copied sources are
source tree. already present in your source tree.
C. To build and install wxPython you simply need to execute the C. To build and install wxPython you simply need to execute the

View File

@@ -38,6 +38,11 @@ Removed the old python sizers.
Added __add__, __sub__ and __cmp__ (equality check only) for wxPoint Added __add__, __sub__ and __cmp__ (equality check only) for wxPoint
and wxRealPoint. and wxRealPoint.
Changed the build to make one big extension module instead of one for
the core and each contrib. This allowed me to do away with the
libwxPyHelpers.so on unix systems.
New in 2.2.1 New in 2.2.1

View File

@@ -0,0 +1,24 @@
/* Definitions for Windows/Unix exporting */
#if defined(__WIN32__)
# if defined(_MSC_VER)
# define SWIGEXPORT(a) __declspec(dllexport) a
# else
# if defined(__BORLANDC__)
# define SWIGEXPORT(a) a _export
# else
# define SWIGEXPORT(a) a
# endif
# endif
#else
# define SWIGEXPORT(a) a
#endif
#ifdef __cplusplus
extern "C"
#endif
SWIGEXPORT(void) initglcanvasc() {
}

View File

@@ -0,0 +1,24 @@
/* Definitions for Windows/Unix exporting */
#if defined(__WIN32__)
# if defined(_MSC_VER)
# define SWIGEXPORT(a) __declspec(dllexport) a
# else
# if defined(__BORLANDC__)
# define SWIGEXPORT(a) a _export
# else
# define SWIGEXPORT(a) a
# endif
# endif
#else
# define SWIGEXPORT(a) a
#endif
#ifdef __cplusplus
extern "C"
#endif
SWIGEXPORT(void) initoglc() {
}

View File

@@ -0,0 +1,24 @@
/* Definitions for Windows/Unix exporting */
#if defined(__WIN32__)
# if defined(_MSC_VER)
# define SWIGEXPORT(a) __declspec(dllexport) a
# else
# if defined(__BORLANDC__)
# define SWIGEXPORT(a) a _export
# else
# define SWIGEXPORT(a) a
# endif
# endif
#else
# define SWIGEXPORT(a) a
#endif
#ifdef __cplusplus
extern "C"
#endif
SWIGEXPORT(void) initstc_c() {
}

View File

@@ -11,4 +11,4 @@ release = 1
group = Development/Languages/Python group = Development/Languages/Python
packager = Robin Dunn <robin@alldunn.com> packager = Robin Dunn <robin@alldunn.com>
vendor = wxPROs vendor = wxPROs
doc_files = README.txt BUILD.txt CHANGES.txt licence/ doc_files = README.txt BUILD.win32.txt BUILD.unix.txt CHANGES.txt licence/

View File

@@ -177,8 +177,7 @@ elif os.name == 'posix':
os.popen('gtk-config --cflags', 'r').read()[:-1] os.popen('gtk-config --cflags', 'r').read()[:-1]
cflags = string.split(cflags) cflags = string.split(cflags)
lflags = os.popen('wx-config --libs', 'r').read()[:-1] + ' ' + \ lflags = os.popen('wx-config --libs', 'r').read()[:-1]
os.popen('gtk-config --libs', 'r').read()[:-1]
lflags = string.split(lflags) lflags = string.split(lflags)
@@ -228,7 +227,7 @@ else:
rc_file = [] rc_file = []
ext = Extension('wxc', ['src/helpers.cpp', wxext = ext = Extension('wxc', ['src/helpers.cpp',
'src/libpy.c', 'src/libpy.c',
] + rc_file + swig_sources, ] + rc_file + swig_sources,
@@ -256,7 +255,9 @@ if os.name == 'nt':
# Define the GLCanvas extension module # Define the GLCanvas extension module
#---------------------------------------------------------------------- #----------------------------------------------------------------------
if BUILD_GLCANVAS: if not BUILD_GLCANVAS:
wxext.sources = wxext.sources + ['contrib/glcanvas/stub.cpp']
else:
print 'Preparing GLCANVAS...' print 'Preparing GLCANVAS...'
location = 'contrib/glcanvas' location = 'contrib/glcanvas'
swig_files = ['glcanvas.i'] swig_files = ['glcanvas.i']
@@ -271,26 +272,18 @@ if BUILD_GLCANVAS:
else: else:
gl_libs = ['wx_gtk_gl', 'GL', 'GLU'] gl_libs = ['wx_gtk_gl', 'GL', 'GLU']
ext = Extension('glcanvasc', wxext.sources = wxext.sources + swig_sources
swig_sources, wxext.libraries = wxext.libraries + gl_libs
include_dirs = includes,
define_macros = defines,
library_dirs = libdirs,
libraries = libs + gl_libs,
extra_compile_args = cflags,
extra_link_args = lflags,
)
wxpExtensions.append(ext)
#---------------------------------------------------------------------- #----------------------------------------------------------------------
# Define the OGL extension module # Define the OGL extension module
#---------------------------------------------------------------------- #----------------------------------------------------------------------
if BUILD_OGL:
if not BUILD_OGL:
wxext.sources = wxext.sources + ['contrib/ogl/stub.cpp']
else:
print 'Preparing OGL...' print 'Preparing OGL...'
location = 'contrib/ogl' location = 'contrib/ogl'
OGLLOC = location + '/contrib/src/ogl' OGLLOC = location + '/contrib/src/ogl'
@@ -307,38 +300,32 @@ if BUILD_OGL:
contrib_copy_tree(WXDIR + '/contrib/include/wx/ogl', OGLINC+'/wx/ogl') contrib_copy_tree(WXDIR + '/contrib/include/wx/ogl', OGLINC+'/wx/ogl')
contrib_copy_tree(WXDIR + '/contrib/src/ogl', OGLLOC) contrib_copy_tree(WXDIR + '/contrib/src/ogl', OGLLOC)
ext = Extension('oglc', [location + '/oglhelpers.cpp', # add items to the core extension module definition
'%s/basic.cpp' % OGLLOC, wxext.sources = wxext.sources + [location + '/oglhelpers.cpp',
'%s/bmpshape.cpp' % OGLLOC, '%s/basic.cpp' % OGLLOC,
'%s/composit.cpp' % OGLLOC, '%s/bmpshape.cpp' % OGLLOC,
'%s/divided.cpp' % OGLLOC, '%s/composit.cpp' % OGLLOC,
'%s/lines.cpp' % OGLLOC, '%s/divided.cpp' % OGLLOC,
'%s/misc.cpp' % OGLLOC, '%s/lines.cpp' % OGLLOC,
'%s/basic2.cpp' % OGLLOC, '%s/misc.cpp' % OGLLOC,
'%s/canvas.cpp' % OGLLOC, '%s/basic2.cpp' % OGLLOC,
'%s/constrnt.cpp' % OGLLOC, '%s/canvas.cpp' % OGLLOC,
'%s/drawn.cpp' % OGLLOC, '%s/constrnt.cpp' % OGLLOC,
'%s/mfutils.cpp' % OGLLOC, '%s/drawn.cpp' % OGLLOC,
'%s/ogldiag.cpp' % OGLLOC, '%s/mfutils.cpp' % OGLLOC,
] + swig_sources, '%s/ogldiag.cpp' % OGLLOC,
] + swig_sources
include_dirs = [OGLINC] + includes, wxext.include_dirs = wxext.include_dirs + [OGLINC]
define_macros = defines,
library_dirs = libdirs,
libraries = libs,
extra_compile_args = cflags,
extra_link_args = lflags,
)
wxpExtensions.append(ext)
#---------------------------------------------------------------------- #----------------------------------------------------------------------
# Define the STC extension module # Define the STC extension module
#---------------------------------------------------------------------- #----------------------------------------------------------------------
if BUILD_STC:
if not BUILD_STC:
wxext.sources = wxext.sources + ['contrib/stc/stub.cpp']
else:
print 'Preparing STC...' print 'Preparing STC...'
location = 'contrib/stc' location = 'contrib/stc'
STCLOC = location + '/contrib/src/stc' STCLOC = location + '/contrib/src/stc'
@@ -361,19 +348,18 @@ if BUILD_STC:
copy_file(location+'/stc.py', PKGDIR, update=1, verbose=1) copy_file(location+'/stc.py', PKGDIR, update=1, verbose=1)
# add some include dirs to the standard set # add some include dirs to the standard set
stc_includes = includes[:] stc_includes = [ '%s/scintilla/include' % STCLOC,
stc_includes.append('%s/scintilla/include' % STCLOC) '%s/scintilla/src' % STCLOC,
stc_includes.append('%s/scintilla/src' % STCLOC) STCINC ]
stc_includes.append(STCINC)
# and some macro definitions # and some macro definitions
stc_defines = defines[:] stc_defines = [ ('__WX__', None),
stc_defines.append( ('__WX__', None) ) ('SCI_LEXER', None) ]
stc_defines.append( ('SCI_LEXER', None) )
ext = Extension('stc_c', # add items to the core extension module definition
['%s/scintilla/src/AutoComplete.cxx' % STCLOC, wxext.sources = wxext.sources + [
'%s/scintilla/src/AutoComplete.cxx' % STCLOC,
'%s/scintilla/src/CallTip.cxx' % STCLOC, '%s/scintilla/src/CallTip.cxx' % STCLOC,
'%s/scintilla/src/CellBuffer.cxx' % STCLOC, '%s/scintilla/src/CellBuffer.cxx' % STCLOC,
'%s/scintilla/src/ContractionState.cxx' % STCLOC, '%s/scintilla/src/ContractionState.cxx' % STCLOC,
@@ -403,19 +389,11 @@ if BUILD_STC:
'%s/PlatWX.cpp' % STCLOC, '%s/PlatWX.cpp' % STCLOC,
'%s/ScintillaWX.cpp' % STCLOC, '%s/ScintillaWX.cpp' % STCLOC,
'%s/stc.cpp' % STCLOC, '%s/stc.cpp' % STCLOC,
] + swig_sources, ] + swig_sources
include_dirs = stc_includes, wxext.include_dirs = wxext.include_dirs + stc_includes
define_macros = stc_defines, wxext.define_macros = wxext.define_macros + stc_defines
library_dirs = libdirs,
libraries = libs,
extra_compile_args = cflags,
extra_link_args = lflags,
)
wxpExtensions.append(ext)
#---------------------------------------------------------------------- #----------------------------------------------------------------------
@@ -445,6 +423,9 @@ setup(name = PKGDIR,
#---------------------------------------------------------------------- #----------------------------------------------------------------------
#----------------------------------------------------------------------
#----------------------------------------------------------------------
# The pre-distutils binary distributions of wxPython included the demo # The pre-distutils binary distributions of wxPython included the demo
# as a subdirectory of the package dir. This doesn't really make sense # as a subdirectory of the package dir. This doesn't really make sense
# for Linux/Unix platforms as it's not part of the package, and the user # for Linux/Unix platforms as it's not part of the package, and the user
@@ -473,3 +454,173 @@ setup(name = PKGDIR,
## ) ## )
## ], ## ],
#----------------------------------------------------------------------
#----------------------------------------------------------------------
#----------------------------------------------------------------------
# Originally I was building separate extension module .so's for the
# CORE and the various contribs. Because of shared library issues I've
# decided to combine things into one .so as implemented above, but as
# I'm still not entirely convinced that this is the right thing to do
# I will keep the old code around for a while, but commented out below.
## if BUILD_GLCANVAS:
## print 'Preparing GLCANVAS...'
## location = 'contrib/glcanvas'
## swig_files = ['glcanvas.i']
## swig_sources = run_swig(swig_files, location, GENDIR, PKGDIR,
## USE_SWIG, swig_force, swig_args)
## gl_libs = []
## if os.name == 'posix':
## if '-D__WXDEBUG__' in cflags:
## gl_libs = ['wx_gtkd_gl', 'GL', 'GLU']
## else:
## gl_libs = ['wx_gtk_gl', 'GL', 'GLU']
## ext = Extension('glcanvasc',
## swig_sources,
## include_dirs = includes,
## define_macros = defines,
## library_dirs = libdirs,
## libraries = libs + gl_libs,
## extra_compile_args = cflags,
## extra_link_args = lflags,
## )
## wxpExtensions.append(ext)
## if BUILD_OGL:
## print 'Preparing OGL...'
## location = 'contrib/ogl'
## OGLLOC = location + '/contrib/src/ogl'
## OGLINC = location + '/contrib/include'
## swig_files = ['ogl.i', 'oglbasic.i', 'oglshapes.i', 'oglshapes2.i',
## 'oglcanvas.i']
## swig_sources = run_swig(swig_files, location, '', PKGDIR,
## USE_SWIG, swig_force, swig_args)
## # make sure local copy of contrib files are up to date
## if IN_CVS_TREE:
## contrib_copy_tree(WXDIR + '/contrib/include/wx/ogl', OGLINC+'/wx/ogl')
## contrib_copy_tree(WXDIR + '/contrib/src/ogl', OGLLOC)
## ext = Extension('oglc', [location + '/oglhelpers.cpp',
## '%s/basic.cpp' % OGLLOC,
## '%s/bmpshape.cpp' % OGLLOC,
## '%s/composit.cpp' % OGLLOC,
## '%s/divided.cpp' % OGLLOC,
## '%s/lines.cpp' % OGLLOC,
## '%s/misc.cpp' % OGLLOC,
## '%s/basic2.cpp' % OGLLOC,
## '%s/canvas.cpp' % OGLLOC,
## '%s/constrnt.cpp' % OGLLOC,
## '%s/drawn.cpp' % OGLLOC,
## '%s/mfutils.cpp' % OGLLOC,
## '%s/ogldiag.cpp' % OGLLOC,
## ] + swig_sources,
## include_dirs = [OGLINC] + includes,
## define_macros = defines,
## library_dirs = libdirs,
## libraries = libs,
## extra_compile_args = cflags,
## extra_link_args = lflags,
## )
## wxpExtensions.append(ext)
## if BUILD_STC:
## print 'Preparing STC...'
## location = 'contrib/stc'
## STCLOC = location + '/contrib/src/stc'
## STCINC = location + '/contrib/include'
## STC_H = location + '/contrib/include/wx/stc'
## # make sure local copy of contrib files are up to date
## if IN_CVS_TREE:
## contrib_copy_tree(WXDIR + '/contrib/include/wx/stc', STCINC+'/wx/stc')
## contrib_copy_tree(WXDIR + '/contrib/src/stc', STCLOC)
## swig_files = ['stc_.i']
## swig_sources = run_swig(swig_files, location, '', PKGDIR,
## USE_SWIG, swig_force,
## swig_args + ['-I'+STC_H, '-I'+location],
## [STC_H+'/stc.h'])
## # copy a project specific py module to the main package dir
## copy_file(location+'/stc.py', PKGDIR, update=1, verbose=1)
## # add some include dirs to the standard set
## stc_includes = includes[:]
## stc_includes.append('%s/scintilla/include' % STCLOC)
## stc_includes.append('%s/scintilla/src' % STCLOC)
## stc_includes.append(STCINC)
## # and some macro definitions
## stc_defines = defines[:]
## stc_defines.append( ('__WX__', None) )
## stc_defines.append( ('SCI_LEXER', None) )
## ext = Extension('stc_c',
## ['%s/scintilla/src/AutoComplete.cxx' % STCLOC,
## '%s/scintilla/src/CallTip.cxx' % STCLOC,
## '%s/scintilla/src/CellBuffer.cxx' % STCLOC,
## '%s/scintilla/src/ContractionState.cxx' % STCLOC,
## '%s/scintilla/src/Document.cxx' % STCLOC,
## '%s/scintilla/src/Editor.cxx' % STCLOC,
## '%s/scintilla/src/Indicator.cxx' % STCLOC,
## '%s/scintilla/src/KeyMap.cxx' % STCLOC,
## '%s/scintilla/src/KeyWords.cxx' % STCLOC,
## '%s/scintilla/src/LineMarker.cxx' % STCLOC,
## '%s/scintilla/src/PropSet.cxx' % STCLOC,
## '%s/scintilla/src/ScintillaBase.cxx' % STCLOC,
## '%s/scintilla/src/Style.cxx' % STCLOC,
## '%s/scintilla/src/ViewStyle.cxx' % STCLOC,
## '%s/scintilla/src/LexCPP.cxx' % STCLOC,
## '%s/scintilla/src/LexHTML.cxx' % STCLOC,
## '%s/scintilla/src/LexLua.cxx' % STCLOC,
## '%s/scintilla/src/LexOthers.cxx' % STCLOC,
## '%s/scintilla/src/LexPerl.cxx' % STCLOC,
## '%s/scintilla/src/LexPython.cxx' % STCLOC,
## '%s/scintilla/src/LexSQL.cxx' % STCLOC,
## '%s/scintilla/src/LexVB.cxx' % STCLOC,
## '%s/scintilla/src/DocumentAccessor.cxx' % STCLOC,
## '%s/scintilla/src/UniConversion.cxx' % STCLOC,
## '%s/scintilla/src/WindowAccessor.cxx' % STCLOC,
## '%s/scintilla/src/PosRegExp.cxx' % STCLOC,
## '%s/PlatWX.cpp' % STCLOC,
## '%s/ScintillaWX.cpp' % STCLOC,
## '%s/stc.cpp' % STCLOC,
## ] + swig_sources,
## include_dirs = stc_includes,
## define_macros = stc_defines,
## library_dirs = libdirs,
## libraries = libs,
## extra_compile_args = cflags,
## extra_link_args = lflags,
## )
## wxpExtensions.append(ext)

View File

@@ -646,6 +646,10 @@ extern "C" SWIGEXPORT(void) inithtmlhelpc();
extern "C" SWIGEXPORT(void) initcalendarc(); extern "C" SWIGEXPORT(void) initcalendarc();
extern "C" SWIGEXPORT(void) initstreamsc(); extern "C" SWIGEXPORT(void) initstreamsc();
extern "C" SWIGEXPORT(void) initfilesysc(); extern "C" SWIGEXPORT(void) initfilesysc();
extern "C" SWIGEXPORT(void) initglcanvasc();
extern "C" SWIGEXPORT(void) initoglc();
extern "C" SWIGEXPORT(void) initstc_c();
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
@@ -2903,6 +2907,10 @@ SWIGEXPORT(void) initwxc() {
inithtmlc(); inithtmlc();
inithtmlhelpc(); inithtmlhelpc();
initcalendarc(); initcalendarc();
initglcanvasc();
initoglc();
initstc_c();
{ {
int i; int i;
for (i = 0; _swig_mapping[i].n1; i++) for (i = 0; _swig_mapping[i].n1; i++)

View File

@@ -148,6 +148,10 @@ extern "C" SWIGEXPORT(void) inithtmlhelpc();
extern "C" SWIGEXPORT(void) initcalendarc(); extern "C" SWIGEXPORT(void) initcalendarc();
extern "C" SWIGEXPORT(void) initstreamsc(); extern "C" SWIGEXPORT(void) initstreamsc();
extern "C" SWIGEXPORT(void) initfilesysc(); extern "C" SWIGEXPORT(void) initfilesysc();
extern "C" SWIGEXPORT(void) initglcanvasc();
extern "C" SWIGEXPORT(void) initoglc();
extern "C" SWIGEXPORT(void) initstc_c();
%} %}
@@ -185,6 +189,10 @@ extern "C" SWIGEXPORT(void) initfilesysc();
inithtmlc(); inithtmlc();
inithtmlhelpc(); inithtmlhelpc();
initcalendarc(); initcalendarc();
initglcanvasc();
initoglc();
initstc_c();
%} %}
//---------------------------------------------------------------------- //----------------------------------------------------------------------