]> git.saurik.com Git - wxWidgets.git/blob - wxPython/setup.py
support for fractional characters widths under Mac
[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 'src/_renderer.i',
190 ],
191 True)
192 ext = Extension('_gdi_', ['src/drawlist.cpp'] + swig_sources,
193 include_dirs = includes,
194 define_macros = defines,
195 library_dirs = libdirs,
196 libraries = libs,
197 extra_compile_args = cflags,
198 extra_link_args = lflags,
199 **depends
200 )
201 wxpExtensions.append(ext)
202
203
204
205
206
207
208 # Extension for the windows module
209 swig_sources = run_swig(['windows.i'], 'src', GENDIR, PKGDIR,
210 USE_SWIG, swig_force, swig_args, swig_deps +
211 ['src/__windows_rename.i',
212 'src/__windows_reverse.txt',
213 'src/_panel.i',
214 'src/_toplvl.i',
215 'src/_statusbar.i',
216 'src/_splitter.i',
217 'src/_sashwin.i',
218 'src/_popupwin.i',
219 'src/_tipwin.i',
220 'src/_vscroll.i',
221 'src/_taskbar.i',
222 'src/_cmndlgs.i',
223 'src/_mdi.i',
224 'src/_pywindows.i',
225 'src/_printfw.i',
226 ],
227 True)
228 ext = Extension('_windows_', swig_sources,
229 include_dirs = includes,
230 define_macros = defines,
231 library_dirs = libdirs,
232 libraries = libs,
233 extra_compile_args = cflags,
234 extra_link_args = lflags,
235 **depends
236 )
237 wxpExtensions.append(ext)
238
239
240
241
242 # Extension for the controls module
243 swig_sources = run_swig(['controls.i'], 'src', GENDIR, PKGDIR,
244 USE_SWIG, swig_force, swig_args, swig_deps +
245 [ 'src/__controls_rename.i',
246 'src/__controls_reverse.txt',
247 'src/_toolbar.i',
248 'src/_button.i',
249 'src/_checkbox.i',
250 'src/_choice.i',
251 'src/_combobox.i',
252 'src/_gauge.i',
253 'src/_statctrls.i',
254 'src/_listbox.i',
255 'src/_textctrl.i',
256 'src/_scrolbar.i',
257 'src/_spin.i',
258 'src/_radio.i',
259 'src/_slider.i',
260 'src/_tglbtn.i',
261 'src/_notebook.i',
262 'src/_listctrl.i',
263 'src/_treectrl.i',
264 'src/_dirctrl.i',
265 'src/_pycontrol.i',
266 'src/_cshelp.i',
267 'src/_dragimg.i',
268 'src/_datectrl.i',
269 ],
270 True)
271 ext = Extension('_controls_', swig_sources,
272 include_dirs = includes,
273 define_macros = defines,
274 library_dirs = libdirs,
275 libraries = libs,
276 extra_compile_args = cflags,
277 extra_link_args = lflags,
278 **depends
279 )
280 wxpExtensions.append(ext)
281
282
283
284
285 # Extension for the misc module
286 swig_sources = run_swig(['misc.i'], 'src', GENDIR, PKGDIR,
287 USE_SWIG, swig_force, swig_args, swig_deps +
288 [ 'src/__misc_rename.i',
289 'src/__misc_reverse.txt',
290 'src/_settings.i',
291 'src/_functions.i',
292 'src/_misc.i',
293 'src/_tipdlg.i',
294 'src/_timer.i',
295 'src/_log.i',
296 'src/_process.i',
297 'src/_joystick.i',
298 'src/_sound.i',
299 'src/_mimetype.i',
300 'src/_artprov.i',
301 'src/_config.i',
302 'src/_datetime.i',
303 'src/_dataobj.i',
304 'src/_dnd.i',
305 'src/_display.i',
306 'src/_clipbrd.i',
307 'src/_stdpaths.i',
308 ],
309 True)
310 ext = Extension('_misc_', swig_sources,
311 include_dirs = includes,
312 define_macros = defines,
313 library_dirs = libdirs,
314 libraries = libs,
315 extra_compile_args = cflags,
316 extra_link_args = lflags,
317 **depends
318 )
319 wxpExtensions.append(ext)
320
321
322
323 ##
324 ## Core modules that are not in the "core" namespace start here
325 ##
326
327 swig_sources = run_swig(['calendar.i'], 'src', GENDIR, PKGDIR,
328 USE_SWIG, swig_force, swig_args, swig_deps)
329 ext = Extension('_calendar', swig_sources,
330 include_dirs = includes,
331 define_macros = defines,
332 library_dirs = libdirs,
333 libraries = libs,
334 extra_compile_args = cflags,
335 extra_link_args = lflags,
336 **depends
337 )
338 wxpExtensions.append(ext)
339
340
341 swig_sources = run_swig(['grid.i'], 'src', GENDIR, PKGDIR,
342 USE_SWIG, swig_force, swig_args, swig_deps)
343 ext = Extension('_grid', swig_sources,
344 include_dirs = includes,
345 define_macros = defines,
346 library_dirs = libdirs,
347 libraries = libs,
348 extra_compile_args = cflags,
349 extra_link_args = lflags,
350 **depends
351 )
352 wxpExtensions.append(ext)
353
354
355
356 swig_sources = run_swig(['html.i'], 'src', GENDIR, PKGDIR,
357 USE_SWIG, swig_force, swig_args, swig_deps)
358 ext = Extension('_html', swig_sources,
359 include_dirs = includes,
360 define_macros = defines,
361 library_dirs = libdirs,
362 libraries = libs,
363 extra_compile_args = cflags,
364 extra_link_args = lflags,
365 **depends
366 )
367 wxpExtensions.append(ext)
368
369
370 mediaLibs = libs[:]
371 if not MONOLITHIC and os.name == 'nt':
372 mediaLibs.append(makeLibName('media')[0])
373 swig_sources = run_swig(['media.i'], 'src', GENDIR, PKGDIR,
374 USE_SWIG, swig_force, swig_args, swig_deps)
375 ext = Extension('_media', swig_sources,
376 include_dirs = includes,
377 define_macros = defines,
378 library_dirs = libdirs,
379 libraries = mediaLibs,
380 extra_compile_args = cflags,
381 extra_link_args = lflags,
382 **depends
383 )
384 wxpExtensions.append(ext)
385
386
387 swig_sources = run_swig(['webkit.i'], 'src', GENDIR, PKGDIR,
388 USE_SWIG, swig_force, swig_args, swig_deps)
389 ext = Extension('_webkit', swig_sources,
390 include_dirs = includes,
391 define_macros = defines,
392 library_dirs = libdirs,
393 libraries = libs,
394 extra_compile_args = cflags,
395 extra_link_args = lflags,
396 **depends
397 )
398 wxpExtensions.append(ext)
399
400
401
402 swig_sources = run_swig(['wizard.i'], 'src', GENDIR, PKGDIR,
403 USE_SWIG, swig_force, swig_args, swig_deps)
404 ext = Extension('_wizard', swig_sources,
405 include_dirs = includes,
406 define_macros = defines,
407 library_dirs = libdirs,
408 libraries = libs,
409 extra_compile_args = cflags,
410 extra_link_args = lflags,
411 **depends
412 )
413 wxpExtensions.append(ext)
414
415
416
417 swig_sources = run_swig(['xrc.i'], 'src', GENDIR, PKGDIR,
418 USE_SWIG, swig_force, swig_args, swig_deps +
419 [ 'src/_xrc_rename.i',
420 'src/_xrc_ex.py',
421 'src/_xmlres.i',
422 'src/_xmlsub.i',
423 'src/_xml.i',
424 'src/_xmlhandler.i',
425 ])
426 ext = Extension('_xrc',
427 swig_sources,
428
429 include_dirs = includes + CONTRIBS_INC,
430 define_macros = defines,
431
432 library_dirs = libdirs,
433 libraries = libs,
434
435 extra_compile_args = cflags,
436 extra_link_args = lflags,
437 )
438 wxpExtensions.append(ext)
439
440
441 #----------------------------------------------------------------------
442 # Define the GLCanvas extension module
443 #----------------------------------------------------------------------
444
445 if BUILD_GLCANVAS:
446 msg('Preparing GLCANVAS...')
447 location = 'contrib/glcanvas'
448
449 swig_sources = run_swig(['glcanvas.i'], location, GENDIR, PKGDIR,
450 USE_SWIG, swig_force, swig_args, swig_deps)
451
452 gl_libs = []
453 if os.name == 'posix':
454 gl_config = os.popen(WX_CONFIG + ' --libs gl', 'r').read()[:-1]
455 gl_lflags = gl_config.split() + lflags
456 gl_libs = libs
457 else:
458 gl_libs = libs + ['opengl32', 'glu32'] + makeLibName('gl')
459 gl_lflags = lflags
460
461 ext = Extension('_glcanvas',
462 swig_sources,
463
464 include_dirs = includes + CONTRIBS_INC,
465 define_macros = defines,
466
467 library_dirs = libdirs,
468 libraries = gl_libs,
469
470 extra_compile_args = cflags,
471 extra_link_args = gl_lflags,
472 )
473
474 wxpExtensions.append(ext)
475
476
477 #----------------------------------------------------------------------
478 # Define the OGL extension module
479 #----------------------------------------------------------------------
480
481 if BUILD_OGL:
482 msg('Preparing OGL...')
483 location = 'contrib/ogl'
484
485 swig_sources = run_swig(['ogl.i'], location, GENDIR, PKGDIR,
486 USE_SWIG, swig_force, swig_args, swig_deps +
487 [ '%s/_oglbasic.i' % location,
488 '%s/_oglshapes.i' % location,
489 '%s/_oglshapes2.i' % location,
490 '%s/_oglcanvas.i' % location,
491 '%s/_ogldefs.i' % location,
492 ])
493
494 ext = Extension('_ogl',
495 swig_sources,
496
497 include_dirs = includes + [ location ] + CONTRIBS_INC,
498 define_macros = defines + [('wxUSE_DEPRECATED', '0')],
499
500 library_dirs = libdirs,
501 libraries = libs + makeLibName('ogl'),
502
503 extra_compile_args = cflags,
504 extra_link_args = lflags,
505 )
506
507 wxpExtensions.append(ext)
508
509
510
511 #----------------------------------------------------------------------
512 # Define the STC extension module
513 #----------------------------------------------------------------------
514
515 if BUILD_STC:
516 msg('Preparing STC...')
517 location = 'contrib/stc'
518 #if os.name == 'nt':
519 STC_H = opj(WXDIR, 'contrib', 'include/wx/stc')
520 #else:
521 # STC_H = opj(WXPREFIX, 'include/wx-%d.%d/wx/stc' % (VER_MAJOR, VER_MINOR))
522
523 ## NOTE: need to add something like this to the stc.bkl...
524
525 ## # Check if gen_iface needs to be run for the wxSTC sources
526 ## if (newer(opj(CTRB_SRC, 'stc/stc.h.in'), opj(CTRB_INC, 'stc/stc.h' )) or
527 ## newer(opj(CTRB_SRC, 'stc/stc.cpp.in'), opj(CTRB_SRC, 'stc/stc.cpp')) or
528 ## newer(opj(CTRB_SRC, 'stc/gen_iface.py'), opj(CTRB_SRC, 'stc/stc.cpp'))):
529
530 ## msg('Running gen_iface.py, regenerating stc.h and stc.cpp...')
531 ## cwd = os.getcwd()
532 ## os.chdir(opj(CTRB_SRC, 'stc'))
533 ## sys.path.insert(0, os.curdir)
534 ## import gen_iface
535 ## gen_iface.main([])
536 ## os.chdir(cwd)
537
538
539 swig_sources = run_swig(['stc.i'], location, GENDIR, PKGDIR,
540 USE_SWIG, swig_force,
541 swig_args + ['-I'+STC_H, '-I'+location],
542 [opj(STC_H, 'stc.h'),
543 opj(location, "_stc_utf8_methods.py"),
544 opj(location, "_stc_docstrings.i"),
545 opj(location, "_stc_gendocs.i"),
546 ] + swig_deps)
547
548 ext = Extension('_stc',
549 swig_sources,
550
551 include_dirs = includes + CONTRIBS_INC,
552 define_macros = defines,
553
554 library_dirs = libdirs,
555 libraries = libs + makeLibName('stc'),
556
557 extra_compile_args = cflags,
558 extra_link_args = lflags,
559 )
560
561 wxpExtensions.append(ext)
562
563
564
565 #----------------------------------------------------------------------
566 # Define the IEWIN extension module (experimental)
567 #----------------------------------------------------------------------
568
569 if BUILD_IEWIN:
570 msg('Preparing IEWIN...')
571 location = 'contrib/iewin'
572
573 swig_files = ['iewin.i', ]
574
575 swig_sources = run_swig(swig_files, location, '', PKGDIR,
576 USE_SWIG, swig_force, swig_args, swig_deps)
577
578
579 ext = Extension('_iewin', ['%s/IEHtmlWin.cpp' % location,
580 '%s/wxactivex.cpp' % location,
581 ] + swig_sources,
582
583 include_dirs = includes + CONTRIBS_INC,
584 define_macros = defines,
585
586 library_dirs = libdirs,
587 libraries = libs,
588
589 extra_compile_args = cflags,
590 extra_link_args = lflags,
591 )
592
593 wxpExtensions.append(ext)
594
595
596 #----------------------------------------------------------------------
597 # Define the ACTIVEX extension module (experimental)
598 #----------------------------------------------------------------------
599
600 if BUILD_ACTIVEX:
601 msg('Preparing ACTIVEX...')
602 location = 'contrib/activex'
603 axloc = opj(location, "wxie")
604
605 swig_files = ['activex.i', ]
606
607 swig_sources = run_swig(swig_files, location, '', PKGDIR,
608 USE_SWIG, swig_force, swig_args, swig_deps +
609 [ '%s/_activex_ex.py' % location])
610
611
612 ext = Extension('_activex', ['%s/IEHtmlWin.cpp' % axloc,
613 '%s/wxactivex.cpp' % axloc,
614 ] + swig_sources,
615
616 include_dirs = includes + [ axloc ],
617 define_macros = defines,
618
619 library_dirs = libdirs,
620 libraries = libs,
621
622 extra_compile_args = cflags,
623 extra_link_args = lflags,
624 )
625
626 wxpExtensions.append(ext)
627
628
629 #----------------------------------------------------------------------
630 # Define the GIZMOS extension module
631 #----------------------------------------------------------------------
632
633 if BUILD_GIZMOS:
634 msg('Preparing GIZMOS...')
635 location = 'contrib/gizmos'
636
637 swig_sources = run_swig(['gizmos.i'], location, GENDIR, PKGDIR,
638 USE_SWIG, swig_force, swig_args, swig_deps)
639
640 ext = Extension('_gizmos',
641 [ '%s/treelistctrl.cpp' % opj(location, 'wxCode/src') ] + swig_sources,
642
643 include_dirs = includes + [ location, opj(location, 'wxCode/include') ] + CONTRIBS_INC,
644 define_macros = defines,
645
646 library_dirs = libdirs,
647 libraries = libs + makeLibName('gizmos'),
648
649 extra_compile_args = cflags,
650 extra_link_args = lflags,
651 )
652
653 wxpExtensions.append(ext)
654
655
656 #----------------------------------------------------------------------
657 # Define the ANIMATE extension module
658 #----------------------------------------------------------------------
659
660 if BUILD_ANIMATE:
661 msg('Preparing ANIMATE...')
662 location = 'contrib/animate'
663
664 swig_sources = run_swig(['animate.i'], location, GENDIR, PKGDIR,
665 USE_SWIG, swig_force, swig_args, swig_deps)
666
667 ext = Extension('_animate',
668 swig_sources,
669
670 include_dirs = includes + CONTRIBS_INC,
671 define_macros = defines,
672
673 library_dirs = libdirs,
674 libraries = libs + makeLibName('animate'),
675
676 extra_compile_args = cflags,
677 extra_link_args = lflags,
678 )
679
680 wxpExtensions.append(ext)
681
682
683
684 #----------------------------------------------------------------------
685 # Define the DLLWIDGET extension module
686 #----------------------------------------------------------------------
687
688 if BUILD_DLLWIDGET:
689 msg('Preparing DLLWIDGET...')
690 location = 'contrib/dllwidget'
691 swig_files = ['dllwidget_.i']
692
693 swig_sources = run_swig(swig_files, location, '', PKGDIR,
694 USE_SWIG, swig_force, swig_args, swig_deps)
695
696 # copy a contrib project specific py module to the main package dir
697 copy_file(opj(location, 'dllwidget.py'), PKGDIR, update=1, verbose=0)
698 CLEANUP.append(opj(PKGDIR, 'dllwidget.py'))
699
700 ext = Extension('dllwidget_c', [
701 '%s/dllwidget.cpp' % location,
702 ] + swig_sources,
703
704 include_dirs = includes + CONTRIBS_INC,
705 define_macros = defines,
706
707 library_dirs = libdirs,
708 libraries = libs,
709
710 extra_compile_args = cflags,
711 extra_link_args = lflags,
712 )
713
714 wxpExtensions.append(ext)
715
716
717
718
719 #----------------------------------------------------------------------
720 # Tools, scripts data files, etc.
721 #----------------------------------------------------------------------
722
723 if NO_SCRIPTS:
724 SCRIPTS = None
725 else:
726 SCRIPTS = [opj('scripts/helpviewer'),
727 opj('scripts/img2png'),
728 opj('scripts/img2py'),
729 opj('scripts/img2xpm'),
730 opj('scripts/pyalacarte'),
731 opj('scripts/pyalamode'),
732 opj('scripts/pycrust'),
733 opj('scripts/pyshell'),
734 opj('scripts/pywrap'),
735 opj('scripts/pywrap'),
736 opj('scripts/pywxrc'),
737 opj('scripts/xrced'),
738 ]
739
740
741
742 DATA_FILES += find_data_files('wx/tools/XRCed', '*.txt', '*.xrc')
743 DATA_FILES += find_data_files('wx/py', '*.txt', '*.ico', '*.css', '*.html')
744 DATA_FILES += find_data_files('wx', '*.txt', '*.css', '*.html')
745
746
747 if NO_HEADERS:
748 HEADERS = None
749 else:
750 h_files = glob.glob(opj("include/wx/wxPython/*.h"))
751 i_files = glob.glob(opj("src/*.i")) + \
752 glob.glob(opj("src/_*.py")) + \
753 glob.glob(opj("src/*.swg"))
754
755 HEADERS = zip(h_files, ["/wxPython"]*len(h_files)) + \
756 zip(i_files, ["/wxPython/i_files"]*len(i_files))
757
758
759
760 if INSTALL_MULTIVERSION:
761 EXTRA_PATH = getExtraPath(addOpts=EP_ADD_OPTS)
762 open("src/wx.pth", "w").write(EXTRA_PATH)
763 CLEANUP.append("src/wx.pth")
764 else:
765 EXTRA_PATH = None
766
767
768
769 #----------------------------------------------------------------------
770 # Do the Setup/Build/Install/Whatever
771 #----------------------------------------------------------------------
772
773 if __name__ == "__main__":
774 if not PREP_ONLY:
775
776 setup(name = 'wxPython',
777 version = VERSION,
778 description = DESCRIPTION,
779 long_description = LONG_DESCRIPTION,
780 author = AUTHOR,
781 author_email = AUTHOR_EMAIL,
782 url = URL,
783 download_url = DOWNLOAD_URL,
784 license = LICENSE,
785 platforms = PLATFORMS,
786 classifiers = filter(None, CLASSIFIERS.split("\n")),
787 keywords = KEYWORDS,
788
789 packages = ['wxPython',
790 'wxPython.lib',
791 'wxPython.lib.colourchooser',
792 'wxPython.lib.editor',
793 'wxPython.lib.mixins',
794 'wxPython.tools',
795
796 'wx',
797 'wx.build',
798 'wx.lib',
799 'wx.lib.colourchooser',
800 'wx.lib.editor',
801 'wx.lib.floatcanvas',
802 'wx.lib.masked',
803 'wx.lib.mixins',
804 'wx.lib.ogl',
805 'wx.py',
806 'wx.tools',
807 'wx.tools.XRCed',
808 ],
809
810 extra_path = EXTRA_PATH,
811
812 ext_package = PKGDIR,
813 ext_modules = wxpExtensions,
814
815 options = { 'build' : { 'build_base' : BUILD_BASE },
816 },
817
818 scripts = SCRIPTS,
819 data_files = DATA_FILES,
820 headers = HEADERS,
821
822 # Override some of the default distutils command classes with my own
823 cmdclass = { 'install' : wx_install,
824 'install_data': wx_smart_install_data,
825 'install_headers': wx_install_headers,
826 'clean': wx_extra_clean,
827 },
828 )
829
830
831 if INSTALL_MULTIVERSION:
832 setup(name = 'wxPython-common',
833 version = VERSION,
834 description = DESCRIPTION,
835 long_description = LONG_DESCRIPTION,
836 author = AUTHOR,
837 author_email = AUTHOR_EMAIL,
838 url = URL,
839 download_url = DOWNLOAD_URL,
840 license = LICENSE,
841 platforms = PLATFORMS,
842 classifiers = filter(None, CLASSIFIERS.split("\n")),
843 keywords = KEYWORDS,
844
845 package_dir = { '': 'wxversion' },
846 py_modules = ['wxversion'],
847
848 data_files = [('', ['src/wx.pth'])],
849
850 options = { 'build' : { 'build_base' : BUILD_BASE },
851 },
852
853 cmdclass = { 'install_data': wx_smart_install_data,
854 },
855 )
856
857 #----------------------------------------------------------------------
858 #----------------------------------------------------------------------