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