]> git.saurik.com Git - wxWidgets.git/blob - wxPython/setup.py
Committing in .
[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()
484 gl_libs = libs
485
486 else:
487 gl_libs = libs + ['opengl32', 'glu32'] + makeLibName('gl')
488 gl_lflags = lflags
489
490 ext = Extension('_glcanvas',
491 swig_sources,
492
493 include_dirs = includes + CONTRIBS_INC,
494 define_macros = defines,
495
496 library_dirs = libdirs,
497 libraries = gl_libs,
498
499 extra_compile_args = cflags,
500 extra_link_args = gl_lflags,
501 )
502
503 wxpExtensions.append(ext)
504
505
506 #----------------------------------------------------------------------
507 # Define the OGL extension module
508 #----------------------------------------------------------------------
509
510 if BUILD_OGL:
511 msg('Preparing OGL...')
512 location = 'contrib/ogl'
513
514 swig_sources = run_swig(['ogl.i'], location, GENDIR, PKGDIR,
515 USE_SWIG, swig_force, swig_args, swig_deps +
516 [ '%s/_oglbasic.i' % location,
517 '%s/_oglshapes.i' % location,
518 '%s/_oglshapes2.i' % location,
519 '%s/_oglcanvas.i' % location,
520 '%s/_ogldefs.i' % location,
521 ])
522
523 ext = Extension('_ogl',
524 swig_sources,
525
526 include_dirs = includes + [ location ] + CONTRIBS_INC,
527 define_macros = defines + [('wxUSE_DEPRECATED', '0')],
528
529 library_dirs = libdirs,
530 libraries = libs + makeLibName('ogl'),
531
532 extra_compile_args = cflags,
533 extra_link_args = lflags,
534 )
535
536 wxpExtensions.append(ext)
537
538
539
540 #----------------------------------------------------------------------
541 # Define the STC extension module
542 #----------------------------------------------------------------------
543
544 if BUILD_STC:
545 msg('Preparing STC...')
546 location = 'contrib/stc'
547 #if os.name == 'nt':
548 STC_H = opj(WXDIR, 'contrib', 'include/wx/stc')
549 #else:
550 # STC_H = opj(WXPREFIX, 'include/wx-%d.%d/wx/stc' % (VER_MAJOR, VER_MINOR))
551
552 ## NOTE: need to add something like this to the stc.bkl...
553
554 ## # Check if gen_iface needs to be run for the wxSTC sources
555 ## if (newer(opj(CTRB_SRC, 'stc/stc.h.in'), opj(CTRB_INC, 'stc/stc.h' )) or
556 ## newer(opj(CTRB_SRC, 'stc/stc.cpp.in'), opj(CTRB_SRC, 'stc/stc.cpp')) or
557 ## newer(opj(CTRB_SRC, 'stc/gen_iface.py'), opj(CTRB_SRC, 'stc/stc.cpp'))):
558
559 ## msg('Running gen_iface.py, regenerating stc.h and stc.cpp...')
560 ## cwd = os.getcwd()
561 ## os.chdir(opj(CTRB_SRC, 'stc'))
562 ## sys.path.insert(0, os.curdir)
563 ## import gen_iface
564 ## gen_iface.main([])
565 ## os.chdir(cwd)
566
567
568 swig_sources = run_swig(['stc.i'], location, GENDIR, PKGDIR,
569 USE_SWIG, swig_force,
570 swig_args + ['-I'+STC_H, '-I'+location],
571 [opj(STC_H, 'stc.h'),
572 opj(location, "_stc_utf8_methods.py"),
573 opj(location, "_stc_docstrings.i"),
574 opj(location, "_stc_gendocs.i"),
575 ] + swig_deps)
576
577 ext = Extension('_stc',
578 swig_sources,
579
580 include_dirs = includes + CONTRIBS_INC,
581 define_macros = defines,
582
583 library_dirs = libdirs,
584 libraries = libs + makeLibName('stc'),
585
586 extra_compile_args = cflags,
587 extra_link_args = lflags,
588 )
589
590 wxpExtensions.append(ext)
591
592
593 #----------------------------------------------------------------------
594 # Define the ACTIVEX extension module (experimental)
595 #----------------------------------------------------------------------
596
597 if BUILD_ACTIVEX:
598 msg('Preparing ACTIVEX...')
599 location = 'contrib/activex'
600 axloc = opj(location, "wxie")
601
602 swig_files = ['activex.i', ]
603
604 swig_sources = run_swig(swig_files, location, '', PKGDIR,
605 USE_SWIG, swig_force, swig_args, swig_deps +
606 [ '%s/_activex_ex.py' % location])
607
608
609 ext = Extension('_activex', ['%s/IEHtmlWin.cpp' % axloc,
610 '%s/wxactivex.cpp' % axloc,
611 ] + swig_sources,
612
613 include_dirs = includes + [ axloc ],
614 define_macros = defines,
615
616 library_dirs = libdirs,
617 libraries = libs,
618
619 extra_compile_args = cflags,
620 extra_link_args = lflags,
621 )
622
623 wxpExtensions.append(ext)
624
625
626 #----------------------------------------------------------------------
627 # Define the GIZMOS extension module
628 #----------------------------------------------------------------------
629
630 if BUILD_GIZMOS:
631 msg('Preparing GIZMOS...')
632 location = 'contrib/gizmos'
633
634 swig_sources = run_swig(['gizmos.i'], location, GENDIR, PKGDIR,
635 USE_SWIG, swig_force, swig_args, swig_deps)
636
637 ext = Extension('_gizmos',
638 [ '%s/treelistctrl.cpp' % opj(location, 'wxCode/src') ] + swig_sources,
639
640 include_dirs = includes + [ location, opj(location, 'wxCode/include') ] + CONTRIBS_INC,
641 define_macros = defines,
642
643 library_dirs = libdirs,
644 libraries = libs + makeLibName('gizmos'),
645
646 extra_compile_args = cflags,
647 extra_link_args = lflags,
648 )
649
650 wxpExtensions.append(ext)
651
652
653 #----------------------------------------------------------------------
654 # Define the ANIMATE extension module
655 #----------------------------------------------------------------------
656
657 if BUILD_ANIMATE:
658 msg('Preparing ANIMATE...')
659 location = 'contrib/animate'
660
661 swig_sources = run_swig(['animate.i'], location, GENDIR, PKGDIR,
662 USE_SWIG, swig_force, swig_args, swig_deps)
663
664 ext = Extension('_animate',
665 swig_sources,
666
667 include_dirs = includes + CONTRIBS_INC,
668 define_macros = defines,
669
670 library_dirs = libdirs,
671 libraries = libs + makeLibName('animate'),
672
673 extra_compile_args = cflags,
674 extra_link_args = lflags,
675 )
676
677 wxpExtensions.append(ext)
678
679
680
681 #----------------------------------------------------------------------
682 # Define the DLLWIDGET extension module
683 #----------------------------------------------------------------------
684
685 if BUILD_DLLWIDGET:
686 msg('Preparing DLLWIDGET...')
687 location = 'contrib/dllwidget'
688 swig_files = ['dllwidget_.i']
689
690 swig_sources = run_swig(swig_files, location, '', PKGDIR,
691 USE_SWIG, swig_force, swig_args, swig_deps)
692
693 # copy a contrib project specific py module to the main package dir
694 copy_file(opj(location, 'dllwidget.py'), PKGDIR, update=1, verbose=0)
695 CLEANUP.append(opj(PKGDIR, 'dllwidget.py'))
696
697 ext = Extension('dllwidget_c', [
698 '%s/dllwidget.cpp' % location,
699 ] + swig_sources,
700
701 include_dirs = includes + CONTRIBS_INC,
702 define_macros = defines,
703
704 library_dirs = libdirs,
705 libraries = libs,
706
707 extra_compile_args = cflags,
708 extra_link_args = lflags,
709 )
710
711 wxpExtensions.append(ext)
712
713
714
715
716 #----------------------------------------------------------------------
717 # Tools, scripts data files, etc.
718 #----------------------------------------------------------------------
719
720 if NO_SCRIPTS:
721 SCRIPTS = None
722 else:
723 SCRIPTS = [opj('scripts/helpviewer'),
724 opj('scripts/img2png'),
725 opj('scripts/img2py'),
726 opj('scripts/img2xpm'),
727 opj('scripts/pyalacarte'),
728 opj('scripts/pyalamode'),
729 opj('scripts/pycrust'),
730 opj('scripts/pyshell'),
731 opj('scripts/pywrap'),
732 opj('scripts/pywrap'),
733 opj('scripts/pywxrc'),
734 opj('scripts/xrced'),
735 ]
736
737
738
739 DATA_FILES += find_data_files('wx/tools/XRCed', '*.txt', '*.xrc')
740 DATA_FILES += find_data_files('wx/py', '*.txt', '*.ico', '*.css', '*.html')
741 DATA_FILES += find_data_files('wx', '*.txt', '*.css', '*.html')
742
743
744 if NO_HEADERS:
745 HEADERS = None
746 else:
747 h_files = glob.glob(opj("include/wx/wxPython/*.h"))
748 i_files = glob.glob(opj("src/*.i")) + \
749 glob.glob(opj("src/_*.py")) + \
750 glob.glob(opj("src/*.swg"))
751
752 HEADERS = zip(h_files, ["/wxPython"]*len(h_files)) + \
753 zip(i_files, ["/wxPython/i_files"]*len(i_files))
754
755
756
757 if INSTALL_MULTIVERSION:
758 EXTRA_PATH = getExtraPath(addOpts=EP_ADD_OPTS, shortVer=not EP_FULL_VER)
759 open("src/wx.pth", "w").write(EXTRA_PATH)
760 CLEANUP.append("src/wx.pth")
761 else:
762 EXTRA_PATH = None
763
764
765
766 #----------------------------------------------------------------------
767 # Do the Setup/Build/Install/Whatever
768 #----------------------------------------------------------------------
769
770 if __name__ == "__main__":
771 if not PREP_ONLY:
772
773 setup(name = 'wxPython',
774 version = VERSION,
775 description = DESCRIPTION,
776 long_description = LONG_DESCRIPTION,
777 author = AUTHOR,
778 author_email = AUTHOR_EMAIL,
779 url = URL,
780 download_url = DOWNLOAD_URL,
781 license = LICENSE,
782 platforms = PLATFORMS,
783 classifiers = filter(None, CLASSIFIERS.split("\n")),
784 keywords = KEYWORDS,
785
786 packages = ['wxPython',
787 'wxPython.lib',
788 'wxPython.lib.colourchooser',
789 'wxPython.lib.editor',
790 'wxPython.lib.mixins',
791 'wxPython.tools',
792
793 'wx',
794 'wx.build',
795 'wx.lib',
796 'wx.lib.colourchooser',
797 'wx.lib.editor',
798 'wx.lib.floatcanvas',
799 'wx.lib.masked',
800 'wx.lib.mixins',
801 'wx.lib.ogl',
802 'wx.py',
803 'wx.tools',
804 'wx.tools.XRCed',
805 ],
806
807 extra_path = EXTRA_PATH,
808
809 ext_package = PKGDIR,
810 ext_modules = wxpExtensions,
811
812 options = { 'build' : { 'build_base' : BUILD_BASE },
813 },
814
815 scripts = SCRIPTS,
816 data_files = DATA_FILES,
817 headers = HEADERS,
818
819 # Override some of the default distutils command classes with my own
820 cmdclass = { 'install' : wx_install,
821 'install_data': wx_smart_install_data,
822 'install_headers': wx_install_headers,
823 'clean': wx_extra_clean,
824 },
825 )
826
827
828 if INSTALL_MULTIVERSION:
829 setup(name = 'wxPython-common',
830 version = VERSION,
831 description = DESCRIPTION,
832 long_description = LONG_DESCRIPTION,
833 author = AUTHOR,
834 author_email = AUTHOR_EMAIL,
835 url = URL,
836 download_url = DOWNLOAD_URL,
837 license = LICENSE,
838 platforms = PLATFORMS,
839 classifiers = filter(None, CLASSIFIERS.split("\n")),
840 keywords = KEYWORDS,
841
842 package_dir = { '': 'wxversion' },
843 py_modules = ['wxversion'],
844
845 data_files = [('', ['src/wx.pth'])],
846
847 options = { 'build' : { 'build_base' : BUILD_BASE },
848 },
849
850 cmdclass = { 'install_data': wx_smart_install_data,
851 },
852 )
853
854 #----------------------------------------------------------------------
855 #----------------------------------------------------------------------