]> git.saurik.com Git - wxWidgets.git/blob - wxPython/setup.py
don't return wxLIST_HITTEST_ONITEMICON from HitTest() when the muse is clicked to...
[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 swig_sources = run_swig(['webkit.i'], 'src', GENDIR, PKGDIR,
358 USE_SWIG, swig_force, swig_args, swig_deps)
359 ext = Extension('_webkit', swig_sources,
360 include_dirs = includes,
361 define_macros = defines,
362 library_dirs = libdirs,
363 libraries = libs,
364 extra_compile_args = cflags,
365 extra_link_args = lflags,
366 **depends
367 )
368 wxpExtensions.append(ext)
369
370 swig_sources = run_swig(['wizard.i'], 'src', GENDIR, PKGDIR,
371 USE_SWIG, swig_force, swig_args, swig_deps)
372 ext = Extension('_wizard', swig_sources,
373 include_dirs = includes,
374 define_macros = defines,
375 library_dirs = libdirs,
376 libraries = libs,
377 extra_compile_args = cflags,
378 extra_link_args = lflags,
379 **depends
380 )
381 wxpExtensions.append(ext)
382
383
384
385 swig_sources = run_swig(['xrc.i'], 'src', GENDIR, PKGDIR,
386 USE_SWIG, swig_force, swig_args, swig_deps +
387 [ 'src/_xrc_rename.i',
388 'src/_xrc_ex.py',
389 'src/_xmlres.i',
390 'src/_xmlsub.i',
391 'src/_xml.i',
392 'src/_xmlhandler.i',
393 ])
394 ext = Extension('_xrc',
395 swig_sources,
396
397 include_dirs = includes + CONTRIBS_INC,
398 define_macros = defines,
399
400 library_dirs = libdirs,
401 libraries = libs,
402
403 extra_compile_args = cflags,
404 extra_link_args = lflags,
405 )
406 wxpExtensions.append(ext)
407
408
409 #----------------------------------------------------------------------
410 # Define the GLCanvas extension module
411 #----------------------------------------------------------------------
412
413 if BUILD_GLCANVAS:
414 msg('Preparing GLCANVAS...')
415 location = 'contrib/glcanvas'
416
417 swig_sources = run_swig(['glcanvas.i'], location, GENDIR, PKGDIR,
418 USE_SWIG, swig_force, swig_args, swig_deps)
419
420 gl_libs = []
421 if os.name == 'posix':
422 gl_config = os.popen(WX_CONFIG + ' --libs gl', 'r').read()[:-1]
423 gl_lflags = gl_config.split() + lflags
424 gl_libs = libs
425 else:
426 gl_libs = libs + ['opengl32', 'glu32'] + makeLibName('gl')
427 gl_lflags = lflags
428
429 ext = Extension('_glcanvas',
430 swig_sources,
431
432 include_dirs = includes + CONTRIBS_INC,
433 define_macros = defines,
434
435 library_dirs = libdirs,
436 libraries = gl_libs,
437
438 extra_compile_args = cflags,
439 extra_link_args = gl_lflags,
440 )
441
442 wxpExtensions.append(ext)
443
444
445 #----------------------------------------------------------------------
446 # Define the OGL extension module
447 #----------------------------------------------------------------------
448
449 if BUILD_OGL:
450 msg('Preparing OGL...')
451 location = 'contrib/ogl'
452
453 swig_sources = run_swig(['ogl.i'], location, GENDIR, PKGDIR,
454 USE_SWIG, swig_force, swig_args, swig_deps +
455 [ '%s/_oglbasic.i' % location,
456 '%s/_oglshapes.i' % location,
457 '%s/_oglshapes2.i' % location,
458 '%s/_oglcanvas.i' % location,
459 '%s/_ogldefs.i' % location,
460 ])
461
462 ext = Extension('_ogl',
463 swig_sources,
464
465 include_dirs = includes + [ location ] + CONTRIBS_INC,
466 define_macros = defines + [('wxUSE_DEPRECATED', '0')],
467
468 library_dirs = libdirs,
469 libraries = libs + makeLibName('ogl'),
470
471 extra_compile_args = cflags,
472 extra_link_args = lflags,
473 )
474
475 wxpExtensions.append(ext)
476
477
478
479 #----------------------------------------------------------------------
480 # Define the STC extension module
481 #----------------------------------------------------------------------
482
483 if BUILD_STC:
484 msg('Preparing STC...')
485 location = 'contrib/stc'
486 #if os.name == 'nt':
487 STC_H = opj(WXDIR, 'contrib', 'include/wx/stc')
488 #else:
489 # STC_H = opj(WXPREFIX, 'include/wx-%d.%d/wx/stc' % (VER_MAJOR, VER_MINOR))
490
491 ## NOTE: need to add something like this to the stc.bkl...
492
493 ## # Check if gen_iface needs to be run for the wxSTC sources
494 ## if (newer(opj(CTRB_SRC, 'stc/stc.h.in'), opj(CTRB_INC, 'stc/stc.h' )) or
495 ## newer(opj(CTRB_SRC, 'stc/stc.cpp.in'), opj(CTRB_SRC, 'stc/stc.cpp')) or
496 ## newer(opj(CTRB_SRC, 'stc/gen_iface.py'), opj(CTRB_SRC, 'stc/stc.cpp'))):
497
498 ## msg('Running gen_iface.py, regenerating stc.h and stc.cpp...')
499 ## cwd = os.getcwd()
500 ## os.chdir(opj(CTRB_SRC, 'stc'))
501 ## sys.path.insert(0, os.curdir)
502 ## import gen_iface
503 ## gen_iface.main([])
504 ## os.chdir(cwd)
505
506
507 swig_sources = run_swig(['stc.i'], location, GENDIR, PKGDIR,
508 USE_SWIG, swig_force,
509 swig_args + ['-I'+STC_H, '-I'+location],
510 [opj(STC_H, 'stc.h')] + swig_deps)
511
512 ext = Extension('_stc',
513 swig_sources,
514
515 include_dirs = includes + CONTRIBS_INC,
516 define_macros = defines,
517
518 library_dirs = libdirs,
519 libraries = libs + makeLibName('stc'),
520
521 extra_compile_args = cflags,
522 extra_link_args = lflags,
523 )
524
525 wxpExtensions.append(ext)
526
527
528
529 #----------------------------------------------------------------------
530 # Define the IEWIN extension module (experimental)
531 #----------------------------------------------------------------------
532
533 if BUILD_IEWIN:
534 msg('Preparing IEWIN...')
535 location = 'contrib/iewin'
536
537 swig_files = ['iewin.i', ]
538
539 swig_sources = run_swig(swig_files, location, '', PKGDIR,
540 USE_SWIG, swig_force, swig_args, swig_deps)
541
542
543 ext = Extension('_iewin', ['%s/IEHtmlWin.cpp' % location,
544 '%s/wxactivex.cpp' % location,
545 ] + swig_sources,
546
547 include_dirs = includes + CONTRIBS_INC,
548 define_macros = defines,
549
550 library_dirs = libdirs,
551 libraries = libs,
552
553 extra_compile_args = cflags,
554 extra_link_args = lflags,
555 )
556
557 wxpExtensions.append(ext)
558
559
560 #----------------------------------------------------------------------
561 # Define the ACTIVEX extension module (experimental)
562 #----------------------------------------------------------------------
563
564 if BUILD_ACTIVEX:
565 msg('Preparing ACTIVEX...')
566 location = 'contrib/activex'
567 axloc = opj(location, "wxie")
568
569 swig_files = ['activex.i', ]
570
571 swig_sources = run_swig(swig_files, location, '', PKGDIR,
572 USE_SWIG, swig_force, swig_args, swig_deps +
573 [ '%s/_activex_ex.py' % location])
574
575
576 ext = Extension('_activex', ['%s/IEHtmlWin.cpp' % axloc,
577 '%s/wxactivex.cpp' % axloc,
578 ] + swig_sources,
579
580 include_dirs = includes + [ axloc ],
581 define_macros = defines,
582
583 library_dirs = libdirs,
584 libraries = libs,
585
586 extra_compile_args = cflags,
587 extra_link_args = lflags,
588 )
589
590 wxpExtensions.append(ext)
591
592
593 #----------------------------------------------------------------------
594 # Define the GIZMOS extension module
595 #----------------------------------------------------------------------
596
597 if BUILD_GIZMOS:
598 msg('Preparing GIZMOS...')
599 location = 'contrib/gizmos'
600
601 swig_sources = run_swig(['gizmos.i'], location, GENDIR, PKGDIR,
602 USE_SWIG, swig_force, swig_args, swig_deps)
603
604 ext = Extension('_gizmos',
605 [ '%s/treelistctrl.cpp' % opj(location, 'wxCode/src') ] + swig_sources,
606
607 include_dirs = includes + [ location, opj(location, 'wxCode/include') ] + CONTRIBS_INC,
608 define_macros = defines,
609
610 library_dirs = libdirs,
611 libraries = libs + makeLibName('gizmos'),
612
613 extra_compile_args = cflags,
614 extra_link_args = lflags,
615 )
616
617 wxpExtensions.append(ext)
618
619
620
621 #----------------------------------------------------------------------
622 # Define the DLLWIDGET extension module
623 #----------------------------------------------------------------------
624
625 if BUILD_DLLWIDGET:
626 msg('Preparing DLLWIDGET...')
627 location = 'contrib/dllwidget'
628 swig_files = ['dllwidget_.i']
629
630 swig_sources = run_swig(swig_files, location, '', PKGDIR,
631 USE_SWIG, swig_force, swig_args, swig_deps)
632
633 # copy a contrib project specific py module to the main package dir
634 copy_file(opj(location, 'dllwidget.py'), PKGDIR, update=1, verbose=0)
635 CLEANUP.append(opj(PKGDIR, 'dllwidget.py'))
636
637 ext = Extension('dllwidget_c', [
638 '%s/dllwidget.cpp' % location,
639 ] + swig_sources,
640
641 include_dirs = includes + CONTRIBS_INC,
642 define_macros = defines,
643
644 library_dirs = libdirs,
645 libraries = libs,
646
647 extra_compile_args = cflags,
648 extra_link_args = lflags,
649 )
650
651 wxpExtensions.append(ext)
652
653
654
655
656 #----------------------------------------------------------------------
657 # Tools, scripts data files, etc.
658 #----------------------------------------------------------------------
659
660 if NO_SCRIPTS:
661 SCRIPTS = None
662 else:
663 SCRIPTS = [opj('scripts/helpviewer'),
664 opj('scripts/img2png'),
665 opj('scripts/img2py'),
666 opj('scripts/img2xpm'),
667 opj('scripts/pyalacarte'),
668 opj('scripts/pyalamode'),
669 opj('scripts/pycrust'),
670 opj('scripts/pyshell'),
671 opj('scripts/pywrap'),
672 opj('scripts/pywrap'),
673 opj('scripts/pywxrc'),
674 opj('scripts/xrced'),
675 ]
676
677
678
679 DATA_FILES += find_data_files('wx/tools/XRCed', '*.txt', '*.xrc')
680 DATA_FILES += find_data_files('wx/py', '*.txt', '*.ico', '*.css', '*.html')
681 DATA_FILES += find_data_files('wx', '*.txt', '*.css', '*.html')
682
683
684 if NO_HEADERS:
685 HEADERS = None
686 else:
687 h_files = glob.glob(opj("include/wx/wxPython/*.h"))
688 i_files = glob.glob(opj("src/*.i")) + \
689 glob.glob(opj("src/_*.py")) + \
690 glob.glob(opj("src/*.swg"))
691
692 HEADERS = zip(h_files, ["/wxPython"]*len(h_files)) + \
693 zip(i_files, ["/wxPython/i_files"]*len(i_files))
694
695
696
697 if INSTALL_MULTIVERSION:
698 EXTRA_PATH = getExtraPath(addOpts=EP_ADD_OPTS)
699 open("src/wx.pth", "w").write(EXTRA_PATH)
700 CLEANUP.append("src/wx.pth")
701 else:
702 EXTRA_PATH = None
703
704
705
706 #----------------------------------------------------------------------
707 # Do the Setup/Build/Install/Whatever
708 #----------------------------------------------------------------------
709
710 if __name__ == "__main__":
711 if not PREP_ONLY:
712
713 setup(name = 'wxPython',
714 version = VERSION,
715 description = DESCRIPTION,
716 long_description = LONG_DESCRIPTION,
717 author = AUTHOR,
718 author_email = AUTHOR_EMAIL,
719 url = URL,
720 download_url = DOWNLOAD_URL,
721 license = LICENSE,
722 platforms = PLATFORMS,
723 classifiers = filter(None, CLASSIFIERS.split("\n")),
724 keywords = KEYWORDS,
725
726 packages = ['wxPython',
727 'wxPython.lib',
728 'wxPython.lib.colourchooser',
729 'wxPython.lib.editor',
730 'wxPython.lib.mixins',
731 'wxPython.tools',
732
733 'wx',
734 'wx.build',
735 'wx.lib',
736 'wx.lib.colourchooser',
737 'wx.lib.editor',
738 'wx.lib.floatcanvas',
739 'wx.lib.masked',
740 'wx.lib.mixins',
741 'wx.lib.ogl',
742 'wx.py',
743 'wx.tools',
744 'wx.tools.XRCed',
745 ],
746
747 extra_path = EXTRA_PATH,
748
749 ext_package = PKGDIR,
750 ext_modules = wxpExtensions,
751
752 options = { 'build' : { 'build_base' : BUILD_BASE },
753 },
754
755 scripts = SCRIPTS,
756 data_files = DATA_FILES,
757 headers = HEADERS,
758
759 # Override some of the default distutils command classes with my own
760 cmdclass = { 'install' : wx_install,
761 'install_data': wx_smart_install_data,
762 'install_headers': wx_install_headers,
763 'clean': wx_extra_clean,
764 },
765 )
766
767
768 if INSTALL_MULTIVERSION:
769 setup(name = 'wxPython-common',
770 version = VERSION,
771 description = DESCRIPTION,
772 long_description = LONG_DESCRIPTION,
773 author = AUTHOR,
774 author_email = AUTHOR_EMAIL,
775 url = URL,
776 download_url = DOWNLOAD_URL,
777 license = LICENSE,
778 platforms = PLATFORMS,
779 classifiers = filter(None, CLASSIFIERS.split("\n")),
780 keywords = KEYWORDS,
781
782 package_dir = { '': 'wxversion' },
783 py_modules = ['wxversion'],
784
785 data_files = [('', ['src/wx.pth'])],
786
787 options = { 'build' : { 'build_base' : BUILD_BASE },
788 },
789
790 cmdclass = { 'install_data': wx_smart_install_data,
791 },
792 )
793
794 #----------------------------------------------------------------------
795 #----------------------------------------------------------------------