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