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