2 #---------------------------------------------------------------------- 
   4 import sys
, os
, string
, glob
 
   5 from distutils
.core      
import setup
, Extension
 
   6 from distutils
.file_util 
import copy_file
 
   7 from distutils
.dir_util  
import mkpath
 
   8 from distutils
.dep_util  
import newer
 
  10 from my_distutils 
import run_swig
, contrib_copy_tree
 
  12 #---------------------------------------------------------------------- 
  13 # flags and values that affect this script 
  14 #---------------------------------------------------------------------- 
  17 DESCRIPTION      
= "Cross platform GUI toolkit for Python" 
  19 AUTHOR_EMAIL     
= "Robin Dunn <robin@alldunn.com>" 
  20 URL              
= "http://wxPython.org/" 
  21 LICENCE          
= "wxWindows (LGPL derivative)" 
  22 LONG_DESCRIPTION 
= """\ 
  23 wxPython is a GUI toolkit for Python that is a wrapper around the 
  24 wxWindows C++ GUI library.  wxPython provides a large variety of 
  25 window types and controls, all implemented with a native look and 
  26 feel (and native runtime speed) on the platforms it is supported 
  31 BUILD_GLCANVAS 
= 1 # If true, build the contrib/glcanvas extension module 
  32 BUILD_OGL 
= 1      # If true, build the contrib/ogl extension module 
  33 BUILD_STC 
= 1      # If true, build the contrib/stc extension module 
  34 BUILD_XRC 
= 1      # XML based resource system 
  35 BUILD_GIZMOS 
= 1   # Build a module for the gizmos contrib library 
  36 BUILD_DLLWIDGET 
= 1# Build a module that enables unknown wx widgets 
  37                    # to be loaded from a DLL and to be used from Python. 
  39 BUILD_IEWIN 
= 0    # Internet Explorer wrapper (experimental) 
  41 CORE_ONLY 
= 0      # if true, don't build any of the above 
  44 GL_ONLY 
= 0        # Only used when making the -gl RPM.  See the "b" script 
  45                    # for the ugly details 
  47 USE_SWIG 
= 0       # Should we actually execute SWIG, or just use the 
  48                    # files already in the distribution? 
  50 UNICODE 
= 0        # This will pass the 'wxUSE_UNICODE' flag to SWIG and 
  51                    # will ensure that the right headers are found and the 
  52                    # right libs are linked. 
  54 IN_CVS_TREE 
= 0    # Set to true if building in a full wxWindows CVS 
  55                    # tree, otherwise will assume all needed files are 
  56                    # available in the wxPython source distribution 
  58 UNDEF_NDEBUG 
= 1   # Python 2.2 on Unix/Linux by default defines NDEBUG, 
  59                    # and distutils will pick this up and use it on the 
  60                    # compile command-line for the extensions.  This could 
  61                    # conflict with how wxWindows was built.  If NDEBUG is 
  62                    # set then wxWindows' __WXDEBUG__ setting will be turned 
  63                    # off.  If wxWindows was actually built with it turned 
  64                    # on then you end up with mismatched class structures, 
  65                    # and wxPython will crash. 
  67 WX_CONFIG 
= "wx-config"    # Usually you shouldn't need to touch this, 
  68                            # but you can set it to pass an alternate 
  69                            # version of wx-config or alternate flags, 
  70                            # eg. as required by the .deb in-tree build. 
  74 # Some MSW build settings 
  76 FINAL 
= 1          # Mirrors use of same flag in wx makefiles, 
  77                    # (0 or 1 only) should probably find a way to 
  80 HYBRID 
= 0         # If set and not debug or FINAL, then build a 
  81                    # hybrid extension that can be used by the 
  82                    # non-debug version of python, but contains 
  83                    # debugging symbols for wxWindows and wxPython. 
  84                    # wxWindows must have been built with /MD, not /MDd 
  85                    # (using FINAL=hybrid will do it.) 
  87 WXDLLVER 
= '233'   # Version part of wxWindows DLL name 
  90 #---------------------------------------------------------------------- 
  93     if __name__ 
== "__main__": 
  98     path 
= apply(os
.path
.join
, args
) 
  99     return os
.path
.normpath(path
) 
 114 #---------------------------------------------------------------------- 
 116 #---------------------------------------------------------------------- 
 121 force 
= '--force' in sys
.argv 
or '-f' in sys
.argv
 
 122 debug 
= '--debug' in sys
.argv 
or '-g' in sys
.argv
 
 124 bcpp_compiling 
= '-c' in sys
.argv 
and 'my_bcpp' in sys
.argv 
# Bad heuristic 
 127     msg("Compiling wxPython by Borland C/C++ Compiler") 
 129     WXBCPPLIBVER 
= string
.replace(WXDLLVER
,"_","") 
 130     # Version part of BCPP build LIBRARY name 
 131     WXDLLVER
="" # no dll ver path avaible 
 134 #---------------------------------------------------------------------- 
 135 # Check for build flags on the command line 
 136 #---------------------------------------------------------------------- 
 138 # Boolean (int) flags 
 139 for flag 
in ['BUILD_GLCANVAS', 'BUILD_OGL', 'BUILD_STC', 'BUILD_XRC', 
 140              'BUILD_GIZMOS', 'BUILD_DLLWIDGET', 
 141              'CORE_ONLY', 'USE_SWIG', 'IN_CVS_TREE', 'UNICODE', 'UNDEF_NDEBUG', 
 142              'FINAL', 'HYBRID', ]: 
 143     for x 
in range(len(sys
.argv
)): 
 144         if string
.find(sys
.argv
[x
], flag
) == 0: 
 145             pos 
= string
.find(sys
.argv
[x
], '=') + 1 
 147                 vars()[flag
] = eval(sys
.argv
[x
][pos
:]) 
 151 for option 
in ['WX_CONFIG', 'WXDLLVER', 'BUILD_BASE']: 
 152     for x 
in range(len(sys
.argv
)): 
 153         if string
.find(sys
.argv
[x
], option
) == 0: 
 154             pos 
= string
.find(sys
.argv
[x
], '=') + 1 
 156                 vars()[option
] = sys
.argv
[x
][pos
:] 
 159 sys
.argv 
= filter(None, sys
.argv
) 
 163 #---------------------------------------------------------------------- 
 175 if UNICODE 
and os
.name 
!= 'nt': 
 176     print "UNICODE is currently only supported on Win32" 
 181     BUILD_BASE 
= BUILD_BASE 
+ '.unicode' 
 182     VERSION 
= VERSION 
+ 'u' 
 185 #---------------------------------------------------------------------- 
 186 # Setup some platform specific stuff 
 187 #---------------------------------------------------------------------- 
 190     # Set compile flags and such for MSVC.  These values are derived 
 191     # from the wxWindows makefiles for MSVC, other compilers settings 
 192     # will probably vary... 
 193     if os
.environ
.has_key('WXWIN'): 
 194         WXDIR 
= os
.environ
['WXWIN'] 
 196         msg("WARNING: WXWIN not set in environment.") 
 197         WXDIR 
= '..'  # assumes in CVS tree 
 209                 opj(WXDIR
, 'lib', 'mswdll' + libFlag()), 
 210                 opj(WXDIR
, 'include'), 
 213     defines 
= [ ('WIN32', None),        # Some of these are no longer 
 214                 ('__WIN32__', None),    # necessary.  Anybody know which? 
 216                 ('__WINDOWS__', None), 
 217                 ('WINVER', '0x0400'), 
 224                 ('SWIG_GLOBAL', None), 
 225                 ('HAVE_CONFIG_H', None), 
 226                 ('WXP_USE_THREAD', '1'), 
 229     if bcpp_compiling
:  # overwrite it 
 232             ('WINVER', '0x0400'), 
 237             ('SWIG_GLOBAL', None), 
 238             ('HAVE_CONFIG_H', None), 
 239             ('WXP_USE_THREAD', '1'), 
 241             ('WXUSE_DEFINE','1'), 
 246     if not FINAL 
or HYBRID
: 
 247         defines
.append( ('__WXDEBUG__', None) ) 
 249     libdirs 
= [opj(WXDIR
, 'lib'), 'build\\ilib'] 
 250     wxdll 
= 'wxmsw' + WXDLLVER 
+ libFlag() 
 254         libs 
= ['wx'+WXBCPPLIBVER
] 
 256     libs 
= libs 
+ ['kernel32', 'user32', 'gdi32', 'comdlg32', 
 257             'winspool', 'winmm', 'shell32', 'oldnames', 'comctl32', 
 258             'ctl3d32', 'odbc32', 'ole32', 'oleaut32', 'uuid', 'rpcrt4', 
 259             'advapi32', 'wsock32'] 
 263              # '/GX-'  # workaround for internal compiler error in MSVC on some machines 
 268     if bcpp_compiling
:  # overwrite it 
 269         cflags 
= ['-5', '-VF',  ### To support MSVC spurious semicolons in the class scope 
 270                   ### else, all semicolons at the end of all DECLARE_...CALLBACK... macros must be eliminated 
 271                   '-Hc', '-H=' + opj(WXDIR
, '\src\msw\wx32.csm'), 
 272                   '@' + opj(WXDIR
, '\src\msw\wxwin32.cfg') 
 276     if not FINAL 
and HYBRID 
and not bcpp_compiling
: 
 277         cflags 
= cflags 
+ ['/Od', '/Z7'] 
 278         lflags 
= ['/DEBUG', ] 
 280     elif bcpp_compiling 
and not FINAL
: 
 281         cflags 
= cflags 
+ ['/Od', '/v', '/y'] 
 282         lflags 
= lflags 
+ ['/v', ] 
 286 elif os
.name 
== 'posix' and sys
.platform
[:6] == "darwin": 
 287     # Flags and such for a Darwin (Max OS X) build of Python 
 289     WXDIR 
= '..'              # assumes IN_CVS_TREE 
 294     defines 
= [('SWIG_GLOBAL', None), 
 295                ('HAVE_CONFIG_H', None), 
 296                ('WXP_USE_THREAD', '1'), 
 301     cflags 
= os
.popen(WX_CONFIG 
+ ' --cxxflags', 'r').read()[:-1] 
 302     cflags 
= string
.split(cflags
) 
 304         cflags
.append('-UNDEBUG') 
 306     lflags 
= os
.popen(WX_CONFIG 
+ ' --libs', 'r').read()[:-1] 
 307     lflags 
= string
.split(lflags
) 
 311 elif os
.name 
== 'posix': 
 312     # Set flags for Unix type platforms 
 314     WXDIR 
= '..'              # assumes IN_CVS_TREE 
 315     WXPLAT 
= '__WXGTK__'      # and assumes GTK... 
 316     GENDIR 
= 'gtk'            # Need to allow for Motif eventually too 
 319     defines 
= [('SWIG_GLOBAL', None), 
 320                ('HAVE_CONFIG_H', None), 
 321                ('WXP_USE_THREAD', '1'), 
 326     cflags 
= os
.popen(WX_CONFIG 
+ ' --cxxflags', 'r').read()[:-1] + ' ' + \
 
 327              os
.popen('gtk-config --cflags', 'r').read()[:-1] 
 328     cflags 
= string
.split(cflags
) 
 330         cflags
.append('-UNDEBUG') 
 332     lflags 
= os
.popen(WX_CONFIG 
+ ' --libs', 'r').read()[:-1] 
 333     lflags 
= string
.split(lflags
) 
 337     raise 'Sorry Charlie...' 
 340 #---------------------------------------------------------------------- 
 341 # Check if the version file needs updated 
 342 #---------------------------------------------------------------------- 
 344 #if IN_CVS_TREE and newer('setup.py', 'src/__version__.py'): 
 345 open('src/__version__.py', 'w').write("ver = '%s'\n" % VERSION
) 
 349 #---------------------------------------------------------------------- 
 351 #---------------------------------------------------------------------- 
 354 swig_args 
= ['-c++', '-shadow', '-python', '-keyword', 
 357              #'-docstring', '-Sbefore', 
 358              '-I./src', '-D'+WXPLAT
, 
 361     swig_args
.append('-DwxUSE_UNICODE') 
 363 swig_deps 
= ['src/my_typemaps.i'] 
 366 #---------------------------------------------------------------------- 
 367 # Define the CORE extension module 
 368 #---------------------------------------------------------------------- 
 371     msg('Preparing CORE...') 
 372     swig_files 
= [ 'wx.i', 'windows.i', 'windows2.i', 'windows3.i', 'events.i', 
 373                    'misc.i', 'misc2.i', 'gdi.i', 'mdi.i', 'controls.i', 
 374                    'controls2.i', 'cmndlgs.i', 'stattool.i', 'frames.i', 'image.i', 
 375                    'printfw.i', 'sizers.i', 'clip_dnd.i', 
 376                    'filesys.i', 'streams.i', 'utils.i', 'fonts.i' 
 379     swig_sources 
= run_swig(swig_files
, 'src', GENDIR
, PKGDIR
, 
 380                             USE_SWIG
, swig_force
, swig_args
, swig_deps
) 
 382     copy_file('src/__init__.py', PKGDIR
, update
=1, verbose
=0) 
 383     copy_file('src/__version__.py', PKGDIR
, update
=1, verbose
=0) 
 384     copy_file('src/wxc.pyd.manifest', PKGDIR
, update
=1, verbose
=0) 
 386     if IN_CVS_TREE
:   # update the licence files 
 388         for file in ['preamble.txt', 'licence.txt', 'licendoc.txt', 'lgpl.txt']: 
 389             copy_file(opj(WXDIR
, 'docs', file), opj('licence',file), update
=1, verbose
=0) 
 393         rc_file 
= ['src/wxc.rc'] 
 398     ext 
= Extension('wxc', ['src/helpers.cpp', 
 400                             ] + rc_file 
+ swig_sources
, 
 402                     include_dirs 
= includes
, 
 403                     define_macros 
= defines
, 
 405                     library_dirs 
= libdirs
, 
 408                     extra_compile_args 
= cflags
, 
 409                     extra_link_args 
= lflags
, 
 411     wxpExtensions
.append(ext
) 
 414     # Extension for the grid module 
 415     swig_sources 
= run_swig(['grid.i'], 'src', GENDIR
, PKGDIR
, 
 416                             USE_SWIG
, swig_force
, swig_args
, swig_deps
) 
 417     ext 
= Extension('gridc', swig_sources
, 
 418                     include_dirs 
=  includes
, 
 419                     define_macros 
= defines
, 
 420                     library_dirs 
= libdirs
, 
 422                     extra_compile_args 
= cflags
, 
 423                     extra_link_args 
= lflags
, 
 425     wxpExtensions
.append(ext
) 
 428     # Extension for the html modules 
 429     swig_sources 
= run_swig(['html.i', 'htmlhelp.i'], 'src', GENDIR
, PKGDIR
, 
 430                             USE_SWIG
, swig_force
, swig_args
, swig_deps
) 
 431     ext 
= Extension('htmlc', swig_sources
, 
 432                     include_dirs 
=  includes
, 
 433                     define_macros 
= defines
, 
 434                     library_dirs 
= libdirs
, 
 436                     extra_compile_args 
= cflags
, 
 437                     extra_link_args 
= lflags
, 
 439     wxpExtensions
.append(ext
) 
 442     # Extension for the calendar module 
 443     swig_sources 
= run_swig(['calendar.i'], 'src', GENDIR
, PKGDIR
, 
 444                             USE_SWIG
, swig_force
, swig_args
, swig_deps
) 
 445     ext 
= Extension('calendarc', swig_sources
, 
 446                     include_dirs 
=  includes
, 
 447                     define_macros 
= defines
, 
 448                     library_dirs 
= libdirs
, 
 450                     extra_compile_args 
= cflags
, 
 451                     extra_link_args 
= lflags
, 
 453     wxpExtensions
.append(ext
) 
 456     # Extension for the help module 
 457     swig_sources 
= run_swig(['help.i'], 'src', GENDIR
, PKGDIR
, 
 458                             USE_SWIG
, swig_force
, swig_args
, swig_deps
) 
 459     ext 
= Extension('helpc', swig_sources
, 
 460                     include_dirs 
=  includes
, 
 461                     define_macros 
= defines
, 
 462                     library_dirs 
= libdirs
, 
 464                     extra_compile_args 
= cflags
, 
 465                     extra_link_args 
= lflags
, 
 467     wxpExtensions
.append(ext
) 
 470 #---------------------------------------------------------------------- 
 471 # Define the GLCanvas extension module 
 472 #---------------------------------------------------------------------- 
 474 CTRB_SRC 
=  opj(WXDIR
, 'contrib/src') 
 475 CTRB_INC 
=  opj(WXDIR
, 'contrib/include/wx') 
 477 if BUILD_GLCANVAS 
or GL_ONLY
: 
 478     msg('Preparing GLCANVAS...') 
 479     location 
= 'contrib/glcanvas' 
 480     swig_files 
= ['glcanvas.i'] 
 483     swig_sources 
= run_swig(swig_files
, location
, GENDIR
, PKGDIR
, 
 484                             USE_SWIG
, swig_force
, swig_args
, swig_deps
) 
 487     if os
.name 
== 'posix': 
 488         gl_config 
= os
.popen(WX_CONFIG 
+ ' --gl-libs', 'r').read()[:-1] 
 489         gl_lflags 
= string
.split(gl_config
) + lflags
 
 492         other_sources 
= [opj(location
, 'msw/myglcanvas.cpp')] 
 493         gl_libs 
= libs 
+ ['opengl32', 'glu32'] 
 496     ext 
= Extension('glcanvasc', 
 497                     swig_sources 
+ other_sources
, 
 499                     include_dirs 
= includes
, 
 500                     define_macros 
= defines
, 
 502                     library_dirs 
= libdirs
, 
 505                     extra_compile_args 
= cflags
, 
 506                     extra_link_args 
= gl_lflags
, 
 509     wxpExtensions
.append(ext
) 
 512 #---------------------------------------------------------------------- 
 513 # Define the OGL extension module 
 514 #---------------------------------------------------------------------- 
 516 if not GL_ONLY 
and BUILD_OGL
: 
 517     msg('Preparing OGL...') 
 518     location 
= 'contrib/ogl' 
 519     OGLLOC 
= opj(location
, 'contrib/src/ogl') 
 520     OGLINC 
= opj(location
, 'contrib/include') 
 522     swig_files 
= ['ogl.i', 'oglbasic.i', 'oglshapes.i', 'oglshapes2.i', 
 525     swig_sources 
= run_swig(swig_files
, location
, '', PKGDIR
, 
 526                             USE_SWIG
, swig_force
, swig_args
, swig_deps
) 
 529         # make sure local copy of contrib files are up to date 
 530         contrib_copy_tree(opj(CTRB_INC
, 'ogl'), opj(OGLINC
, 'wx/ogl')) 
 531         contrib_copy_tree(opj(CTRB_SRC
, 'ogl'), OGLLOC
) 
 533     ext 
= Extension('oglc', ['%s/basic.cpp' % OGLLOC
, 
 534                              '%s/bmpshape.cpp' % OGLLOC
, 
 535                              '%s/composit.cpp' % OGLLOC
, 
 536                              '%s/divided.cpp' % OGLLOC
, 
 537                              '%s/lines.cpp' % OGLLOC
, 
 538                              '%s/misc.cpp' % OGLLOC
, 
 539                              '%s/basic2.cpp' % OGLLOC
, 
 540                              '%s/canvas.cpp' % OGLLOC
, 
 541                              '%s/constrnt.cpp' % OGLLOC
, 
 542                              '%s/drawn.cpp' % OGLLOC
, 
 543                              '%s/mfutils.cpp' % OGLLOC
, 
 544                              '%s/ogldiag.cpp' % OGLLOC
, 
 547                     include_dirs 
=  [OGLINC
] + includes
, 
 548                     define_macros 
= defines
, 
 550                     library_dirs 
= libdirs
, 
 553                     extra_compile_args 
= cflags
, 
 554                     extra_link_args 
= lflags
, 
 557     wxpExtensions
.append(ext
) 
 561 #---------------------------------------------------------------------- 
 562 # Define the STC extension module 
 563 #---------------------------------------------------------------------- 
 565 if not GL_ONLY 
and BUILD_STC
: 
 566     msg('Preparing STC...') 
 567     location 
= 'contrib/stc' 
 568     STCLOC 
= opj(location
, 'contrib/src/stc') 
 569     STCINC 
= opj(location
, 'contrib/include') 
 570     STC_H 
=  opj(location
, 'contrib/include/wx/stc') 
 573         # Check if gen_iface needs to be run for the wxSTC sources 
 574         if (newer(opj(CTRB_SRC
, 'stc/stc.h.in'),     opj(CTRB_INC
, 'stc/stc.h'  )) or 
 575             newer(opj(CTRB_SRC
, 'stc/stc.cpp.in'),   opj(CTRB_SRC
, 'stc/stc.cpp')) or 
 576             newer(opj(CTRB_SRC
, 'stc/gen_iface.py'), opj(CTRB_SRC
, 'stc/stc.cpp'))): 
 578             msg('Running gen_iface.py, regenerating stc.h and stc.cpp...') 
 580             os
.chdir(opj(CTRB_SRC
, 'stc')) 
 586         # make sure local copy of contrib files are up to date 
 587         contrib_copy_tree(opj(CTRB_INC
, 'stc'), opj(STCINC
, 'wx/stc')) 
 588         contrib_copy_tree(opj(CTRB_SRC
, 'stc'), STCLOC
) 
 592     swig_files 
= ['stc_.i'] 
 593     swig_sources 
= run_swig(swig_files
, location
, GENDIR
, PKGDIR
, 
 594                             USE_SWIG
, swig_force
, 
 595                             swig_args 
+ ['-I'+STC_H
, '-I'+location
], 
 596                             [opj(STC_H
, 'stc.h')] + swig_deps
) 
 598     # copy a contrib project specific py module to the main package dir 
 599     copy_file(opj(location
, 'stc.py'), PKGDIR
, update
=1, verbose
=0) 
 601     # add some include dirs to the standard set 
 602     stc_includes 
= includes
[:] 
 603     stc_includes
.append('%s/scintilla/include' % STCLOC
) 
 604     stc_includes
.append('%s/scintilla/src' % STCLOC
) 
 605     stc_includes
.append(STCINC
) 
 607     # and some macro definitions 
 608     stc_defines 
= defines
[:] 
 609     stc_defines
.append( ('__WX__', None) ) 
 610     stc_defines
.append( ('SCI_LEXER', None) ) 
 611     stc_defines
.append( ('LINK_LEXERS', None) ) 
 614     ext 
= Extension('stc_c', 
 615                     ['%s/scintilla/src/AutoComplete.cxx' % STCLOC
, 
 616                      '%s/scintilla/src/CallTip.cxx' % STCLOC
, 
 617                      '%s/scintilla/src/CellBuffer.cxx' % STCLOC
, 
 618                      '%s/scintilla/src/ContractionState.cxx' % STCLOC
, 
 619                      '%s/scintilla/src/Document.cxx' % STCLOC
, 
 620                      '%s/scintilla/src/DocumentAccessor.cxx' % STCLOC
, 
 621                      '%s/scintilla/src/Editor.cxx' % STCLOC
, 
 622                      '%s/scintilla/src/Indicator.cxx' % STCLOC
, 
 623                      '%s/scintilla/src/KeyMap.cxx' % STCLOC
, 
 624                      '%s/scintilla/src/KeyWords.cxx' % STCLOC
, 
 625                      '%s/scintilla/src/LineMarker.cxx' % STCLOC
, 
 626                      '%s/scintilla/src/PropSet.cxx' % STCLOC
, 
 627                      '%s/scintilla/src/RESearch.cxx' % STCLOC
, 
 628                      '%s/scintilla/src/ScintillaBase.cxx' % STCLOC
, 
 629                      '%s/scintilla/src/Style.cxx' % STCLOC
, 
 630                      '%s/scintilla/src/StyleContext.cxx' % STCLOC
, 
 631                      '%s/scintilla/src/UniConversion.cxx' % STCLOC
, 
 632                      '%s/scintilla/src/ViewStyle.cxx' % STCLOC
, 
 633                      '%s/scintilla/src/WindowAccessor.cxx' % STCLOC
, 
 635                      '%s/scintilla/src/LexAda.cxx' % STCLOC
, 
 636                      '%s/scintilla/src/LexAVE.cxx' % STCLOC
, 
 637                      '%s/scintilla/src/LexBaan.cxx' % STCLOC
, 
 638                      '%s/scintilla/src/LexBullant.cxx' % STCLOC
, 
 639                      '%s/scintilla/src/LexCPP.cxx' % STCLOC
, 
 640                      '%s/scintilla/src/LexConf.cxx' % STCLOC
, 
 641                      '%s/scintilla/src/LexCrontab.cxx' % STCLOC
, 
 642                      '%s/scintilla/src/LexEiffel.cxx' % STCLOC
, 
 643                      '%s/scintilla/src/LexHTML.cxx' % STCLOC
, 
 644                      '%s/scintilla/src/LexLisp.cxx' % STCLOC
, 
 645                      '%s/scintilla/src/LexLua.cxx' % STCLOC
, 
 646                      '%s/scintilla/src/LexMatlab.cxx' % STCLOC
, 
 647                      '%s/scintilla/src/LexOthers.cxx' % STCLOC
, 
 648                      '%s/scintilla/src/LexPascal.cxx' % STCLOC
, 
 649                      '%s/scintilla/src/LexPerl.cxx' % STCLOC
, 
 650                      '%s/scintilla/src/LexPython.cxx' % STCLOC
, 
 651                      '%s/scintilla/src/LexRuby.cxx' % STCLOC
, 
 652                      '%s/scintilla/src/LexSQL.cxx' % STCLOC
, 
 653                      '%s/scintilla/src/LexVB.cxx' % STCLOC
, 
 655                      '%s/PlatWX.cpp' % STCLOC
, 
 656                      '%s/ScintillaWX.cpp' % STCLOC
, 
 657                      '%s/stc.cpp' % STCLOC
, 
 660                     include_dirs 
= stc_includes
, 
 661                     define_macros 
= stc_defines
, 
 663                     library_dirs 
= libdirs
, 
 666                     extra_compile_args 
= cflags
, 
 667                     extra_link_args 
= lflags
, 
 670     wxpExtensions
.append(ext
) 
 674 #---------------------------------------------------------------------- 
 675 # Define the IEWIN extension module (experimental) 
 676 #---------------------------------------------------------------------- 
 678 if not GL_ONLY 
and BUILD_IEWIN
: 
 679     msg('Preparing IEWIN...') 
 680     location 
= 'contrib/iewin' 
 682     swig_files 
= ['iewin.i', ] 
 684     swig_sources 
= run_swig(swig_files
, location
, '', PKGDIR
, 
 685                             USE_SWIG
, swig_force
, swig_args
, swig_deps
) 
 688     ext 
= Extension('iewinc', ['%s/IEHtmlWin.cpp' % location
, 
 691                     include_dirs 
=  includes
, 
 692                     define_macros 
= defines
, 
 694                     library_dirs 
= libdirs
, 
 697                     extra_compile_args 
= cflags
, 
 698                     extra_link_args 
= lflags
, 
 701     wxpExtensions
.append(ext
) 
 704 #---------------------------------------------------------------------- 
 705 # Define the XRC extension module 
 706 #---------------------------------------------------------------------- 
 708 if not GL_ONLY 
and BUILD_XRC
: 
 709     msg('Preparing XRC...') 
 710     location 
= 'contrib/xrc' 
 711     XMLLOC 
= opj(location
, 'contrib/src/xrc') 
 712     XMLINC 
= opj(location
, 'contrib/include') 
 714     swig_files 
= ['xrc.i'] 
 716     swig_sources 
= run_swig(swig_files
, location
, '', PKGDIR
, 
 717                             USE_SWIG
, swig_force
, swig_args
, swig_deps
) 
 719     xmlres_includes 
= includes
[:] 
 720     xmlres_includes
.append('%s/expat/xmlparse' % XMLLOC
) 
 721     xmlres_includes
.append('%s/expat/xmltok' % XMLLOC
) 
 722     xmlres_includes
.append(XMLINC
) 
 725     # make sure local copy of contrib files are up to date 
 727         contrib_copy_tree(opj(CTRB_INC
, 'xrc'), opj(XMLINC
, 'wx/xrc')) 
 728         contrib_copy_tree(opj(CTRB_SRC
, 'xrc'), XMLLOC
) 
 730     ext 
= Extension('xrcc', ['%s/expat/xmlparse/xmlparse.c' % XMLLOC
, 
 731                                 '%s/expat/xmltok/xmlrole.c' % XMLLOC
, 
 732                                 '%s/expat/xmltok/xmltok.c' % XMLLOC
, 
 734                                 '%s/xh_bmp.cpp' % XMLLOC
, 
 735                                 '%s/xh_bmpbt.cpp' % XMLLOC
, 
 736                                 '%s/xh_bttn.cpp' % XMLLOC
, 
 737                                 '%s/xh_cald.cpp' % XMLLOC
, 
 738                                 '%s/xh_chckb.cpp' % XMLLOC
, 
 740                                 '%s/xh_chckl.cpp' % XMLLOC
, 
 741                                 '%s/xh_choic.cpp' % XMLLOC
, 
 742                                 '%s/xh_combo.cpp' % XMLLOC
, 
 743                                 '%s/xh_dlg.cpp' % XMLLOC
, 
 744                                 '%s/xh_frame.cpp' % XMLLOC
, 
 746                                 '%s/xh_gauge.cpp' % XMLLOC
, 
 747                                 '%s/xh_gdctl.cpp' % XMLLOC
, 
 748                                 '%s/xh_html.cpp' % XMLLOC
, 
 749                                 '%s/xh_listb.cpp' % XMLLOC
, 
 750                                 '%s/xh_listc.cpp' % XMLLOC
, 
 751                                 '%s/xh_menu.cpp' % XMLLOC
, 
 753                                 '%s/xh_notbk.cpp' % XMLLOC
, 
 754                                 '%s/xh_panel.cpp' % XMLLOC
, 
 755                                 '%s/xh_radbt.cpp' % XMLLOC
, 
 756                                 '%s/xh_radbx.cpp' % XMLLOC
, 
 757                                 '%s/xh_scrol.cpp' % XMLLOC
, 
 759                                 '%s/xh_sizer.cpp' % XMLLOC
, 
 760                                 '%s/xh_slidr.cpp' % XMLLOC
, 
 761                                 '%s/xh_spin.cpp' % XMLLOC
, 
 762                                 '%s/xh_stbmp.cpp' % XMLLOC
, 
 763                                 '%s/xh_stbox.cpp' % XMLLOC
, 
 765                                 '%s/xh_stlin.cpp' % XMLLOC
, 
 766                                 '%s/xh_sttxt.cpp' % XMLLOC
, 
 767                                 '%s/xh_text.cpp' % XMLLOC
, 
 768                                 '%s/xh_toolb.cpp' % XMLLOC
, 
 769                                 '%s/xh_tree.cpp' % XMLLOC
, 
 771                                 '%s/xh_unkwn.cpp' % XMLLOC
, 
 772                                 '%s/xml.cpp' % XMLLOC
, 
 773                                 '%s/xmlres.cpp' % XMLLOC
, 
 774                                 '%s/xmlrsall.cpp' % XMLLOC
, 
 778                     include_dirs 
=  xmlres_includes
, 
 779                     define_macros 
= defines
, 
 781                     library_dirs 
= libdirs
, 
 784                     extra_compile_args 
= cflags
, 
 785                     extra_link_args 
= lflags
, 
 788     wxpExtensions
.append(ext
) 
 792 #---------------------------------------------------------------------- 
 793 # Define the GIZMOS  extension module 
 794 #---------------------------------------------------------------------- 
 796 if not GL_ONLY 
and BUILD_GIZMOS
: 
 797     msg('Preparing GIZMOS...') 
 798     location 
= 'contrib/gizmos' 
 799     GIZMOLOC 
= opj(location
, 'contrib/src/gizmos') 
 800     GIZMOINC 
= opj(location
, 'contrib/include') 
 802     swig_files 
= ['gizmos.i'] 
 804     swig_sources 
= run_swig(swig_files
, location
, '', PKGDIR
, 
 805                             USE_SWIG
, swig_force
, swig_args
, swig_deps
) 
 807     gizmos_includes 
= includes
[:] 
 808     gizmos_includes
.append(GIZMOINC
) 
 811     # make sure local copy of contrib files are up to date 
 813         contrib_copy_tree(opj(CTRB_INC
, 'gizmos'), opj(GIZMOINC
, 'wx/gizmos')) 
 814         contrib_copy_tree(opj(CTRB_SRC
, 'gizmos'), GIZMOLOC
) 
 816     ext 
= Extension('gizmosc', [ 
 817                                 '%s/dynamicsash.cpp' % GIZMOLOC
, 
 818                                 '%s/editlbox.cpp' % GIZMOLOC
, 
 819                                 #'%s/multicell.cpp' % GIZMOLOC, 
 820                                 '%s/splittree.cpp' % GIZMOLOC
, 
 821                                 '%s/ledctrl.cpp'   % GIZMOLOC
, 
 824                     include_dirs 
=  gizmos_includes
, 
 825                     define_macros 
= defines
, 
 827                     library_dirs 
= libdirs
, 
 830                     extra_compile_args 
= cflags
, 
 831                     extra_link_args 
= lflags
, 
 834     wxpExtensions
.append(ext
) 
 838 #---------------------------------------------------------------------- 
 839 # Define the DLLWIDGET  extension module 
 840 #---------------------------------------------------------------------- 
 842 if not GL_ONLY 
and BUILD_DLLWIDGET
: 
 843     msg('Preparing DLLWIDGET...') 
 844     location 
= 'contrib/dllwidget' 
 845     swig_files 
= ['dllwidget_.i'] 
 847     swig_sources 
= run_swig(swig_files
, location
, '', PKGDIR
, 
 848                             USE_SWIG
, swig_force
, swig_args
, swig_deps
) 
 850     # copy a contrib project specific py module to the main package dir 
 851     copy_file(opj(location
, 'dllwidget.py'), PKGDIR
, update
=1, verbose
=0) 
 853     ext 
= Extension('dllwidget_c', [ 
 854                                 '%s/dllwidget.cpp' % location
, 
 857                     include_dirs 
=  includes
, 
 858                     define_macros 
= defines
, 
 860                     library_dirs 
= libdirs
, 
 863                     extra_compile_args 
= cflags
, 
 864                     extra_link_args 
= lflags
, 
 867     wxpExtensions
.append(ext
) 
 870 #---------------------------------------------------------------------- 
 872 #---------------------------------------------------------------------- 
 874 TOOLS 
= [("wxPython/tools",        glob
.glob("tools/*.py")), 
 875          ("wxPython/tools/XRCed",  glob
.glob("tools/XRCed/*.py") + 
 876                                    glob
.glob("tools/XRCed/*.xrc") + 
 877                                    ["tools/XRCed/CHANGES", 
 879                                     "tools/XRCed/README"]), 
 885 #---------------------------------------------------------------------- 
 886 # Do the Setup/Build/Install/Whatever 
 887 #---------------------------------------------------------------------- 
 889 if __name__ 
== "__main__": 
 893               description      
= DESCRIPTION
, 
 894               long_description 
= LONG_DESCRIPTION
, 
 896               author_email     
= AUTHOR_EMAIL
, 
 902                           PKGDIR
+'.lib.editor', 
 903                           PKGDIR
+'.lib.mixins', 
 904                           PKGDIR
+'.lib.PyCrust', 
 907               ext_package 
= PKGDIR
, 
 908               ext_modules 
= wxpExtensions
, 
 910               options 
= { 'build' : { 'build_base' : BUILD_BASE }
} 
 912               ##data_files = TOOLS, 
 917         setup(name             
= "wxPython-gl", 
 919               description      
= "wxGLCanvas class for wxPython", 
 921               author_email     
= AUTHOR_EMAIL
, 
 925               py_modules 
= [ "wxPython.glcanvas" ], 
 927               ext_package 
= PKGDIR
, 
 928               ext_modules 
= wxpExtensions
, 
 935 #---------------------------------------------------------------------- 
 936 #----------------------------------------------------------------------