]> git.saurik.com Git - wxWidgets.git/blame - wxPython/setup.py
fix building/running of tex2rtf
[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',
54f9ee45
RD
292 ],
293 True)
294ext = Extension('_controls_', swig_sources,
d14a1e28
RD
295 include_dirs = includes,
296 define_macros = defines,
297 library_dirs = libdirs,
298 libraries = libs,
299 extra_compile_args = cflags,
300 extra_link_args = lflags,
41e8a69c 301 **depends
d14a1e28
RD
302 )
303wxpExtensions.append(ext)
304
305
306
307
308# Extension for the misc module
309swig_sources = run_swig(['misc.i'], 'src', GENDIR, PKGDIR,
310 USE_SWIG, swig_force, swig_args, swig_deps +
73470a17 311 [ 'src/_settings.i',
99abd512
RD
312 'src/_functions.i',
313 'src/_misc.i',
314 'src/_tipdlg.i',
315 'src/_timer.i',
316 'src/_log.i',
317 'src/_process.i',
318 'src/_joystick.i',
319 'src/_sound.i',
320 'src/_mimetype.i',
321 'src/_artprov.i',
322 'src/_config.i',
323 'src/_datetime.i',
324 'src/_dataobj.i',
325 'src/_dnd.i',
326 'src/_display.i',
d14a1e28 327 'src/_clipbrd.i',
53112743 328 'src/_stdpaths.i',
3b91982e 329 'src/_power.i',
f541d829 330 'src/_about.i',
54f9ee45
RD
331 ],
332 True)
333ext = Extension('_misc_', swig_sources,
d14a1e28
RD
334 include_dirs = includes,
335 define_macros = defines,
336 library_dirs = libdirs,
337 libraries = libs,
338 extra_compile_args = cflags,
339 extra_link_args = lflags,
41e8a69c 340 **depends
d14a1e28
RD
341 )
342wxpExtensions.append(ext)
343
344
345
346##
347## Core modules that are not in the "core" namespace start here
348##
349
1e4a197e
RD
350swig_sources = run_swig(['calendar.i'], 'src', GENDIR, PKGDIR,
351 USE_SWIG, swig_force, swig_args, swig_deps)
d14a1e28
RD
352ext = Extension('_calendar', swig_sources,
353 include_dirs = includes,
354 define_macros = defines,
355 library_dirs = libdirs,
356 libraries = libs,
357 extra_compile_args = cflags,
358 extra_link_args = lflags,
41e8a69c 359 **depends
d14a1e28
RD
360 )
361wxpExtensions.append(ext)
362
363
84bc0d49
RD
364swig_sources = run_swig(['combo.i'], 'src', GENDIR, PKGDIR,
365 USE_SWIG, swig_force, swig_args, swig_deps)
366ext = Extension('_combo', swig_sources,
367 include_dirs = includes,
368 define_macros = defines,
369 library_dirs = libdirs,
370 libraries = libs,
371 extra_compile_args = cflags,
372 extra_link_args = lflags,
373 **depends
374 )
375wxpExtensions.append(ext)
376
377
d14a1e28
RD
378swig_sources = run_swig(['grid.i'], 'src', GENDIR, PKGDIR,
379 USE_SWIG, swig_force, swig_args, swig_deps)
380ext = Extension('_grid', swig_sources,
1e4a197e
RD
381 include_dirs = includes,
382 define_macros = defines,
383 library_dirs = libdirs,
384 libraries = libs,
385 extra_compile_args = cflags,
386 extra_link_args = lflags,
41e8a69c 387 **depends
1e4a197e
RD
388 )
389wxpExtensions.append(ext)
390
391
d14a1e28
RD
392
393swig_sources = run_swig(['html.i'], 'src', GENDIR, PKGDIR,
1e4a197e 394 USE_SWIG, swig_force, swig_args, swig_deps)
d14a1e28 395ext = Extension('_html', swig_sources,
1e4a197e
RD
396 include_dirs = includes,
397 define_macros = defines,
398 library_dirs = libdirs,
399 libraries = libs,
400 extra_compile_args = cflags,
401 extra_link_args = lflags,
41e8a69c 402 **depends
1e4a197e
RD
403 )
404wxpExtensions.append(ext)
405
f6f1e19f 406
eadf221f 407mediaLibs = libs[:]
72fdc458 408if not MONOLITHIC and findLib('media', libdirs):
401569f1 409 mediaLibs += makeLibName('media')
870501f0
RD
410swig_sources = run_swig(['media.i'], 'src', GENDIR, PKGDIR,
411 USE_SWIG, swig_force, swig_args, swig_deps)
412ext = Extension('_media', swig_sources,
413 include_dirs = includes,
414 define_macros = defines,
415 library_dirs = libdirs,
eadf221f 416 libraries = mediaLibs,
870501f0
RD
417 extra_compile_args = cflags,
418 extra_link_args = lflags,
419 **depends
420 )
421wxpExtensions.append(ext)
422
423
7875e5ff
KO
424swig_sources = run_swig(['webkit.i'], 'src', GENDIR, PKGDIR,
425 USE_SWIG, swig_force, swig_args, swig_deps)
426ext = Extension('_webkit', swig_sources,
427 include_dirs = includes,
428 define_macros = defines,
429 library_dirs = libdirs,
430 libraries = libs,
431 extra_compile_args = cflags,
432 extra_link_args = lflags,
433 **depends
434 )
435wxpExtensions.append(ext)
d14a1e28 436
f6f1e19f
RD
437
438
1e4a197e
RD
439swig_sources = run_swig(['wizard.i'], 'src', GENDIR, PKGDIR,
440 USE_SWIG, swig_force, swig_args, swig_deps)
d14a1e28 441ext = Extension('_wizard', swig_sources,
1e4a197e
RD
442 include_dirs = includes,
443 define_macros = defines,
444 library_dirs = libdirs,
445 libraries = libs,
446 extra_compile_args = cflags,
447 extra_link_args = lflags,
41e8a69c 448 **depends
1e4a197e
RD
449 )
450wxpExtensions.append(ext)
af83019e
RD
451
452
38b97c15
RD
453
454swig_sources = run_swig(['xrc.i'], 'src', GENDIR, PKGDIR,
455 USE_SWIG, swig_force, swig_args, swig_deps +
73470a17 456 [ 'src/_xrc_ex.py',
38b97c15
RD
457 'src/_xmlres.i',
458 'src/_xmlsub.i',
459 'src/_xml.i',
460 'src/_xmlhandler.i',
461 ])
72fdc458
RD
462
463if not MONOLITHIC and findLib('xrc', libdirs):
0f475e8a
RD
464 xrcLib = makeLibName('xrc')
465else:
466 xrcLib = []
38b97c15
RD
467ext = Extension('_xrc',
468 swig_sources,
469
470 include_dirs = includes + CONTRIBS_INC,
471 define_macros = defines,
472
473 library_dirs = libdirs,
0f475e8a 474 libraries = libs + xrcLib,
38b97c15
RD
475
476 extra_compile_args = cflags,
477 extra_link_args = lflags,
478 )
479wxpExtensions.append(ext)
480
481
30fc5e8f
RD
482
483swig_sources = run_swig(['richtext.i'], 'src', GENDIR, PKGDIR,
484 USE_SWIG, swig_force, swig_args, swig_deps)
72fdc458 485if not MONOLITHIC and findLib('richtext', libdirs):
0f475e8a
RD
486 richLib = makeLibName('richtext')
487else:
488 richLib = []
30fc5e8f
RD
489ext = Extension('_richtext', swig_sources,
490 include_dirs = includes,
491 define_macros = defines,
492 library_dirs = libdirs,
0f475e8a 493 libraries = libs + richLib,
30fc5e8f 494 extra_compile_args = cflags,
febb39df
RD
495 extra_link_args = lflags,
496 **depends
497 )
498wxpExtensions.append(ext)
499
500
501
502swig_sources = run_swig(['aui.i'], 'src', GENDIR, PKGDIR,
503 USE_SWIG, swig_force,
504 swig_args + ['-I'+opj(WXDIR, 'include/wx/aui')],
505 swig_deps + ['src/_aui_docstrings.i',
506 opj(WXDIR, 'include/wx/aui/framemanager.h'),
507 opj(WXDIR, 'include/wx/aui/floatpane.h'),
508 opj(WXDIR, 'include/wx/aui/dockart.h'),
1c976bff 509 opj(WXDIR, 'include/wx/aui/auibook.h'),
febb39df 510 ])
72fdc458 511if not MONOLITHIC and findLib('aui', libdirs):
febb39df
RD
512 auiLib = makeLibName('aui')
513else:
514 auiLib = []
515ext = Extension('_aui', swig_sources,
516 include_dirs = includes,
517 define_macros = defines,
518 library_dirs = libdirs,
519 libraries = libs + auiLib,
520 extra_compile_args = cflags,
30fc5e8f
RD
521 extra_link_args = lflags,
522 **depends
523 )
524wxpExtensions.append(ext)
525
526
e19b9131
RD
527swig_sources = run_swig(['animate.i'], 'src', GENDIR, PKGDIR,
528 USE_SWIG, swig_force, swig_args, swig_deps)
529ext = Extension('_animate',
530 swig_sources,
531
532 include_dirs = includes + CONTRIBS_INC,
533 define_macros = defines,
534
535 library_dirs = libdirs,
536 libraries = libs,
537
538 extra_compile_args = cflags,
539 extra_link_args = lflags,
540 )
541
542wxpExtensions.append(ext)
543
30fc5e8f
RD
544
545
546
c368d904
RD
547#----------------------------------------------------------------------
548# Define the GLCanvas extension module
549#----------------------------------------------------------------------
550
1e4a197e 551if BUILD_GLCANVAS:
cfe766c3 552 msg('Preparing GLCANVAS...')
c368d904 553 location = 'contrib/glcanvas'
c368d904 554
d14a1e28 555 swig_sources = run_swig(['glcanvas.i'], location, GENDIR, PKGDIR,
10ef30eb 556 USE_SWIG, swig_force, swig_args, swig_deps)
c368d904
RD
557
558 gl_libs = []
0f475e8a 559 gl_libdirs = libdirs[:]
c368d904 560 if os.name == 'posix':
cb9a93a2 561 gl_config = os.popen(WX_CONFIG + ' --libs gl', 'r').read()[:-1]
471e64d6 562 gl_lflags = gl_config.split()
0f475e8a
RD
563 gl_lflags = adjustLFLAGS(gl_lflags, gl_libdirs, gl_libs)
564
471e64d6 565
19cf4f80 566 else:
3e46a8e6 567 gl_libs = libs + ['opengl32', 'glu32'] + makeLibName('gl')
f32afe1c 568 gl_lflags = lflags
c368d904 569
d14a1e28 570 ext = Extension('_glcanvas',
3e46a8e6 571 swig_sources,
1e7ecb7b 572
4c417214 573 include_dirs = includes + CONTRIBS_INC,
1e7ecb7b
RD
574 define_macros = defines,
575
0f475e8a 576 library_dirs = gl_libdirs,
f32afe1c 577 libraries = gl_libs,
1e7ecb7b
RD
578
579 extra_compile_args = cflags,
f32afe1c 580 extra_link_args = gl_lflags,
1e7ecb7b
RD
581 )
582
583 wxpExtensions.append(ext)
c368d904
RD
584
585
586#----------------------------------------------------------------------
587# Define the OGL extension module
588#----------------------------------------------------------------------
589
1e4a197e 590if BUILD_OGL:
cfe766c3 591 msg('Preparing OGL...')
c368d904 592 location = 'contrib/ogl'
c368d904 593
a32360e0 594 swig_sources = run_swig(['ogl.i'], location, GENDIR, PKGDIR,
d14a1e28
RD
595 USE_SWIG, swig_force, swig_args, swig_deps +
596 [ '%s/_oglbasic.i' % location,
597 '%s/_oglshapes.i' % location,
598 '%s/_oglshapes2.i' % location,
599 '%s/_oglcanvas.i' % location,
600 '%s/_ogldefs.i' % location,
601 ])
c368d904 602
d14a1e28 603 ext = Extension('_ogl',
3ef86e32 604 swig_sources,
1e7ecb7b 605
4c417214 606 include_dirs = includes + [ location ] + CONTRIBS_INC,
dd116e73 607 define_macros = defines + [('wxUSE_DEPRECATED', '0')],
1e7ecb7b
RD
608
609 library_dirs = libdirs,
3ef86e32 610 libraries = libs + makeLibName('ogl'),
1e7ecb7b
RD
611
612 extra_compile_args = cflags,
613 extra_link_args = lflags,
614 )
615
616 wxpExtensions.append(ext)
617
618
c368d904
RD
619
620#----------------------------------------------------------------------
621# Define the STC extension module
622#----------------------------------------------------------------------
623
1e4a197e 624if BUILD_STC:
cfe766c3 625 msg('Preparing STC...')
c368d904 626 location = 'contrib/stc'
020fb2ee
RD
627 #if os.name == 'nt':
628 STC_H = opj(WXDIR, 'contrib', 'include/wx/stc')
629 #else:
630 # STC_H = opj(WXPREFIX, 'include/wx-%d.%d/wx/stc' % (VER_MAJOR, VER_MINOR))
55c020cf 631
de7b7fe6 632## NOTE: need to add something like this to the stc.bkl...
55c020cf 633
3ef86e32
RD
634## # Check if gen_iface needs to be run for the wxSTC sources
635## if (newer(opj(CTRB_SRC, 'stc/stc.h.in'), opj(CTRB_INC, 'stc/stc.h' )) or
636## newer(opj(CTRB_SRC, 'stc/stc.cpp.in'), opj(CTRB_SRC, 'stc/stc.cpp')) or
637## newer(opj(CTRB_SRC, 'stc/gen_iface.py'), opj(CTRB_SRC, 'stc/stc.cpp'))):
55c020cf 638
3ef86e32
RD
639## msg('Running gen_iface.py, regenerating stc.h and stc.cpp...')
640## cwd = os.getcwd()
641## os.chdir(opj(CTRB_SRC, 'stc'))
642## sys.path.insert(0, os.curdir)
643## import gen_iface
644## gen_iface.main([])
645## os.chdir(cwd)
c368d904
RD
646
647
befa6977 648 swig_sources = run_swig(['stc.i'], location, GENDIR, PKGDIR,
c368d904
RD
649 USE_SWIG, swig_force,
650 swig_args + ['-I'+STC_H, '-I'+location],
1ce1bd84
RD
651 [opj(STC_H, 'stc.h'),
652 opj(location, "_stc_utf8_methods.py"),
f2ccce28
RD
653 opj(location, "_stc_docstrings.i"),
654 opj(location, "_stc_gendocs.i"),
1ce1bd84 655 ] + swig_deps)
c368d904 656
d14a1e28 657 ext = Extension('_stc',
3ef86e32
RD
658 swig_sources,
659
4c417214 660 include_dirs = includes + CONTRIBS_INC,
3ef86e32 661 define_macros = defines,
1e7ecb7b
RD
662
663 library_dirs = libdirs,
3ef86e32 664 libraries = libs + makeLibName('stc'),
c368d904 665
1e7ecb7b
RD
666 extra_compile_args = cflags,
667 extra_link_args = lflags,
668 )
669
670 wxpExtensions.append(ext)
c368d904
RD
671
672
b7c75283
RD
673#----------------------------------------------------------------------
674# Define the ACTIVEX extension module (experimental)
675#----------------------------------------------------------------------
676
677if BUILD_ACTIVEX:
678 msg('Preparing ACTIVEX...')
679 location = 'contrib/activex'
680 axloc = opj(location, "wxie")
681
682 swig_files = ['activex.i', ]
683
684 swig_sources = run_swig(swig_files, location, '', PKGDIR,
685 USE_SWIG, swig_force, swig_args, swig_deps +
686 [ '%s/_activex_ex.py' % location])
687
688
689 ext = Extension('_activex', ['%s/IEHtmlWin.cpp' % axloc,
690 '%s/wxactivex.cpp' % axloc,
691 ] + swig_sources,
692
693 include_dirs = includes + [ axloc ],
694 define_macros = defines,
695
696 library_dirs = libdirs,
697 libraries = libs,
698
699 extra_compile_args = cflags,
926bb76c
RD
700 extra_link_args = lflags,
701 )
702
703 wxpExtensions.append(ext)
704
705
ebf4302c
RD
706#----------------------------------------------------------------------
707# Define the GIZMOS extension module
708#----------------------------------------------------------------------
709
1e4a197e 710if BUILD_GIZMOS:
ebf4302c
RD
711 msg('Preparing GIZMOS...')
712 location = 'contrib/gizmos'
ebf4302c 713
a32360e0 714 swig_sources = run_swig(['gizmos.i'], location, GENDIR, PKGDIR,
33328cd8
RD
715 USE_SWIG, swig_force, swig_args, swig_deps +
716 [ '%s/_treelist.i' % location])
ebf4302c 717
d14a1e28 718 ext = Extension('_gizmos',
28eab81f 719 [ '%s/treelistctrl.cpp' % opj(location, 'wxCode/src') ] + swig_sources,
ebf4302c 720
28eab81f 721 include_dirs = includes + [ location, opj(location, 'wxCode/include') ] + CONTRIBS_INC,
ebf4302c
RD
722 define_macros = defines,
723
724 library_dirs = libdirs,
3ef86e32 725 libraries = libs + makeLibName('gizmos'),
ebf4302c
RD
726
727 extra_compile_args = cflags,
728 extra_link_args = lflags,
729 )
730
731 wxpExtensions.append(ext)
732
733
4a61305d
RD
734#----------------------------------------------------------------------
735# Define the DLLWIDGET extension module
736#----------------------------------------------------------------------
737
1e4a197e 738if BUILD_DLLWIDGET:
4a61305d
RD
739 msg('Preparing DLLWIDGET...')
740 location = 'contrib/dllwidget'
741 swig_files = ['dllwidget_.i']
742
743 swig_sources = run_swig(swig_files, location, '', PKGDIR,
10ef30eb 744 USE_SWIG, swig_force, swig_args, swig_deps)
4a61305d
RD
745
746 # copy a contrib project specific py module to the main package dir
747 copy_file(opj(location, 'dllwidget.py'), PKGDIR, update=1, verbose=0)
99abd512 748 CLEANUP.append(opj(PKGDIR, 'dllwidget.py'))
4a61305d
RD
749
750 ext = Extension('dllwidget_c', [
751 '%s/dllwidget.cpp' % location,
752 ] + swig_sources,
753
4c417214 754 include_dirs = includes + CONTRIBS_INC,
4a61305d
RD
755 define_macros = defines,
756
757 library_dirs = libdirs,
758 libraries = libs,
759
760 extra_compile_args = cflags,
761 extra_link_args = lflags,
762 )
763
764 wxpExtensions.append(ext)
765
766
1e4a197e 767
38b97c15 768
1e4a197e 769#----------------------------------------------------------------------
1128a89b 770# Tools, scripts data files, etc.
1e4a197e 771#----------------------------------------------------------------------
8916d007 772
2eb31f8b
RD
773if NO_SCRIPTS:
774 SCRIPTS = None
775else:
1e4a197e
RD
776 SCRIPTS = [opj('scripts/helpviewer'),
777 opj('scripts/img2png'),
2eb31f8b 778 opj('scripts/img2py'),
d48c1c64
RD
779 opj('scripts/img2xpm'),
780 opj('scripts/pyalacarte'),
781 opj('scripts/pyalamode'),
2eb31f8b 782 opj('scripts/pycrust'),
d48c1c64 783 opj('scripts/pyshell'),
1fded56b
RD
784 opj('scripts/pywrap'),
785 opj('scripts/pywrap'),
b6536d60 786 opj('scripts/pywxrc'),
d48c1c64 787 opj('scripts/xrced'),
2eb31f8b 788 ]
d48c1c64 789
4a61305d 790
926bb76c 791
c2079460
RD
792DATA_FILES += find_data_files('wx/tools/XRCed', '*.txt', '*.xrc')
793DATA_FILES += find_data_files('wx/py', '*.txt', '*.ico', '*.css', '*.html')
1fded56b 794DATA_FILES += find_data_files('wx', '*.txt', '*.css', '*.html')
1e4a197e
RD
795
796
1128a89b
RD
797if NO_HEADERS:
798 HEADERS = None
799else:
800 h_files = glob.glob(opj("include/wx/wxPython/*.h"))
801 i_files = glob.glob(opj("src/*.i")) + \
802 glob.glob(opj("src/_*.py")) + \
803 glob.glob(opj("src/*.swg"))
61ecd225
RD
804 if BUILD_GLCANVAS:
805 i_files += glob.glob(opj("contrib/glcanvas/*.i"))
1128a89b 806
e9019d1c
RD
807 HEADERS = zip(h_files, ["/wxPython"]*len(h_files)) + \
808 zip(i_files, ["/wxPython/i_files"]*len(i_files))
809
1128a89b 810
d48c1c64
RD
811
812if INSTALL_MULTIVERSION:
095315e2 813 EXTRA_PATH = getExtraPath(addOpts=EP_ADD_OPTS, shortVer=not EP_FULL_VER)
d48c1c64
RD
814 open("src/wx.pth", "w").write(EXTRA_PATH)
815 CLEANUP.append("src/wx.pth")
816else:
817 EXTRA_PATH = None
818
819
820
c368d904
RD
821#----------------------------------------------------------------------
822# Do the Setup/Build/Install/Whatever
823#----------------------------------------------------------------------
824
1b62f00d 825if __name__ == "__main__":
1e4a197e 826 if not PREP_ONLY:
d48c1c64 827
d14a1e28 828 setup(name = 'wxPython',
1b62f00d
RD
829 version = VERSION,
830 description = DESCRIPTION,
831 long_description = LONG_DESCRIPTION,
832 author = AUTHOR,
833 author_email = AUTHOR_EMAIL,
834 url = URL,
851d4ac7 835 download_url = DOWNLOAD_URL,
e2e02194 836 license = LICENSE,
851d4ac7
RD
837 platforms = PLATFORMS,
838 classifiers = filter(None, CLASSIFIERS.split("\n")),
839 keywords = KEYWORDS,
d14a1e28 840
1fded56b
RD
841 packages = ['wxPython',
842 'wxPython.lib',
843 'wxPython.lib.colourchooser',
844 'wxPython.lib.editor',
845 'wxPython.lib.mixins',
1fded56b 846 'wxPython.tools',
1fded56b
RD
847
848 'wx',
1128a89b 849 'wx.build',
1fded56b 850 'wx.lib',
30fc5e8f
RD
851 'wx.lib.analogclock',
852 'wx.lib.analogclock.lib_setup',
48297664 853 'wx.lib.art',
1fded56b
RD
854 'wx.lib.colourchooser',
855 'wx.lib.editor',
42463de2 856 'wx.lib.floatcanvas',
9176f38f 857 'wx.lib.masked',
1fded56b 858 'wx.lib.mixins',
f847103a 859 'wx.lib.ogl',
1fded56b
RD
860 'wx.py',
861 'wx.tools',
862 'wx.tools.XRCed',
1b62f00d
RD
863 ],
864
d48c1c64
RD
865 extra_path = EXTRA_PATH,
866
1b62f00d
RD
867 ext_package = PKGDIR,
868 ext_modules = wxpExtensions,
8916d007 869
1128a89b
RD
870 options = { 'build' : { 'build_base' : BUILD_BASE },
871 },
a541c325 872
1128a89b 873 scripts = SCRIPTS,
1e4a197e 874 data_files = DATA_FILES,
1128a89b 875 headers = HEADERS,
8916d007 876
d48c1c64
RD
877 # Override some of the default distutils command classes with my own
878 cmdclass = { 'install' : wx_install,
879 'install_data': wx_smart_install_data,
1128a89b
RD
880 'install_headers': wx_install_headers,
881 'clean': wx_extra_clean,
882 },
1b62f00d 883 )
c368d904 884
0f475e8a
RD
885 setup(name = 'wxaddons',
886 version = VERSION,
887 description = DESCRIPTION,
888 long_description = LONG_DESCRIPTION,
889 author = AUTHOR,
890 author_email = AUTHOR_EMAIL,
891 url = URL,
892 download_url = DOWNLOAD_URL,
893 license = LICENSE,
894 platforms = PLATFORMS,
895 classifiers = filter(None, CLASSIFIERS.split("\n")),
896 keywords = KEYWORDS,
897
898 packages = ['wxaddons']
899 )
c368d904 900
d48c1c64
RD
901 if INSTALL_MULTIVERSION:
902 setup(name = 'wxPython-common',
903 version = VERSION,
904 description = DESCRIPTION,
905 long_description = LONG_DESCRIPTION,
906 author = AUTHOR,
907 author_email = AUTHOR_EMAIL,
908 url = URL,
909 download_url = DOWNLOAD_URL,
910 license = LICENSE,
911 platforms = PLATFORMS,
912 classifiers = filter(None, CLASSIFIERS.split("\n")),
913 keywords = KEYWORDS,
914
915 package_dir = { '': 'wxversion' },
916 py_modules = ['wxversion'],
917
918 data_files = [('', ['src/wx.pth'])],
919
920 options = { 'build' : { 'build_base' : BUILD_BASE },
921 },
922
923 cmdclass = { 'install_data': wx_smart_install_data,
924 },
925 )
926
c368d904
RD
927#----------------------------------------------------------------------
928#----------------------------------------------------------------------