]> git.saurik.com Git - wxWidgets.git/blame - wxPython/setup.py
Compile fixes for Panther
[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'),
febb39df 511 ])
72fdc458 512if not MONOLITHIC and findLib('aui', libdirs):
febb39df
RD
513 auiLib = makeLibName('aui')
514else:
515 auiLib = []
516ext = Extension('_aui', swig_sources,
517 include_dirs = includes,
518 define_macros = defines,
519 library_dirs = libdirs,
520 libraries = libs + auiLib,
521 extra_compile_args = cflags,
30fc5e8f
RD
522 extra_link_args = lflags,
523 **depends
524 )
525wxpExtensions.append(ext)
526
527
e19b9131
RD
528swig_sources = run_swig(['animate.i'], 'src', GENDIR, PKGDIR,
529 USE_SWIG, swig_force, swig_args, swig_deps)
530ext = Extension('_animate',
531 swig_sources,
532
533 include_dirs = includes + CONTRIBS_INC,
534 define_macros = defines,
535
536 library_dirs = libdirs,
537 libraries = libs,
538
539 extra_compile_args = cflags,
540 extra_link_args = lflags,
541 )
542
543wxpExtensions.append(ext)
544
30fc5e8f
RD
545
546
547
c368d904
RD
548#----------------------------------------------------------------------
549# Define the GLCanvas extension module
550#----------------------------------------------------------------------
551
1e4a197e 552if BUILD_GLCANVAS:
cfe766c3 553 msg('Preparing GLCANVAS...')
c368d904 554 location = 'contrib/glcanvas'
c368d904 555
d14a1e28 556 swig_sources = run_swig(['glcanvas.i'], location, GENDIR, PKGDIR,
10ef30eb 557 USE_SWIG, swig_force, swig_args, swig_deps)
c368d904
RD
558
559 gl_libs = []
0f475e8a 560 gl_libdirs = libdirs[:]
c368d904 561 if os.name == 'posix':
cb9a93a2 562 gl_config = os.popen(WX_CONFIG + ' --libs gl', 'r').read()[:-1]
471e64d6 563 gl_lflags = gl_config.split()
0f475e8a
RD
564 gl_lflags = adjustLFLAGS(gl_lflags, gl_libdirs, gl_libs)
565
471e64d6 566
19cf4f80 567 else:
3e46a8e6 568 gl_libs = libs + ['opengl32', 'glu32'] + makeLibName('gl')
f32afe1c 569 gl_lflags = lflags
c368d904 570
d14a1e28 571 ext = Extension('_glcanvas',
3e46a8e6 572 swig_sources,
1e7ecb7b 573
4c417214 574 include_dirs = includes + CONTRIBS_INC,
1e7ecb7b
RD
575 define_macros = defines,
576
0f475e8a 577 library_dirs = gl_libdirs,
f32afe1c 578 libraries = gl_libs,
1e7ecb7b
RD
579
580 extra_compile_args = cflags,
f32afe1c 581 extra_link_args = gl_lflags,
1e7ecb7b
RD
582 )
583
584 wxpExtensions.append(ext)
c368d904
RD
585
586
587#----------------------------------------------------------------------
588# Define the OGL extension module
589#----------------------------------------------------------------------
590
1e4a197e 591if BUILD_OGL:
cfe766c3 592 msg('Preparing OGL...')
c368d904 593 location = 'contrib/ogl'
c368d904 594
a32360e0 595 swig_sources = run_swig(['ogl.i'], location, GENDIR, PKGDIR,
d14a1e28
RD
596 USE_SWIG, swig_force, swig_args, swig_deps +
597 [ '%s/_oglbasic.i' % location,
598 '%s/_oglshapes.i' % location,
599 '%s/_oglshapes2.i' % location,
600 '%s/_oglcanvas.i' % location,
601 '%s/_ogldefs.i' % location,
602 ])
c368d904 603
d14a1e28 604 ext = Extension('_ogl',
3ef86e32 605 swig_sources,
1e7ecb7b 606
4c417214 607 include_dirs = includes + [ location ] + CONTRIBS_INC,
dd116e73 608 define_macros = defines + [('wxUSE_DEPRECATED', '0')],
1e7ecb7b
RD
609
610 library_dirs = libdirs,
3ef86e32 611 libraries = libs + makeLibName('ogl'),
1e7ecb7b
RD
612
613 extra_compile_args = cflags,
614 extra_link_args = lflags,
615 )
616
617 wxpExtensions.append(ext)
618
619
c368d904
RD
620
621#----------------------------------------------------------------------
622# Define the STC extension module
623#----------------------------------------------------------------------
624
1e4a197e 625if BUILD_STC:
cfe766c3 626 msg('Preparing STC...')
c368d904 627 location = 'contrib/stc'
020fb2ee
RD
628 #if os.name == 'nt':
629 STC_H = opj(WXDIR, 'contrib', 'include/wx/stc')
630 #else:
631 # STC_H = opj(WXPREFIX, 'include/wx-%d.%d/wx/stc' % (VER_MAJOR, VER_MINOR))
55c020cf 632
de7b7fe6 633## NOTE: need to add something like this to the stc.bkl...
55c020cf 634
3ef86e32
RD
635## # Check if gen_iface needs to be run for the wxSTC sources
636## if (newer(opj(CTRB_SRC, 'stc/stc.h.in'), opj(CTRB_INC, 'stc/stc.h' )) or
637## newer(opj(CTRB_SRC, 'stc/stc.cpp.in'), opj(CTRB_SRC, 'stc/stc.cpp')) or
638## newer(opj(CTRB_SRC, 'stc/gen_iface.py'), opj(CTRB_SRC, 'stc/stc.cpp'))):
55c020cf 639
3ef86e32
RD
640## msg('Running gen_iface.py, regenerating stc.h and stc.cpp...')
641## cwd = os.getcwd()
642## os.chdir(opj(CTRB_SRC, 'stc'))
643## sys.path.insert(0, os.curdir)
644## import gen_iface
645## gen_iface.main([])
646## os.chdir(cwd)
c368d904
RD
647
648
befa6977 649 swig_sources = run_swig(['stc.i'], location, GENDIR, PKGDIR,
c368d904
RD
650 USE_SWIG, swig_force,
651 swig_args + ['-I'+STC_H, '-I'+location],
1ce1bd84
RD
652 [opj(STC_H, 'stc.h'),
653 opj(location, "_stc_utf8_methods.py"),
f2ccce28
RD
654 opj(location, "_stc_docstrings.i"),
655 opj(location, "_stc_gendocs.i"),
1ce1bd84 656 ] + swig_deps)
c368d904 657
d14a1e28 658 ext = Extension('_stc',
3ef86e32
RD
659 swig_sources,
660
4c417214 661 include_dirs = includes + CONTRIBS_INC,
3ef86e32 662 define_macros = defines,
1e7ecb7b
RD
663
664 library_dirs = libdirs,
3ef86e32 665 libraries = libs + makeLibName('stc'),
c368d904 666
1e7ecb7b
RD
667 extra_compile_args = cflags,
668 extra_link_args = lflags,
669 )
670
671 wxpExtensions.append(ext)
c368d904
RD
672
673
b7c75283
RD
674#----------------------------------------------------------------------
675# Define the ACTIVEX extension module (experimental)
676#----------------------------------------------------------------------
677
678if BUILD_ACTIVEX:
679 msg('Preparing ACTIVEX...')
680 location = 'contrib/activex'
681 axloc = opj(location, "wxie")
682
683 swig_files = ['activex.i', ]
684
685 swig_sources = run_swig(swig_files, location, '', PKGDIR,
686 USE_SWIG, swig_force, swig_args, swig_deps +
687 [ '%s/_activex_ex.py' % location])
688
689
690 ext = Extension('_activex', ['%s/IEHtmlWin.cpp' % axloc,
691 '%s/wxactivex.cpp' % axloc,
692 ] + swig_sources,
693
694 include_dirs = includes + [ axloc ],
695 define_macros = defines,
696
697 library_dirs = libdirs,
698 libraries = libs,
699
700 extra_compile_args = cflags,
926bb76c
RD
701 extra_link_args = lflags,
702 )
703
704 wxpExtensions.append(ext)
705
706
ebf4302c
RD
707#----------------------------------------------------------------------
708# Define the GIZMOS extension module
709#----------------------------------------------------------------------
710
1e4a197e 711if BUILD_GIZMOS:
ebf4302c
RD
712 msg('Preparing GIZMOS...')
713 location = 'contrib/gizmos'
ebf4302c 714
a32360e0 715 swig_sources = run_swig(['gizmos.i'], location, GENDIR, PKGDIR,
33328cd8
RD
716 USE_SWIG, swig_force, swig_args, swig_deps +
717 [ '%s/_treelist.i' % location])
ebf4302c 718
d14a1e28 719 ext = Extension('_gizmos',
28eab81f 720 [ '%s/treelistctrl.cpp' % opj(location, 'wxCode/src') ] + swig_sources,
ebf4302c 721
28eab81f 722 include_dirs = includes + [ location, opj(location, 'wxCode/include') ] + CONTRIBS_INC,
ebf4302c
RD
723 define_macros = defines,
724
725 library_dirs = libdirs,
3ef86e32 726 libraries = libs + makeLibName('gizmos'),
ebf4302c
RD
727
728 extra_compile_args = cflags,
729 extra_link_args = lflags,
730 )
731
732 wxpExtensions.append(ext)
733
734
4a61305d
RD
735#----------------------------------------------------------------------
736# Define the DLLWIDGET extension module
737#----------------------------------------------------------------------
738
1e4a197e 739if BUILD_DLLWIDGET:
4a61305d
RD
740 msg('Preparing DLLWIDGET...')
741 location = 'contrib/dllwidget'
742 swig_files = ['dllwidget_.i']
743
744 swig_sources = run_swig(swig_files, location, '', PKGDIR,
10ef30eb 745 USE_SWIG, swig_force, swig_args, swig_deps)
4a61305d
RD
746
747 # copy a contrib project specific py module to the main package dir
748 copy_file(opj(location, 'dllwidget.py'), PKGDIR, update=1, verbose=0)
99abd512 749 CLEANUP.append(opj(PKGDIR, 'dllwidget.py'))
4a61305d
RD
750
751 ext = Extension('dllwidget_c', [
752 '%s/dllwidget.cpp' % location,
753 ] + swig_sources,
754
4c417214 755 include_dirs = includes + CONTRIBS_INC,
4a61305d
RD
756 define_macros = defines,
757
758 library_dirs = libdirs,
759 libraries = libs,
760
761 extra_compile_args = cflags,
762 extra_link_args = lflags,
763 )
764
765 wxpExtensions.append(ext)
766
767
1e4a197e 768
38b97c15 769
1e4a197e 770#----------------------------------------------------------------------
1128a89b 771# Tools, scripts data files, etc.
1e4a197e 772#----------------------------------------------------------------------
8916d007 773
2eb31f8b
RD
774if NO_SCRIPTS:
775 SCRIPTS = None
776else:
1e4a197e
RD
777 SCRIPTS = [opj('scripts/helpviewer'),
778 opj('scripts/img2png'),
2eb31f8b 779 opj('scripts/img2py'),
d48c1c64
RD
780 opj('scripts/img2xpm'),
781 opj('scripts/pyalacarte'),
782 opj('scripts/pyalamode'),
2eb31f8b 783 opj('scripts/pycrust'),
d48c1c64 784 opj('scripts/pyshell'),
1fded56b
RD
785 opj('scripts/pywrap'),
786 opj('scripts/pywrap'),
b6536d60 787 opj('scripts/pywxrc'),
d48c1c64 788 opj('scripts/xrced'),
2eb31f8b 789 ]
d48c1c64 790
4a61305d 791
926bb76c 792
c2079460
RD
793DATA_FILES += find_data_files('wx/tools/XRCed', '*.txt', '*.xrc')
794DATA_FILES += find_data_files('wx/py', '*.txt', '*.ico', '*.css', '*.html')
1fded56b 795DATA_FILES += find_data_files('wx', '*.txt', '*.css', '*.html')
1e4a197e
RD
796
797
1128a89b
RD
798if NO_HEADERS:
799 HEADERS = None
800else:
801 h_files = glob.glob(opj("include/wx/wxPython/*.h"))
802 i_files = glob.glob(opj("src/*.i")) + \
803 glob.glob(opj("src/_*.py")) + \
804 glob.glob(opj("src/*.swg"))
61ecd225
RD
805 if BUILD_GLCANVAS:
806 i_files += glob.glob(opj("contrib/glcanvas/*.i"))
1128a89b 807
e9019d1c
RD
808 HEADERS = zip(h_files, ["/wxPython"]*len(h_files)) + \
809 zip(i_files, ["/wxPython/i_files"]*len(i_files))
810
1128a89b 811
d48c1c64
RD
812
813if INSTALL_MULTIVERSION:
095315e2 814 EXTRA_PATH = getExtraPath(addOpts=EP_ADD_OPTS, shortVer=not EP_FULL_VER)
d48c1c64
RD
815 open("src/wx.pth", "w").write(EXTRA_PATH)
816 CLEANUP.append("src/wx.pth")
817else:
818 EXTRA_PATH = None
819
820
821
c368d904
RD
822#----------------------------------------------------------------------
823# Do the Setup/Build/Install/Whatever
824#----------------------------------------------------------------------
825
1b62f00d 826if __name__ == "__main__":
1e4a197e 827 if not PREP_ONLY:
d48c1c64 828
d14a1e28 829 setup(name = 'wxPython',
1b62f00d
RD
830 version = VERSION,
831 description = DESCRIPTION,
832 long_description = LONG_DESCRIPTION,
833 author = AUTHOR,
834 author_email = AUTHOR_EMAIL,
835 url = URL,
851d4ac7 836 download_url = DOWNLOAD_URL,
e2e02194 837 license = LICENSE,
851d4ac7
RD
838 platforms = PLATFORMS,
839 classifiers = filter(None, CLASSIFIERS.split("\n")),
840 keywords = KEYWORDS,
d14a1e28 841
1fded56b
RD
842 packages = ['wxPython',
843 'wxPython.lib',
844 'wxPython.lib.colourchooser',
845 'wxPython.lib.editor',
846 'wxPython.lib.mixins',
1fded56b 847 'wxPython.tools',
1fded56b
RD
848
849 'wx',
1128a89b 850 'wx.build',
1fded56b 851 'wx.lib',
30fc5e8f
RD
852 'wx.lib.analogclock',
853 'wx.lib.analogclock.lib_setup',
48297664 854 'wx.lib.art',
1fded56b
RD
855 'wx.lib.colourchooser',
856 'wx.lib.editor',
42463de2 857 'wx.lib.floatcanvas',
9176f38f 858 'wx.lib.masked',
1fded56b 859 'wx.lib.mixins',
f847103a 860 'wx.lib.ogl',
1fded56b
RD
861 'wx.py',
862 'wx.tools',
863 'wx.tools.XRCed',
1b62f00d
RD
864 ],
865
d48c1c64
RD
866 extra_path = EXTRA_PATH,
867
1b62f00d
RD
868 ext_package = PKGDIR,
869 ext_modules = wxpExtensions,
8916d007 870
1128a89b
RD
871 options = { 'build' : { 'build_base' : BUILD_BASE },
872 },
a541c325 873
1128a89b 874 scripts = SCRIPTS,
1e4a197e 875 data_files = DATA_FILES,
1128a89b 876 headers = HEADERS,
8916d007 877
d48c1c64
RD
878 # Override some of the default distutils command classes with my own
879 cmdclass = { 'install' : wx_install,
880 'install_data': wx_smart_install_data,
1128a89b
RD
881 'install_headers': wx_install_headers,
882 'clean': wx_extra_clean,
883 },
1b62f00d 884 )
c368d904 885
0f475e8a
RD
886 setup(name = 'wxaddons',
887 version = VERSION,
888 description = DESCRIPTION,
889 long_description = LONG_DESCRIPTION,
890 author = AUTHOR,
891 author_email = AUTHOR_EMAIL,
892 url = URL,
893 download_url = DOWNLOAD_URL,
894 license = LICENSE,
895 platforms = PLATFORMS,
896 classifiers = filter(None, CLASSIFIERS.split("\n")),
897 keywords = KEYWORDS,
898
899 packages = ['wxaddons']
900 )
c368d904 901
d48c1c64
RD
902 if INSTALL_MULTIVERSION:
903 setup(name = 'wxPython-common',
904 version = VERSION,
905 description = DESCRIPTION,
906 long_description = LONG_DESCRIPTION,
907 author = AUTHOR,
908 author_email = AUTHOR_EMAIL,
909 url = URL,
910 download_url = DOWNLOAD_URL,
911 license = LICENSE,
912 platforms = PLATFORMS,
913 classifiers = filter(None, CLASSIFIERS.split("\n")),
914 keywords = KEYWORDS,
915
916 package_dir = { '': 'wxversion' },
917 py_modules = ['wxversion'],
918
919 data_files = [('', ['src/wx.pth'])],
920
921 options = { 'build' : { 'build_base' : BUILD_BASE },
922 },
923
924 cmdclass = { 'install_data': wx_smart_install_data,
925 },
926 )
927
c368d904
RD
928#----------------------------------------------------------------------
929#----------------------------------------------------------------------