source: setup.py @ 7593:2caef7952cfd

Revision 7593:2caef7952cfd, 45.4 KB checked in by Burcin Erocal <burcin@…>, 6 years ago (diff)

Merge with 2.8.13.

Line 
1#!/usr/bin/env python
2DEVEL = False
3
4import distutils.sysconfig, os, sys
5# from distutils.core import setup, Extension
6
7# TODO: Is this what we want here?
8from distutils.core import setup
9from distutils.extension import Extension
10from Cython.Distutils import build_ext
11
12
13
14## Choose cblas library -- note -- make sure to update sage/misc/cython.py
15## if you change this!!
16if os.environ.has_key('SAGE_BLAS'):
17    BLAS=os.environ['SAGE_BLAS']
18elif os.path.exists('/usr/lib/libcblas.dylib') or \
19     os.path.exists('/usr/lib/libcblas.so'):
20    BLAS='cblas'
21elif os.path.exists('/usr/lib/libblas.dll.a'):   
22    BLAS='gslcblas'
23else:
24    # This is very slow  (?), but *guaranteed* to be available.
25    BLAS='gslcblas' 
26
27if len(sys.argv) > 1 and sys.argv[1] == "sdist":
28    sdist = True
29else:
30    sdist = False
31
32NO_WARN = True
33
34if not os.environ.has_key('SAGE_ROOT'):
35    print "    ERROR: The environment variable SAGE_ROOT must be defined."
36    sys.exit(1)
37else:
38    SAGE_ROOT  = os.environ['SAGE_ROOT']
39    SAGE_LOCAL = SAGE_ROOT + '/local/'
40    SAGE_DEVEL = SAGE_ROOT + '/devel/'
41
42
43if not os.environ.has_key('SAGE_VERSION'):
44    SAGE_VERSION=0
45else:
46    SAGE_VERSION = os.environ['SAGE_VERSION']
47
48SITE_PACKAGES = '%s/lib/python/site-packages/'%SAGE_LOCAL
49if not os.path.exists(SITE_PACKAGES):
50    SITE_PACKAGES = '%s/lib/python2.5/site-packages/'%SAGE_LOCAL
51    if not os.path.exists(SITE_PACKAGES):
52        SITE_PACKAGES = '%s/lib/python2.4/site-packages/'%SAGE_LOCAL
53        if not os.path.exists(SITE_PACKAGES):       
54            raise RuntimeError, "Unable to find site-packages directory (see setup.py file in sage python code)."
55
56SITE_PACKAGES_REL=SITE_PACKAGES[len(SAGE_LOCAL)+5:]
57       
58if not os.path.exists('build/sage'):
59    os.makedirs('build/sage')
60
61sage_link = SITE_PACKAGES + '/sage'
62if not os.path.islink(sage_link) or not os.path.exists(sage_link):
63    os.system('rm -rf "%s"'%sage_link)
64    os.system('cd %s; ln -sf ../../../../devel/sage/build/sage .'%SITE_PACKAGES)
65
66
67def is_older(file1, file2):
68    """
69    Return True if either file2 does not exist or is older than file1.
70
71    If file1 does not exist, always return False.
72    """
73    if not os.path.exists(file1):
74        return False
75    if not os.path.exists(file2):
76        return True
77    if os.path.getmtime(file2) < os.path.getmtime(file1):
78        return True
79    return False
80
81include_dirs = ['%s/include'%SAGE_LOCAL, \
82                '%s/include/csage'%SAGE_LOCAL, \
83                ## this is included, but doesn't actually exist
84                ## '%s/include/python'%SAGE_LOCAL, \
85                '%s/sage/sage/ext'%SAGE_DEVEL]
86
87#####################################################   
88       
89hanke = Extension(name = "sage.libs.hanke.hanke",
90              sources = ["sage/libs/hanke/hanke.pyx",
91                         "sage/libs/hanke/wrap.cc",
92                         "sage/libs/hanke/Matrix_mpz/Matrix_mpz.cc",
93                         "sage/libs/hanke/Matrix_mpz/CountLocal2.cc",
94                         "sage/libs/hanke/Matrix_mpz/CountLocal.cc",
95                         "sage/libs/hanke/Matrix_mpz/Local_Constants.cc",
96                         "sage/libs/hanke/Matrix_mpz/Local_Density_Front.cc",
97                         "sage/libs/hanke/Matrix_mpz/Local_Density_Congruence.cc",
98                         "sage/libs/hanke/Matrix_mpz/Local_Normal.cc",
99                         "sage/libs/hanke/Matrix_mpz/Local_Invariants.cc",
100                         "sage/libs/hanke/Utilities/string_utils.cc",
101                         "sage/libs/hanke/GMP_class_extras/mpz_class_extras.cc",
102                         "sage/libs/hanke/GMP_class_extras/vectors.cc" ],
103                   libraries = ["gmp", "gmpxx", "stdc++"])
104
105fmpz_poly = Extension('sage.libs.flint.fmpz_poly',
106                 sources = ["sage/libs/flint/fmpz_poly.pyx"],
107                 libraries = ["csage", "flint", "gmp", "gmpxx", "m", "stdc++"],
108                 include_dirs=[SAGE_ROOT+'/local/include/FLINT/'],
109                 extra_compile_args=["-std=c99"]
110                 )
111
112# NOTE: It is *very* important (for cygwin) that csage be the first library
113# listed below for ntl.
114ntl_ZZ = Extension('sage.libs.ntl.ntl_ZZ',
115                 sources = ["sage/libs/ntl/ntl_ZZ.pyx"],
116                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
117                 language='c++')
118
119ntl_ZZX = Extension('sage.libs.ntl.ntl_ZZX',
120                 sources = ["sage/libs/ntl/ntl_ZZX.pyx"],
121                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
122                 language='c++')
123
124ntl_ZZ_pContext = Extension('sage.libs.ntl.ntl_ZZ_pContext',
125                 sources = ["sage/libs/ntl/ntl_ZZ_pContext.pyx"],
126                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
127                 language='c++')
128
129ntl_ZZ_p = Extension('sage.libs.ntl.ntl_ZZ_p',
130                 sources = ["sage/libs/ntl/ntl_ZZ_p.pyx"],
131                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
132                 language='c++')
133
134ntl_ZZ_pX = Extension('sage.libs.ntl.ntl_ZZ_pX',
135                 sources = ["sage/libs/ntl/ntl_ZZ_pX.pyx"],
136                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
137                 language='c++')
138
139ntl_ZZ_pEContext = Extension('sage.libs.ntl.ntl_ZZ_pEContext',
140                 sources = ["sage/libs/ntl/ntl_ZZ_pEContext.pyx"],
141                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
142                 language='c++')
143
144ntl_ZZ_pE = Extension('sage.libs.ntl.ntl_ZZ_pE',
145                 sources = ["sage/libs/ntl/ntl_ZZ_pE.pyx"],
146                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
147                 language='c++')
148
149ntl_ZZ_pEX = Extension('sage.libs.ntl.ntl_ZZ_pEX',
150                 sources = ["sage/libs/ntl/ntl_ZZ_pEX.pyx"],
151                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
152                 language='c++')
153
154ntl_lzz_pContext = Extension('sage.libs.ntl.ntl_lzz_pContext',
155                 sources = ["sage/libs/ntl/ntl_lzz_pContext.pyx"],
156                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
157                 language='c++')
158
159ntl_lzz_p = Extension('sage.libs.ntl.ntl_lzz_p',
160                 sources = ["sage/libs/ntl/ntl_lzz_p.pyx"],
161                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
162                 language='c++')
163
164ntl_lzz_pX = Extension('sage.libs.ntl.ntl_lzz_pX',
165                 sources = ["sage/libs/ntl/ntl_lzz_pX.pyx"],
166                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
167                 language='c++')
168
169ntl_GF2 = Extension('sage.libs.ntl.ntl_GF2',
170                 sources = ["sage/libs/ntl/ntl_GF2.pyx"],
171                 libraries = ["csage", "ntl", "stdc++"],
172                 language='c++')
173
174ntl_GF2X = Extension('sage.libs.ntl.ntl_GF2X',
175                 sources = ["sage/libs/ntl/ntl_GF2X.pyx"],
176                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
177                 language='c++')
178
179ntl_GF2EContext = Extension('sage.libs.ntl.ntl_GF2EContext',
180                 sources = ["sage/libs/ntl/ntl_GF2EContext.pyx"],
181                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
182                 language='c++')
183
184ntl_GF2E = Extension('sage.libs.ntl.ntl_GF2E',
185                 sources = ["sage/libs/ntl/ntl_GF2E.pyx"],
186                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
187                 language='c++')
188
189ntl_GF2EX = Extension('sage.libs.ntl.ntl_GF2EX',
190                 sources = ["sage/libs/ntl/ntl_GF2EX.pyx"],
191                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
192                 language='c++')
193
194ntl_mat_ZZ = Extension('sage.libs.ntl.ntl_mat_ZZ',
195                 sources = ["sage/libs/ntl/ntl_mat_ZZ.pyx"],
196                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
197                 language='c++')
198
199ntl_mat_GF2E = Extension('sage.libs.ntl.ntl_mat_GF2E',
200                 sources = ["sage/libs/ntl/ntl_mat_GF2E.pyx"],
201                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
202                 language='c++')
203
204mwrank =  Extension("sage.libs.mwrank.mwrank",
205                    sources = ["sage/libs/mwrank/mwrank.pyx",
206                         "sage/libs/mwrank/wrap.cc"],
207                    define_macros = [("NTL_ALL",None)],
208                    libraries = ["mwrank", "ntl", "gmp", "gmpxx", "stdc++", "m", "pari"])
209
210pari = Extension('sage.libs.pari.gen',
211                 sources = ["sage/libs/pari/gen.pyx"],
212                 libraries = ['pari', 'gmp'])
213
214cremona_mat = Extension('sage.libs.cremona.mat',
215                       sources = ["sage/libs/cremona/mat.pyx"],
216                       libraries = ['g0nntl', 'jcntl', 'gmpxx', 'ntl', 'gmp', 'm', 'stdc++', ],
217                       language='c++',
218                       define_macros = [("NTL_ALL",None)]
219                       )
220
221cremona_homspace = Extension('sage.libs.cremona.homspace',
222                       sources = ["sage/libs/cremona/homspace.pyx"],
223                       libraries = ['g0nntl', 'jcntl', 'gmpxx', 'ntl', 'gmp', 'm', 'stdc++', 'pari', 'curvesntl'],
224                       language='c++',
225                       define_macros = [("NTL_ALL",None)]
226                       )
227
228
229finite_field_givaro = Extension('sage.rings.finite_field_givaro',
230                       sources = ["sage/rings/finite_field_givaro.pyx"],
231                       libraries = ['givaro', 'gmpxx', 'gmp', 'm', 'stdc++', ],   # this order is needed to compile under windows.
232                       language='c++'
233                       )
234finite_field_ntl_gf2e = Extension('sage.rings.finite_field_ntl_gf2e',
235                         sources = ['sage/rings/finite_field_ntl_gf2e.pyx'],
236                         libraries = ['ntl', 'gmp'],
237                         language = 'c++')
238
239qd = Extension('sage.rings.real_rqdf',
240                       sources = ["sage/rings/real_rqdf.pyx"],
241                       libraries = ['qd', 'm', 'stdc++','gmp','mpfr' ],
242                       language='c++'
243                       )
244
245matrix = Extension('sage.matrix.matrix', ['sage/matrix/matrix.pyx'])
246
247matrix_action = Extension('sage.matrix.action', ['sage/matrix/action.pyx'])
248
249matrix_misc = Extension('sage.matrix.misc', ['sage/matrix/misc.pyx'],
250                        libraries=['gmp'])
251
252matrix_dense = Extension('sage.matrix.matrix_dense',
253                         ['sage/matrix/matrix_dense.pyx'])
254             
255matrix_sparse = Extension('sage.matrix.matrix_sparse',
256                          ['sage/matrix/matrix_sparse.pyx'])
257
258matrix_generic_dense = Extension('sage.matrix.matrix_generic_dense',
259                                 ['sage/matrix/matrix_generic_dense.pyx'])
260             
261matrix_generic_sparse = Extension('sage.matrix.matrix_generic_sparse',
262                                  ['sage/matrix/matrix_generic_sparse.pyx'])
263
264matrix_domain_dense = Extension('sage.matrix.matrix_domain_dense',
265                                ['sage/matrix/matrix_domain_dense.pyx'])
266
267matrix_domain_sparse = Extension('sage.matrix.matrix_domain_sparse',
268              ['sage/matrix/matrix_domain_sparse.pyx'])
269             
270matrix_pid_dense = Extension('sage.matrix.matrix_pid_dense',
271                       ['sage/matrix/matrix_pid_dense.pyx'])
272             
273matrix_pid_sparse = Extension('sage.matrix.matrix_pid_sparse',
274                       ['sage/matrix/matrix_pid_sparse.pyx'])
275
276
277matrix_integer_2x2 = Extension('sage.matrix.matrix_integer_2x2',
278                                 ['sage/matrix/matrix_integer_2x2.pyx'],
279                                 libraries = ['gmp'])
280
281linbox = Extension('sage.libs.linbox.linbox',
282                   ['sage/libs/linbox/linbox.pyx'],
283                   # For this to work on cygwin, linboxwrap *must* be before ntl.
284                   libraries = ['linboxwrap', 'ntl', 'linbox', 'gmp', 'gmpxx', 'stdc++', 'givaro', BLAS],
285                   language = 'c++')
286
287libsingular = Extension('sage.libs.singular.singular',
288                        sources = ['sage/libs/singular/singular.pyx'],
289                        libraries = ['gmp', 'm', 'readline', 'singular', 'singfac', 'singcf', 'omalloc', 'givaro', 'gmpxx'],
290                        language="c++",
291                        include_dirs=[SAGE_ROOT +'/local/include/singular']
292                        )
293
294fplll = Extension('sage.libs.fplll.fplll',
295                        sources = ['sage/libs/fplll/fplll.pyx'],
296                        libraries = ['gmp', 'mpfr', 'stdc++', 'fplll'],
297                        language="c++",
298                        include_dirs=[SAGE_ROOT +'/local/include/fplll']
299                        )
300
301
302matrix_modn_dense = Extension('sage.matrix.matrix_modn_dense',
303                              ['sage/matrix/matrix_modn_dense.pyx'],
304                              libraries = ['gmp'])
305
306matrix_mod2_dense = Extension('sage.matrix.matrix_mod2_dense',
307                              ['sage/matrix/matrix_mod2_dense.pyx',
308                               'sage/libs/m4ri/packedmatrix.c',
309                               'sage/libs/m4ri/matrix.c',
310                               'sage/libs/m4ri/brilliantrussian.c',
311                               'sage/libs/m4ri/grayflex.c',],
312                              libraries = ['gmp'])
313
314matrix_modn_sparse = Extension('sage.matrix.matrix_modn_sparse',
315                               ['sage/matrix/matrix_modn_sparse.pyx'])
316   
317matrix_field_dense = Extension('sage.matrix.matrix_field_dense',
318                       ['sage/matrix/matrix_field_dense.pyx'])
319   
320matrix_field_sparse = Extension('sage.matrix.matrix_field_sparse',
321                       ['sage/matrix/matrix_field_sparse.pyx'])
322
323matrix_rational_dense = Extension('sage.matrix.matrix_rational_dense',
324                                  ['sage/matrix/matrix_rational_dense.pyx'],
325                                 libraries = ['gmp'])
326
327matrix_integer_sparse = Extension('sage.matrix.matrix_integer_sparse',
328                                  ['sage/matrix/matrix_integer_sparse.pyx'],
329                                  libraries = ['gmp'])
330
331matrix_rational_sparse = Extension('sage.matrix.matrix_rational_sparse',
332                                  ['sage/matrix/matrix_rational_sparse.pyx'],
333                                 libraries = ['gmp'])
334
335# TODO -- change to use BLAS at some point.
336matrix_integer_dense = Extension('sage.matrix.matrix_integer_dense',
337                                 ['sage/matrix/matrix_integer_dense.pyx'],
338                                  libraries = ['iml', 'gmp', 'm', BLAS])  # order matters for cygwin!!
339
340matrix_real_double_dense=Extension('sage.matrix.matrix_real_double_dense',
341   ['sage/matrix/matrix_real_double_dense.pyx'],libraries=['gsl',BLAS],
342   define_macros=[('GSL_DISABLE_DEPRECATED','1')],include_dirs=[SAGE_ROOT+'/local/lib/python2.5/site-packages/numpy/core/include/numpy'])
343
344matrix_complex_double_dense=Extension('sage.matrix.matrix_complex_double_dense',
345   ['sage/matrix/matrix_complex_double_dense.pyx'],libraries=['gsl',BLAS],
346   define_macros=[('GSL_DISABLE_DEPRECATED','1')],include_dirs=[SAGE_ROOT+'/local/lib/python2.5/site-packages/numpy/core/include/numpy'])
347
348
349solve = Extension('sage.matrix.solve',['sage/matrix/solve.pyx'],libraries = ['gsl',BLAS],define_macros = 
350   [('GSL_DISABLE_DEPRECATED','1')])
351
352matrix_cyclo_dense = Extension('sage.matrix.matrix_cyclo_dense',
353                               ['sage/matrix/matrix_cyclo_dense.pyx'])
354
355matrix_rational_sparse = Extension('sage.matrix.matrix_rational_sparse',
356                                   ['sage/matrix/matrix_rational_sparse.pyx'],
357                                   libraries = ['gmp'])
358
359matrix_cyclo_sparse = Extension('sage.matrix.matrix_cyclo_sparse',
360                                   ['sage/matrix/matrix_cyclo_sparse.pyx'])
361
362
363matrix_mpolynomial_dense = Extension('sage.matrix.matrix_mpolynomial_dense',
364                                     ['sage/matrix/matrix_mpolynomial_dense.pyx'],
365                                     libraries = ['gmp', 'm', 'readline', 'singular', 'singcf', 'singfac', 'omalloc', 'givaro', 'gmpxx'],
366                                     language="c++",
367                                     include_dirs=[SAGE_ROOT +'/local/include/singular'])
368
369#matrix_padic_capped_relative_dense = Extension('sage.matrix.padics.matrix_padic_capped_relative_dense',
370#                                               ['sage/matrix/padics/matrix_padic_capped_relative_dense.pyx'])
371
372complex_number = Extension('sage.rings.complex_number',
373                            ['sage/rings/complex_number.pyx'],
374                            libraries = ['mpfr', 'gmp'])
375
376free_module_element = Extension('sage.modules.free_module_element',
377                                ['sage/modules/free_module_element.pyx'])
378
379################ GSL wrapping ######################
380gsl_probability=Extension('sage.gsl.probability_distribution',['sage/gsl/probability_distribution.pyx'],libraries=['gsl',BLAS],define_macros=[('GSL_DISABLE_DEPRECATED','1')])
381gsl_integration=Extension('sage.gsl.integration',['sage/gsl/integration.pyx'],define_macros=[('GSL_DISABLE_DEPRECATED','1')], libraries=['gsl',BLAS])
382
383gsl_ode = Extension('sage.gsl.ode',['sage/gsl/ode.pyx'],libraries=['gsl',BLAS],define_macros=[('GSL_DISABLE_DEPRECATED','1')])
384
385gsl_fft = Extension('sage.gsl.fft',
386                ['sage/gsl/fft.pyx'],
387                libraries = ['gsl', BLAS],define_macros=[('GSL_DISABLE_DEPRECATED','1')])
388
389gsl_interpolation = Extension('sage.gsl.interpolation',
390                ['sage/gsl/interpolation.pyx'],
391                libraries = ['gsl', BLAS], 
392define_macros=[('GSL_DISABLE_DEPRECATED','1')])
393
394gsl_callback = Extension('sage.gsl.callback',
395                ['sage/gsl/callback.pyx'],
396                libraries = ['gsl', BLAS]
397,define_macros=[('GSL_DISABLE_DEPRECATED','1')])
398
399real_double = Extension('sage.rings.real_double',
400                ['sage/rings/real_double.pyx'],
401                libraries = ['gsl', 'gmp', BLAS],define_macros=[('GSL_DISABLE_DEPRECATED','1')])
402
403complex_double = Extension('sage.rings.complex_double',
404                           ['sage/rings/complex_double.pyx'],
405                           libraries = ['gsl', BLAS, 'pari', 'gmp'])
406
407real_double_vector = Extension('sage.modules.real_double_vector',['sage/modules/real_double_vector.pyx'],
408                              libraries = ['gsl',BLAS,'pari','gmp'],define_macros = [('GSL_DISABLE_DEPRECAED','1')],include_dirs=[SAGE_ROOT+'/local/lib/python2.5/site-packages/numpy/core/include/numpy'])
409
410complex_double_vector = Extension('sage.modules.complex_double_vector',['sage/modules/complex_double_vector.pyx'],
411                           libraries = ['gsl', BLAS, 'pari', 'gmp'],define_macros=[('GSL_DISABLE_DEPRECATED','1')],include_dirs=[SAGE_ROOT+'/local/lib/python2.5/site-packages/numpy/core/include/numpy'])
412
413
414vector_integer_dense = Extension('sage.modules.vector_integer_dense',
415                                 ['sage/modules/vector_integer_dense.pyx'],
416                                 libraries = ['gmp'])
417
418vector_modn_dense = Extension('sage.modules.vector_modn_dense',
419                                 ['sage/modules/vector_modn_dense.pyx'])
420
421vector_rational_sparse = Extension('sage.modules.vector_rational_sparse',
422                                 ['sage/modules/vector_rational_sparse.pyx'],
423                                 libraries = ['gmp'])
424
425vector_rational_dense = Extension('sage.modules.vector_rational_dense',
426                                 ['sage/modules/vector_rational_dense.pyx'],
427                                 libraries = ['gmp'])
428
429gsl_array = Extension('sage.gsl.gsl_array',['sage/gsl/gsl_array.pyx'],
430                libraries=['gsl',BLAS],define_macros=[('GSL_DISABLE_DEPRECATED','1')])
431
432gsl_ode = Extension('sage.gsl.ode',['sage/gsl/ode.pyx'],libraries=['gsl',BLAS],
433                define_macros=[('GSL_DISABLE_DEPRECATED','1')])
434
435
436dwt = Extension('sage.gsl.dwt',['sage/gsl/dwt.pyx'],
437                 libraries=['gsl',BLAS],
438                 define_macros=[('GSL_DISABLE_DEPRECATED','1')])
439
440
441sagex_ds = Extension('sage.misc.sagex_ds', ['sage/misc/sagex_ds.pyx'])
442
443symmetrica = Extension('sage.libs.symmetrica.symmetrica',
444                       sources = ["sage/libs/symmetrica/%s"%s for s in \
445                                  ["symmetrica.pyx"]],
446                       include_dirs=['/usr/include/malloc/'],
447                       libraries = ["symmetrica"])
448
449
450#####################################################
451
452ext_modules = [ \
453    free_module_element, 
454   
455    complex_double_vector,
456    real_double_vector,
457   
458    vector_integer_dense,
459    vector_modn_dense,
460    vector_rational_dense,
461
462    #vector_rational_sparse,
463
464    pari, 
465
466    mwrank, 
467
468    fmpz_poly,
469     
470    ntl_ZZ,
471    ntl_ZZX,
472    ntl_ZZ_pContext,
473    ntl_ZZ_p,
474    ntl_ZZ_pX,
475    ntl_ZZ_pEContext,
476    ntl_ZZ_pE,
477    ntl_ZZ_pEX,
478    ntl_lzz_pContext,   
479    ntl_lzz_p,
480    ntl_lzz_pX,
481    ntl_GF2,
482    ntl_GF2X,
483    ntl_GF2EContext,
484    ntl_GF2E,
485    ntl_GF2EX,
486    ntl_mat_ZZ,
487    ntl_mat_GF2E,
488
489    matrix,
490   
491    matrix_action,
492    matrix_misc,
493
494    matrix_dense,
495    matrix_generic_dense,
496
497    matrix_sparse,
498    matrix_generic_sparse,
499
500##     matrix_domain_dense,
501##     matrix_domain_sparse,
502
503##     matrix_pid_dense,
504##     matrix_pid_sparse,
505
506##     matrix_field_dense,
507##     matrix_field_sparse,
508
509     matrix_integer_dense,
510     matrix_rational_dense,
511     matrix_rational_sparse,
512     matrix_integer_2x2,
513     matrix_integer_sparse,   
514     matrix_real_double_dense,
515     matrix_complex_double_dense,
516#     matrix_padic_capped_relative_dense,
517     solve,
518     linbox,
519     matrix_modn_dense,
520     matrix_modn_sparse,
521     matrix_mod2_dense,
522     matrix_mpolynomial_dense, \
523
524     cremona_mat, \
525     cremona_homspace, \
526
527     finite_field_givaro, \
528     finite_field_ntl_gf2e, \
529
530     libsingular, \
531
532     fplll, \
533
534##     matrix_rational_sparse,
535
536##     matrix_cyclo_dense,
537##     matrix_cyclo_sparse,
538
539   
540    dwt,
541
542    gsl_array,
543    gsl_ode,
544    gsl_fft,
545    gsl_interpolation,
546    gsl_callback,
547    gsl_probability,
548    gsl_integration,
549    real_double,
550    complex_double,
551    qd,   
552
553    complex_number,
554
555    sagex_ds,
556
557    symmetrica,
558
559    Extension('sage.media.channels',
560              sources = ['sage/media/channels.pyx']), \
561   
562    Extension('sage.ext.sig',
563              sources = ['sage/ext/sig.pyx']), \
564
565    Extension('sage.ext.arith',
566              sources = ['sage/ext/arith.pyx']), \
567
568    Extension('sage.ext.arith_gmp',
569              sources = ['sage/ext/arith_gmp.pyx'],
570              libraries=['gmp']), \
571
572    Extension('sage.ext.multi_modular',
573              sources = ['sage/ext/multi_modular.pyx'],
574              libraries=['gmp']), \
575
576    Extension('sage.structure.coerce',
577              sources = ['sage/structure/coerce.pyx']), \
578
579    Extension('sage.structure.coerce_dict',
580              sources = ['sage/structure/coerce_dict.pyx']), \
581
582    Extension('sage.modular.congroup_pyx',
583              sources = ['sage/modular/congroup_pyx.pyx', \
584                         'sage/ext/arith.pyx']), \
585
586    Extension('sage.structure.element',
587              sources = ['sage/structure/element.pyx']), \
588
589    Extension('sage.categories.morphism',
590              sources = ['sage/categories/morphism.pyx']), \
591             
592    Extension('sage.categories.functor',
593              sources = ['sage/categories/functor.pyx']), \
594             
595    Extension('sage.categories.action',
596              sources = ['sage/categories/action.pyx']), \
597             
598    Extension('sage.modules.module',
599              sources = ['sage/modules/module.pyx']), \
600
601    Extension('sage.rings.ring',
602              sources = ['sage/rings/ring.pyx']), \
603
604    Extension('sage.rings.polynomial.cyclotomic',
605              sources = ['sage/rings/polynomial/cyclotomic.pyx']
606              ), \
607
608    Extension('sage.rings.polynomial.multi_polynomial',
609              sources = ['sage/rings/polynomial/multi_polynomial.pyx']
610              ), \
611
612    Extension('sage.rings.polynomial.multi_polynomial_ring_generic',
613              sources = ['sage/rings/polynomial/multi_polynomial_ring_generic.pyx']
614              ), \
615
616    Extension('sage.rings.polynomial.multi_polynomial_libsingular',
617              sources = ['sage/rings/polynomial/multi_polynomial_libsingular.pyx'],
618              libraries = ['gmp', 'm', 'readline', 'singular', 'singcf', 'singfac', 'omalloc', 'givaro', 'gmpxx'],
619              language="c++",
620              include_dirs=[SAGE_ROOT +'/local/include/singular']), \
621
622    Extension('sage.rings.polynomial.multi_polynomial_ideal_libsingular',
623              sources = ['sage/rings/polynomial/multi_polynomial_ideal_libsingular.pyx'],
624              libraries = ['gmp', 'm', 'readline', 'singular', 'singcf', 'singfac', 'omalloc', 'givaro', 'gmpxx'],
625              language="c++",
626              include_dirs=[SAGE_ROOT +'/local/include/singular']), \
627
628    Extension('sage.groups.group',
629              sources = ['sage/groups/group.pyx']), \
630
631    Extension('sage.structure.sage_object',
632              sources = ['sage/structure/sage_object.pyx'], libraries=['ntl']), \
633
634    Extension('sage.structure.parent',
635              sources = ['sage/structure/parent.pyx']), \
636
637    Extension('sage.structure.parent_base',
638              sources = ['sage/structure/parent_base.pyx']), \
639   
640    Extension('sage.structure.parent_gens',
641              sources = ['sage/structure/parent_gens.pyx']), \
642
643    Extension('sage.ext.interactive_constructors_c',
644              sources = ['sage/ext/interactive_constructors_c.pyx']), \
645
646    Extension('sage.misc.cython_c',
647              sources = ['sage/misc/cython_c.pyx']), \
648
649    Extension('sage.misc.misc_c',
650              sources = ['sage/misc/misc_c.pyx']), \
651
652    Extension('sage.misc.refcount',
653              sources = ['sage/misc/refcount.pyx']), \
654
655    Extension('sage.rings.real_mpfr',
656              sources = ['sage/rings/real_mpfr.pyx', 'sage/rings/ring.pyx'],
657              libraries = ['mpfr', 'pari', 'gmp']), \
658
659    Extension('sage.rings.real_mpfi',
660              sources = ['sage/rings/real_mpfi.pyx'],
661              libraries = ['mpfi', 'mpfr', 'gmp']), \
662
663    Extension('sage.rings.residue_field',
664              sources = ['sage/rings/residue_field.pyx']), \
665
666    Extension('sage.rings.integer',
667              sources = ['sage/ext/arith.pyx', 'sage/rings/integer.pyx'],
668              libraries=['ntl', 'gmp']), \
669
670    Extension('sage.rings.integer_ring',
671              sources = ['sage/rings/integer_ring.pyx'],
672              libraries=['ntl', 'gmp']), \
673
674    Extension('sage.rings.padics.pow_computer',
675              sources = ['sage/rings/padics/pow_computer.pyx'],
676              libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
677              language='c++'),
678    Extension('sage.rings.padics.local_generic_element',
679              sources = ['sage/rings/padics/local_generic_element.pyx']),
680    Extension('sage.rings.padics.padic_generic_element',
681              sources = ['sage/rings/padics/padic_generic_element.pyx']),
682    Extension('sage.rings.padics.padic_base_generic_element',
683              sources = ['sage/rings/padics/padic_base_generic_element.pyx']),
684    Extension('sage.rings.padics.padic_fixed_mod_element',
685              sources = ['sage/rings/padics/padic_fixed_mod_element.pyx', \
686                         'sage/rings/padics/padic_generic_element.c'],
687              libraries=['gmp']),
688    Extension('sage.rings.padics.padic_capped_absolute_element',
689              sources = ['sage/rings/padics/padic_capped_absolute_element.pyx', \
690                         'sage/rings/padics/padic_generic_element.c'],
691              libraries=['gmp']),
692    Extension('sage.rings.padics.padic_capped_relative_element',
693              sources = ['sage/rings/padics/padic_capped_relative_element.pyx', \
694                         'sage/rings/padics/padic_generic_element.c'],
695              libraries=['gmp']),
696
697
698    Extension('sage.rings.memory', \
699              sources = ['sage/rings/memory.pyx'], \
700              libraries=['gmp','stdc++']), \
701
702    Extension('sage.rings.bernoulli_mod_p',
703              sources = ['sage/rings/bernoulli_mod_p.pyx', 'sage/ext/arith.pyx'],
704              libraries=['ntl','stdc++'],
705              language = 'c++',
706              include_dirs=['sage/libs/ntl/']), \
707
708    Extension('sage.schemes.hyperelliptic_curves.frobenius',
709                 sources = ['sage/schemes/hyperelliptic_curves/frobenius.pyx',
710                            'sage/schemes/hyperelliptic_curves/frobenius_cpp.cpp'],
711                 libraries = ['ntl', 'stdc++', 'gmp'],
712                 language = 'c++',
713                 include_dirs=['sage/libs/ntl/']), \
714
715    Extension('sage.rings.polynomial.polynomial_compiled',
716               sources = ['sage/rings/polynomial/polynomial_compiled.pyx']), \
717
718    Extension('sage.rings.polynomial.polynomial_element',
719              sources = ['sage/rings/polynomial/polynomial_element.pyx']), \
720
721    Extension('sage.rings.polynomial.polynomial_integer_dense_ntl',
722                 sources = ['sage/rings/polynomial/polynomial_integer_dense_ntl.pyx'],
723                 libraries = ['ntl', 'stdc++', 'gmp'],
724                 language = 'c++',
725                 include_dirs=['sage/libs/ntl/']), \
726
727    Extension('sage.rings.polynomial.polynomial_modn_dense_ntl',
728                 sources = ['sage/rings/polynomial/polynomial_modn_dense_ntl.pyx'],
729                 libraries = ['ntl', 'stdc++', 'gmp'],
730                 language = 'c++',
731                 include_dirs=['sage/libs/ntl/']), \
732
733    Extension('sage.rings.power_series_ring_element',
734              sources = ['sage/rings/power_series_ring_element.pyx']), \
735
736    Extension('sage.rings.power_series_poly',
737              sources = ['sage/rings/power_series_poly.pyx']), \
738
739    Extension('sage.rings.power_series_mpoly',
740              sources = ['sage/rings/power_series_mpoly.pyx']), \
741
742    Extension('sage.rings.laurent_series_ring_element',
743              sources = ['sage/rings/laurent_series_ring_element.pyx']), \
744
745    Extension('sage.rings.rational',
746              sources = ['sage/rings/rational.pyx',
747                         'sage/ext/arith.pyx', \
748                         'sage/rings/integer.pyx'],
749              libraries=['ntl', 'gmp']), \
750
751    Extension('sage.rings.sparse_poly', 
752              sources = ['sage/rings/sparse_poly.pyx'],
753              libraries=['gmp']), \
754
755    Extension('sage.rings.polynomial.polydict',
756              sources = ['sage/rings/polynomial/polydict.pyx']), \
757
758    Extension('sage.rings.polynomial.real_roots',
759              sources = ['sage/rings/polynomial/real_roots.pyx'],
760              libraries=['mpfr', 'qd']), \
761
762    Extension('sage.rings.number_field.number_field_element',
763              sources = ['sage/rings/number_field/number_field_element.pyx'],
764              libraries=['ntl','gmp'],
765              language = 'c++'), \
766
767    Extension('sage.rings.number_field.number_field_element_quadratic',
768              sources = ['sage/rings/number_field/number_field_element_quadratic.pyx'],
769              libraries=['gmp'],
770              language = 'c++'), \
771                    # Needs c++ because it has c++ members in class struct
772 
773    Extension('sage.rings.number_field.number_field_base',
774              sources = ['sage/rings/number_field/number_field_base.pyx']), \
775
776    Extension('sage.rings.morphism',
777              sources = ['sage/rings/morphism.pyx']),
778
779    Extension('sage.structure.wrapper_parent',
780              sources = ['sage/structure/wrapper_parent.pyx']), \
781
782    Extension('sage.misc.search',
783              ['sage/misc/search.pyx']), \
784
785    Extension('sage.misc.reset',
786              ['sage/misc/reset.pyx']), \
787
788    Extension('sage.calculus.var',
789              ['sage/calculus/var.pyx']), \
790
791    Extension('sage.modular.modsym.heilbronn',
792              ['sage/modular/modsym/heilbronn.pyx',
793               'sage/modular/modsym/p1list.pyx',
794               'sage/ext/arith.pyx'],
795              libraries = ['gmp', 'm']), \
796
797    Extension('sage.modular.modsym.p1list',
798              ['sage/modular/modsym/p1list.pyx',
799               'sage/ext/arith.pyx'],
800              libraries = ['gmp']), \
801
802    Extension('sage.structure.mutability',
803              ['sage/structure/mutability.pyx']
804              ), \
805
806    Extension('sage.matrix.matrix0',
807              ['sage/matrix/matrix0.pyx']
808              ), \
809
810    Extension('sage.matrix.matrix1',
811              ['sage/matrix/matrix1.pyx']
812              ), \
813
814    Extension('sage.matrix.matrix2',
815              ['sage/matrix/matrix2.pyx']
816              ), \
817   
818    Extension('sage.matrix.matrix',
819              ['sage/matrix/matrix.pyx']
820              ), \
821
822    Extension('sage.matrix.matrix_window',
823              ['sage/matrix/matrix_window.pyx']
824              ), \
825
826    Extension('sage.matrix.matrix_window_modn_dense',
827              ['sage/matrix/matrix_window_modn_dense.pyx']
828              ), \
829
830    Extension('sage.matrix.strassen',
831              ['sage/matrix/strassen.pyx']
832              ), \
833                           
834    Extension('sage.rings.integer_mod',
835              ['sage/rings/integer_mod.pyx'],
836              libraries = ['gmp']
837              ), \
838
839    Extension('sage.combinat.expnums',
840              ['sage/combinat/expnums.pyx'],
841              libraries = ['gmp']
842              ), \
843                           
844    Extension('sage.combinat.partitions',
845              ['sage/combinat/partitions.pyx',
846               'sage/combinat/partitions_c.cc'],
847              libraries = ['qd', 'gmp', 'mpfr'],
848              language='c++'             
849              ), \
850
851    Extension('sage.graphs.graph_fast',
852              ['sage/graphs/graph_fast.pyx'],
853              libraries = ['gmp']
854              ), \
855
856    Extension('sage.graphs.graph_isom',
857              ['sage/graphs/graph_isom.pyx']
858              ), \
859                           
860    Extension('sage.graphs.bruhat_sn',
861              ['sage/graphs/bruhat_sn.pyx']
862              ), \
863
864
865    Extension('sage.plot.plot3d.base',
866              ['sage/plot/plot3d/base.pyx']
867              ), \
868    Extension('sage.plot.plot3d.transform',
869              ['sage/plot/plot3d/transform.pyx']
870              ), \
871    Extension('sage.plot.plot3d.index_face_set',
872              ['sage/plot/plot3d/index_face_set.pyx']
873              ), \
874    Extension('sage.plot.plot3d.parametric_surface',
875              ['sage/plot/plot3d/parametric_surface.pyx']
876              ), \
877    Extension('sage.plot.plot3d.shapes',
878              ['sage/plot/plot3d/shapes.pyx']
879              ), \
880
881    Extension('sage.rings.polynomial.polybori',
882              sources = ['sage/rings/polynomial/polybori.pyx'],
883              libraries=['polybori','pboriCudd','groebner'],
884              include_dirs=[SAGE_ROOT+'/local/include/cudd',
885                            SAGE_ROOT+'/local/include/polybori',
886                            SAGE_ROOT+'/local/include/polybori/groebner'],
887              language = 'c++'), \
888                           
889    ]
890   
891
892#mpc = Extension('sage.rings.mpc',
893#              sources = ['sage/rings/mpc.pyx', 'sage/rings/ring.pyx'],
894#              libraries = ['mpc', 'mpfr', 'gmp'])
895
896
897extra_compile_args = [ ]
898
899if NO_WARN and distutils.sysconfig.get_config_var('CC').startswith("gcc"):
900    extra_compile_args = ['-w']
901
902if DEVEL:
903    extra_compile_args.append('-ggdb')
904    #ext_modules.append(hanke)
905    #ext_modules.append(mpc)
906
907for m in ext_modules:
908    m.libraries = ['csage'] + m.libraries + ['stdc++', 'ntl'] 
909    m.library_dirs += ['%s/lib' % SAGE_LOCAL]
910
911
912######################################################################
913# CODE for generating C/C++ code from Cython and doing dependency
914# checking, etc.  In theory distutils would run Cython, but I don't
915# trust it at all, and it won't have the more sophisticated dependency
916# checking that we need.
917######################################################################
918
919def check_dependencies( filename, outfile ):
920    """
921    INPUT:
922        filename -- The name of a .pyx, .pxd, or .pxi to check dependencies in the SAGE source.
923        outfile -- The output file for which we are determining out-of-date-ness
924
925    OUTPUT:
926        bool -- whether or not outfile must be regenerated.
927    """
928    if is_older(filename, outfile):
929        print "\nBuilding %s because it depends on %s."%(outfile, filename)
930        return True
931
932    # Now we look inside the file to see what it cimports or include.
933    # If any of these files are newer than outfile, we rebuild
934    # outfile.
935    S = open(filename).readlines()
936    # Take the lines that begin with cimport (it won't hurt to
937    # have extra lines)
938    C = [x.strip() for x in S if 'cimport' in x]
939    for A in C:
940        # Deduce the full module name.
941        # The only allowed forms of cimport/include are:
942        #        cimport a.b.c.d
943        #        from a.b.c.d cimport e
944        # Also, the cimport can be both have no dots (current directory) or absolute.
945        # The multiple imports with parens, e.g.,
946        #        import (a.b.c.d, e.f.g)
947        # of Python are not allowed in Cython.
948        # In both cases, the module name is the second word if we split on whitespace.
949        try:
950            A = A.strip().split()[1]
951        except IndexError:
952            # illegal statement or not really a cimport (e.g., cimport could
953            # be in a comment or something)
954            continue
955
956        if A[0] == '"':
957            A = A[1:-1]
958
959        # Now convert A to a filename, e.g., a/b/c/d
960        #
961        if '.' in A:
962            # It is an absolute cimport.
963            A = A.replace('.','/') + '.pxd'
964        else:
965            # It is a relative cimport.
966            A =  os.path.split(filename)[0] + '/' + A + '.pxd'
967        # Check to see if a/b/c/d.pxd exists and is newer than filename.
968        # If so, we have to regenerate outfile.  If not, we're safe.
969        if os.path.exists(A) and check_dependencies(A, outfile):
970            return True # yep we must rebuild
971
972    # OK, next we move on to include pxi files.
973    # If they change, we likewise must rebuild the pyx file.
974    I = [x for x in S if 'include' in x]
975    # The syntax for include is like this:
976    #       include "../a/b/c.pxi"
977    # I.e., it's a quoted *relative* path to a pxi file.
978    for A in I:
979        try:
980            A = A.strip().split()[1]
981        except IndexError:
982            # Illegal include statement or not really an include
983            # (e.g., include could easily be in a comment or
984            # something).  No reason to crash setup.py!
985            continue
986        # Strip the quotes from either side of the pxi filename.
987        A = A.strip('"').strip("'")
988        # Now take filename (the input argument to this function)
989        # and strip off the last part of the path and stick
990        # A onto it to get the filename of the pxi file relative
991        # where setup.py is being run.
992        R = A # save the relative filename in case it is absolute
993        A = os.path.split(filename)[0] + '/' + A
994        if not os.path.exists(A):
995            # A is an "absolute" path -- that is, absolute to the base of the sage tree
996            A = R # restore
997        # Finally, check to see if filename is older than A
998        if os.path.exists(A) and check_dependencies(A, outfile):
999            return True
1000
1001
1002def need_to_cython(filename, outfile):
1003    """
1004    INPUT:
1005        filename -- The name of a cython file in the SAGE source tree.
1006        outfile -- The name of the corresponding c or cpp file in the build directory.
1007
1008    OUTPUT:
1009        bool -- whether or not outfile must be regenerated.
1010    """
1011
1012    base =  os.path.splitext(filename)[0]
1013    pxd = base+'.pxd'
1014
1015    if check_dependencies(filename, outfile):
1016        return True
1017    elif os.path.exists(pxd) and check_dependencies(pxd, outfile):
1018        return True
1019    else:
1020        return False
1021
1022def process_cython_file(f, m):
1023    """
1024    INPUT:
1025        f -- file name
1026        m -- Extension module description (i.e., object of type Extension).
1027    """
1028    # This is a cython file, so process accordingly.
1029    pyx_inst_file = '%s/%s'%(SITE_PACKAGES, f)
1030    if is_older(f, pyx_inst_file):
1031        print "%s --> %s"%(f, pyx_inst_file)
1032        os.system('cp %s %s 2>/dev/null'%(f, pyx_inst_file))
1033    outfile = f[:-4] + ".c"
1034    if m.language == 'c++':
1035        outfile += 'pp'
1036
1037    if need_to_cython(f, outfile):
1038        # Insert the -o parameter to specify the output file (particularly for c++)
1039        cmd = "cython --embed-positions --incref-local-binop -I%s -o %s %s"%(os.getcwd(), outfile, f)
1040        print cmd
1041        ret = os.system(cmd)
1042        if ret != 0:
1043            print "sage: Error running cython."
1044            sys.exit(1)
1045    return [outfile]
1046   
1047
1048def cython(ext_modules):
1049    for m in ext_modules:
1050        m.extra_compile_args += extra_compile_args
1051#        m.extra_link_args += extra_link_args
1052        new_sources = []
1053        for i in range(len(m.sources)):
1054            f = m.sources[i]
1055#            s = open(f).read()
1056            if f[-4:] == ".pyx":
1057                new_sources += process_cython_file(f, m)
1058            else:
1059                new_sources.append(f)
1060        m.sources = new_sources
1061
1062       
1063
1064if not sdist:
1065    cython(ext_modules)
1066
1067setup(name        = 'sage',
1068
1069      version     =  SAGE_VERSION,
1070     
1071      description = 'SAGE: System for Algebra and Geometry Experimentation',
1072
1073      license     = 'GNU Public License (GPL)',
1074     
1075      author      = 'William Stein',
1076
1077      author_email= 'wstein@gmail.com',
1078     
1079      url         = 'http://www.sagemath.org',
1080     
1081      packages    = ['sage',
1082                     
1083                     'sage.algebras',
1084                     
1085                     'sage.catalogue',
1086                     
1087                     'sage.categories',
1088
1089                     'sage.coding',
1090
1091                     'sage.combinat',
1092                     
1093                     'sage.crypto',
1094
1095                     'sage.crypto.mq',
1096                     
1097                     'sage.databases',
1098                     
1099                     'sage.ext',
1100                     
1101                     'sage.calculus',
1102
1103                     'sage.functions',
1104
1105                     'sage.geometry',
1106
1107                     'sage.games',
1108
1109                     'sage.gsl',
1110                     
1111                     'sage.graphs',
1112                     
1113                     'sage.groups',
1114                     'sage.groups.abelian_gps',
1115                     'sage.groups.matrix_gps',
1116                     'sage.groups.perm_gps',
1117                     
1118                     'sage.interfaces',
1119
1120                     'sage.lfunctions',
1121
1122                     'sage.libs',
1123                     'sage.libs.fplll',
1124                     'sage.libs.hanke',
1125                     'sage.libs.linbox',
1126                     'sage.libs.mwrank',
1127                     'sage.libs.ntl',
1128                     'sage.libs.flint',
1129                     'sage.libs.pari',
1130                     'sage.libs.singular',
1131                     'sage.libs.symmetrica',
1132                     'sage.libs.cremona',
1133
1134                     'sage.logic',
1135                     
1136                     'sage.matrix',
1137#                     'sage.matrix.padics',
1138                     'sage.media',
1139                     'sage.misc',
1140                     
1141                     'sage.modules',
1142                     
1143                     'sage.modular',
1144                     'sage.modular.abvar',
1145                     'sage.modular.hecke',
1146                     'sage.modular.modform',
1147                     'sage.modular.modsym',
1148                     'sage.modular.ssmod',
1149                     
1150                     'sage.monoids',
1151                     
1152                     'sage.plot',
1153                     'sage.plot.mpl3d',
1154                     'sage.plot.plot3d',
1155                     
1156                     'sage.probability',
1157
1158                     'sage.quadratic_forms',
1159                     'sage.quadratic_forms.genera',
1160
1161                     'sage.rings',
1162                     'sage.rings.number_field',
1163                     'sage.rings.padics',
1164                     'sage.rings.polynomial',
1165                     'sage.rings.polynomial.padics',
1166                     
1167                     'sage.tests',
1168                     
1169                     'sage.sets',
1170                     
1171                     'sage.schemes',
1172                     'sage.schemes.generic',
1173                     'sage.schemes.jacobians',
1174                     'sage.schemes.plane_curves',
1175                     'sage.schemes.plane_quartics',
1176                     'sage.schemes.elliptic_curves',
1177                     'sage.schemes.hyperelliptic_curves',
1178
1179                     'sage.server',
1180                     'sage.server.server1',
1181                     'sage.server.notebook',
1182                     'sage.server.notebook.compress',
1183                     'sage.server.wiki',
1184                     'sage.server.trac',
1185                     
1186                     'sage.structure',
1187                     'sage.structure.proof',
1188                     
1189                     'sage.dsage',
1190                     'sage.dsage.tests',
1191                     'sage.dsage.database',
1192                     'sage.dsage.database.tests',
1193                     'sage.dsage.server',
1194                     'sage.dsage.server.tests',
1195                     'sage.dsage.interface',
1196                     'sage.dsage.interface.tests',
1197                     'sage.dsage.errors',
1198                     'sage.dsage.twisted',
1199                     'sage.dsage.twisted.tests',
1200                     'sage.dsage.dist_functions',
1201                     'sage.dsage.dist_functions.tests',
1202                     'sage.dsage.misc',
1203                     'sage.dsage.misc.tests',
1204                     'sage.dsage.web',
1205                     'sage.dsage.scripts',
1206                     ],
1207     
1208      scripts = ['sage/dsage/scripts/dsage_server.py',
1209                 'sage/dsage/scripts/dsage_worker.py',
1210                 'sage/dsage/scripts/dsage_setup.py'
1211                ],
1212
1213      data_files = [('dsage/web/static',                       
1214                     ['sage/dsage/web/static/dsage_web.css',
1215                      'sage/dsage/web/static/dsage_web.js',
1216                      'sage/dsage/web/static/jquery-latest.js',
1217                      'sage/dsage/web/static/jquery.tablesorter.pack.js',
1218                      'sage/dsage/web/static/index.html'])],
1219     
1220      ext_modules = ext_modules,
1221      include_dirs = include_dirs)
1222
1223 
1224 
Note: See TracBrowser for help on using the repository browser.