]> git.saurik.com Git - wxWidgets.git/blame - wxPython/setup.py
change default style to match
[wxWidgets.git] / wxPython / setup.py
CommitLineData
c368d904
RD
1#!/usr/bin/env python
2#----------------------------------------------------------------------
3
b0640a71 4import sys, os, glob, fnmatch, tempfile
c368d904
RD
5from distutils.core import setup, Extension
6from distutils.file_util import copy_file
7from distutils.dir_util import mkpath
8from distutils.dep_util import newer
1e4a197e
RD
9from distutils.spawn import spawn
10from distutils.command.install_data import install_data
c368d904
RD
11
12#----------------------------------------------------------------------
13# flags and values that affect this script
14#----------------------------------------------------------------------
15
1fded56b
RD
16VER_MAJOR = 2 # The first three must match wxWindows
17VER_MINOR = 5
4326f7b7 18VER_RELEASE = 1
e83135b2
RD
19VER_SUBREL = 2 # wxPython release num for x.y.z release of wxWindows
20VER_FLAGS = "p" # release flags, such as prerelease num, unicode, etc.
1fded56b 21
c368d904
RD
22DESCRIPTION = "Cross platform GUI toolkit for Python"
23AUTHOR = "Robin Dunn"
b166c703 24AUTHOR_EMAIL = "Robin Dunn <robin@alldunn.com>"
c368d904 25URL = "http://wxPython.org/"
851d4ac7
RD
26DOWNLOAD_URL = "http://wxPython.org/download.php"
27LICENSE = "wxWindows Library License (LGPL derivative)"
28PLATFORMS = "WIN32,OSX,POSIX"
29KEYWORDS = "GUI,wx,wxWindows,cross-platform"
30
c368d904
RD
31LONG_DESCRIPTION = """\
32wxPython is a GUI toolkit for Python that is a wrapper around the
33wxWindows C++ GUI library. wxPython provides a large variety of
1b62f00d 34window types and controls, all implemented with a native look and
1e4a197e 35feel (by using the native widgets) on the platforms it is supported
c368d904
RD
36on.
37"""
38
851d4ac7
RD
39CLASSIFIERS = """\
40Development Status :: 6 - Mature
41Environment :: MacOS X :: Carbon
42Environment :: Win32 (MS Windows)
43Environment :: X11 Applications :: GTK
44Intended Audience :: Developers
45License :: OSI Approved
46Operating System :: MacOS :: MacOS X
47Operating System :: Microsoft :: Windows :: Windows 95/98/2000
48Operating System :: POSIX
49Programming Language :: Python
50Topic :: Software Development :: User Interfaces
51"""
52
53## License :: OSI Approved :: wxWindows Library Licence
54
c368d904 55
1e4a197e
RD
56# Config values below this point can be reset on the setup.py command line.
57
f221f8eb 58BUILD_GLCANVAS = 1 # If true, build the contrib/glcanvas extension module
c368d904
RD
59BUILD_OGL = 1 # If true, build the contrib/ogl extension module
60BUILD_STC = 1 # If true, build the contrib/stc extension module
d56cebe7 61BUILD_XRC = 1 # XML based resource system
ebf4302c 62BUILD_GIZMOS = 1 # Build a module for the gizmos contrib library
1e4a197e 63BUILD_DLLWIDGET = 0# Build a module that enables unknown wx widgets
37bd51c0 64 # to be loaded from a DLL and to be used from Python.
d56cebe7 65
c731eb47 66 # Internet Explorer wrapper (experimental)
de7b7fe6 67BUILD_IEWIN = (os.name == 'nt')
78e8819c 68
1e4a197e 69
c368d904 70CORE_ONLY = 0 # if true, don't build any of the above
4a61305d 71
1e4a197e 72PREP_ONLY = 0 # Only run the prepatory steps, not the actual build.
c368d904
RD
73
74USE_SWIG = 0 # Should we actually execute SWIG, or just use the
75 # files already in the distribution?
76
d14a1e28
RD
77SWIG = "swig" # The swig executable to use.
78
79BUILD_RENAMERS = 1 # Should we build the renamer modules too?
80
a541c325
RD
81UNICODE = 0 # This will pass the 'wxUSE_UNICODE' flag to SWIG and
82 # will ensure that the right headers are found and the
83 # right libs are linked.
c8bc7bb8 84
5c8e1089
RD
85UNDEF_NDEBUG = 1 # Python 2.2 on Unix/Linux by default defines NDEBUG,
86 # and distutils will pick this up and use it on the
87 # compile command-line for the extensions. This could
88 # conflict with how wxWindows was built. If NDEBUG is
89 # set then wxWindows' __WXDEBUG__ setting will be turned
90 # off. If wxWindows was actually built with it turned
91 # on then you end up with mismatched class structures,
92 # and wxPython will crash.
93
2eb31f8b
RD
94NO_SCRIPTS = 0 # Don't install the tool scripts
95
1e4a197e
RD
96WX_CONFIG = None # Usually you shouldn't need to touch this, but you can set
97 # it to pass an alternate version of wx-config or alternate
98 # flags, eg. as required by the .deb in-tree build. By
99 # default a wx-config command will be assembled based on
100 # version, port, etc. and it will be looked for on the
101 # default $PATH.
102
103WXPORT = 'gtk' # On Linux/Unix there are several ports of wxWindows available.
104 # Setting this value lets you select which will be used for
105 # the wxPython build. Possibilites are 'gtk', 'gtk2' and
106 # 'x11'. Curently only gtk and gtk2 works.
107
108BUILD_BASE = "build" # Directory to use for temporary build files.
2eb31f8b 109
96d37ab5 110CONTRIBS_INC = "" # A dir to add as an -I flag when compiling the contribs
c368d904 111
a541c325 112
c368d904
RD
113# Some MSW build settings
114
d440a0e7 115FINAL = 0 # Mirrors use of same flag in wx makefiles,
c368d904
RD
116 # (0 or 1 only) should probably find a way to
117 # autodetect this...
118
d440a0e7 119HYBRID = 1 # If set and not debug or FINAL, then build a
c368d904
RD
120 # hybrid extension that can be used by the
121 # non-debug version of python, but contains
122 # debugging symbols for wxWindows and wxPython.
123 # wxWindows must have been built with /MD, not /MDd
124 # (using FINAL=hybrid will do it.)
125
3e46a8e6
RD
126 # Version part of wxWindows LIB/DLL names
127WXDLLVER = '%d%d' % (VER_MAJOR, VER_MINOR)
c368d904
RD
128
129
cfe766c3
RD
130#----------------------------------------------------------------------
131
132def msg(text):
133 if __name__ == "__main__":
134 print text
135
a541c325 136
55c020cf
RD
137def opj(*args):
138 path = apply(os.path.join, args)
139 return os.path.normpath(path)
cfe766c3 140
a541c325 141
a4fbdd76
RD
142def libFlag():
143 if FINAL:
c8bc7bb8 144 rv = ''
a4fbdd76 145 elif HYBRID:
c8bc7bb8 146 rv = 'h'
a4fbdd76 147 else:
c8bc7bb8 148 rv = 'd'
a541c325 149 if UNICODE:
c8bc7bb8
RD
150 rv = 'u' + rv
151 return rv
a4fbdd76
RD
152
153
c368d904
RD
154#----------------------------------------------------------------------
155# Some other globals
156#----------------------------------------------------------------------
157
d14a1e28 158PKGDIR = 'wx'
c368d904 159wxpExtensions = []
1e4a197e 160DATA_FILES = []
c368d904
RD
161
162force = '--force' in sys.argv or '-f' in sys.argv
163debug = '--debug' in sys.argv or '-g' in sys.argv
ce8f00f3
RD
164cleaning = 'clean' in sys.argv
165
c368d904 166
1e4a197e
RD
167# change the PORT default for wxMac
168if sys.platform[:6] == "darwin":
169 WXPORT = 'mac'
22d08289 170
1e4a197e
RD
171# and do the same for wxMSW, just for consistency
172if os.name == 'nt':
173 WXPORT = 'msw'
22d08289 174
c368d904
RD
175
176#----------------------------------------------------------------------
177# Check for build flags on the command line
178#----------------------------------------------------------------------
179
5c8e1089 180# Boolean (int) flags
b166c703 181for flag in ['BUILD_GLCANVAS', 'BUILD_OGL', 'BUILD_STC', 'BUILD_XRC',
c731eb47 182 'BUILD_GIZMOS', 'BUILD_DLLWIDGET', 'BUILD_IEWIN',
d14a1e28
RD
183 'CORE_ONLY', 'PREP_ONLY', 'USE_SWIG', 'UNICODE',
184 'UNDEF_NDEBUG', 'NO_SCRIPTS', 'BUILD_RENAMERS',
b166c703 185 'FINAL', 'HYBRID', ]:
c368d904 186 for x in range(len(sys.argv)):
1e4a197e
RD
187 if sys.argv[x].find(flag) == 0:
188 pos = sys.argv[x].find('=') + 1
c368d904
RD
189 if pos > 0:
190 vars()[flag] = eval(sys.argv[x][pos:])
191 sys.argv[x] = ''
192
5c8e1089 193# String options
96d37ab5
RD
194for option in ['WX_CONFIG', 'WXDLLVER', 'BUILD_BASE', 'WXPORT', 'SWIG',
195 'CONTRIBS_INC']:
afa3e1ed 196 for x in range(len(sys.argv)):
1e4a197e
RD
197 if sys.argv[x].find(option) == 0:
198 pos = sys.argv[x].find('=') + 1
afa3e1ed
RL
199 if pos > 0:
200 vars()[option] = sys.argv[x][pos:]
201 sys.argv[x] = ''
202
c368d904
RD
203sys.argv = filter(None, sys.argv)
204
205
1e4a197e
RD
206#----------------------------------------------------------------------
207# some helper functions
208#----------------------------------------------------------------------
209
210def Verify_WX_CONFIG():
211 """ Called below for the builds that need wx-config,
212 if WX_CONFIG is not set then tries to select the specific
213 wx*-config script based on build options. If not found
214 then it defaults to 'wx-config'.
215 """
216 # if WX_CONFIG hasn't been set to an explicit value then construct one.
217 global WX_CONFIG
218 if WX_CONFIG is None:
219 if debug: # TODO: Fix this. wxPython's --debug shouldn't be tied to wxWindows...
220 df = 'd'
221 else:
222 df = ''
223 if UNICODE:
224 uf = 'u'
225 else:
226 uf = ''
1fded56b 227 ver2 = "%s.%s" % (VER_MAJOR, VER_MINOR)
f87da722
RD
228 port = WXPORT
229 if port == "x11":
230 port = "x11univ"
231 WX_CONFIG = 'wx%s%s%s-%s-config' % (port, uf, df, ver2)
1e4a197e
RD
232
233 searchpath = os.environ["PATH"]
234 for p in searchpath.split(':'):
235 fp = os.path.join(p, WX_CONFIG)
236 if os.path.exists(fp) and os.access(fp, os.X_OK):
237 # success
238 msg("Found wx-config: " + fp)
239 WX_CONFIG = fp
240 break
241 else:
242 msg("WX_CONFIG not specified and %s not found on $PATH "
243 "defaulting to \"wx-config\"" % WX_CONFIG)
244 WX_CONFIG = 'wx-config'
245
246
247
248def run_swig(files, dir, gendir, package, USE_SWIG, force, swig_args, swig_deps=[]):
249 """Run SWIG the way I want it done"""
d14a1e28 250
1e4a197e
RD
251 if not os.path.exists(os.path.join(dir, gendir)):
252 os.mkdir(os.path.join(dir, gendir))
253
8994c3c2
RD
254 if not os.path.exists(os.path.join("docs", "xml-raw")):
255 os.mkdir(os.path.join("docs", "xml-raw"))
256
1e4a197e
RD
257 sources = []
258
259 for file in files:
260 basefile = os.path.splitext(file)[0]
261 i_file = os.path.join(dir, file)
262 py_file = os.path.join(dir, gendir, basefile+'.py')
d14a1e28 263 cpp_file = os.path.join(dir, gendir, basefile+'_wrap.cpp')
8994c3c2 264 xml_file = os.path.join("docs", "xml-raw", basefile+'_swig.xml')
1e4a197e
RD
265
266 sources.append(cpp_file)
267
ce8f00f3 268 if not cleaning and USE_SWIG:
1e4a197e
RD
269 for dep in swig_deps:
270 if newer(dep, py_file) or newer(dep, cpp_file):
271 force = 1
272 break
273
274 if force or newer(i_file, py_file) or newer(i_file, cpp_file):
d14a1e28
RD
275 ## we need forward slashes here even on win32
276 #cpp_file = opj(cpp_file) #'/'.join(cpp_file.split('\\'))
277 #i_file = opj(i_file) #'/'.join(i_file.split('\\'))
278
279 if BUILD_RENAMERS:
b0640a71
RD
280 #tempfile.tempdir = sourcePath
281 xmltemp = tempfile.mktemp('.xml')
282
8994c3c2
RD
283 # First run swig to produce the XML file, adding
284 # an extra -D that prevents the old rename
285 # directives from being used
286 cmd = [ swig_cmd ] + swig_args + \
b0640a71 287 [ '-DBUILDING_RENAMERS', '-xmlout', xmltemp ] + \
8994c3c2
RD
288 ['-I'+dir, '-o', cpp_file, i_file]
289 msg(' '.join(cmd))
290 spawn(cmd)
291
292 # Next run build_renamers to process the XML
d14a1e28 293 cmd = [ sys.executable, '-u',
b0640a71 294 './distrib/build_renamers.py', dir, basefile, xmltemp]
d14a1e28
RD
295 msg(' '.join(cmd))
296 spawn(cmd)
b0640a71 297 os.remove(xmltemp)
d14a1e28
RD
298
299 # Then run swig for real
b0640a71
RD
300 cmd = [ swig_cmd ] + swig_args + ['-I'+dir, '-o', cpp_file,
301 '-xmlout', xml_file, i_file]
1e4a197e
RD
302 msg(' '.join(cmd))
303 spawn(cmd)
304
d14a1e28 305
1e4a197e
RD
306 # copy the generated python file to the package directory
307 copy_file(py_file, package, update=not force, verbose=0)
308
309 return sources
310
311
312
313def contrib_copy_tree(src, dest, verbose=0):
314 """Update local copies of wxWindows contrib files"""
315 from distutils.dir_util import mkpath, copy_tree
316
317 mkpath(dest, verbose=verbose)
318 copy_tree(src, dest, update=1, verbose=verbose)
319
320
321
322class smart_install_data(install_data):
323 def run(self):
324 #need to change self.install_dir to the actual library dir
325 install_cmd = self.get_finalized_command('install')
326 self.install_dir = getattr(install_cmd, 'install_lib')
327 return install_data.run(self)
328
329
330def build_locale_dir(destdir, verbose=1):
331 """Build a locale dir under the wxPython package for MSW"""
332 moFiles = glob.glob(opj(WXDIR, 'locale', '*.mo'))
333 for src in moFiles:
334 lang = os.path.splitext(os.path.basename(src))[0]
335 dest = opj(destdir, lang, 'LC_MESSAGES')
336 mkpath(dest, verbose=verbose)
337 copy_file(src, opj(dest, 'wxstd.mo'), update=1, verbose=verbose)
338
339
340def build_locale_list(srcdir):
341 # get a list of all files under the srcdir, to be used for install_data
342 def walk_helper(lst, dirname, files):
343 for f in files:
344 filename = opj(dirname, f)
345 if not os.path.isdir(filename):
346 lst.append( (dirname, [filename]) )
347 file_list = []
348 os.path.walk(srcdir, walk_helper, file_list)
349 return file_list
350
351
1fded56b
RD
352def find_data_files(srcdir, *wildcards):
353 # get a list of all files under the srcdir matching wildcards,
354 # returned in a format to be used for install_data
355
356 def walk_helper(arg, dirname, files):
357 names = []
358 lst, wildcards = arg
359 for wc in wildcards:
360 for f in files:
361 filename = opj(dirname, f)
362 if fnmatch.fnmatch(filename, wc) and not os.path.isdir(filename):
363 names.append(filename)
364 if names:
365 lst.append( (dirname, names ) )
366
367 file_list = []
368 os.path.walk(srcdir, walk_helper, (file_list, wildcards))
369 return file_list
1e4a197e
RD
370
371
3ef86e32
RD
372def makeLibName(name):
373 if os.name == 'posix':
374 libname = '%s_%s-%s' % (WXBASENAME, name, WXRELEASE)
375 else:
3e46a8e6 376 libname = 'wxmsw%s%s_%s' % (WXDLLVER, libFlag(), name)
3ef86e32
RD
377
378 return [libname]
379
380
381
382def adjustCFLAGS(cflags, defines, includes):
d14a1e28 383 '''Extrace the raw -I, -D, and -U flags and put them into
3ef86e32
RD
384 defines and includes as needed.'''
385 newCFLAGS = []
386 for flag in cflags:
387 if flag[:2] == '-I':
388 includes.append(flag[2:])
389 elif flag[:2] == '-D':
390 flag = flag[2:]
391 if flag.find('=') == -1:
392 defines.append( (flag, None) )
393 else:
394 defines.append( tuple(flag.split('=')) )
395 elif flag[:2] == '-U':
396 defines.append( (flag[2:], ) )
397 else:
398 newCFLAGS.append(flag)
399 return newCFLAGS
400
401
402
403def adjustLFLAGS(lfags, libdirs, libs):
d14a1e28 404 '''Extrace the -L and -l flags and put them in libdirs and libs as needed'''
3ef86e32
RD
405 newLFLAGS = []
406 for flag in lflags:
407 if flag[:2] == '-L':
408 libdirs.append(flag[2:])
409 elif flag[:2] == '-l':
410 libs.append(flag[2:])
411 else:
412 newLFLAGS.append(flag)
413
414 return newLFLAGS
c8bc7bb8
RD
415
416#----------------------------------------------------------------------
417# sanity checks
418
c368d904 419if CORE_ONLY:
f221f8eb 420 BUILD_GLCANVAS = 0
c368d904
RD
421 BUILD_OGL = 0
422 BUILD_STC = 0
b166c703 423 BUILD_XRC = 0
ff5f1aba
RD
424 BUILD_GIZMOS = 0
425 BUILD_DLLWIDGET = 0
c731eb47 426 BUILD_IEWIN = 0
ff5f1aba 427
1e4a197e
RD
428if debug:
429 FINAL = 0
430 HYBRID = 0
c368d904 431
1e4a197e
RD
432if FINAL:
433 HYBRID = 0
c8bc7bb8 434
1e4a197e
RD
435if UNICODE and WXPORT not in ['msw', 'gtk2']:
436 raise SystemExit, "UNICODE mode not currently supported on this WXPORT: "+WXPORT
a541c325
RD
437
438
c368d904
RD
439#----------------------------------------------------------------------
440# Setup some platform specific stuff
441#----------------------------------------------------------------------
442
443if os.name == 'nt':
444 # Set compile flags and such for MSVC. These values are derived
a541c325
RD
445 # from the wxWindows makefiles for MSVC, other compilers settings
446 # will probably vary...
447 if os.environ.has_key('WXWIN'):
448 WXDIR = os.environ['WXWIN']
449 else:
450 msg("WARNING: WXWIN not set in environment.")
451 WXDIR = '..' # assumes in CVS tree
c368d904
RD
452 WXPLAT = '__WXMSW__'
453 GENDIR = 'msw'
454
d14a1e28
RD
455 includes = ['include', 'src',
456 opj(WXDIR, 'lib', 'vc_dll', 'msw' + libFlag()),
55c020cf 457 opj(WXDIR, 'include'),
5a2a9da2 458 opj(WXDIR, 'contrib', 'include'),
c368d904
RD
459 ]
460
1e4a197e 461 defines = [ ('WIN32', None),
c368d904 462 ('_WINDOWS', None),
c368d904
RD
463
464 (WXPLAT, None),
465 ('WXUSINGDLL', '1'),
466
467 ('SWIG_GLOBAL', None),
c368d904
RD
468 ('WXP_USE_THREAD', '1'),
469 ]
470
1e4a197e
RD
471 if UNDEF_NDEBUG:
472 defines.append( ('NDEBUG',) ) # using a 1-tuple makes it do an undef
22d08289 473
a3a2c5fe
RD
474 if HYBRID:
475 defines.append( ('__NO_VC_CRTDBG__', None) )
22d08289 476
c368d904
RD
477 if not FINAL or HYBRID:
478 defines.append( ('__WXDEBUG__', None) )
479
1e521887 480 libdirs = [ opj(WXDIR, 'lib', 'vc_dll') ]
0a67b751
RD
481 libs = [ 'wxbase' + WXDLLVER + libFlag(), # TODO: trim this down to what is really needed for the core
482 'wxbase' + WXDLLVER + libFlag() + '_net',
483 'wxbase' + WXDLLVER + libFlag() + '_xml',
484 makeLibName('core')[0],
485 makeLibName('adv')[0],
486 makeLibName('html')[0],
487 ]
a4fbdd76 488
22d08289 489 libs = libs + ['kernel32', 'user32', 'gdi32', 'comdlg32',
c368d904 490 'winspool', 'winmm', 'shell32', 'oldnames', 'comctl32',
1e4a197e 491 'odbc32', 'ole32', 'oleaut32', 'uuid', 'rpcrt4',
c368d904
RD
492 'advapi32', 'wsock32']
493
22d08289 494
d440a0e7 495 cflags = [ '/Gy',
ad07d019
RD
496 # '/GX-' # workaround for internal compiler error in MSVC on some machines
497 ]
c368d904
RD
498 lflags = None
499
1e4a197e 500 # Other MSVC flags...
1fded56b 501 # Too bad I don't remember why I was playing with these, can they be removed?
1e4a197e
RD
502 if FINAL:
503 pass #cflags = cflags + ['/O1']
504 elif HYBRID :
505 pass #cflags = cflags + ['/Ox']
506 else:
507 pass # cflags = cflags + ['/Od', '/Z7']
508 # lflags = ['/DEBUG', ]
22d08289
RD
509
510
22d08289 511
1e4a197e 512#----------------------------------------------------------------------
c368d904 513
3ef86e32 514elif os.name == 'posix':
d14a1e28
RD
515 WXDIR = '..'
516 includes = ['include', 'src']
e6056257
RD
517 defines = [('SWIG_GLOBAL', None),
518 ('HAVE_CONFIG_H', None),
519 ('WXP_USE_THREAD', '1'),
520 ]
1e4a197e
RD
521 if UNDEF_NDEBUG:
522 defines.append( ('NDEBUG',) ) # using a 1-tuple makes it do an undef
1e4a197e
RD
523
524 Verify_WX_CONFIG()
e6056257 525
3ef86e32
RD
526 libdirs = []
527 libs = []
528
f9b46bcb
RD
529 # If you get unresolved symbol errors on Solaris and are using gcc, then
530 # uncomment this block to add the right flags to the link step and build
531 # again.
532 ## if os.uname()[0] == 'SunOS':
533 ## libs.append('gcc')
534 ## libdirs.append(commands.getoutput("gcc -print-search-dirs | grep '^install' | awk '{print $2}'")[:-1])
535
e6056257 536 cflags = os.popen(WX_CONFIG + ' --cxxflags', 'r').read()[:-1]
1e4a197e 537 cflags = cflags.split()
ba201fa4
RD
538 if debug:
539 cflags.append('-g')
540 cflags.append('-O0')
8b9a4190
RD
541 else:
542 cflags.append('-O3')
e6056257
RD
543
544 lflags = os.popen(WX_CONFIG + ' --libs', 'r').read()[:-1]
1e4a197e 545 lflags = lflags.split()
e6056257 546
3ef86e32
RD
547 WXBASENAME = os.popen(WX_CONFIG + ' --basename').read()[:-1]
548 WXRELEASE = os.popen(WX_CONFIG + ' --release').read()[:-1]
549 WXPREFIX = os.popen(WX_CONFIG + ' --prefix').read()[:-1]
e6056257
RD
550
551
3ef86e32
RD
552 if sys.platform[:6] == "darwin":
553 # Flags and such for a Darwin (Max OS X) build of Python
554 WXPLAT = '__WXMAC__'
555 GENDIR = 'mac'
556 libs = ['stdc++']
557 NO_SCRIPTS = 1
c368d904 558
1e4a197e 559
3ef86e32
RD
560 else:
561 # Set flags for other Unix type platforms
562 GENDIR = WXPORT
563
564 if WXPORT == 'gtk':
565 WXPLAT = '__WXGTK__'
566 portcfg = os.popen('gtk-config --cflags', 'r').read()[:-1]
567 elif WXPORT == 'gtk2':
568 WXPLAT = '__WXGTK__'
569 GENDIR = 'gtk' # no code differences so use the same generated sources
570 portcfg = os.popen('pkg-config gtk+-2.0 --cflags', 'r').read()[:-1]
571 BUILD_BASE = BUILD_BASE + '-' + WXPORT
572 elif WXPORT == 'x11':
573 WXPLAT = '__WXX11__'
574 portcfg = ''
575 BUILD_BASE = BUILD_BASE + '-' + WXPORT
576 else:
577 raise SystemExit, "Unknown WXPORT value: " + WXPORT
1e4a197e 578
3ef86e32 579 cflags += portcfg.split()
1e4a197e 580
d14a1e28
RD
581 # Some distros (e.g. Mandrake) put libGLU in /usr/X11R6/lib, but
582 # wx-config doesn't output that for some reason. For now, just
583 # add it unconditionally but we should really check if the lib is
584 # really found there or wx-config should be fixed.
585 libdirs.append("/usr/X11R6/lib")
c368d904 586
1e4a197e 587
3ef86e32
RD
588 # Move the various -I, -D, etc. flags we got from the *config scripts
589 # into the distutils lists.
590 cflags = adjustCFLAGS(cflags, defines, includes)
591 lflags = adjustLFLAGS(lflags, libdirs, libs)
c368d904
RD
592
593
1e4a197e 594#----------------------------------------------------------------------
c368d904 595else:
96d37ab5 596 raise 'Sorry, platform not supported...'
1e4a197e
RD
597
598
599#----------------------------------------------------------------------
1fded56b 600# post platform setup checks and tweaks, create the full version string
1e4a197e
RD
601#----------------------------------------------------------------------
602
603if UNICODE:
604 BUILD_BASE = BUILD_BASE + '.unicode'
1fded56b 605 VER_FLAGS += 'u'
c368d904
RD
606
607
1fded56b
RD
608VERSION = "%s.%s.%s.%s%s" % (VER_MAJOR, VER_MINOR, VER_RELEASE,
609 VER_SUBREL, VER_FLAGS)
610
c368d904 611#----------------------------------------------------------------------
1fded56b 612# Update the version file
c368d904
RD
613#----------------------------------------------------------------------
614
1fded56b
RD
615# Unconditionally updated since the version string can change based
616# on the UNICODE flag
e83135b2 617open('wx/__version__.py', 'w').write("""\
1fded56b
RD
618# This file was generated by setup.py...
619
d14a1e28
RD
620VERSION_STRING = '%(VERSION)s'
621MAJOR_VERSION = %(VER_MAJOR)s
622MINOR_VERSION = %(VER_MINOR)s
623RELEASE_VERSION = %(VER_RELEASE)s
624SUBREL_VERSION = %(VER_SUBREL)s
1fded56b 625
d14a1e28 626VERSION = (MAJOR_VERSION, MINOR_VERSION, RELEASE_VERSION,
e83135b2 627 SUBREL_VERSION, '%(VER_FLAGS)s')
1fded56b 628
d14a1e28 629RELEASE_NUMBER = RELEASE_VERSION # for compatibility
1fded56b 630""" % globals())
1e4a197e 631
c368d904 632
1b62f00d
RD
633
634
c368d904 635#----------------------------------------------------------------------
1b62f00d 636# SWIG defaults
c368d904
RD
637#----------------------------------------------------------------------
638
d14a1e28 639swig_cmd = SWIG
c368d904 640swig_force = force
d14a1e28
RD
641swig_args = ['-c++',
642 '-Wall',
643 '-nodefault',
644
645## '-xml',
646
647 '-python',
648 '-keyword',
649 '-new_repr',
650 '-modern',
651
652 '-I./src',
653 '-D'+WXPLAT,
98fb9b71 654 '-noruntime'
e6056257 655 ]
a541c325 656if UNICODE:
c8bc7bb8
RD
657 swig_args.append('-DwxUSE_UNICODE')
658
d14a1e28
RD
659swig_deps = [ 'src/my_typemaps.i',
660 'src/common.swg',
661 'src/pyrun.swg',
662 ]
663
664depends = [ #'include/wx/wxPython/wxPython.h',
665 #'include/wx/wxPython/wxPython_int.h',
666 #'src/pyclasses.h',
667 ]
c368d904 668
c368d904 669
1b62f00d
RD
670#----------------------------------------------------------------------
671# Define the CORE extension module
672#----------------------------------------------------------------------
673
1e4a197e 674msg('Preparing CORE...')
d14a1e28
RD
675swig_sources = run_swig(['core.i'], 'src', GENDIR, PKGDIR,
676 USE_SWIG, swig_force, swig_args, swig_deps +
1e0c8722
RD
677 [ 'src/_accel.i',
678 'src/_app.i',
d14a1e28
RD
679 'src/_app_ex.py',
680 'src/_constraints.i',
681 'src/_core_api.i',
682 'src/_core_ex.py',
683 'src/_core_rename.i',
684 'src/_core_reverse.txt',
685 'src/_defs.i',
686 'src/_event.i',
687 'src/_event_ex.py',
688 'src/_evthandler.i',
689 'src/_filesys.i',
690 'src/_gdicmn.i',
691 'src/_image.i',
692 'src/_menu.i',
693 'src/_obj.i',
694 'src/_sizers.i',
695 'src/_gbsizer.i',
696 'src/_streams.i',
697 'src/_validator.i',
698 'src/_window.i',
cf636c45 699 'src/_control.i',
d14a1e28 700 ])
1b62f00d 701
1e4a197e 702copy_file('src/__init__.py', PKGDIR, update=1, verbose=0)
1b62f00d
RD
703
704
d14a1e28
RD
705# update the license files
706mkpath('licence')
707for file in ['preamble.txt', 'licence.txt', 'licendoc.txt', 'lgpl.txt']:
708 copy_file(opj(WXDIR, 'docs', file), opj('licence',file), update=1, verbose=0)
c368d904 709
c368d904 710
1e4a197e
RD
711if os.name == 'nt':
712 build_locale_dir(opj(PKGDIR, 'locale'))
713 DATA_FILES += build_locale_list(opj(PKGDIR, 'locale'))
4f3449b4
RD
714
715
1e4a197e
RD
716if os.name == 'nt':
717 rc_file = ['src/wxc.rc']
718else:
719 rc_file = []
720
721
d14a1e28
RD
722ext = Extension('_core', ['src/helpers.cpp',
723 'src/libpy.c',
1e4a197e
RD
724 ] + rc_file + swig_sources,
725
726 include_dirs = includes,
727 define_macros = defines,
728
729 library_dirs = libdirs,
730 libraries = libs,
731
732 extra_compile_args = cflags,
733 extra_link_args = lflags,
d14a1e28
RD
734
735 depends = depends
1e4a197e
RD
736 )
737wxpExtensions.append(ext)
738
739
d14a1e28
RD
740
741
742
743# Extension for the GDI module
744swig_sources = run_swig(['gdi.i'], 'src', GENDIR, PKGDIR,
745 USE_SWIG, swig_force, swig_args, swig_deps +
746 ['src/_gdi_rename.i',
747 'src/_bitmap.i', 'src/_brush.i',
748 'src/_colour.i', 'src/_cursor.i',
749 'src/_dc.i', 'src/_font.i',
750 'src/_gdiobj.i', 'src/_icon.i',
751 'src/_imaglist.i', 'src/_pen.i',
752 'src/_region.i', 'src/_palette.i',
dd9f7fea 753 'src/_stockobjs.i',
d14a1e28
RD
754 'src/_effects.i',
755 'src/_intl.i',
756 'src/_intl_ex.py',
757 ])
758ext = Extension('_gdi', ['src/drawlist.cpp'] + swig_sources,
1e4a197e
RD
759 include_dirs = includes,
760 define_macros = defines,
761 library_dirs = libdirs,
762 libraries = libs,
763 extra_compile_args = cflags,
764 extra_link_args = lflags,
d14a1e28 765 depends = depends
1e4a197e
RD
766 )
767wxpExtensions.append(ext)
768
769
d14a1e28
RD
770
771
772
773
774# Extension for the windows module
775swig_sources = run_swig(['windows.i'], 'src', GENDIR, PKGDIR,
776 USE_SWIG, swig_force, swig_args, swig_deps +
777 ['src/_windows_rename.i', 'src/_windows_reverse.txt',
778 'src/_panel.i',
d14a1e28
RD
779 'src/_toplvl.i', 'src/_statusbar.i',
780 'src/_splitter.i', 'src/_sashwin.i',
781 'src/_popupwin.i', 'src/_tipwin.i',
782 'src/_vscroll.i', 'src/_taskbar.i',
783 'src/_cmndlgs.i', 'src/_mdi.i',
784 'src/_pywindows.i', 'src/_printfw.i',
785 ])
786ext = Extension('_windows', swig_sources,
1e4a197e
RD
787 include_dirs = includes,
788 define_macros = defines,
789 library_dirs = libdirs,
790 libraries = libs,
791 extra_compile_args = cflags,
792 extra_link_args = lflags,
d14a1e28 793 depends = depends
1e4a197e
RD
794 )
795wxpExtensions.append(ext)
796
797
d14a1e28
RD
798
799
800# Extension for the controls module
801swig_sources = run_swig(['controls.i'], 'src', GENDIR, PKGDIR,
802 USE_SWIG, swig_force, swig_args, swig_deps +
803 [ 'src/_controls_rename.i', 'src/_controls_reverse.txt',
cf636c45 804 'src/_toolbar.i',
d14a1e28
RD
805 'src/_button.i', 'src/_checkbox.i',
806 'src/_choice.i', 'src/_combobox.i',
807 'src/_gauge.i', 'src/_statctrls.i',
808 'src/_listbox.i', 'src/_textctrl.i',
809 'src/_scrolbar.i', 'src/_spin.i',
810 'src/_radio.i', 'src/_slider.i',
811 'src/_tglbtn.i', 'src/_notebook.i',
812 'src/_listctrl.i', 'src/_treectrl.i',
813 'src/_dirctrl.i', 'src/_pycontrol.i',
dd9f7fea 814 'src/_cshelp.i', 'src/_dragimg.i',
d14a1e28
RD
815 ])
816ext = Extension('_controls', swig_sources,
817 include_dirs = includes,
818 define_macros = defines,
819 library_dirs = libdirs,
820 libraries = libs,
821 extra_compile_args = cflags,
822 extra_link_args = lflags,
823 depends = depends
824 )
825wxpExtensions.append(ext)
826
827
828
829
830# Extension for the misc module
831swig_sources = run_swig(['misc.i'], 'src', GENDIR, PKGDIR,
832 USE_SWIG, swig_force, swig_args, swig_deps +
833 [ 'src/_settings.i', 'src/_functions.i',
834 'src/_misc.i', 'src/_tipdlg.i',
835 'src/_timer.i', 'src/_log.i',
836 'src/_process.i', 'src/_joystick.i',
78862f24 837 'src/_sound.i', 'src/_mimetype.i',
d14a1e28
RD
838 'src/_artprov.i', 'src/_config.i',
839 'src/_datetime.i', 'src/_dataobj.i',
96d37ab5 840 'src/_dnd.i', 'src/_display.i',
d14a1e28
RD
841 'src/_clipbrd.i',
842 ])
843ext = Extension('_misc', swig_sources,
844 include_dirs = includes,
845 define_macros = defines,
846 library_dirs = libdirs,
847 libraries = libs,
848 extra_compile_args = cflags,
849 extra_link_args = lflags,
850 depends = depends
851 )
852wxpExtensions.append(ext)
853
854
855
856##
857## Core modules that are not in the "core" namespace start here
858##
859
1e4a197e
RD
860swig_sources = run_swig(['calendar.i'], 'src', GENDIR, PKGDIR,
861 USE_SWIG, swig_force, swig_args, swig_deps)
d14a1e28
RD
862ext = Extension('_calendar', swig_sources,
863 include_dirs = includes,
864 define_macros = defines,
865 library_dirs = libdirs,
866 libraries = libs,
867 extra_compile_args = cflags,
868 extra_link_args = lflags,
869 depends = depends
870 )
871wxpExtensions.append(ext)
872
873
874swig_sources = run_swig(['grid.i'], 'src', GENDIR, PKGDIR,
875 USE_SWIG, swig_force, swig_args, swig_deps)
876ext = Extension('_grid', swig_sources,
1e4a197e
RD
877 include_dirs = includes,
878 define_macros = defines,
879 library_dirs = libdirs,
880 libraries = libs,
881 extra_compile_args = cflags,
882 extra_link_args = lflags,
d14a1e28 883 depends = depends
1e4a197e
RD
884 )
885wxpExtensions.append(ext)
886
887
d14a1e28
RD
888
889swig_sources = run_swig(['html.i'], 'src', GENDIR, PKGDIR,
1e4a197e 890 USE_SWIG, swig_force, swig_args, swig_deps)
d14a1e28 891ext = Extension('_html', swig_sources,
1e4a197e
RD
892 include_dirs = includes,
893 define_macros = defines,
894 library_dirs = libdirs,
895 libraries = libs,
896 extra_compile_args = cflags,
897 extra_link_args = lflags,
d14a1e28 898 depends = depends
1e4a197e
RD
899 )
900wxpExtensions.append(ext)
901
902
d14a1e28 903
1e4a197e
RD
904swig_sources = run_swig(['wizard.i'], 'src', GENDIR, PKGDIR,
905 USE_SWIG, swig_force, swig_args, swig_deps)
d14a1e28 906ext = Extension('_wizard', swig_sources,
1e4a197e
RD
907 include_dirs = includes,
908 define_macros = defines,
909 library_dirs = libdirs,
910 libraries = libs,
911 extra_compile_args = cflags,
912 extra_link_args = lflags,
d14a1e28 913 depends = depends
1e4a197e
RD
914 )
915wxpExtensions.append(ext)
af83019e
RD
916
917
96d37ab5 918#----------------------------------------------------------------------
d14a1e28 919
96d37ab5 920if CONTRIBS_INC:
4c417214
RD
921 CONTRIBS_INC = [ CONTRIBS_INC ]
922else:
923 CONTRIBS_INC = []
924
d14a1e28 925
c368d904
RD
926#----------------------------------------------------------------------
927# Define the GLCanvas extension module
928#----------------------------------------------------------------------
929
1e4a197e 930if BUILD_GLCANVAS:
cfe766c3 931 msg('Preparing GLCANVAS...')
c368d904 932 location = 'contrib/glcanvas'
c368d904 933
d14a1e28 934 swig_sources = run_swig(['glcanvas.i'], location, GENDIR, PKGDIR,
10ef30eb 935 USE_SWIG, swig_force, swig_args, swig_deps)
c368d904
RD
936
937 gl_libs = []
938 if os.name == 'posix':
f32afe1c 939 gl_config = os.popen(WX_CONFIG + ' --gl-libs', 'r').read()[:-1]
1e4a197e 940 gl_lflags = gl_config.split() + lflags
f32afe1c 941 gl_libs = libs
19cf4f80 942 else:
3e46a8e6 943 gl_libs = libs + ['opengl32', 'glu32'] + makeLibName('gl')
f32afe1c 944 gl_lflags = lflags
c368d904 945
d14a1e28 946 ext = Extension('_glcanvas',
3e46a8e6 947 swig_sources,
1e7ecb7b 948
4c417214 949 include_dirs = includes + CONTRIBS_INC,
1e7ecb7b
RD
950 define_macros = defines,
951
952 library_dirs = libdirs,
f32afe1c 953 libraries = gl_libs,
1e7ecb7b
RD
954
955 extra_compile_args = cflags,
f32afe1c 956 extra_link_args = gl_lflags,
1e7ecb7b
RD
957 )
958
959 wxpExtensions.append(ext)
c368d904
RD
960
961
962#----------------------------------------------------------------------
963# Define the OGL extension module
964#----------------------------------------------------------------------
965
1e4a197e 966if BUILD_OGL:
cfe766c3 967 msg('Preparing OGL...')
c368d904 968 location = 'contrib/ogl'
c368d904 969
a32360e0 970 swig_sources = run_swig(['ogl.i'], location, GENDIR, PKGDIR,
d14a1e28
RD
971 USE_SWIG, swig_force, swig_args, swig_deps +
972 [ '%s/_oglbasic.i' % location,
973 '%s/_oglshapes.i' % location,
974 '%s/_oglshapes2.i' % location,
975 '%s/_oglcanvas.i' % location,
976 '%s/_ogldefs.i' % location,
977 ])
c368d904 978
d14a1e28 979 ext = Extension('_ogl',
3ef86e32 980 swig_sources,
1e7ecb7b 981
4c417214 982 include_dirs = includes + [ location ] + CONTRIBS_INC,
dd116e73 983 define_macros = defines + [('wxUSE_DEPRECATED', '0')],
1e7ecb7b
RD
984
985 library_dirs = libdirs,
3ef86e32 986 libraries = libs + makeLibName('ogl'),
1e7ecb7b
RD
987
988 extra_compile_args = cflags,
989 extra_link_args = lflags,
990 )
991
992 wxpExtensions.append(ext)
993
994
c368d904
RD
995
996#----------------------------------------------------------------------
997# Define the STC extension module
998#----------------------------------------------------------------------
999
1e4a197e 1000if BUILD_STC:
cfe766c3 1001 msg('Preparing STC...')
c368d904 1002 location = 'contrib/stc'
5a2a9da2
RD
1003 if os.name == 'nt':
1004 STC_H = opj(WXDIR, 'contrib', 'include/wx/stc')
1005 else:
1006 STC_H = opj(WXPREFIX, 'include/wx/stc')
55c020cf 1007
de7b7fe6 1008## NOTE: need to add something like this to the stc.bkl...
55c020cf 1009
3ef86e32
RD
1010## # Check if gen_iface needs to be run for the wxSTC sources
1011## if (newer(opj(CTRB_SRC, 'stc/stc.h.in'), opj(CTRB_INC, 'stc/stc.h' )) or
1012## newer(opj(CTRB_SRC, 'stc/stc.cpp.in'), opj(CTRB_SRC, 'stc/stc.cpp')) or
1013## newer(opj(CTRB_SRC, 'stc/gen_iface.py'), opj(CTRB_SRC, 'stc/stc.cpp'))):
55c020cf 1014
3ef86e32
RD
1015## msg('Running gen_iface.py, regenerating stc.h and stc.cpp...')
1016## cwd = os.getcwd()
1017## os.chdir(opj(CTRB_SRC, 'stc'))
1018## sys.path.insert(0, os.curdir)
1019## import gen_iface
1020## gen_iface.main([])
1021## os.chdir(cwd)
c368d904
RD
1022
1023
d14a1e28 1024 swig_sources = run_swig(['stc.i'], location, '', PKGDIR,
c368d904
RD
1025 USE_SWIG, swig_force,
1026 swig_args + ['-I'+STC_H, '-I'+location],
10ef30eb 1027 [opj(STC_H, 'stc.h')] + swig_deps)
c368d904 1028
d14a1e28 1029 ext = Extension('_stc',
3ef86e32
RD
1030 swig_sources,
1031
4c417214 1032 include_dirs = includes + CONTRIBS_INC,
3ef86e32 1033 define_macros = defines,
1e7ecb7b
RD
1034
1035 library_dirs = libdirs,
3ef86e32 1036 libraries = libs + makeLibName('stc'),
c368d904 1037
1e7ecb7b
RD
1038 extra_compile_args = cflags,
1039 extra_link_args = lflags,
1040 )
1041
1042 wxpExtensions.append(ext)
c368d904
RD
1043
1044
1045
926bb76c
RD
1046#----------------------------------------------------------------------
1047# Define the IEWIN extension module (experimental)
1048#----------------------------------------------------------------------
1049
1e4a197e 1050if BUILD_IEWIN:
cfe766c3 1051 msg('Preparing IEWIN...')
926bb76c
RD
1052 location = 'contrib/iewin'
1053
1054 swig_files = ['iewin.i', ]
1055
1056 swig_sources = run_swig(swig_files, location, '', PKGDIR,
10ef30eb 1057 USE_SWIG, swig_force, swig_args, swig_deps)
926bb76c
RD
1058
1059
de7b7fe6 1060 ext = Extension('_iewin', ['%s/IEHtmlWin.cpp' % location,
c731eb47 1061 '%s/wxactivex.cpp' % location,
926bb76c
RD
1062 ] + swig_sources,
1063
4c417214 1064 include_dirs = includes + CONTRIBS_INC,
926bb76c
RD
1065 define_macros = defines,
1066
1067 library_dirs = libdirs,
1068 libraries = libs,
1069
1070 extra_compile_args = cflags,
1071 extra_link_args = lflags,
1072 )
1073
1074 wxpExtensions.append(ext)
1075
1076
d56cebe7
RD
1077#----------------------------------------------------------------------
1078# Define the XRC extension module
1079#----------------------------------------------------------------------
1080
1e4a197e 1081if BUILD_XRC:
cfe766c3 1082 msg('Preparing XRC...')
d56cebe7 1083 location = 'contrib/xrc'
d56cebe7 1084
d14a1e28
RD
1085 swig_sources = run_swig(['xrc.i'], location, '', PKGDIR,
1086 USE_SWIG, swig_force, swig_args, swig_deps +
1087 [ '%s/_xrc_rename.i' % location,
1088 '%s/_xrc_ex.py' % location,
1089 '%s/_xmlres.i' % location,
1090 '%s/_xmlsub.i' % location,
1091 '%s/_xml.i' % location,
1092 '%s/_xmlhandler.i' % location,
1093 ])
1094
1095 ext = Extension('_xrc',
3ef86e32 1096 swig_sources,
1fded56b 1097
4c417214 1098 include_dirs = includes + CONTRIBS_INC,
d56cebe7
RD
1099 define_macros = defines,
1100
1101 library_dirs = libdirs,
3ef86e32 1102 libraries = libs + makeLibName('xrc'),
d56cebe7
RD
1103
1104 extra_compile_args = cflags,
1105 extra_link_args = lflags,
1106 )
1107
1108 wxpExtensions.append(ext)
1109
1110
1111
ebf4302c
RD
1112#----------------------------------------------------------------------
1113# Define the GIZMOS extension module
1114#----------------------------------------------------------------------
1115
1e4a197e 1116if BUILD_GIZMOS:
ebf4302c
RD
1117 msg('Preparing GIZMOS...')
1118 location = 'contrib/gizmos'
ebf4302c 1119
a32360e0 1120 swig_sources = run_swig(['gizmos.i'], location, GENDIR, PKGDIR,
10ef30eb 1121 USE_SWIG, swig_force, swig_args, swig_deps)
ebf4302c 1122
d14a1e28 1123 ext = Extension('_gizmos',
d84a9306 1124 [ '%s/treelistctrl.cpp' % location ] + swig_sources,
ebf4302c 1125
4c417214 1126 include_dirs = includes + [ location ] + CONTRIBS_INC,
ebf4302c
RD
1127 define_macros = defines,
1128
1129 library_dirs = libdirs,
3ef86e32 1130 libraries = libs + makeLibName('gizmos'),
ebf4302c
RD
1131
1132 extra_compile_args = cflags,
1133 extra_link_args = lflags,
1134 )
1135
1136 wxpExtensions.append(ext)
1137
1138
1139
4a61305d
RD
1140#----------------------------------------------------------------------
1141# Define the DLLWIDGET extension module
1142#----------------------------------------------------------------------
1143
1e4a197e 1144if BUILD_DLLWIDGET:
4a61305d
RD
1145 msg('Preparing DLLWIDGET...')
1146 location = 'contrib/dllwidget'
1147 swig_files = ['dllwidget_.i']
1148
1149 swig_sources = run_swig(swig_files, location, '', PKGDIR,
10ef30eb 1150 USE_SWIG, swig_force, swig_args, swig_deps)
4a61305d
RD
1151
1152 # copy a contrib project specific py module to the main package dir
1153 copy_file(opj(location, 'dllwidget.py'), PKGDIR, update=1, verbose=0)
1154
1155 ext = Extension('dllwidget_c', [
1156 '%s/dllwidget.cpp' % location,
1157 ] + swig_sources,
1158
4c417214 1159 include_dirs = includes + CONTRIBS_INC,
4a61305d
RD
1160 define_macros = defines,
1161
1162 library_dirs = libdirs,
1163 libraries = libs,
1164
1165 extra_compile_args = cflags,
1166 extra_link_args = lflags,
1167 )
1168
1169 wxpExtensions.append(ext)
1170
1171
1e4a197e
RD
1172
1173
1174#----------------------------------------------------------------------
1175# Tools and scripts
1176#----------------------------------------------------------------------
8916d007 1177
2eb31f8b
RD
1178if NO_SCRIPTS:
1179 SCRIPTS = None
1180else:
1e4a197e
RD
1181 SCRIPTS = [opj('scripts/helpviewer'),
1182 opj('scripts/img2png'),
2eb31f8b
RD
1183 opj('scripts/img2xpm'),
1184 opj('scripts/img2py'),
1185 opj('scripts/xrced'),
1186 opj('scripts/pyshell'),
1187 opj('scripts/pycrust'),
1fded56b
RD
1188 opj('scripts/pywrap'),
1189 opj('scripts/pywrap'),
1190 opj('scripts/pyalacarte'),
1191 opj('scripts/pyalamode'),
2eb31f8b 1192 ]
4a61305d 1193
926bb76c 1194
c2079460
RD
1195DATA_FILES += find_data_files('wx/tools/XRCed', '*.txt', '*.xrc')
1196DATA_FILES += find_data_files('wx/py', '*.txt', '*.ico', '*.css', '*.html')
1fded56b 1197DATA_FILES += find_data_files('wx', '*.txt', '*.css', '*.html')
1e4a197e
RD
1198
1199
c368d904
RD
1200#----------------------------------------------------------------------
1201# Do the Setup/Build/Install/Whatever
1202#----------------------------------------------------------------------
1203
1b62f00d 1204if __name__ == "__main__":
1e4a197e 1205 if not PREP_ONLY:
d14a1e28 1206 setup(name = 'wxPython',
1b62f00d
RD
1207 version = VERSION,
1208 description = DESCRIPTION,
1209 long_description = LONG_DESCRIPTION,
1210 author = AUTHOR,
1211 author_email = AUTHOR_EMAIL,
1212 url = URL,
851d4ac7 1213 download_url = DOWNLOAD_URL,
e2e02194 1214 license = LICENSE,
851d4ac7
RD
1215 platforms = PLATFORMS,
1216 classifiers = filter(None, CLASSIFIERS.split("\n")),
1217 keywords = KEYWORDS,
d14a1e28 1218
1fded56b
RD
1219 packages = ['wxPython',
1220 'wxPython.lib',
1221 'wxPython.lib.colourchooser',
1222 'wxPython.lib.editor',
1223 'wxPython.lib.mixins',
1fded56b 1224 'wxPython.tools',
1fded56b
RD
1225
1226 'wx',
1227 'wx.lib',
1228 'wx.lib.colourchooser',
1229 'wx.lib.editor',
1230 'wx.lib.mixins',
1231 'wx.py',
1232 'wx.tools',
1233 'wx.tools.XRCed',
1b62f00d
RD
1234 ],
1235
1236 ext_package = PKGDIR,
1237 ext_modules = wxpExtensions,
8916d007 1238
f6f98ecc 1239 options = { 'build' : { 'build_base' : BUILD_BASE }},
a541c325 1240
b817523b 1241 scripts = SCRIPTS,
c368d904 1242
1e4a197e
RD
1243 cmdclass = { 'install_data': smart_install_data},
1244 data_files = DATA_FILES,
8916d007 1245
1b62f00d 1246 )
c368d904 1247
c368d904 1248
c368d904
RD
1249#----------------------------------------------------------------------
1250#----------------------------------------------------------------------