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