]> git.saurik.com Git - wxWidgets.git/blame - wxPython/setup.py
in unescape add normal characters in addition to unescaped characters :)
[wxWidgets.git] / wxPython / setup.py
CommitLineData
c368d904
RD
1#!/usr/bin/env python
2#----------------------------------------------------------------------
1128a89b
RD
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
1e4a197e
RD
12#----------------------------------------------------------------------
13
1128a89b 14import sys
e6056257 15
e6056257 16
1128a89b
RD
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.
e6056257 25
8f8c4b40
RD
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
1128a89b 32sys.setup_is_main = __name__ == "__main__" # an icky hack!
8f8c4b40
RD
33from config import *
34
35
36#----------------------------------------------------------------------
37# Update the packaged config file.
38#----------------------------------------------------------------------
c368d904 39
8f8c4b40
RD
40copy_file('config.py', 'wx/build', update=1, verbose=1)
41CLEANUP.append('wx/build/config.py')
c368d904 42
c368d904 43#----------------------------------------------------------------------
1fded56b 44# Update the version file
c368d904
RD
45#----------------------------------------------------------------------
46
1128a89b
RD
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
e83135b2 50open('wx/__version__.py', 'w').write("""\
1fded56b
RD
51# This file was generated by setup.py...
52
d14a1e28
RD
53VERSION_STRING = '%(VERSION)s'
54MAJOR_VERSION = %(VER_MAJOR)s
55MINOR_VERSION = %(VER_MINOR)s
56RELEASE_VERSION = %(VER_RELEASE)s
57SUBREL_VERSION = %(VER_SUBREL)s
1fded56b 58
d14a1e28 59VERSION = (MAJOR_VERSION, MINOR_VERSION, RELEASE_VERSION,
e83135b2 60 SUBREL_VERSION, '%(VER_FLAGS)s')
1fded56b 61
d14a1e28 62RELEASE_NUMBER = RELEASE_VERSION # for compatibility
1fded56b 63""" % globals())
1e4a197e 64
99abd512 65CLEANUP.append('wx/__version__.py')
c368d904 66
1b62f00d 67
41e8a69c
RD
68#----------------------------------------------------------------------
69# patch distutils if it can't cope with the "classifiers" or
70# "download_url" keywords
71#----------------------------------------------------------------------
72
73if sys.version < '2.2.3':
74 from distutils.dist import DistributionMetadata
75 DistributionMetadata.classifiers = None
76 DistributionMetadata.download_url = None
77 depends = {}
78else:
79 depends = {'depends' : depends}
80
81
1b62f00d
RD
82#----------------------------------------------------------------------
83# Define the CORE extension module
84#----------------------------------------------------------------------
85
1e4a197e 86msg('Preparing CORE...')
d14a1e28
RD
87swig_sources = run_swig(['core.i'], 'src', GENDIR, PKGDIR,
88 USE_SWIG, swig_force, swig_args, swig_deps +
1e0c8722
RD
89 [ 'src/_accel.i',
90 'src/_app.i',
d14a1e28
RD
91 'src/_app_ex.py',
92 'src/_constraints.i',
93 'src/_core_api.i',
94 'src/_core_ex.py',
54f9ee45
RD
95 'src/__core_rename.i',
96 'src/__core_reverse.txt',
d14a1e28
RD
97 'src/_defs.i',
98 'src/_event.i',
99 'src/_event_ex.py',
38b97c15 100 'src/_evtloop.i',
d14a1e28
RD
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',
99abd512 112 'src/_control.i',
54f9ee45
RD
113 ],
114 True)
1b62f00d 115
1e4a197e 116copy_file('src/__init__.py', PKGDIR, update=1, verbose=0)
99abd512 117CLEANUP.append(opj(PKGDIR, '__init__.py'))
1b62f00d
RD
118
119
d14a1e28
RD
120# update the license files
121mkpath('licence')
122for file in ['preamble.txt', 'licence.txt', 'licendoc.txt', 'lgpl.txt']:
123 copy_file(opj(WXDIR, 'docs', file), opj('licence',file), update=1, verbose=0)
99abd512
RD
124 CLEANUP.append(opj('licence',file))
125CLEANUP.append('licence')
c368d904 126
c368d904 127
1e4a197e
RD
128if os.name == 'nt':
129 build_locale_dir(opj(PKGDIR, 'locale'))
130 DATA_FILES += build_locale_list(opj(PKGDIR, 'locale'))
4f3449b4
RD
131
132
1e4a197e
RD
133if os.name == 'nt':
134 rc_file = ['src/wxc.rc']
135else:
136 rc_file = []
137
138
54f9ee45
RD
139ext = Extension('_core_', ['src/helpers.cpp',
140 'src/libpy.c',
141 ] + rc_file + swig_sources,
1e4a197e
RD
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,
d14a1e28 151
41e8a69c 152 **depends
1e4a197e
RD
153 )
154wxpExtensions.append(ext)
155
156
d14a1e28
RD
157
158
159
160# Extension for the GDI module
161swig_sources = run_swig(['gdi.i'], 'src', GENDIR, PKGDIR,
162 USE_SWIG, swig_force, swig_args, swig_deps +
54f9ee45 163 ['src/__gdi_rename.i',
99abd512
RD
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',
d14a1e28 171 'src/_effects.i',
99abd512
RD
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',
54f9ee45
RD
180 ],
181 True)
182ext = Extension('_gdi_', ['src/drawlist.cpp'] + swig_sources,
1e4a197e
RD
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,
41e8a69c 189 **depends
1e4a197e
RD
190 )
191wxpExtensions.append(ext)
192
193
d14a1e28
RD
194
195
196
197
198# Extension for the windows module
199swig_sources = run_swig(['windows.i'], 'src', GENDIR, PKGDIR,
200 USE_SWIG, swig_force, swig_args, swig_deps +
54f9ee45
RD
201 ['src/__windows_rename.i',
202 'src/__windows_reverse.txt',
d14a1e28 203 'src/_panel.i',
99abd512
RD
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',
54f9ee45
RD
216 ],
217 True)
218ext = Extension('_windows_', swig_sources,
1e4a197e
RD
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,
41e8a69c 225 **depends
1e4a197e
RD
226 )
227wxpExtensions.append(ext)
228
229
d14a1e28
RD
230
231
232# Extension for the controls module
233swig_sources = run_swig(['controls.i'], 'src', GENDIR, PKGDIR,
234 USE_SWIG, swig_force, swig_args, swig_deps +
54f9ee45
RD
235 [ 'src/__controls_rename.i',
236 'src/__controls_reverse.txt',
cf636c45 237 'src/_toolbar.i',
99abd512
RD
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',
54f9ee45
RD
258 ],
259 True)
260ext = Extension('_controls_', swig_sources,
d14a1e28
RD
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,
41e8a69c 267 **depends
d14a1e28
RD
268 )
269wxpExtensions.append(ext)
270
271
272
273
274# Extension for the misc module
275swig_sources = run_swig(['misc.i'], 'src', GENDIR, PKGDIR,
276 USE_SWIG, swig_force, swig_args, swig_deps +
54f9ee45
RD
277 [ 'src/__misc_rename.i',
278 'src/__misc_reverse.txt',
279 'src/_settings.i',
99abd512
RD
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',
d14a1e28 295 'src/_clipbrd.i',
54f9ee45
RD
296 ],
297 True)
298ext = Extension('_misc_', swig_sources,
d14a1e28
RD
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,
41e8a69c 305 **depends
d14a1e28
RD
306 )
307wxpExtensions.append(ext)
308
309
310
311##
312## Core modules that are not in the "core" namespace start here
313##
314
1e4a197e
RD
315swig_sources = run_swig(['calendar.i'], 'src', GENDIR, PKGDIR,
316 USE_SWIG, swig_force, swig_args, swig_deps)
d14a1e28
RD
317ext = 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,
41e8a69c 324 **depends
d14a1e28
RD
325 )
326wxpExtensions.append(ext)
327
328
329swig_sources = run_swig(['grid.i'], 'src', GENDIR, PKGDIR,
330 USE_SWIG, swig_force, swig_args, swig_deps)
331ext = Extension('_grid', swig_sources,
1e4a197e
RD
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,
41e8a69c 338 **depends
1e4a197e
RD
339 )
340wxpExtensions.append(ext)
341
342
d14a1e28
RD
343
344swig_sources = run_swig(['html.i'], 'src', GENDIR, PKGDIR,
1e4a197e 345 USE_SWIG, swig_force, swig_args, swig_deps)
d14a1e28 346ext = Extension('_html', swig_sources,
1e4a197e
RD
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,
41e8a69c 353 **depends
1e4a197e
RD
354 )
355wxpExtensions.append(ext)
356
f6f1e19f
RD
357
358
7875e5ff
KO
359swig_sources = run_swig(['webkit.i'], 'src', GENDIR, PKGDIR,
360 USE_SWIG, swig_force, swig_args, swig_deps)
361ext = 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 )
370wxpExtensions.append(ext)
d14a1e28 371
f6f1e19f
RD
372
373
1e4a197e
RD
374swig_sources = run_swig(['wizard.i'], 'src', GENDIR, PKGDIR,
375 USE_SWIG, swig_force, swig_args, swig_deps)
d14a1e28 376ext = Extension('_wizard', swig_sources,
1e4a197e
RD
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,
41e8a69c 383 **depends
1e4a197e
RD
384 )
385wxpExtensions.append(ext)
af83019e
RD
386
387
38b97c15
RD
388
389swig_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 ])
398ext = 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 )
410wxpExtensions.append(ext)
411
412
c368d904
RD
413#----------------------------------------------------------------------
414# Define the GLCanvas extension module
415#----------------------------------------------------------------------
416
1e4a197e 417if BUILD_GLCANVAS:
cfe766c3 418 msg('Preparing GLCANVAS...')
c368d904 419 location = 'contrib/glcanvas'
c368d904 420
d14a1e28 421 swig_sources = run_swig(['glcanvas.i'], location, GENDIR, PKGDIR,
10ef30eb 422 USE_SWIG, swig_force, swig_args, swig_deps)
c368d904
RD
423
424 gl_libs = []
425 if os.name == 'posix':
cb9a93a2 426 gl_config = os.popen(WX_CONFIG + ' --libs gl', 'r').read()[:-1]
1e4a197e 427 gl_lflags = gl_config.split() + lflags
f32afe1c 428 gl_libs = libs
19cf4f80 429 else:
3e46a8e6 430 gl_libs = libs + ['opengl32', 'glu32'] + makeLibName('gl')
f32afe1c 431 gl_lflags = lflags
c368d904 432
d14a1e28 433 ext = Extension('_glcanvas',
3e46a8e6 434 swig_sources,
1e7ecb7b 435
4c417214 436 include_dirs = includes + CONTRIBS_INC,
1e7ecb7b
RD
437 define_macros = defines,
438
439 library_dirs = libdirs,
f32afe1c 440 libraries = gl_libs,
1e7ecb7b
RD
441
442 extra_compile_args = cflags,
f32afe1c 443 extra_link_args = gl_lflags,
1e7ecb7b
RD
444 )
445
446 wxpExtensions.append(ext)
c368d904
RD
447
448
449#----------------------------------------------------------------------
450# Define the OGL extension module
451#----------------------------------------------------------------------
452
1e4a197e 453if BUILD_OGL:
cfe766c3 454 msg('Preparing OGL...')
c368d904 455 location = 'contrib/ogl'
c368d904 456
a32360e0 457 swig_sources = run_swig(['ogl.i'], location, GENDIR, PKGDIR,
d14a1e28
RD
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 ])
c368d904 465
d14a1e28 466 ext = Extension('_ogl',
3ef86e32 467 swig_sources,
1e7ecb7b 468
4c417214 469 include_dirs = includes + [ location ] + CONTRIBS_INC,
dd116e73 470 define_macros = defines + [('wxUSE_DEPRECATED', '0')],
1e7ecb7b
RD
471
472 library_dirs = libdirs,
3ef86e32 473 libraries = libs + makeLibName('ogl'),
1e7ecb7b
RD
474
475 extra_compile_args = cflags,
476 extra_link_args = lflags,
477 )
478
479 wxpExtensions.append(ext)
480
481
c368d904
RD
482
483#----------------------------------------------------------------------
484# Define the STC extension module
485#----------------------------------------------------------------------
486
1e4a197e 487if BUILD_STC:
cfe766c3 488 msg('Preparing STC...')
c368d904 489 location = 'contrib/stc'
020fb2ee
RD
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))
55c020cf 494
de7b7fe6 495## NOTE: need to add something like this to the stc.bkl...
55c020cf 496
3ef86e32
RD
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'))):
55c020cf 501
3ef86e32
RD
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)
c368d904
RD
509
510
befa6977 511 swig_sources = run_swig(['stc.i'], location, GENDIR, PKGDIR,
c368d904
RD
512 USE_SWIG, swig_force,
513 swig_args + ['-I'+STC_H, '-I'+location],
10ef30eb 514 [opj(STC_H, 'stc.h')] + swig_deps)
c368d904 515
d14a1e28 516 ext = Extension('_stc',
3ef86e32
RD
517 swig_sources,
518
4c417214 519 include_dirs = includes + CONTRIBS_INC,
3ef86e32 520 define_macros = defines,
1e7ecb7b
RD
521
522 library_dirs = libdirs,
3ef86e32 523 libraries = libs + makeLibName('stc'),
c368d904 524
1e7ecb7b
RD
525 extra_compile_args = cflags,
526 extra_link_args = lflags,
527 )
528
529 wxpExtensions.append(ext)
c368d904
RD
530
531
532
926bb76c
RD
533#----------------------------------------------------------------------
534# Define the IEWIN extension module (experimental)
535#----------------------------------------------------------------------
536
1e4a197e 537if BUILD_IEWIN:
cfe766c3 538 msg('Preparing IEWIN...')
926bb76c
RD
539 location = 'contrib/iewin'
540
541 swig_files = ['iewin.i', ]
542
543 swig_sources = run_swig(swig_files, location, '', PKGDIR,
10ef30eb 544 USE_SWIG, swig_force, swig_args, swig_deps)
926bb76c
RD
545
546
de7b7fe6 547 ext = Extension('_iewin', ['%s/IEHtmlWin.cpp' % location,
c731eb47 548 '%s/wxactivex.cpp' % location,
926bb76c
RD
549 ] + swig_sources,
550
4c417214 551 include_dirs = includes + CONTRIBS_INC,
926bb76c
RD
552 define_macros = defines,
553
554 library_dirs = libdirs,
555 libraries = libs,
556
557 extra_compile_args = cflags,
b7c75283
RD
558 extra_link_args = lflags,
559 )
560
561 wxpExtensions.append(ext)
562
563
564#----------------------------------------------------------------------
565# Define the ACTIVEX extension module (experimental)
566#----------------------------------------------------------------------
567
568if 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,
926bb76c
RD
591 extra_link_args = lflags,
592 )
593
594 wxpExtensions.append(ext)
595
596
ebf4302c
RD
597#----------------------------------------------------------------------
598# Define the GIZMOS extension module
599#----------------------------------------------------------------------
600
1e4a197e 601if BUILD_GIZMOS:
ebf4302c
RD
602 msg('Preparing GIZMOS...')
603 location = 'contrib/gizmos'
ebf4302c 604
a32360e0 605 swig_sources = run_swig(['gizmos.i'], location, GENDIR, PKGDIR,
10ef30eb 606 USE_SWIG, swig_force, swig_args, swig_deps)
ebf4302c 607
d14a1e28 608 ext = Extension('_gizmos',
28eab81f 609 [ '%s/treelistctrl.cpp' % opj(location, 'wxCode/src') ] + swig_sources,
ebf4302c 610
28eab81f 611 include_dirs = includes + [ location, opj(location, 'wxCode/include') ] + CONTRIBS_INC,
ebf4302c
RD
612 define_macros = defines,
613
614 library_dirs = libdirs,
3ef86e32 615 libraries = libs + makeLibName('gizmos'),
ebf4302c
RD
616
617 extra_compile_args = cflags,
618 extra_link_args = lflags,
619 )
620
621 wxpExtensions.append(ext)
622
623
624
4a61305d
RD
625#----------------------------------------------------------------------
626# Define the DLLWIDGET extension module
627#----------------------------------------------------------------------
628
1e4a197e 629if BUILD_DLLWIDGET:
4a61305d
RD
630 msg('Preparing DLLWIDGET...')
631 location = 'contrib/dllwidget'
632 swig_files = ['dllwidget_.i']
633
634 swig_sources = run_swig(swig_files, location, '', PKGDIR,
10ef30eb 635 USE_SWIG, swig_force, swig_args, swig_deps)
4a61305d
RD
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)
99abd512 639 CLEANUP.append(opj(PKGDIR, 'dllwidget.py'))
4a61305d
RD
640
641 ext = Extension('dllwidget_c', [
642 '%s/dllwidget.cpp' % location,
643 ] + swig_sources,
644
4c417214 645 include_dirs = includes + CONTRIBS_INC,
4a61305d
RD
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
1e4a197e 658
38b97c15 659
1e4a197e 660#----------------------------------------------------------------------
1128a89b 661# Tools, scripts data files, etc.
1e4a197e 662#----------------------------------------------------------------------
8916d007 663
2eb31f8b
RD
664if NO_SCRIPTS:
665 SCRIPTS = None
666else:
1e4a197e
RD
667 SCRIPTS = [opj('scripts/helpviewer'),
668 opj('scripts/img2png'),
2eb31f8b 669 opj('scripts/img2py'),
d48c1c64
RD
670 opj('scripts/img2xpm'),
671 opj('scripts/pyalacarte'),
672 opj('scripts/pyalamode'),
2eb31f8b 673 opj('scripts/pycrust'),
d48c1c64 674 opj('scripts/pyshell'),
1fded56b
RD
675 opj('scripts/pywrap'),
676 opj('scripts/pywrap'),
b6536d60 677 opj('scripts/pywxrc'),
d48c1c64 678 opj('scripts/xrced'),
2eb31f8b 679 ]
d48c1c64 680
4a61305d 681
926bb76c 682
c2079460
RD
683DATA_FILES += find_data_files('wx/tools/XRCed', '*.txt', '*.xrc')
684DATA_FILES += find_data_files('wx/py', '*.txt', '*.ico', '*.css', '*.html')
1fded56b 685DATA_FILES += find_data_files('wx', '*.txt', '*.css', '*.html')
1e4a197e
RD
686
687
1128a89b
RD
688if NO_HEADERS:
689 HEADERS = None
690else:
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
e9019d1c
RD
696 HEADERS = zip(h_files, ["/wxPython"]*len(h_files)) + \
697 zip(i_files, ["/wxPython/i_files"]*len(i_files))
698
1128a89b 699
d48c1c64
RD
700
701if INSTALL_MULTIVERSION:
b6536d60 702 EXTRA_PATH = getExtraPath(addOpts=EP_ADD_OPTS)
d48c1c64
RD
703 open("src/wx.pth", "w").write(EXTRA_PATH)
704 CLEANUP.append("src/wx.pth")
705else:
706 EXTRA_PATH = None
707
708
709
c368d904
RD
710#----------------------------------------------------------------------
711# Do the Setup/Build/Install/Whatever
712#----------------------------------------------------------------------
713
1b62f00d 714if __name__ == "__main__":
1e4a197e 715 if not PREP_ONLY:
d48c1c64 716
d14a1e28 717 setup(name = 'wxPython',
1b62f00d
RD
718 version = VERSION,
719 description = DESCRIPTION,
720 long_description = LONG_DESCRIPTION,
721 author = AUTHOR,
722 author_email = AUTHOR_EMAIL,
723 url = URL,
851d4ac7 724 download_url = DOWNLOAD_URL,
e2e02194 725 license = LICENSE,
851d4ac7
RD
726 platforms = PLATFORMS,
727 classifiers = filter(None, CLASSIFIERS.split("\n")),
728 keywords = KEYWORDS,
d14a1e28 729
1fded56b
RD
730 packages = ['wxPython',
731 'wxPython.lib',
732 'wxPython.lib.colourchooser',
733 'wxPython.lib.editor',
734 'wxPython.lib.mixins',
1fded56b 735 'wxPython.tools',
1fded56b
RD
736
737 'wx',
1128a89b 738 'wx.build',
1fded56b
RD
739 'wx.lib',
740 'wx.lib.colourchooser',
741 'wx.lib.editor',
42463de2 742 'wx.lib.floatcanvas',
9176f38f 743 'wx.lib.masked',
1fded56b 744 'wx.lib.mixins',
f847103a 745 'wx.lib.ogl',
1fded56b
RD
746 'wx.py',
747 'wx.tools',
748 'wx.tools.XRCed',
1b62f00d
RD
749 ],
750
d48c1c64
RD
751 extra_path = EXTRA_PATH,
752
1b62f00d
RD
753 ext_package = PKGDIR,
754 ext_modules = wxpExtensions,
8916d007 755
1128a89b
RD
756 options = { 'build' : { 'build_base' : BUILD_BASE },
757 },
a541c325 758
1128a89b 759 scripts = SCRIPTS,
1e4a197e 760 data_files = DATA_FILES,
1128a89b 761 headers = HEADERS,
8916d007 762
d48c1c64
RD
763 # Override some of the default distutils command classes with my own
764 cmdclass = { 'install' : wx_install,
765 'install_data': wx_smart_install_data,
1128a89b
RD
766 'install_headers': wx_install_headers,
767 'clean': wx_extra_clean,
768 },
1b62f00d 769 )
c368d904 770
c368d904 771
d48c1c64
RD
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
c368d904
RD
798#----------------------------------------------------------------------
799#----------------------------------------------------------------------