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