]> git.saurik.com Git - wxWidgets.git/blob - wxPython/setup.py
Updates for wxToolbook class
[wxWidgets.git] / wxPython / setup.py
1 #!/usr/bin/env python
2 #----------------------------------------------------------------------
3 # Name: setup.py
4 # Purpose: Distutils script for building wxPython
5 #
6 # Author: Robin Dunn
7 #
8 # Created: 12-Oct-2000
9 # RCS-ID: $Id$
10 # Copyright: (c) 2000 by Total Control Software
11 # Licence: wxWindows license
12 #----------------------------------------------------------------------
13
14 import sys, os
15
16
17 # The full contents of the wx.build.config module used to be located
18 # here in setup.py. They were split into a separate module so it will
19 # be installed with wxPython and can then be used by the build scripts
20 # of other extension modules that wish to be wxPython compatible.
21 # The split is still fairly new and hasn't been tested by building
22 # third-party extensions yet, so expect some things to still shift
23 # back and forth, and also more stuff in config.py will get converted
24 # to functions, etc.
25
26 # This script imports it as just "config" because if wxPython doesn't
27 # exist yet, then it can't be imported from wx.build.config (since
28 # wx._core doesn't exist yet.) So instead we keep the main copy of
29 # config .py in the same place as setup.py, and then copy it to
30 # wx/build as needed below.
31
32 # To fully support external builds, we need to have a build options
33 # file that is created whenever a new wxPython build is performed.
34 # We happen to be doing that here in this script, so make sure to
35 # remove the build_options.py file, so that config.py will recreate it.
36
37 for bo_name in ["build_options.py", "build_options.pyc"]:
38 if os.path.exists(bo_name):
39 os.remove(bo_name)
40
41 sys.setup_is_main = __name__ == "__main__" # an icky hack!
42 from config import *
43
44
45 #----------------------------------------------------------------------
46 # Update the packaged config file.
47 #----------------------------------------------------------------------
48
49 copy_file('config.py', 'wx/build', update=1, verbose=1)
50 copy_file('build_options.py', 'wx/build', update=1, verbose=1)
51 CLEANUP.append('wx/build/config.py')
52 CLEANUP.append('wx/build/build_options.py')
53
54 #----------------------------------------------------------------------
55 # Update the version file
56 #----------------------------------------------------------------------
57
58 # The version file is unconditionally updated every time setup.py is
59 # run since the version string can change based on the UNICODE flag
60
61 open('wx/__version__.py', 'w').write("""\
62 # This file was generated by setup.py...
63
64 VERSION_STRING = '%(VERSION)s'
65 MAJOR_VERSION = %(VER_MAJOR)s
66 MINOR_VERSION = %(VER_MINOR)s
67 RELEASE_VERSION = %(VER_RELEASE)s
68 SUBREL_VERSION = %(VER_SUBREL)s
69
70 VERSION = (MAJOR_VERSION, MINOR_VERSION, RELEASE_VERSION,
71 SUBREL_VERSION, '%(VER_FLAGS)s')
72
73 RELEASE_NUMBER = RELEASE_VERSION # for compatibility
74 """ % globals())
75
76 CLEANUP.append('wx/__version__.py')
77
78
79 #----------------------------------------------------------------------
80 # Write the SWIG version to a header file
81 #----------------------------------------------------------------------
82
83 if USE_SWIG:
84 try:
85 # It may come on either stdout or stderr, depending on the
86 # version, so read both.
87 i, o, e = os.popen3(SWIG + ' -version', 't')
88 stext = o.read() + e.read()
89 import re
90 match = re.search(r'[0-9]+\.[0-9]+\.[0-9]+$', stext, re.MULTILINE)
91 if not match:
92 raise 'NotFound'
93 SVER = match.group(0)
94 open('include/wx/wxPython/swigver.h', 'w').write('''\
95 // This file was generated by setup.py
96
97 #define wxPy_SWIG_VERSION "SWIG-%s"
98 ''' % SVER)
99 msg('Using SWIG-' + SVER)
100
101 except:
102 msg('\nUnable to get SWIG version number\n')
103
104
105 #----------------------------------------------------------------------
106 # patch distutils if it can't cope with the "classifiers" or
107 # "download_url" keywords
108 #----------------------------------------------------------------------
109
110 if sys.version < '2.2.3':
111 from distutils.dist import DistributionMetadata
112 DistributionMetadata.classifiers = None
113 DistributionMetadata.download_url = None
114 depends = {}
115 else:
116 depends = {'depends' : depends}
117
118
119 #----------------------------------------------------------------------
120 # Define the CORE extension module
121 #----------------------------------------------------------------------
122
123 msg('Preparing CORE...')
124 swig_sources = run_swig(['core.i'], 'src', GENDIR, PKGDIR,
125 USE_SWIG, swig_force, swig_args, swig_deps +
126 [ 'src/_accel.i',
127 'src/_app.i',
128 'src/_app_ex.py',
129 'src/_constraints.i',
130 'src/_core_api.i',
131 'src/_core_ex.py',
132 'src/__core_rename.i',
133 'src/__core_reverse.txt',
134 'src/_defs.i',
135 'src/_event.i',
136 'src/_event_ex.py',
137 'src/_evtloop.i',
138 'src/_evthandler.i',
139 'src/_filesys.i',
140 'src/_gdicmn.i',
141 'src/_image.i',
142 'src/_menu.i',
143 'src/_obj.i',
144 'src/_sizers.i',
145 'src/_gbsizer.i',
146 'src/_streams.i',
147 'src/_validator.i',
148 'src/_window.i',
149 'src/_control.i',
150 'src/_swigtype.i',
151 ],
152 True)
153
154 copy_file('src/__init__.py', PKGDIR, update=1, verbose=0)
155 CLEANUP.append(opj(PKGDIR, '__init__.py'))
156
157
158 # update the license files
159 mkpath('licence')
160 for file in ['preamble.txt', 'licence.txt', 'licendoc.txt', 'lgpl.txt']:
161 copy_file(opj(WXDIR, 'docs', file), opj('licence',file), update=1, verbose=0)
162 CLEANUP.append(opj('licence',file))
163 CLEANUP.append('licence')
164
165
166 if os.name == 'nt':
167 build_locale_dir(opj(PKGDIR, 'locale'))
168 DATA_FILES += build_locale_list(opj(PKGDIR, 'locale'))
169
170
171 if os.name == 'nt':
172 rc_file = ['src/wxc.rc']
173 else:
174 rc_file = []
175
176
177 ext = Extension('_core_', ['src/helpers.cpp',
178 ] + rc_file + swig_sources,
179
180 include_dirs = includes,
181 define_macros = defines,
182
183 library_dirs = libdirs,
184 libraries = libs,
185
186 extra_compile_args = cflags,
187 extra_link_args = lflags,
188
189 **depends
190 )
191 wxpExtensions.append(ext)
192
193
194
195
196
197 # Extension for the GDI module
198 swig_sources = run_swig(['gdi.i'], 'src', GENDIR, PKGDIR,
199 USE_SWIG, swig_force, swig_args, swig_deps +
200 ['src/__gdi_rename.i',
201 'src/_bitmap.i',
202 'src/_colour.i',
203 'src/_dc.i',
204 'src/_gdiobj.i',
205 'src/_imaglist.i',
206 'src/_region.i',
207 'src/_stockobjs.i',
208 'src/_effects.i',
209 'src/_intl.i',
210 'src/_intl_ex.py',
211 'src/_brush.i',
212 'src/_cursor.i',
213 'src/_font.i',
214 'src/_icon.i',
215 'src/_pen.i',
216 'src/_palette.i',
217 'src/_renderer.i',
218 ],
219 True)
220 ext = Extension('_gdi_', ['src/drawlist.cpp'] + swig_sources,
221 include_dirs = includes,
222 define_macros = defines,
223 library_dirs = libdirs,
224 libraries = libs,
225 extra_compile_args = cflags,
226 extra_link_args = lflags,
227 **depends
228 )
229 wxpExtensions.append(ext)
230
231
232
233
234
235
236 # Extension for the windows module
237 swig_sources = run_swig(['windows.i'], 'src', GENDIR, PKGDIR,
238 USE_SWIG, swig_force, swig_args, swig_deps +
239 ['src/__windows_rename.i',
240 'src/__windows_reverse.txt',
241 'src/_panel.i',
242 'src/_toplvl.i',
243 'src/_statusbar.i',
244 'src/_splitter.i',
245 'src/_sashwin.i',
246 'src/_popupwin.i',
247 'src/_tipwin.i',
248 'src/_vscroll.i',
249 'src/_taskbar.i',
250 'src/_cmndlgs.i',
251 'src/_mdi.i',
252 'src/_pywindows.i',
253 'src/_printfw.i',
254 ],
255 True)
256 ext = Extension('_windows_', swig_sources,
257 include_dirs = includes,
258 define_macros = defines,
259 library_dirs = libdirs,
260 libraries = libs,
261 extra_compile_args = cflags,
262 extra_link_args = lflags,
263 **depends
264 )
265 wxpExtensions.append(ext)
266
267
268
269
270 # Extension for the controls module
271 swig_sources = run_swig(['controls.i'], 'src', GENDIR, PKGDIR,
272 USE_SWIG, swig_force, swig_args, swig_deps +
273 [ 'src/__controls_rename.i',
274 'src/__controls_reverse.txt',
275 'src/_toolbar.i',
276 'src/_button.i',
277 'src/_checkbox.i',
278 'src/_choice.i',
279 'src/_combobox.i',
280 'src/_gauge.i',
281 'src/_statctrls.i',
282 'src/_listbox.i',
283 'src/_textctrl.i',
284 'src/_scrolbar.i',
285 'src/_spin.i',
286 'src/_radio.i',
287 'src/_slider.i',
288 'src/_tglbtn.i',
289 'src/_notebook.i',
290 'src/_listctrl.i',
291 'src/_treectrl.i',
292 'src/_dirctrl.i',
293 'src/_pycontrol.i',
294 'src/_cshelp.i',
295 'src/_dragimg.i',
296 'src/_datectrl.i',
297 ],
298 True)
299 ext = Extension('_controls_', swig_sources,
300 include_dirs = includes,
301 define_macros = defines,
302 library_dirs = libdirs,
303 libraries = libs,
304 extra_compile_args = cflags,
305 extra_link_args = lflags,
306 **depends
307 )
308 wxpExtensions.append(ext)
309
310
311
312
313 # Extension for the misc module
314 swig_sources = run_swig(['misc.i'], 'src', GENDIR, PKGDIR,
315 USE_SWIG, swig_force, swig_args, swig_deps +
316 [ 'src/__misc_rename.i',
317 'src/__misc_reverse.txt',
318 'src/_settings.i',
319 'src/_functions.i',
320 'src/_misc.i',
321 'src/_tipdlg.i',
322 'src/_timer.i',
323 'src/_log.i',
324 'src/_process.i',
325 'src/_joystick.i',
326 'src/_sound.i',
327 'src/_mimetype.i',
328 'src/_artprov.i',
329 'src/_config.i',
330 'src/_datetime.i',
331 'src/_dataobj.i',
332 'src/_dnd.i',
333 'src/_display.i',
334 'src/_clipbrd.i',
335 'src/_stdpaths.i',
336 ],
337 True)
338 ext = Extension('_misc_', swig_sources,
339 include_dirs = includes,
340 define_macros = defines,
341 library_dirs = libdirs,
342 libraries = libs,
343 extra_compile_args = cflags,
344 extra_link_args = lflags,
345 **depends
346 )
347 wxpExtensions.append(ext)
348
349
350
351 ##
352 ## Core modules that are not in the "core" namespace start here
353 ##
354
355 swig_sources = run_swig(['calendar.i'], 'src', GENDIR, PKGDIR,
356 USE_SWIG, swig_force, swig_args, swig_deps)
357 ext = Extension('_calendar', swig_sources,
358 include_dirs = includes,
359 define_macros = defines,
360 library_dirs = libdirs,
361 libraries = libs,
362 extra_compile_args = cflags,
363 extra_link_args = lflags,
364 **depends
365 )
366 wxpExtensions.append(ext)
367
368
369 swig_sources = run_swig(['grid.i'], 'src', GENDIR, PKGDIR,
370 USE_SWIG, swig_force, swig_args, swig_deps)
371 ext = Extension('_grid', swig_sources,
372 include_dirs = includes,
373 define_macros = defines,
374 library_dirs = libdirs,
375 libraries = libs,
376 extra_compile_args = cflags,
377 extra_link_args = lflags,
378 **depends
379 )
380 wxpExtensions.append(ext)
381
382
383
384 swig_sources = run_swig(['html.i'], 'src', GENDIR, PKGDIR,
385 USE_SWIG, swig_force, swig_args, swig_deps)
386 ext = Extension('_html', swig_sources,
387 include_dirs = includes,
388 define_macros = defines,
389 library_dirs = libdirs,
390 libraries = libs,
391 extra_compile_args = cflags,
392 extra_link_args = lflags,
393 **depends
394 )
395 wxpExtensions.append(ext)
396
397
398 mediaLibs = libs[:]
399 if not MONOLITHIC and os.name == 'nt':
400 mediaLibs.append(makeLibName('media')[0])
401 swig_sources = run_swig(['media.i'], 'src', GENDIR, PKGDIR,
402 USE_SWIG, swig_force, swig_args, swig_deps)
403 ext = Extension('_media', swig_sources,
404 include_dirs = includes,
405 define_macros = defines,
406 library_dirs = libdirs,
407 libraries = mediaLibs,
408 extra_compile_args = cflags,
409 extra_link_args = lflags,
410 **depends
411 )
412 wxpExtensions.append(ext)
413
414
415 swig_sources = run_swig(['webkit.i'], 'src', GENDIR, PKGDIR,
416 USE_SWIG, swig_force, swig_args, swig_deps)
417 ext = Extension('_webkit', swig_sources,
418 include_dirs = includes,
419 define_macros = defines,
420 library_dirs = libdirs,
421 libraries = libs,
422 extra_compile_args = cflags,
423 extra_link_args = lflags,
424 **depends
425 )
426 wxpExtensions.append(ext)
427
428
429
430 swig_sources = run_swig(['wizard.i'], 'src', GENDIR, PKGDIR,
431 USE_SWIG, swig_force, swig_args, swig_deps)
432 ext = Extension('_wizard', swig_sources,
433 include_dirs = includes,
434 define_macros = defines,
435 library_dirs = libdirs,
436 libraries = libs,
437 extra_compile_args = cflags,
438 extra_link_args = lflags,
439 **depends
440 )
441 wxpExtensions.append(ext)
442
443
444
445 swig_sources = run_swig(['xrc.i'], 'src', GENDIR, PKGDIR,
446 USE_SWIG, swig_force, swig_args, swig_deps +
447 [ 'src/_xrc_rename.i',
448 'src/_xrc_ex.py',
449 'src/_xmlres.i',
450 'src/_xmlsub.i',
451 'src/_xml.i',
452 'src/_xmlhandler.i',
453 ])
454 ext = Extension('_xrc',
455 swig_sources,
456
457 include_dirs = includes + CONTRIBS_INC,
458 define_macros = defines,
459
460 library_dirs = libdirs,
461 libraries = libs,
462
463 extra_compile_args = cflags,
464 extra_link_args = lflags,
465 )
466 wxpExtensions.append(ext)
467
468
469 #----------------------------------------------------------------------
470 # Define the GLCanvas extension module
471 #----------------------------------------------------------------------
472
473 if BUILD_GLCANVAS:
474 msg('Preparing GLCANVAS...')
475 location = 'contrib/glcanvas'
476
477 swig_sources = run_swig(['glcanvas.i'], location, GENDIR, PKGDIR,
478 USE_SWIG, swig_force, swig_args, swig_deps)
479
480 gl_libs = []
481 if os.name == 'posix':
482 gl_config = os.popen(WX_CONFIG + ' --libs gl', 'r').read()[:-1]
483 gl_lflags = gl_config.split() + lflags
484 gl_libs = libs
485 else:
486 gl_libs = libs + ['opengl32', 'glu32'] + makeLibName('gl')
487 gl_lflags = lflags
488
489 ext = Extension('_glcanvas',
490 swig_sources,
491
492 include_dirs = includes + CONTRIBS_INC,
493 define_macros = defines,
494
495 library_dirs = libdirs,
496 libraries = gl_libs,
497
498 extra_compile_args = cflags,
499 extra_link_args = gl_lflags,
500 )
501
502 wxpExtensions.append(ext)
503
504
505 #----------------------------------------------------------------------
506 # Define the OGL extension module
507 #----------------------------------------------------------------------
508
509 if BUILD_OGL:
510 msg('Preparing OGL...')
511 location = 'contrib/ogl'
512
513 swig_sources = run_swig(['ogl.i'], location, GENDIR, PKGDIR,
514 USE_SWIG, swig_force, swig_args, swig_deps +
515 [ '%s/_oglbasic.i' % location,
516 '%s/_oglshapes.i' % location,
517 '%s/_oglshapes2.i' % location,
518 '%s/_oglcanvas.i' % location,
519 '%s/_ogldefs.i' % location,
520 ])
521
522 ext = Extension('_ogl',
523 swig_sources,
524
525 include_dirs = includes + [ location ] + CONTRIBS_INC,
526 define_macros = defines + [('wxUSE_DEPRECATED', '0')],
527
528 library_dirs = libdirs,
529 libraries = libs + makeLibName('ogl'),
530
531 extra_compile_args = cflags,
532 extra_link_args = lflags,
533 )
534
535 wxpExtensions.append(ext)
536
537
538
539 #----------------------------------------------------------------------
540 # Define the STC extension module
541 #----------------------------------------------------------------------
542
543 if BUILD_STC:
544 msg('Preparing STC...')
545 location = 'contrib/stc'
546 #if os.name == 'nt':
547 STC_H = opj(WXDIR, 'contrib', 'include/wx/stc')
548 #else:
549 # STC_H = opj(WXPREFIX, 'include/wx-%d.%d/wx/stc' % (VER_MAJOR, VER_MINOR))
550
551 ## NOTE: need to add something like this to the stc.bkl...
552
553 ## # Check if gen_iface needs to be run for the wxSTC sources
554 ## if (newer(opj(CTRB_SRC, 'stc/stc.h.in'), opj(CTRB_INC, 'stc/stc.h' )) or
555 ## newer(opj(CTRB_SRC, 'stc/stc.cpp.in'), opj(CTRB_SRC, 'stc/stc.cpp')) or
556 ## newer(opj(CTRB_SRC, 'stc/gen_iface.py'), opj(CTRB_SRC, 'stc/stc.cpp'))):
557
558 ## msg('Running gen_iface.py, regenerating stc.h and stc.cpp...')
559 ## cwd = os.getcwd()
560 ## os.chdir(opj(CTRB_SRC, 'stc'))
561 ## sys.path.insert(0, os.curdir)
562 ## import gen_iface
563 ## gen_iface.main([])
564 ## os.chdir(cwd)
565
566
567 swig_sources = run_swig(['stc.i'], location, GENDIR, PKGDIR,
568 USE_SWIG, swig_force,
569 swig_args + ['-I'+STC_H, '-I'+location],
570 [opj(STC_H, 'stc.h'),
571 opj(location, "_stc_utf8_methods.py"),
572 opj(location, "_stc_docstrings.i"),
573 opj(location, "_stc_gendocs.i"),
574 ] + swig_deps)
575
576 ext = Extension('_stc',
577 swig_sources,
578
579 include_dirs = includes + CONTRIBS_INC,
580 define_macros = defines,
581
582 library_dirs = libdirs,
583 libraries = libs + makeLibName('stc'),
584
585 extra_compile_args = cflags,
586 extra_link_args = lflags,
587 )
588
589 wxpExtensions.append(ext)
590
591
592 #----------------------------------------------------------------------
593 # Define the ACTIVEX extension module (experimental)
594 #----------------------------------------------------------------------
595
596 if BUILD_ACTIVEX:
597 msg('Preparing ACTIVEX...')
598 location = 'contrib/activex'
599 axloc = opj(location, "wxie")
600
601 swig_files = ['activex.i', ]
602
603 swig_sources = run_swig(swig_files, location, '', PKGDIR,
604 USE_SWIG, swig_force, swig_args, swig_deps +
605 [ '%s/_activex_ex.py' % location])
606
607
608 ext = Extension('_activex', ['%s/IEHtmlWin.cpp' % axloc,
609 '%s/wxactivex.cpp' % axloc,
610 ] + swig_sources,
611
612 include_dirs = includes + [ axloc ],
613 define_macros = defines,
614
615 library_dirs = libdirs,
616 libraries = libs,
617
618 extra_compile_args = cflags,
619 extra_link_args = lflags,
620 )
621
622 wxpExtensions.append(ext)
623
624
625 #----------------------------------------------------------------------
626 # Define the GIZMOS extension module
627 #----------------------------------------------------------------------
628
629 if BUILD_GIZMOS:
630 msg('Preparing GIZMOS...')
631 location = 'contrib/gizmos'
632
633 swig_sources = run_swig(['gizmos.i'], location, GENDIR, PKGDIR,
634 USE_SWIG, swig_force, swig_args, swig_deps)
635
636 ext = Extension('_gizmos',
637 [ '%s/treelistctrl.cpp' % opj(location, 'wxCode/src') ] + swig_sources,
638
639 include_dirs = includes + [ location, opj(location, 'wxCode/include') ] + CONTRIBS_INC,
640 define_macros = defines,
641
642 library_dirs = libdirs,
643 libraries = libs + makeLibName('gizmos'),
644
645 extra_compile_args = cflags,
646 extra_link_args = lflags,
647 )
648
649 wxpExtensions.append(ext)
650
651
652 #----------------------------------------------------------------------
653 # Define the ANIMATE extension module
654 #----------------------------------------------------------------------
655
656 if BUILD_ANIMATE:
657 msg('Preparing ANIMATE...')
658 location = 'contrib/animate'
659
660 swig_sources = run_swig(['animate.i'], location, GENDIR, PKGDIR,
661 USE_SWIG, swig_force, swig_args, swig_deps)
662
663 ext = Extension('_animate',
664 swig_sources,
665
666 include_dirs = includes + CONTRIBS_INC,
667 define_macros = defines,
668
669 library_dirs = libdirs,
670 libraries = libs + makeLibName('animate'),
671
672 extra_compile_args = cflags,
673 extra_link_args = lflags,
674 )
675
676 wxpExtensions.append(ext)
677
678
679
680 #----------------------------------------------------------------------
681 # Define the DLLWIDGET extension module
682 #----------------------------------------------------------------------
683
684 if BUILD_DLLWIDGET:
685 msg('Preparing DLLWIDGET...')
686 location = 'contrib/dllwidget'
687 swig_files = ['dllwidget_.i']
688
689 swig_sources = run_swig(swig_files, location, '', PKGDIR,
690 USE_SWIG, swig_force, swig_args, swig_deps)
691
692 # copy a contrib project specific py module to the main package dir
693 copy_file(opj(location, 'dllwidget.py'), PKGDIR, update=1, verbose=0)
694 CLEANUP.append(opj(PKGDIR, 'dllwidget.py'))
695
696 ext = Extension('dllwidget_c', [
697 '%s/dllwidget.cpp' % location,
698 ] + swig_sources,
699
700 include_dirs = includes + CONTRIBS_INC,
701 define_macros = defines,
702
703 library_dirs = libdirs,
704 libraries = libs,
705
706 extra_compile_args = cflags,
707 extra_link_args = lflags,
708 )
709
710 wxpExtensions.append(ext)
711
712
713
714
715 #----------------------------------------------------------------------
716 # Tools, scripts data files, etc.
717 #----------------------------------------------------------------------
718
719 if NO_SCRIPTS:
720 SCRIPTS = None
721 else:
722 SCRIPTS = [opj('scripts/helpviewer'),
723 opj('scripts/img2png'),
724 opj('scripts/img2py'),
725 opj('scripts/img2xpm'),
726 opj('scripts/pyalacarte'),
727 opj('scripts/pyalamode'),
728 opj('scripts/pycrust'),
729 opj('scripts/pyshell'),
730 opj('scripts/pywrap'),
731 opj('scripts/pywrap'),
732 opj('scripts/pywxrc'),
733 opj('scripts/xrced'),
734 ]
735
736
737
738 DATA_FILES += find_data_files('wx/tools/XRCed', '*.txt', '*.xrc')
739 DATA_FILES += find_data_files('wx/py', '*.txt', '*.ico', '*.css', '*.html')
740 DATA_FILES += find_data_files('wx', '*.txt', '*.css', '*.html')
741
742
743 if NO_HEADERS:
744 HEADERS = None
745 else:
746 h_files = glob.glob(opj("include/wx/wxPython/*.h"))
747 i_files = glob.glob(opj("src/*.i")) + \
748 glob.glob(opj("src/_*.py")) + \
749 glob.glob(opj("src/*.swg"))
750
751 HEADERS = zip(h_files, ["/wxPython"]*len(h_files)) + \
752 zip(i_files, ["/wxPython/i_files"]*len(i_files))
753
754
755
756 if INSTALL_MULTIVERSION:
757 EXTRA_PATH = getExtraPath(addOpts=EP_ADD_OPTS, shortVer=not EP_FULL_VER)
758 open("src/wx.pth", "w").write(EXTRA_PATH)
759 CLEANUP.append("src/wx.pth")
760 else:
761 EXTRA_PATH = None
762
763
764
765 #----------------------------------------------------------------------
766 # Do the Setup/Build/Install/Whatever
767 #----------------------------------------------------------------------
768
769 if __name__ == "__main__":
770 if not PREP_ONLY:
771
772 setup(name = 'wxPython',
773 version = VERSION,
774 description = DESCRIPTION,
775 long_description = LONG_DESCRIPTION,
776 author = AUTHOR,
777 author_email = AUTHOR_EMAIL,
778 url = URL,
779 download_url = DOWNLOAD_URL,
780 license = LICENSE,
781 platforms = PLATFORMS,
782 classifiers = filter(None, CLASSIFIERS.split("\n")),
783 keywords = KEYWORDS,
784
785 packages = ['wxPython',
786 'wxPython.lib',
787 'wxPython.lib.colourchooser',
788 'wxPython.lib.editor',
789 'wxPython.lib.mixins',
790 'wxPython.tools',
791
792 'wx',
793 'wx.build',
794 'wx.lib',
795 'wx.lib.colourchooser',
796 'wx.lib.editor',
797 'wx.lib.floatcanvas',
798 'wx.lib.masked',
799 'wx.lib.mixins',
800 'wx.lib.ogl',
801 'wx.py',
802 'wx.tools',
803 'wx.tools.XRCed',
804 ],
805
806 extra_path = EXTRA_PATH,
807
808 ext_package = PKGDIR,
809 ext_modules = wxpExtensions,
810
811 options = { 'build' : { 'build_base' : BUILD_BASE },
812 },
813
814 scripts = SCRIPTS,
815 data_files = DATA_FILES,
816 headers = HEADERS,
817
818 # Override some of the default distutils command classes with my own
819 cmdclass = { 'install' : wx_install,
820 'install_data': wx_smart_install_data,
821 'install_headers': wx_install_headers,
822 'clean': wx_extra_clean,
823 },
824 )
825
826
827 if INSTALL_MULTIVERSION:
828 setup(name = 'wxPython-common',
829 version = VERSION,
830 description = DESCRIPTION,
831 long_description = LONG_DESCRIPTION,
832 author = AUTHOR,
833 author_email = AUTHOR_EMAIL,
834 url = URL,
835 download_url = DOWNLOAD_URL,
836 license = LICENSE,
837 platforms = PLATFORMS,
838 classifiers = filter(None, CLASSIFIERS.split("\n")),
839 keywords = KEYWORDS,
840
841 package_dir = { '': 'wxversion' },
842 py_modules = ['wxversion'],
843
844 data_files = [('', ['src/wx.pth'])],
845
846 options = { 'build' : { 'build_base' : BUILD_BASE },
847 },
848
849 cmdclass = { 'install_data': wx_smart_install_data,
850 },
851 )
852
853 #----------------------------------------------------------------------
854 #----------------------------------------------------------------------