]> git.saurik.com Git - wxWidgets.git/blame - wxPython/setup.py
don't crash in dtor if the X11 window hadn't been created (patch 1640153)
[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
f35d1a03 14import sys, os
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
80050aa1
DS
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
1128a89b
RD
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
f35d1a03
RD
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.
80050aa1
DS
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.
f35d1a03 36
02b800ce
RD
37for bo_name in ["build_options.py", "build_options.pyc"]:
38 if os.path.exists(bo_name):
39 os.remove(bo_name)
f35d1a03 40
1128a89b 41sys.setup_is_main = __name__ == "__main__" # an icky hack!
8f8c4b40
RD
42from config import *
43
44
45#----------------------------------------------------------------------
46# Update the packaged config file.
47#----------------------------------------------------------------------
c368d904 48
8f8c4b40 49copy_file('config.py', 'wx/build', update=1, verbose=1)
f35d1a03 50copy_file('build_options.py', 'wx/build', update=1, verbose=1)
8f8c4b40 51CLEANUP.append('wx/build/config.py')
f35d1a03 52CLEANUP.append('wx/build/build_options.py')
c368d904 53
c368d904 54#----------------------------------------------------------------------
1fded56b 55# Update the version file
c368d904
RD
56#----------------------------------------------------------------------
57
1128a89b
RD
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
e83135b2 61open('wx/__version__.py', 'w').write("""\
1fded56b
RD
62# This file was generated by setup.py...
63
d14a1e28
RD
64VERSION_STRING = '%(VERSION)s'
65MAJOR_VERSION = %(VER_MAJOR)s
66MINOR_VERSION = %(VER_MINOR)s
67RELEASE_VERSION = %(VER_RELEASE)s
68SUBREL_VERSION = %(VER_SUBREL)s
1fded56b 69
d14a1e28 70VERSION = (MAJOR_VERSION, MINOR_VERSION, RELEASE_VERSION,
e83135b2 71 SUBREL_VERSION, '%(VER_FLAGS)s')
1fded56b 72
d14a1e28 73RELEASE_NUMBER = RELEASE_VERSION # for compatibility
1fded56b 74""" % globals())
1e4a197e 75
99abd512 76CLEANUP.append('wx/__version__.py')
c368d904 77
1b62f00d 78
1ea8df6e
RD
79#----------------------------------------------------------------------
80# Write the SWIG version to a header file
81#----------------------------------------------------------------------
82
83if USE_SWIG:
84 try:
ace78e27 85 SVER = swig_version()
1ea8df6e
RD
86 open('include/wx/wxPython/swigver.h', 'w').write('''\
87// This file was generated by setup.py
88
89#define wxPy_SWIG_VERSION "SWIG-%s"
90''' % SVER)
91 msg('Using SWIG-' + SVER)
1ea8df6e
RD
92 except:
93 msg('\nUnable to get SWIG version number\n')
ace78e27 94
1ea8df6e
RD
95
96
41e8a69c
RD
97#----------------------------------------------------------------------
98# patch distutils if it can't cope with the "classifiers" or
99# "download_url" keywords
100#----------------------------------------------------------------------
101
102if sys.version < '2.2.3':
103 from distutils.dist import DistributionMetadata
104 DistributionMetadata.classifiers = None
105 DistributionMetadata.download_url = None
106 depends = {}
107else:
108 depends = {'depends' : depends}
109
110
1b62f00d
RD
111#----------------------------------------------------------------------
112# Define the CORE extension module
113#----------------------------------------------------------------------
114
1e4a197e 115msg('Preparing CORE...')
d14a1e28
RD
116swig_sources = run_swig(['core.i'], 'src', GENDIR, PKGDIR,
117 USE_SWIG, swig_force, swig_args, swig_deps +
1e0c8722
RD
118 [ 'src/_accel.i',
119 'src/_app.i',
d14a1e28
RD
120 'src/_app_ex.py',
121 'src/_constraints.i',
122 'src/_core_api.i',
123 'src/_core_ex.py',
54f9ee45
RD
124 'src/__core_rename.i',
125 'src/__core_reverse.txt',
d14a1e28
RD
126 'src/_defs.i',
127 'src/_event.i',
128 'src/_event_ex.py',
38b97c15 129 'src/_evtloop.i',
d14a1e28
RD
130 'src/_evthandler.i',
131 'src/_filesys.i',
132 'src/_gdicmn.i',
133 'src/_image.i',
134 'src/_menu.i',
135 'src/_obj.i',
136 'src/_sizers.i',
137 'src/_gbsizer.i',
138 'src/_streams.i',
139 'src/_validator.i',
140 'src/_window.i',
99abd512 141 'src/_control.i',
10694396 142 'src/_swigtype.i',
54f9ee45
RD
143 ],
144 True)
1b62f00d 145
1e4a197e 146copy_file('src/__init__.py', PKGDIR, update=1, verbose=0)
99abd512 147CLEANUP.append(opj(PKGDIR, '__init__.py'))
1b62f00d
RD
148
149
d14a1e28
RD
150# update the license files
151mkpath('licence')
152for file in ['preamble.txt', 'licence.txt', 'licendoc.txt', 'lgpl.txt']:
153 copy_file(opj(WXDIR, 'docs', file), opj('licence',file), update=1, verbose=0)
99abd512
RD
154 CLEANUP.append(opj('licence',file))
155CLEANUP.append('licence')
c368d904 156
c368d904 157
1e4a197e 158if os.name == 'nt':
7cae647a
RD
159 build_locale_dir(opj(PKGDIR, 'locale'))
160 DATA_FILES += build_locale_list(opj(PKGDIR, 'locale'))
4f3449b4
RD
161
162
1e4a197e
RD
163if os.name == 'nt':
164 rc_file = ['src/wxc.rc']
165else:
166 rc_file = []
167
168
54f9ee45 169ext = Extension('_core_', ['src/helpers.cpp',
54f9ee45 170 ] + rc_file + swig_sources,
1e4a197e
RD
171
172 include_dirs = includes,
173 define_macros = defines,
174
175 library_dirs = libdirs,
176 libraries = libs,
177
178 extra_compile_args = cflags,
179 extra_link_args = lflags,
d14a1e28 180
41e8a69c 181 **depends
1e4a197e
RD
182 )
183wxpExtensions.append(ext)
184
185
d14a1e28
RD
186
187
188
189# Extension for the GDI module
190swig_sources = run_swig(['gdi.i'], 'src', GENDIR, PKGDIR,
191 USE_SWIG, swig_force, swig_args, swig_deps +
73470a17 192 ['src/_bitmap.i',
99abd512
RD
193 'src/_colour.i',
194 'src/_dc.i',
6d61d718 195 'src/_graphics.i',
e19b9131 196 'src/_overlay.i',
99abd512
RD
197 'src/_gdiobj.i',
198 'src/_imaglist.i',
199 'src/_region.i',
200 'src/_stockobjs.i',
d14a1e28 201 'src/_effects.i',
99abd512
RD
202 'src/_intl.i',
203 'src/_intl_ex.py',
204 'src/_brush.i',
205 'src/_cursor.i',
206 'src/_font.i',
207 'src/_icon.i',
208 'src/_pen.i',
209 'src/_palette.i',
c95499b9 210 'src/_renderer.i',
7e664d85 211 'src/_pseudodc.i',
54f9ee45
RD
212 ],
213 True)
0f475e8a 214ext = Extension('_gdi_', ['src/drawlist.cpp',
7e664d85 215 'src/pseudodc.cpp'
0f475e8a 216 ] + swig_sources,
1e4a197e
RD
217 include_dirs = includes,
218 define_macros = defines,
219 library_dirs = libdirs,
220 libraries = libs,
221 extra_compile_args = cflags,
222 extra_link_args = lflags,
41e8a69c 223 **depends
1e4a197e
RD
224 )
225wxpExtensions.append(ext)
226
227
d14a1e28
RD
228
229
230
231
232# Extension for the windows module
233swig_sources = run_swig(['windows.i'], 'src', GENDIR, PKGDIR,
234 USE_SWIG, swig_force, swig_args, swig_deps +
73470a17 235 ['src/_panel.i',
99abd512
RD
236 'src/_toplvl.i',
237 'src/_statusbar.i',
238 'src/_splitter.i',
239 'src/_sashwin.i',
240 'src/_popupwin.i',
241 'src/_tipwin.i',
242 'src/_vscroll.i',
243 'src/_taskbar.i',
244 'src/_cmndlgs.i',
245 'src/_mdi.i',
246 'src/_pywindows.i',
247 'src/_printfw.i',
54f9ee45
RD
248 ],
249 True)
250ext = Extension('_windows_', swig_sources,
1e4a197e
RD
251 include_dirs = includes,
252 define_macros = defines,
253 library_dirs = libdirs,
254 libraries = libs,
255 extra_compile_args = cflags,
256 extra_link_args = lflags,
41e8a69c 257 **depends
1e4a197e
RD
258 )
259wxpExtensions.append(ext)
260
261
d14a1e28
RD
262
263
264# Extension for the controls module
265swig_sources = run_swig(['controls.i'], 'src', GENDIR, PKGDIR,
266 USE_SWIG, swig_force, swig_args, swig_deps +
73470a17 267 [ 'src/_toolbar.i',
99abd512
RD
268 'src/_button.i',
269 'src/_checkbox.i',
270 'src/_choice.i',
271 'src/_combobox.i',
272 'src/_gauge.i',
273 'src/_statctrls.i',
274 'src/_listbox.i',
275 'src/_textctrl.i',
276 'src/_scrolbar.i',
277 'src/_spin.i',
278 'src/_radio.i',
279 'src/_slider.i',
280 'src/_tglbtn.i',
281 'src/_notebook.i',
282 'src/_listctrl.i',
283 'src/_treectrl.i',
284 'src/_dirctrl.i',
285 'src/_pycontrol.i',
286 'src/_cshelp.i',
287 'src/_dragimg.i',
b3b61cda 288 'src/_datectrl.i',
3b91982e 289 'src/_hyperlink.i',
d211a853 290 'src/_picker.i',
73470a17 291 'src/_collpane.i',
3f7f284d 292 'src/_srchctrl.i',
54f9ee45
RD
293 ],
294 True)
295ext = Extension('_controls_', swig_sources,
d14a1e28
RD
296 include_dirs = includes,
297 define_macros = defines,
298 library_dirs = libdirs,
299 libraries = libs,
300 extra_compile_args = cflags,
301 extra_link_args = lflags,
41e8a69c 302 **depends
d14a1e28
RD
303 )
304wxpExtensions.append(ext)
305
306
307
308
309# Extension for the misc module
310swig_sources = run_swig(['misc.i'], 'src', GENDIR, PKGDIR,
311 USE_SWIG, swig_force, swig_args, swig_deps +
73470a17 312 [ 'src/_settings.i',
99abd512
RD
313 'src/_functions.i',
314 'src/_misc.i',
315 'src/_tipdlg.i',
316 'src/_timer.i',
317 'src/_log.i',
318 'src/_process.i',
319 'src/_joystick.i',
320 'src/_sound.i',
321 'src/_mimetype.i',
322 'src/_artprov.i',
323 'src/_config.i',
324 'src/_datetime.i',
325 'src/_dataobj.i',
326 'src/_dnd.i',
327 'src/_display.i',
d14a1e28 328 'src/_clipbrd.i',
53112743 329 'src/_stdpaths.i',
3b91982e 330 'src/_power.i',
f541d829 331 'src/_about.i',
54f9ee45
RD
332 ],
333 True)
334ext = Extension('_misc_', swig_sources,
d14a1e28
RD
335 include_dirs = includes,
336 define_macros = defines,
337 library_dirs = libdirs,
338 libraries = libs,
339 extra_compile_args = cflags,
340 extra_link_args = lflags,
41e8a69c 341 **depends
d14a1e28
RD
342 )
343wxpExtensions.append(ext)
344
345
346
347##
348## Core modules that are not in the "core" namespace start here
349##
350
1e4a197e
RD
351swig_sources = run_swig(['calendar.i'], 'src', GENDIR, PKGDIR,
352 USE_SWIG, swig_force, swig_args, swig_deps)
d14a1e28
RD
353ext = Extension('_calendar', swig_sources,
354 include_dirs = includes,
355 define_macros = defines,
356 library_dirs = libdirs,
357 libraries = libs,
358 extra_compile_args = cflags,
359 extra_link_args = lflags,
41e8a69c 360 **depends
d14a1e28
RD
361 )
362wxpExtensions.append(ext)
363
364
84bc0d49
RD
365swig_sources = run_swig(['combo.i'], 'src', GENDIR, PKGDIR,
366 USE_SWIG, swig_force, swig_args, swig_deps)
367ext = Extension('_combo', swig_sources,
368 include_dirs = includes,
369 define_macros = defines,
370 library_dirs = libdirs,
371 libraries = libs,
372 extra_compile_args = cflags,
373 extra_link_args = lflags,
374 **depends
375 )
376wxpExtensions.append(ext)
377
378
d14a1e28
RD
379swig_sources = run_swig(['grid.i'], 'src', GENDIR, PKGDIR,
380 USE_SWIG, swig_force, swig_args, swig_deps)
381ext = Extension('_grid', swig_sources,
1e4a197e
RD
382 include_dirs = includes,
383 define_macros = defines,
384 library_dirs = libdirs,
385 libraries = libs,
386 extra_compile_args = cflags,
387 extra_link_args = lflags,
41e8a69c 388 **depends
1e4a197e
RD
389 )
390wxpExtensions.append(ext)
391
392
d14a1e28
RD
393
394swig_sources = run_swig(['html.i'], 'src', GENDIR, PKGDIR,
1e4a197e 395 USE_SWIG, swig_force, swig_args, swig_deps)
d14a1e28 396ext = Extension('_html', swig_sources,
1e4a197e
RD
397 include_dirs = includes,
398 define_macros = defines,
399 library_dirs = libdirs,
400 libraries = libs,
401 extra_compile_args = cflags,
402 extra_link_args = lflags,
41e8a69c 403 **depends
1e4a197e
RD
404 )
405wxpExtensions.append(ext)
406
f6f1e19f 407
eadf221f 408mediaLibs = libs[:]
72fdc458 409if not MONOLITHIC and findLib('media', libdirs):
401569f1 410 mediaLibs += makeLibName('media')
870501f0
RD
411swig_sources = run_swig(['media.i'], 'src', GENDIR, PKGDIR,
412 USE_SWIG, swig_force, swig_args, swig_deps)
413ext = Extension('_media', swig_sources,
414 include_dirs = includes,
415 define_macros = defines,
416 library_dirs = libdirs,
eadf221f 417 libraries = mediaLibs,
870501f0
RD
418 extra_compile_args = cflags,
419 extra_link_args = lflags,
420 **depends
421 )
422wxpExtensions.append(ext)
423
424
7875e5ff
KO
425swig_sources = run_swig(['webkit.i'], 'src', GENDIR, PKGDIR,
426 USE_SWIG, swig_force, swig_args, swig_deps)
427ext = Extension('_webkit', swig_sources,
428 include_dirs = includes,
429 define_macros = defines,
430 library_dirs = libdirs,
431 libraries = libs,
432 extra_compile_args = cflags,
433 extra_link_args = lflags,
434 **depends
435 )
436wxpExtensions.append(ext)
d14a1e28 437
f6f1e19f
RD
438
439
1e4a197e
RD
440swig_sources = run_swig(['wizard.i'], 'src', GENDIR, PKGDIR,
441 USE_SWIG, swig_force, swig_args, swig_deps)
d14a1e28 442ext = Extension('_wizard', swig_sources,
1e4a197e
RD
443 include_dirs = includes,
444 define_macros = defines,
445 library_dirs = libdirs,
446 libraries = libs,
447 extra_compile_args = cflags,
448 extra_link_args = lflags,
41e8a69c 449 **depends
1e4a197e
RD
450 )
451wxpExtensions.append(ext)
af83019e
RD
452
453
38b97c15
RD
454
455swig_sources = run_swig(['xrc.i'], 'src', GENDIR, PKGDIR,
456 USE_SWIG, swig_force, swig_args, swig_deps +
73470a17 457 [ 'src/_xrc_ex.py',
38b97c15
RD
458 'src/_xmlres.i',
459 'src/_xmlsub.i',
460 'src/_xml.i',
461 'src/_xmlhandler.i',
462 ])
72fdc458
RD
463
464if not MONOLITHIC and findLib('xrc', libdirs):
0f475e8a
RD
465 xrcLib = makeLibName('xrc')
466else:
467 xrcLib = []
38b97c15
RD
468ext = Extension('_xrc',
469 swig_sources,
470
471 include_dirs = includes + CONTRIBS_INC,
472 define_macros = defines,
473
474 library_dirs = libdirs,
0f475e8a 475 libraries = libs + xrcLib,
38b97c15
RD
476
477 extra_compile_args = cflags,
478 extra_link_args = lflags,
479 )
480wxpExtensions.append(ext)
481
482
30fc5e8f
RD
483
484swig_sources = run_swig(['richtext.i'], 'src', GENDIR, PKGDIR,
485 USE_SWIG, swig_force, swig_args, swig_deps)
72fdc458 486if not MONOLITHIC and findLib('richtext', libdirs):
0f475e8a
RD
487 richLib = makeLibName('richtext')
488else:
489 richLib = []
30fc5e8f
RD
490ext = Extension('_richtext', swig_sources,
491 include_dirs = includes,
492 define_macros = defines,
493 library_dirs = libdirs,
0f475e8a 494 libraries = libs + richLib,
30fc5e8f 495 extra_compile_args = cflags,
febb39df
RD
496 extra_link_args = lflags,
497 **depends
498 )
499wxpExtensions.append(ext)
500
501
502
503swig_sources = run_swig(['aui.i'], 'src', GENDIR, PKGDIR,
504 USE_SWIG, swig_force,
505 swig_args + ['-I'+opj(WXDIR, 'include/wx/aui')],
506 swig_deps + ['src/_aui_docstrings.i',
507 opj(WXDIR, 'include/wx/aui/framemanager.h'),
508 opj(WXDIR, 'include/wx/aui/floatpane.h'),
509 opj(WXDIR, 'include/wx/aui/dockart.h'),
1c976bff 510 opj(WXDIR, 'include/wx/aui/auibook.h'),
3d7a1b39 511 opj(WXDIR, 'include/wx/aui/tabmdi.h'),
febb39df 512 ])
72fdc458 513if not MONOLITHIC and findLib('aui', libdirs):
febb39df
RD
514 auiLib = makeLibName('aui')
515else:
516 auiLib = []
517ext = Extension('_aui', swig_sources,
518 include_dirs = includes,
519 define_macros = defines,
520 library_dirs = libdirs,
521 libraries = libs + auiLib,
522 extra_compile_args = cflags,
30fc5e8f
RD
523 extra_link_args = lflags,
524 **depends
525 )
526wxpExtensions.append(ext)
527
528
e19b9131
RD
529swig_sources = run_swig(['animate.i'], 'src', GENDIR, PKGDIR,
530 USE_SWIG, swig_force, swig_args, swig_deps)
531ext = Extension('_animate',
532 swig_sources,
533
534 include_dirs = includes + CONTRIBS_INC,
535 define_macros = defines,
536
537 library_dirs = libdirs,
538 libraries = libs,
539
540 extra_compile_args = cflags,
541 extra_link_args = lflags,
542 )
543
544wxpExtensions.append(ext)
545
30fc5e8f
RD
546
547
548
c368d904
RD
549#----------------------------------------------------------------------
550# Define the GLCanvas extension module
551#----------------------------------------------------------------------
552
1e4a197e 553if BUILD_GLCANVAS:
cfe766c3 554 msg('Preparing GLCANVAS...')
c368d904 555 location = 'contrib/glcanvas'
c368d904 556
d14a1e28 557 swig_sources = run_swig(['glcanvas.i'], location, GENDIR, PKGDIR,
10ef30eb 558 USE_SWIG, swig_force, swig_args, swig_deps)
c368d904
RD
559
560 gl_libs = []
0f475e8a 561 gl_libdirs = libdirs[:]
c368d904 562 if os.name == 'posix':
cb9a93a2 563 gl_config = os.popen(WX_CONFIG + ' --libs gl', 'r').read()[:-1]
471e64d6 564 gl_lflags = gl_config.split()
0f475e8a
RD
565 gl_lflags = adjustLFLAGS(gl_lflags, gl_libdirs, gl_libs)
566
471e64d6 567
19cf4f80 568 else:
3e46a8e6 569 gl_libs = libs + ['opengl32', 'glu32'] + makeLibName('gl')
f32afe1c 570 gl_lflags = lflags
c368d904 571
d14a1e28 572 ext = Extension('_glcanvas',
3e46a8e6 573 swig_sources,
1e7ecb7b 574
4c417214 575 include_dirs = includes + CONTRIBS_INC,
1e7ecb7b
RD
576 define_macros = defines,
577
0f475e8a 578 library_dirs = gl_libdirs,
f32afe1c 579 libraries = gl_libs,
1e7ecb7b
RD
580
581 extra_compile_args = cflags,
f32afe1c 582 extra_link_args = gl_lflags,
1e7ecb7b
RD
583 )
584
585 wxpExtensions.append(ext)
c368d904
RD
586
587
588#----------------------------------------------------------------------
589# Define the OGL extension module
590#----------------------------------------------------------------------
591
1e4a197e 592if BUILD_OGL:
cfe766c3 593 msg('Preparing OGL...')
c368d904 594 location = 'contrib/ogl'
c368d904 595
a32360e0 596 swig_sources = run_swig(['ogl.i'], location, GENDIR, PKGDIR,
d14a1e28
RD
597 USE_SWIG, swig_force, swig_args, swig_deps +
598 [ '%s/_oglbasic.i' % location,
599 '%s/_oglshapes.i' % location,
600 '%s/_oglshapes2.i' % location,
601 '%s/_oglcanvas.i' % location,
602 '%s/_ogldefs.i' % location,
603 ])
c368d904 604
d14a1e28 605 ext = Extension('_ogl',
3ef86e32 606 swig_sources,
1e7ecb7b 607
4c417214 608 include_dirs = includes + [ location ] + CONTRIBS_INC,
dd116e73 609 define_macros = defines + [('wxUSE_DEPRECATED', '0')],
1e7ecb7b
RD
610
611 library_dirs = libdirs,
3ef86e32 612 libraries = libs + makeLibName('ogl'),
1e7ecb7b
RD
613
614 extra_compile_args = cflags,
615 extra_link_args = lflags,
616 )
617
618 wxpExtensions.append(ext)
619
620
c368d904
RD
621
622#----------------------------------------------------------------------
623# Define the STC extension module
624#----------------------------------------------------------------------
625
1e4a197e 626if BUILD_STC:
cfe766c3 627 msg('Preparing STC...')
c368d904 628 location = 'contrib/stc'
020fb2ee
RD
629 #if os.name == 'nt':
630 STC_H = opj(WXDIR, 'contrib', 'include/wx/stc')
631 #else:
632 # STC_H = opj(WXPREFIX, 'include/wx-%d.%d/wx/stc' % (VER_MAJOR, VER_MINOR))
55c020cf 633
de7b7fe6 634## NOTE: need to add something like this to the stc.bkl...
55c020cf 635
3ef86e32
RD
636## # Check if gen_iface needs to be run for the wxSTC sources
637## if (newer(opj(CTRB_SRC, 'stc/stc.h.in'), opj(CTRB_INC, 'stc/stc.h' )) or
638## newer(opj(CTRB_SRC, 'stc/stc.cpp.in'), opj(CTRB_SRC, 'stc/stc.cpp')) or
639## newer(opj(CTRB_SRC, 'stc/gen_iface.py'), opj(CTRB_SRC, 'stc/stc.cpp'))):
55c020cf 640
3ef86e32
RD
641## msg('Running gen_iface.py, regenerating stc.h and stc.cpp...')
642## cwd = os.getcwd()
643## os.chdir(opj(CTRB_SRC, 'stc'))
644## sys.path.insert(0, os.curdir)
645## import gen_iface
646## gen_iface.main([])
647## os.chdir(cwd)
c368d904
RD
648
649
befa6977 650 swig_sources = run_swig(['stc.i'], location, GENDIR, PKGDIR,
c368d904
RD
651 USE_SWIG, swig_force,
652 swig_args + ['-I'+STC_H, '-I'+location],
1ce1bd84
RD
653 [opj(STC_H, 'stc.h'),
654 opj(location, "_stc_utf8_methods.py"),
f2ccce28
RD
655 opj(location, "_stc_docstrings.i"),
656 opj(location, "_stc_gendocs.i"),
1ce1bd84 657 ] + swig_deps)
c368d904 658
d14a1e28 659 ext = Extension('_stc',
3ef86e32
RD
660 swig_sources,
661
4c417214 662 include_dirs = includes + CONTRIBS_INC,
3ef86e32 663 define_macros = defines,
1e7ecb7b
RD
664
665 library_dirs = libdirs,
3ef86e32 666 libraries = libs + makeLibName('stc'),
c368d904 667
1e7ecb7b
RD
668 extra_compile_args = cflags,
669 extra_link_args = lflags,
670 )
671
672 wxpExtensions.append(ext)
c368d904
RD
673
674
b7c75283
RD
675#----------------------------------------------------------------------
676# Define the ACTIVEX extension module (experimental)
677#----------------------------------------------------------------------
678
679if BUILD_ACTIVEX:
680 msg('Preparing ACTIVEX...')
681 location = 'contrib/activex'
682 axloc = opj(location, "wxie")
683
684 swig_files = ['activex.i', ]
685
686 swig_sources = run_swig(swig_files, location, '', PKGDIR,
687 USE_SWIG, swig_force, swig_args, swig_deps +
688 [ '%s/_activex_ex.py' % location])
689
690
691 ext = Extension('_activex', ['%s/IEHtmlWin.cpp' % axloc,
692 '%s/wxactivex.cpp' % axloc,
693 ] + swig_sources,
694
695 include_dirs = includes + [ axloc ],
696 define_macros = defines,
697
698 library_dirs = libdirs,
699 libraries = libs,
700
701 extra_compile_args = cflags,
926bb76c
RD
702 extra_link_args = lflags,
703 )
704
705 wxpExtensions.append(ext)
706
707
ebf4302c
RD
708#----------------------------------------------------------------------
709# Define the GIZMOS extension module
710#----------------------------------------------------------------------
711
1e4a197e 712if BUILD_GIZMOS:
ebf4302c
RD
713 msg('Preparing GIZMOS...')
714 location = 'contrib/gizmos'
ebf4302c 715
a32360e0 716 swig_sources = run_swig(['gizmos.i'], location, GENDIR, PKGDIR,
33328cd8
RD
717 USE_SWIG, swig_force, swig_args, swig_deps +
718 [ '%s/_treelist.i' % location])
ebf4302c 719
d14a1e28 720 ext = Extension('_gizmos',
28eab81f 721 [ '%s/treelistctrl.cpp' % opj(location, 'wxCode/src') ] + swig_sources,
ebf4302c 722
28eab81f 723 include_dirs = includes + [ location, opj(location, 'wxCode/include') ] + CONTRIBS_INC,
ebf4302c
RD
724 define_macros = defines,
725
726 library_dirs = libdirs,
3ef86e32 727 libraries = libs + makeLibName('gizmos'),
ebf4302c
RD
728
729 extra_compile_args = cflags,
730 extra_link_args = lflags,
731 )
732
733 wxpExtensions.append(ext)
734
735
4a61305d
RD
736#----------------------------------------------------------------------
737# Define the DLLWIDGET extension module
738#----------------------------------------------------------------------
739
1e4a197e 740if BUILD_DLLWIDGET:
4a61305d
RD
741 msg('Preparing DLLWIDGET...')
742 location = 'contrib/dllwidget'
743 swig_files = ['dllwidget_.i']
744
745 swig_sources = run_swig(swig_files, location, '', PKGDIR,
10ef30eb 746 USE_SWIG, swig_force, swig_args, swig_deps)
4a61305d
RD
747
748 # copy a contrib project specific py module to the main package dir
749 copy_file(opj(location, 'dllwidget.py'), PKGDIR, update=1, verbose=0)
99abd512 750 CLEANUP.append(opj(PKGDIR, 'dllwidget.py'))
4a61305d
RD
751
752 ext = Extension('dllwidget_c', [
753 '%s/dllwidget.cpp' % location,
754 ] + swig_sources,
755
4c417214 756 include_dirs = includes + CONTRIBS_INC,
4a61305d
RD
757 define_macros = defines,
758
759 library_dirs = libdirs,
760 libraries = libs,
761
762 extra_compile_args = cflags,
763 extra_link_args = lflags,
764 )
765
766 wxpExtensions.append(ext)
767
768
1e4a197e 769
38b97c15 770
1e4a197e 771#----------------------------------------------------------------------
1128a89b 772# Tools, scripts data files, etc.
1e4a197e 773#----------------------------------------------------------------------
8916d007 774
2eb31f8b
RD
775if NO_SCRIPTS:
776 SCRIPTS = None
777else:
1e4a197e
RD
778 SCRIPTS = [opj('scripts/helpviewer'),
779 opj('scripts/img2png'),
2eb31f8b 780 opj('scripts/img2py'),
d48c1c64
RD
781 opj('scripts/img2xpm'),
782 opj('scripts/pyalacarte'),
783 opj('scripts/pyalamode'),
2eb31f8b 784 opj('scripts/pycrust'),
d48c1c64 785 opj('scripts/pyshell'),
1fded56b
RD
786 opj('scripts/pywrap'),
787 opj('scripts/pywrap'),
b6536d60 788 opj('scripts/pywxrc'),
d48c1c64 789 opj('scripts/xrced'),
2eb31f8b 790 ]
d48c1c64 791
4a61305d 792
926bb76c 793
c2079460
RD
794DATA_FILES += find_data_files('wx/tools/XRCed', '*.txt', '*.xrc')
795DATA_FILES += find_data_files('wx/py', '*.txt', '*.ico', '*.css', '*.html')
1fded56b 796DATA_FILES += find_data_files('wx', '*.txt', '*.css', '*.html')
1e4a197e
RD
797
798
1128a89b
RD
799if NO_HEADERS:
800 HEADERS = None
801else:
802 h_files = glob.glob(opj("include/wx/wxPython/*.h"))
803 i_files = glob.glob(opj("src/*.i")) + \
804 glob.glob(opj("src/_*.py")) + \
805 glob.glob(opj("src/*.swg"))
61ecd225
RD
806 if BUILD_GLCANVAS:
807 i_files += glob.glob(opj("contrib/glcanvas/*.i"))
1128a89b 808
e9019d1c
RD
809 HEADERS = zip(h_files, ["/wxPython"]*len(h_files)) + \
810 zip(i_files, ["/wxPython/i_files"]*len(i_files))
811
1128a89b 812
d48c1c64
RD
813
814if INSTALL_MULTIVERSION:
095315e2 815 EXTRA_PATH = getExtraPath(addOpts=EP_ADD_OPTS, shortVer=not EP_FULL_VER)
d48c1c64
RD
816 open("src/wx.pth", "w").write(EXTRA_PATH)
817 CLEANUP.append("src/wx.pth")
818else:
819 EXTRA_PATH = None
820
821
822
c368d904
RD
823#----------------------------------------------------------------------
824# Do the Setup/Build/Install/Whatever
825#----------------------------------------------------------------------
826
1b62f00d 827if __name__ == "__main__":
1e4a197e 828 if not PREP_ONLY:
d48c1c64 829
d14a1e28 830 setup(name = 'wxPython',
1b62f00d
RD
831 version = VERSION,
832 description = DESCRIPTION,
833 long_description = LONG_DESCRIPTION,
834 author = AUTHOR,
835 author_email = AUTHOR_EMAIL,
836 url = URL,
851d4ac7 837 download_url = DOWNLOAD_URL,
e2e02194 838 license = LICENSE,
851d4ac7
RD
839 platforms = PLATFORMS,
840 classifiers = filter(None, CLASSIFIERS.split("\n")),
841 keywords = KEYWORDS,
d14a1e28 842
1fded56b
RD
843 packages = ['wxPython',
844 'wxPython.lib',
845 'wxPython.lib.colourchooser',
846 'wxPython.lib.editor',
847 'wxPython.lib.mixins',
1fded56b 848 'wxPython.tools',
1fded56b
RD
849
850 'wx',
1128a89b 851 'wx.build',
1fded56b 852 'wx.lib',
30fc5e8f
RD
853 'wx.lib.analogclock',
854 'wx.lib.analogclock.lib_setup',
48297664 855 'wx.lib.art',
1fded56b
RD
856 'wx.lib.colourchooser',
857 'wx.lib.editor',
42463de2 858 'wx.lib.floatcanvas',
9176f38f 859 'wx.lib.masked',
1fded56b 860 'wx.lib.mixins',
f847103a 861 'wx.lib.ogl',
1fded56b
RD
862 'wx.py',
863 'wx.tools',
864 'wx.tools.XRCed',
1b62f00d
RD
865 ],
866
d48c1c64
RD
867 extra_path = EXTRA_PATH,
868
1b62f00d
RD
869 ext_package = PKGDIR,
870 ext_modules = wxpExtensions,
8916d007 871
1128a89b
RD
872 options = { 'build' : { 'build_base' : BUILD_BASE },
873 },
a541c325 874
1128a89b 875 scripts = SCRIPTS,
1e4a197e 876 data_files = DATA_FILES,
1128a89b 877 headers = HEADERS,
8916d007 878
d48c1c64
RD
879 # Override some of the default distutils command classes with my own
880 cmdclass = { 'install' : wx_install,
881 'install_data': wx_smart_install_data,
1128a89b
RD
882 'install_headers': wx_install_headers,
883 'clean': wx_extra_clean,
884 },
1b62f00d 885 )
c368d904 886
0f475e8a
RD
887 setup(name = 'wxaddons',
888 version = VERSION,
889 description = DESCRIPTION,
890 long_description = LONG_DESCRIPTION,
891 author = AUTHOR,
892 author_email = AUTHOR_EMAIL,
893 url = URL,
894 download_url = DOWNLOAD_URL,
895 license = LICENSE,
896 platforms = PLATFORMS,
897 classifiers = filter(None, CLASSIFIERS.split("\n")),
898 keywords = KEYWORDS,
899
900 packages = ['wxaddons']
901 )
c368d904 902
d48c1c64
RD
903 if INSTALL_MULTIVERSION:
904 setup(name = 'wxPython-common',
905 version = VERSION,
906 description = DESCRIPTION,
907 long_description = LONG_DESCRIPTION,
908 author = AUTHOR,
909 author_email = AUTHOR_EMAIL,
910 url = URL,
911 download_url = DOWNLOAD_URL,
912 license = LICENSE,
913 platforms = PLATFORMS,
914 classifiers = filter(None, CLASSIFIERS.split("\n")),
915 keywords = KEYWORDS,
916
917 package_dir = { '': 'wxversion' },
918 py_modules = ['wxversion'],
919
920 data_files = [('', ['src/wx.pth'])],
921
922 options = { 'build' : { 'build_base' : BUILD_BASE },
923 },
924
925 cmdclass = { 'install_data': wx_smart_install_data,
926 },
927 )
928
c368d904
RD
929#----------------------------------------------------------------------
930#----------------------------------------------------------------------