]> git.saurik.com Git - wxWidgets.git/blame - wxPython/setup.py
Don't use hidden items for size calc (patch 1698314)
[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',
828ed945
RD
721 [ '%s/treelistctrl.cpp' % opj(location, 'wxCode/src'),
722 '%s/gizmos/dynamicsash.cpp' % opj(location, 'wxCode/src'),
723 '%s/gizmos/editlbox.cpp' % opj(location, 'wxCode/src'),
724 '%s/gizmos/ledctrl.cpp' % opj(location, 'wxCode/src'),
725 '%s/gizmos/splittree.cpp' % opj(location, 'wxCode/src'),
726 '%s/gizmos/statpict.cpp' % opj(location, 'wxCode/src'),
727 ] + swig_sources,
ebf4302c 728
28eab81f 729 include_dirs = includes + [ location, opj(location, 'wxCode/include') ] + CONTRIBS_INC,
ebf4302c
RD
730 define_macros = defines,
731
732 library_dirs = libdirs,
828ed945 733 libraries = libs,
ebf4302c
RD
734
735 extra_compile_args = cflags,
736 extra_link_args = lflags,
737 )
738
739 wxpExtensions.append(ext)
740
741
4a61305d
RD
742#----------------------------------------------------------------------
743# Define the DLLWIDGET extension module
744#----------------------------------------------------------------------
745
1e4a197e 746if BUILD_DLLWIDGET:
4a61305d
RD
747 msg('Preparing DLLWIDGET...')
748 location = 'contrib/dllwidget'
749 swig_files = ['dllwidget_.i']
750
751 swig_sources = run_swig(swig_files, location, '', PKGDIR,
10ef30eb 752 USE_SWIG, swig_force, swig_args, swig_deps)
4a61305d
RD
753
754 # copy a contrib project specific py module to the main package dir
755 copy_file(opj(location, 'dllwidget.py'), PKGDIR, update=1, verbose=0)
99abd512 756 CLEANUP.append(opj(PKGDIR, 'dllwidget.py'))
4a61305d
RD
757
758 ext = Extension('dllwidget_c', [
759 '%s/dllwidget.cpp' % location,
760 ] + swig_sources,
761
4c417214 762 include_dirs = includes + CONTRIBS_INC,
4a61305d
RD
763 define_macros = defines,
764
765 library_dirs = libdirs,
766 libraries = libs,
767
768 extra_compile_args = cflags,
769 extra_link_args = lflags,
770 )
771
772 wxpExtensions.append(ext)
773
774
1e4a197e 775
38b97c15 776
1e4a197e 777#----------------------------------------------------------------------
1128a89b 778# Tools, scripts data files, etc.
1e4a197e 779#----------------------------------------------------------------------
8916d007 780
2eb31f8b
RD
781if NO_SCRIPTS:
782 SCRIPTS = None
783else:
1e4a197e
RD
784 SCRIPTS = [opj('scripts/helpviewer'),
785 opj('scripts/img2png'),
2eb31f8b 786 opj('scripts/img2py'),
d48c1c64
RD
787 opj('scripts/img2xpm'),
788 opj('scripts/pyalacarte'),
789 opj('scripts/pyalamode'),
2eb31f8b 790 opj('scripts/pycrust'),
d48c1c64 791 opj('scripts/pyshell'),
1fded56b
RD
792 opj('scripts/pywrap'),
793 opj('scripts/pywrap'),
b6536d60 794 opj('scripts/pywxrc'),
d48c1c64 795 opj('scripts/xrced'),
2eb31f8b 796 ]
d48c1c64 797
4a61305d 798
926bb76c 799
c2079460
RD
800DATA_FILES += find_data_files('wx/tools/XRCed', '*.txt', '*.xrc')
801DATA_FILES += find_data_files('wx/py', '*.txt', '*.ico', '*.css', '*.html')
1fded56b 802DATA_FILES += find_data_files('wx', '*.txt', '*.css', '*.html')
1e4a197e
RD
803
804
1128a89b
RD
805if NO_HEADERS:
806 HEADERS = None
807else:
808 h_files = glob.glob(opj("include/wx/wxPython/*.h"))
809 i_files = glob.glob(opj("src/*.i")) + \
810 glob.glob(opj("src/_*.py")) + \
811 glob.glob(opj("src/*.swg"))
61ecd225
RD
812 if BUILD_GLCANVAS:
813 i_files += glob.glob(opj("contrib/glcanvas/*.i"))
1128a89b 814
e9019d1c
RD
815 HEADERS = zip(h_files, ["/wxPython"]*len(h_files)) + \
816 zip(i_files, ["/wxPython/i_files"]*len(i_files))
817
1128a89b 818
d48c1c64
RD
819
820if INSTALL_MULTIVERSION:
095315e2 821 EXTRA_PATH = getExtraPath(addOpts=EP_ADD_OPTS, shortVer=not EP_FULL_VER)
d48c1c64
RD
822 open("src/wx.pth", "w").write(EXTRA_PATH)
823 CLEANUP.append("src/wx.pth")
824else:
825 EXTRA_PATH = None
826
827
828
c368d904
RD
829#----------------------------------------------------------------------
830# Do the Setup/Build/Install/Whatever
831#----------------------------------------------------------------------
832
1b62f00d 833if __name__ == "__main__":
1e4a197e 834 if not PREP_ONLY:
d48c1c64 835
d14a1e28 836 setup(name = 'wxPython',
1b62f00d
RD
837 version = VERSION,
838 description = DESCRIPTION,
839 long_description = LONG_DESCRIPTION,
840 author = AUTHOR,
841 author_email = AUTHOR_EMAIL,
842 url = URL,
851d4ac7 843 download_url = DOWNLOAD_URL,
e2e02194 844 license = LICENSE,
851d4ac7
RD
845 platforms = PLATFORMS,
846 classifiers = filter(None, CLASSIFIERS.split("\n")),
847 keywords = KEYWORDS,
d14a1e28 848
1fded56b
RD
849 packages = ['wxPython',
850 'wxPython.lib',
851 'wxPython.lib.colourchooser',
852 'wxPython.lib.editor',
853 'wxPython.lib.mixins',
1fded56b 854 'wxPython.tools',
1fded56b
RD
855
856 'wx',
1128a89b 857 'wx.build',
1fded56b 858 'wx.lib',
30fc5e8f
RD
859 'wx.lib.analogclock',
860 'wx.lib.analogclock.lib_setup',
48297664 861 'wx.lib.art',
1fded56b
RD
862 'wx.lib.colourchooser',
863 'wx.lib.editor',
42463de2 864 'wx.lib.floatcanvas',
9176f38f 865 'wx.lib.masked',
1fded56b 866 'wx.lib.mixins',
f847103a 867 'wx.lib.ogl',
1fded56b
RD
868 'wx.py',
869 'wx.tools',
870 'wx.tools.XRCed',
1b62f00d
RD
871 ],
872
d48c1c64
RD
873 extra_path = EXTRA_PATH,
874
1b62f00d
RD
875 ext_package = PKGDIR,
876 ext_modules = wxpExtensions,
8916d007 877
1128a89b
RD
878 options = { 'build' : { 'build_base' : BUILD_BASE },
879 },
a541c325 880
1128a89b 881 scripts = SCRIPTS,
1e4a197e 882 data_files = DATA_FILES,
1128a89b 883 headers = HEADERS,
8916d007 884
d48c1c64
RD
885 # Override some of the default distutils command classes with my own
886 cmdclass = { 'install' : wx_install,
887 'install_data': wx_smart_install_data,
1128a89b
RD
888 'install_headers': wx_install_headers,
889 'clean': wx_extra_clean,
890 },
1b62f00d 891 )
c368d904 892
0f475e8a
RD
893 setup(name = 'wxaddons',
894 version = VERSION,
895 description = DESCRIPTION,
896 long_description = LONG_DESCRIPTION,
897 author = AUTHOR,
898 author_email = AUTHOR_EMAIL,
899 url = URL,
900 download_url = DOWNLOAD_URL,
901 license = LICENSE,
902 platforms = PLATFORMS,
903 classifiers = filter(None, CLASSIFIERS.split("\n")),
904 keywords = KEYWORDS,
905
906 packages = ['wxaddons']
907 )
c368d904 908
d48c1c64
RD
909 if INSTALL_MULTIVERSION:
910 setup(name = 'wxPython-common',
911 version = VERSION,
912 description = DESCRIPTION,
913 long_description = LONG_DESCRIPTION,
914 author = AUTHOR,
915 author_email = AUTHOR_EMAIL,
916 url = URL,
917 download_url = DOWNLOAD_URL,
918 license = LICENSE,
919 platforms = PLATFORMS,
920 classifiers = filter(None, CLASSIFIERS.split("\n")),
921 keywords = KEYWORDS,
922
923 package_dir = { '': 'wxversion' },
924 py_modules = ['wxversion'],
925
926 data_files = [('', ['src/wx.pth'])],
927
928 options = { 'build' : { 'build_base' : BUILD_BASE },
929 },
930
931 cmdclass = { 'install_data': wx_smart_install_data,
932 },
933 )
934
c368d904
RD
935#----------------------------------------------------------------------
936#----------------------------------------------------------------------