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