]> git.saurik.com Git - wxWidgets.git/blame - wxPython/setup.py
Only Freeze/Thaw on wxMSW. The other ports don't need it.
[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',
c95499b9 189 'src/_renderer.i',
54f9ee45
RD
190 ],
191 True)
192ext = Extension('_gdi_', ['src/drawlist.cpp'] + swig_sources,
1e4a197e
RD
193 include_dirs = includes,
194 define_macros = defines,
195 library_dirs = libdirs,
196 libraries = libs,
197 extra_compile_args = cflags,
198 extra_link_args = lflags,
41e8a69c 199 **depends
1e4a197e
RD
200 )
201wxpExtensions.append(ext)
202
203
d14a1e28
RD
204
205
206
207
208# Extension for the windows module
209swig_sources = run_swig(['windows.i'], 'src', GENDIR, PKGDIR,
210 USE_SWIG, swig_force, swig_args, swig_deps +
54f9ee45
RD
211 ['src/__windows_rename.i',
212 'src/__windows_reverse.txt',
d14a1e28 213 'src/_panel.i',
99abd512
RD
214 'src/_toplvl.i',
215 'src/_statusbar.i',
216 'src/_splitter.i',
217 'src/_sashwin.i',
218 'src/_popupwin.i',
219 'src/_tipwin.i',
220 'src/_vscroll.i',
221 'src/_taskbar.i',
222 'src/_cmndlgs.i',
223 'src/_mdi.i',
224 'src/_pywindows.i',
225 'src/_printfw.i',
54f9ee45
RD
226 ],
227 True)
228ext = Extension('_windows_', swig_sources,
1e4a197e
RD
229 include_dirs = includes,
230 define_macros = defines,
231 library_dirs = libdirs,
232 libraries = libs,
233 extra_compile_args = cflags,
234 extra_link_args = lflags,
41e8a69c 235 **depends
1e4a197e
RD
236 )
237wxpExtensions.append(ext)
238
239
d14a1e28
RD
240
241
242# Extension for the controls module
243swig_sources = run_swig(['controls.i'], 'src', GENDIR, PKGDIR,
244 USE_SWIG, swig_force, swig_args, swig_deps +
54f9ee45
RD
245 [ 'src/__controls_rename.i',
246 'src/__controls_reverse.txt',
cf636c45 247 'src/_toolbar.i',
99abd512
RD
248 'src/_button.i',
249 'src/_checkbox.i',
250 'src/_choice.i',
251 'src/_combobox.i',
252 'src/_gauge.i',
253 'src/_statctrls.i',
254 'src/_listbox.i',
255 'src/_textctrl.i',
256 'src/_scrolbar.i',
257 'src/_spin.i',
258 'src/_radio.i',
259 'src/_slider.i',
260 'src/_tglbtn.i',
261 'src/_notebook.i',
262 'src/_listctrl.i',
263 'src/_treectrl.i',
264 'src/_dirctrl.i',
265 'src/_pycontrol.i',
266 'src/_cshelp.i',
267 'src/_dragimg.i',
b3b61cda 268 'src/_datectrl.i',
54f9ee45
RD
269 ],
270 True)
271ext = Extension('_controls_', swig_sources,
d14a1e28
RD
272 include_dirs = includes,
273 define_macros = defines,
274 library_dirs = libdirs,
275 libraries = libs,
276 extra_compile_args = cflags,
277 extra_link_args = lflags,
41e8a69c 278 **depends
d14a1e28
RD
279 )
280wxpExtensions.append(ext)
281
282
283
284
285# Extension for the misc module
286swig_sources = run_swig(['misc.i'], 'src', GENDIR, PKGDIR,
287 USE_SWIG, swig_force, swig_args, swig_deps +
54f9ee45
RD
288 [ 'src/__misc_rename.i',
289 'src/__misc_reverse.txt',
290 'src/_settings.i',
99abd512
RD
291 'src/_functions.i',
292 'src/_misc.i',
293 'src/_tipdlg.i',
294 'src/_timer.i',
295 'src/_log.i',
296 'src/_process.i',
297 'src/_joystick.i',
298 'src/_sound.i',
299 'src/_mimetype.i',
300 'src/_artprov.i',
301 'src/_config.i',
302 'src/_datetime.i',
303 'src/_dataobj.i',
304 'src/_dnd.i',
305 'src/_display.i',
d14a1e28 306 'src/_clipbrd.i',
53112743 307 'src/_stdpaths.i',
54f9ee45
RD
308 ],
309 True)
310ext = Extension('_misc_', swig_sources,
d14a1e28
RD
311 include_dirs = includes,
312 define_macros = defines,
313 library_dirs = libdirs,
314 libraries = libs,
315 extra_compile_args = cflags,
316 extra_link_args = lflags,
41e8a69c 317 **depends
d14a1e28
RD
318 )
319wxpExtensions.append(ext)
320
321
322
323##
324## Core modules that are not in the "core" namespace start here
325##
326
1e4a197e
RD
327swig_sources = run_swig(['calendar.i'], 'src', GENDIR, PKGDIR,
328 USE_SWIG, swig_force, swig_args, swig_deps)
d14a1e28
RD
329ext = Extension('_calendar', swig_sources,
330 include_dirs = includes,
331 define_macros = defines,
332 library_dirs = libdirs,
333 libraries = libs,
334 extra_compile_args = cflags,
335 extra_link_args = lflags,
41e8a69c 336 **depends
d14a1e28
RD
337 )
338wxpExtensions.append(ext)
339
340
341swig_sources = run_swig(['grid.i'], 'src', GENDIR, PKGDIR,
342 USE_SWIG, swig_force, swig_args, swig_deps)
343ext = Extension('_grid', swig_sources,
1e4a197e
RD
344 include_dirs = includes,
345 define_macros = defines,
346 library_dirs = libdirs,
347 libraries = libs,
348 extra_compile_args = cflags,
349 extra_link_args = lflags,
41e8a69c 350 **depends
1e4a197e
RD
351 )
352wxpExtensions.append(ext)
353
354
d14a1e28
RD
355
356swig_sources = run_swig(['html.i'], 'src', GENDIR, PKGDIR,
1e4a197e 357 USE_SWIG, swig_force, swig_args, swig_deps)
d14a1e28 358ext = Extension('_html', swig_sources,
1e4a197e
RD
359 include_dirs = includes,
360 define_macros = defines,
361 library_dirs = libdirs,
362 libraries = libs,
363 extra_compile_args = cflags,
364 extra_link_args = lflags,
41e8a69c 365 **depends
1e4a197e
RD
366 )
367wxpExtensions.append(ext)
368
f6f1e19f 369
eadf221f
RD
370mediaLibs = libs[:]
371if not MONOLITHIC and os.name == 'nt':
372 mediaLibs.append(makeLibName('media')[0])
870501f0
RD
373swig_sources = run_swig(['media.i'], 'src', GENDIR, PKGDIR,
374 USE_SWIG, swig_force, swig_args, swig_deps)
375ext = Extension('_media', swig_sources,
376 include_dirs = includes,
377 define_macros = defines,
378 library_dirs = libdirs,
eadf221f 379 libraries = mediaLibs,
870501f0
RD
380 extra_compile_args = cflags,
381 extra_link_args = lflags,
382 **depends
383 )
384wxpExtensions.append(ext)
385
386
7875e5ff
KO
387swig_sources = run_swig(['webkit.i'], 'src', GENDIR, PKGDIR,
388 USE_SWIG, swig_force, swig_args, swig_deps)
389ext = Extension('_webkit', swig_sources,
390 include_dirs = includes,
391 define_macros = defines,
392 library_dirs = libdirs,
393 libraries = libs,
394 extra_compile_args = cflags,
395 extra_link_args = lflags,
396 **depends
397 )
398wxpExtensions.append(ext)
d14a1e28 399
f6f1e19f
RD
400
401
1e4a197e
RD
402swig_sources = run_swig(['wizard.i'], 'src', GENDIR, PKGDIR,
403 USE_SWIG, swig_force, swig_args, swig_deps)
d14a1e28 404ext = Extension('_wizard', swig_sources,
1e4a197e
RD
405 include_dirs = includes,
406 define_macros = defines,
407 library_dirs = libdirs,
408 libraries = libs,
409 extra_compile_args = cflags,
410 extra_link_args = lflags,
41e8a69c 411 **depends
1e4a197e
RD
412 )
413wxpExtensions.append(ext)
af83019e
RD
414
415
38b97c15
RD
416
417swig_sources = run_swig(['xrc.i'], 'src', GENDIR, PKGDIR,
418 USE_SWIG, swig_force, swig_args, swig_deps +
419 [ 'src/_xrc_rename.i',
420 'src/_xrc_ex.py',
421 'src/_xmlres.i',
422 'src/_xmlsub.i',
423 'src/_xml.i',
424 'src/_xmlhandler.i',
425 ])
426ext = Extension('_xrc',
427 swig_sources,
428
429 include_dirs = includes + CONTRIBS_INC,
430 define_macros = defines,
431
432 library_dirs = libdirs,
433 libraries = libs,
434
435 extra_compile_args = cflags,
436 extra_link_args = lflags,
437 )
438wxpExtensions.append(ext)
439
440
c368d904
RD
441#----------------------------------------------------------------------
442# Define the GLCanvas extension module
443#----------------------------------------------------------------------
444
1e4a197e 445if BUILD_GLCANVAS:
cfe766c3 446 msg('Preparing GLCANVAS...')
c368d904 447 location = 'contrib/glcanvas'
c368d904 448
d14a1e28 449 swig_sources = run_swig(['glcanvas.i'], location, GENDIR, PKGDIR,
10ef30eb 450 USE_SWIG, swig_force, swig_args, swig_deps)
c368d904
RD
451
452 gl_libs = []
453 if os.name == 'posix':
cb9a93a2 454 gl_config = os.popen(WX_CONFIG + ' --libs gl', 'r').read()[:-1]
1e4a197e 455 gl_lflags = gl_config.split() + lflags
f32afe1c 456 gl_libs = libs
19cf4f80 457 else:
3e46a8e6 458 gl_libs = libs + ['opengl32', 'glu32'] + makeLibName('gl')
f32afe1c 459 gl_lflags = lflags
c368d904 460
d14a1e28 461 ext = Extension('_glcanvas',
3e46a8e6 462 swig_sources,
1e7ecb7b 463
4c417214 464 include_dirs = includes + CONTRIBS_INC,
1e7ecb7b
RD
465 define_macros = defines,
466
467 library_dirs = libdirs,
f32afe1c 468 libraries = gl_libs,
1e7ecb7b
RD
469
470 extra_compile_args = cflags,
f32afe1c 471 extra_link_args = gl_lflags,
1e7ecb7b
RD
472 )
473
474 wxpExtensions.append(ext)
c368d904
RD
475
476
477#----------------------------------------------------------------------
478# Define the OGL extension module
479#----------------------------------------------------------------------
480
1e4a197e 481if BUILD_OGL:
cfe766c3 482 msg('Preparing OGL...')
c368d904 483 location = 'contrib/ogl'
c368d904 484
a32360e0 485 swig_sources = run_swig(['ogl.i'], location, GENDIR, PKGDIR,
d14a1e28
RD
486 USE_SWIG, swig_force, swig_args, swig_deps +
487 [ '%s/_oglbasic.i' % location,
488 '%s/_oglshapes.i' % location,
489 '%s/_oglshapes2.i' % location,
490 '%s/_oglcanvas.i' % location,
491 '%s/_ogldefs.i' % location,
492 ])
c368d904 493
d14a1e28 494 ext = Extension('_ogl',
3ef86e32 495 swig_sources,
1e7ecb7b 496
4c417214 497 include_dirs = includes + [ location ] + CONTRIBS_INC,
dd116e73 498 define_macros = defines + [('wxUSE_DEPRECATED', '0')],
1e7ecb7b
RD
499
500 library_dirs = libdirs,
3ef86e32 501 libraries = libs + makeLibName('ogl'),
1e7ecb7b
RD
502
503 extra_compile_args = cflags,
504 extra_link_args = lflags,
505 )
506
507 wxpExtensions.append(ext)
508
509
c368d904
RD
510
511#----------------------------------------------------------------------
512# Define the STC extension module
513#----------------------------------------------------------------------
514
1e4a197e 515if BUILD_STC:
cfe766c3 516 msg('Preparing STC...')
c368d904 517 location = 'contrib/stc'
020fb2ee
RD
518 #if os.name == 'nt':
519 STC_H = opj(WXDIR, 'contrib', 'include/wx/stc')
520 #else:
521 # STC_H = opj(WXPREFIX, 'include/wx-%d.%d/wx/stc' % (VER_MAJOR, VER_MINOR))
55c020cf 522
de7b7fe6 523## NOTE: need to add something like this to the stc.bkl...
55c020cf 524
3ef86e32
RD
525## # Check if gen_iface needs to be run for the wxSTC sources
526## if (newer(opj(CTRB_SRC, 'stc/stc.h.in'), opj(CTRB_INC, 'stc/stc.h' )) or
527## newer(opj(CTRB_SRC, 'stc/stc.cpp.in'), opj(CTRB_SRC, 'stc/stc.cpp')) or
528## newer(opj(CTRB_SRC, 'stc/gen_iface.py'), opj(CTRB_SRC, 'stc/stc.cpp'))):
55c020cf 529
3ef86e32
RD
530## msg('Running gen_iface.py, regenerating stc.h and stc.cpp...')
531## cwd = os.getcwd()
532## os.chdir(opj(CTRB_SRC, 'stc'))
533## sys.path.insert(0, os.curdir)
534## import gen_iface
535## gen_iface.main([])
536## os.chdir(cwd)
c368d904
RD
537
538
befa6977 539 swig_sources = run_swig(['stc.i'], location, GENDIR, PKGDIR,
c368d904
RD
540 USE_SWIG, swig_force,
541 swig_args + ['-I'+STC_H, '-I'+location],
1ce1bd84
RD
542 [opj(STC_H, 'stc.h'),
543 opj(location, "_stc_utf8_methods.py"),
f2ccce28
RD
544 opj(location, "_stc_docstrings.i"),
545 opj(location, "_stc_gendocs.i"),
1ce1bd84 546 ] + swig_deps)
c368d904 547
d14a1e28 548 ext = Extension('_stc',
3ef86e32
RD
549 swig_sources,
550
4c417214 551 include_dirs = includes + CONTRIBS_INC,
3ef86e32 552 define_macros = defines,
1e7ecb7b
RD
553
554 library_dirs = libdirs,
3ef86e32 555 libraries = libs + makeLibName('stc'),
c368d904 556
1e7ecb7b
RD
557 extra_compile_args = cflags,
558 extra_link_args = lflags,
559 )
560
561 wxpExtensions.append(ext)
c368d904
RD
562
563
564
926bb76c
RD
565#----------------------------------------------------------------------
566# Define the IEWIN extension module (experimental)
567#----------------------------------------------------------------------
568
1e4a197e 569if BUILD_IEWIN:
cfe766c3 570 msg('Preparing IEWIN...')
926bb76c
RD
571 location = 'contrib/iewin'
572
573 swig_files = ['iewin.i', ]
574
575 swig_sources = run_swig(swig_files, location, '', PKGDIR,
10ef30eb 576 USE_SWIG, swig_force, swig_args, swig_deps)
926bb76c
RD
577
578
de7b7fe6 579 ext = Extension('_iewin', ['%s/IEHtmlWin.cpp' % location,
c731eb47 580 '%s/wxactivex.cpp' % location,
926bb76c
RD
581 ] + swig_sources,
582
4c417214 583 include_dirs = includes + CONTRIBS_INC,
926bb76c
RD
584 define_macros = defines,
585
586 library_dirs = libdirs,
587 libraries = libs,
588
589 extra_compile_args = cflags,
b7c75283
RD
590 extra_link_args = lflags,
591 )
592
593 wxpExtensions.append(ext)
594
595
596#----------------------------------------------------------------------
597# Define the ACTIVEX extension module (experimental)
598#----------------------------------------------------------------------
599
600if BUILD_ACTIVEX:
601 msg('Preparing ACTIVEX...')
602 location = 'contrib/activex'
603 axloc = opj(location, "wxie")
604
605 swig_files = ['activex.i', ]
606
607 swig_sources = run_swig(swig_files, location, '', PKGDIR,
608 USE_SWIG, swig_force, swig_args, swig_deps +
609 [ '%s/_activex_ex.py' % location])
610
611
612 ext = Extension('_activex', ['%s/IEHtmlWin.cpp' % axloc,
613 '%s/wxactivex.cpp' % axloc,
614 ] + swig_sources,
615
616 include_dirs = includes + [ axloc ],
617 define_macros = defines,
618
619 library_dirs = libdirs,
620 libraries = libs,
621
622 extra_compile_args = cflags,
926bb76c
RD
623 extra_link_args = lflags,
624 )
625
626 wxpExtensions.append(ext)
627
628
ebf4302c
RD
629#----------------------------------------------------------------------
630# Define the GIZMOS extension module
631#----------------------------------------------------------------------
632
1e4a197e 633if BUILD_GIZMOS:
ebf4302c
RD
634 msg('Preparing GIZMOS...')
635 location = 'contrib/gizmos'
ebf4302c 636
a32360e0 637 swig_sources = run_swig(['gizmos.i'], location, GENDIR, PKGDIR,
10ef30eb 638 USE_SWIG, swig_force, swig_args, swig_deps)
ebf4302c 639
d14a1e28 640 ext = Extension('_gizmos',
28eab81f 641 [ '%s/treelistctrl.cpp' % opj(location, 'wxCode/src') ] + swig_sources,
ebf4302c 642
28eab81f 643 include_dirs = includes + [ location, opj(location, 'wxCode/include') ] + CONTRIBS_INC,
ebf4302c
RD
644 define_macros = defines,
645
646 library_dirs = libdirs,
3ef86e32 647 libraries = libs + makeLibName('gizmos'),
ebf4302c
RD
648
649 extra_compile_args = cflags,
650 extra_link_args = lflags,
651 )
652
653 wxpExtensions.append(ext)
654
655
2e5aa9c4
RD
656#----------------------------------------------------------------------
657# Define the ANIMATE extension module
658#----------------------------------------------------------------------
659
660if BUILD_ANIMATE:
661 msg('Preparing ANIMATE...')
662 location = 'contrib/animate'
663
664 swig_sources = run_swig(['animate.i'], location, GENDIR, PKGDIR,
665 USE_SWIG, swig_force, swig_args, swig_deps)
666
667 ext = Extension('_animate',
668 swig_sources,
669
670 include_dirs = includes + CONTRIBS_INC,
671 define_macros = defines,
672
673 library_dirs = libdirs,
674 libraries = libs + makeLibName('animate'),
675
676 extra_compile_args = cflags,
677 extra_link_args = lflags,
678 )
679
680 wxpExtensions.append(ext)
681
682
ebf4302c 683
4a61305d
RD
684#----------------------------------------------------------------------
685# Define the DLLWIDGET extension module
686#----------------------------------------------------------------------
687
1e4a197e 688if BUILD_DLLWIDGET:
4a61305d
RD
689 msg('Preparing DLLWIDGET...')
690 location = 'contrib/dllwidget'
691 swig_files = ['dllwidget_.i']
692
693 swig_sources = run_swig(swig_files, location, '', PKGDIR,
10ef30eb 694 USE_SWIG, swig_force, swig_args, swig_deps)
4a61305d
RD
695
696 # copy a contrib project specific py module to the main package dir
697 copy_file(opj(location, 'dllwidget.py'), PKGDIR, update=1, verbose=0)
99abd512 698 CLEANUP.append(opj(PKGDIR, 'dllwidget.py'))
4a61305d
RD
699
700 ext = Extension('dllwidget_c', [
701 '%s/dllwidget.cpp' % location,
702 ] + swig_sources,
703
4c417214 704 include_dirs = includes + CONTRIBS_INC,
4a61305d
RD
705 define_macros = defines,
706
707 library_dirs = libdirs,
708 libraries = libs,
709
710 extra_compile_args = cflags,
711 extra_link_args = lflags,
712 )
713
714 wxpExtensions.append(ext)
715
716
1e4a197e 717
38b97c15 718
1e4a197e 719#----------------------------------------------------------------------
1128a89b 720# Tools, scripts data files, etc.
1e4a197e 721#----------------------------------------------------------------------
8916d007 722
2eb31f8b
RD
723if NO_SCRIPTS:
724 SCRIPTS = None
725else:
1e4a197e
RD
726 SCRIPTS = [opj('scripts/helpviewer'),
727 opj('scripts/img2png'),
2eb31f8b 728 opj('scripts/img2py'),
d48c1c64
RD
729 opj('scripts/img2xpm'),
730 opj('scripts/pyalacarte'),
731 opj('scripts/pyalamode'),
2eb31f8b 732 opj('scripts/pycrust'),
d48c1c64 733 opj('scripts/pyshell'),
1fded56b
RD
734 opj('scripts/pywrap'),
735 opj('scripts/pywrap'),
b6536d60 736 opj('scripts/pywxrc'),
d48c1c64 737 opj('scripts/xrced'),
2eb31f8b 738 ]
d48c1c64 739
4a61305d 740
926bb76c 741
c2079460
RD
742DATA_FILES += find_data_files('wx/tools/XRCed', '*.txt', '*.xrc')
743DATA_FILES += find_data_files('wx/py', '*.txt', '*.ico', '*.css', '*.html')
1fded56b 744DATA_FILES += find_data_files('wx', '*.txt', '*.css', '*.html')
1e4a197e
RD
745
746
1128a89b
RD
747if NO_HEADERS:
748 HEADERS = None
749else:
750 h_files = glob.glob(opj("include/wx/wxPython/*.h"))
751 i_files = glob.glob(opj("src/*.i")) + \
752 glob.glob(opj("src/_*.py")) + \
753 glob.glob(opj("src/*.swg"))
754
e9019d1c
RD
755 HEADERS = zip(h_files, ["/wxPython"]*len(h_files)) + \
756 zip(i_files, ["/wxPython/i_files"]*len(i_files))
757
1128a89b 758
d48c1c64
RD
759
760if INSTALL_MULTIVERSION:
b6536d60 761 EXTRA_PATH = getExtraPath(addOpts=EP_ADD_OPTS)
d48c1c64
RD
762 open("src/wx.pth", "w").write(EXTRA_PATH)
763 CLEANUP.append("src/wx.pth")
764else:
765 EXTRA_PATH = None
766
767
768
c368d904
RD
769#----------------------------------------------------------------------
770# Do the Setup/Build/Install/Whatever
771#----------------------------------------------------------------------
772
1b62f00d 773if __name__ == "__main__":
1e4a197e 774 if not PREP_ONLY:
d48c1c64 775
d14a1e28 776 setup(name = 'wxPython',
1b62f00d
RD
777 version = VERSION,
778 description = DESCRIPTION,
779 long_description = LONG_DESCRIPTION,
780 author = AUTHOR,
781 author_email = AUTHOR_EMAIL,
782 url = URL,
851d4ac7 783 download_url = DOWNLOAD_URL,
e2e02194 784 license = LICENSE,
851d4ac7
RD
785 platforms = PLATFORMS,
786 classifiers = filter(None, CLASSIFIERS.split("\n")),
787 keywords = KEYWORDS,
d14a1e28 788
1fded56b
RD
789 packages = ['wxPython',
790 'wxPython.lib',
791 'wxPython.lib.colourchooser',
792 'wxPython.lib.editor',
793 'wxPython.lib.mixins',
1fded56b 794 'wxPython.tools',
1fded56b
RD
795
796 'wx',
1128a89b 797 'wx.build',
1fded56b
RD
798 'wx.lib',
799 'wx.lib.colourchooser',
800 'wx.lib.editor',
42463de2 801 'wx.lib.floatcanvas',
9176f38f 802 'wx.lib.masked',
1fded56b 803 'wx.lib.mixins',
f847103a 804 'wx.lib.ogl',
1fded56b
RD
805 'wx.py',
806 'wx.tools',
807 'wx.tools.XRCed',
1b62f00d
RD
808 ],
809
d48c1c64
RD
810 extra_path = EXTRA_PATH,
811
1b62f00d
RD
812 ext_package = PKGDIR,
813 ext_modules = wxpExtensions,
8916d007 814
1128a89b
RD
815 options = { 'build' : { 'build_base' : BUILD_BASE },
816 },
a541c325 817
1128a89b 818 scripts = SCRIPTS,
1e4a197e 819 data_files = DATA_FILES,
1128a89b 820 headers = HEADERS,
8916d007 821
d48c1c64
RD
822 # Override some of the default distutils command classes with my own
823 cmdclass = { 'install' : wx_install,
824 'install_data': wx_smart_install_data,
1128a89b
RD
825 'install_headers': wx_install_headers,
826 'clean': wx_extra_clean,
827 },
1b62f00d 828 )
c368d904 829
c368d904 830
d48c1c64
RD
831 if INSTALL_MULTIVERSION:
832 setup(name = 'wxPython-common',
833 version = VERSION,
834 description = DESCRIPTION,
835 long_description = LONG_DESCRIPTION,
836 author = AUTHOR,
837 author_email = AUTHOR_EMAIL,
838 url = URL,
839 download_url = DOWNLOAD_URL,
840 license = LICENSE,
841 platforms = PLATFORMS,
842 classifiers = filter(None, CLASSIFIERS.split("\n")),
843 keywords = KEYWORDS,
844
845 package_dir = { '': 'wxversion' },
846 py_modules = ['wxversion'],
847
848 data_files = [('', ['src/wx.pth'])],
849
850 options = { 'build' : { 'build_base' : BUILD_BASE },
851 },
852
853 cmdclass = { 'install_data': wx_smart_install_data,
854 },
855 )
856
c368d904
RD
857#----------------------------------------------------------------------
858#----------------------------------------------------------------------