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