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