Mercurial > touhou
annotate setup.py @ 628:df3c4ef5f2cc
Partially revert 98603f2c32b4, as the creation of a .h file made some checking tools unhappy.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Sun, 19 Apr 2015 19:08:39 +0200 |
parents | 13789ac717c4 |
children | 26d9d251f658 |
rev | line source |
---|---|
213
9bdf116bb2a5
Add a distutils setup and don’t hardcode DAT list.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
1 # -*- encoding: utf-8 -*- |
9bdf116bb2a5
Add a distutils setup and don’t hardcode DAT list.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
2 |
431
77c0e9a53795
Use cythonize in setup.py, also compile .py files, and entirely remove pyximport support.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
423
diff
changeset
|
3 import os |
77c0e9a53795
Use cythonize in setup.py, also compile .py files, and entirely remove pyximport support.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
423
diff
changeset
|
4 import sys |
213
9bdf116bb2a5
Add a distutils setup and don’t hardcode DAT list.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
5 from distutils.core import setup |
9bdf116bb2a5
Add a distutils setup and don’t hardcode DAT list.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
6 from distutils.extension import Extension |
513
5e3e0b09a531
Move the OpenGL backend to its own package.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
512
diff
changeset
|
7 from subprocess import check_output, CalledProcessError |
213
9bdf116bb2a5
Add a distutils setup and don’t hardcode DAT list.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
8 |
218
9634eefd2063
Minor changes to the setup script
Thibaut Girka <thib@sitedethib.com>
parents:
213
diff
changeset
|
9 # Cython is needed |
213
9bdf116bb2a5
Add a distutils setup and don’t hardcode DAT list.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
10 try: |
431
77c0e9a53795
Use cythonize in setup.py, also compile .py files, and entirely remove pyximport support.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
423
diff
changeset
|
11 from Cython.Build import cythonize |
213
9bdf116bb2a5
Add a distutils setup and don’t hardcode DAT list.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
12 except ImportError: |
9bdf116bb2a5
Add a distutils setup and don’t hardcode DAT list.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
13 print('You don’t seem to have Cython installed. Please get a ' |
451
c034570ac785
Give a friendlier error message if pkg-config isn’t found.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
450
diff
changeset
|
14 'copy from http://www.cython.org/ and install it.') |
213
9bdf116bb2a5
Add a distutils setup and don’t hardcode DAT list.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
15 sys.exit(1) |
9bdf116bb2a5
Add a distutils setup and don’t hardcode DAT list.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
16 |
218
9634eefd2063
Minor changes to the setup script
Thibaut Girka <thib@sitedethib.com>
parents:
213
diff
changeset
|
17 |
418
63f59be04a54
Replace Pyglet with SDL2 for window creation and events; disables framerate control/display and sound.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
237
diff
changeset
|
18 COMMAND = 'pkg-config' |
456
cae1ae9de430
Add native text support, MSG instructions 3 and 8, and text at the beginning of a stage.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
455
diff
changeset
|
19 SDL_LIBRARIES = ['sdl2', 'SDL2_image', 'SDL2_mixer', 'SDL2_ttf'] |
555
98380e4a0ee5
Switch to libepoxy instead of libGLEW, which will help with OpenGL portability.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
553
diff
changeset
|
20 GL_LIBRARIES = ['epoxy'] |
418
63f59be04a54
Replace Pyglet with SDL2 for window creation and events; disables framerate control/display and sound.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
237
diff
changeset
|
21 |
521
53129f3a54af
Add a debug option to enable HTML annotations, type inference display and profiling.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
515
diff
changeset
|
22 debug = False # True to generate HTML annotations and display infered types. |
522
e8496e5ba056
Add a compilation option to disable anmviewer.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
521
diff
changeset
|
23 anmviewer = False # It’s currently broken anyway. |
541
8895ede4e51e
Fix Windows and OSX build by making pkg-config optional and assuming every dependency is available.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
528
diff
changeset
|
24 nthreads = 4 # How many processes to use for Cython compilation. |
619
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
25 compile_everything = False # Maybe improve running time a bit by wasting a lot |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
26 # of CPU time during compilation, and disk space. |
541
8895ede4e51e
Fix Windows and OSX build by making pkg-config optional and assuming every dependency is available.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
528
diff
changeset
|
27 |
542
a09f6990eab4
Add a hack to prevent `setup.py clean` from compiling Cython files.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
541
diff
changeset
|
28 |
580
8a8c2e519637
Make setup.py chdir into our root directory, to prevent it to fail when called from elsewhere.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
576
diff
changeset
|
29 # Hack to move us to the correct build directory. |
8a8c2e519637
Make setup.py chdir into our root directory, to prevent it to fail when called from elsewhere.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
576
diff
changeset
|
30 os.chdir(os.path.join(os.getcwd(), os.path.dirname(__file__))) |
8a8c2e519637
Make setup.py chdir into our root directory, to prevent it to fail when called from elsewhere.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
576
diff
changeset
|
31 |
8a8c2e519637
Make setup.py chdir into our root directory, to prevent it to fail when called from elsewhere.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
576
diff
changeset
|
32 |
542
a09f6990eab4
Add a hack to prevent `setup.py clean` from compiling Cython files.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
541
diff
changeset
|
33 # Hack to prevent `setup.py clean` from compiling Cython files. |
576
f3778145d7e7
Allow setup.py to be called without arguments.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
34 if len(sys.argv) > 1 and sys.argv[1] == 'clean': |
542
a09f6990eab4
Add a hack to prevent `setup.py clean` from compiling Cython files.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
541
diff
changeset
|
35 import shutil |
a09f6990eab4
Add a hack to prevent `setup.py clean` from compiling Cython files.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
541
diff
changeset
|
36 shutil.rmtree('build', ignore_errors=True) |
a09f6990eab4
Add a hack to prevent `setup.py clean` from compiling Cython files.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
541
diff
changeset
|
37 for directory, _, files in os.walk('pytouhou'): |
a09f6990eab4
Add a hack to prevent `setup.py clean` from compiling Cython files.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
541
diff
changeset
|
38 for filename in files: |
a09f6990eab4
Add a hack to prevent `setup.py clean` from compiling Cython files.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
541
diff
changeset
|
39 if filename.endswith('.c'): |
a09f6990eab4
Add a hack to prevent `setup.py clean` from compiling Cython files.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
541
diff
changeset
|
40 os.unlink(os.path.join(directory, filename)) |
a09f6990eab4
Add a hack to prevent `setup.py clean` from compiling Cython files.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
541
diff
changeset
|
41 sys.exit(0) |
a09f6990eab4
Add a hack to prevent `setup.py clean` from compiling Cython files.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
541
diff
changeset
|
42 |
a09f6990eab4
Add a hack to prevent `setup.py clean` from compiling Cython files.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
541
diff
changeset
|
43 |
562
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
44 try: |
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
45 sys.argv.remove('--disable-opengl') |
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
46 except ValueError: |
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
47 use_opengl = True |
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
48 else: |
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
49 use_opengl = False |
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
50 |
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
51 |
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
52 # Check for epoxy.pc, and don’t compile the OpenGL backend if it isn’t present. |
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
53 if use_opengl: |
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
54 try: |
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
55 check_output([COMMAND] + GL_LIBRARIES) |
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
56 except CalledProcessError: |
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
57 print('libepoxy not found. Please install it or pass --disable-opengl') |
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
58 sys.exit(1) |
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
59 except OSError: |
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
60 # Assume GL is here if we can’t use pkg-config, but display a warning. |
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
61 print('You don’t seem to have pkg-config installed. Please get a copy ' |
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
62 'from http://pkg-config.freedesktop.org/ and install it.\n' |
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
63 'Continuing without it, assuming every dependency is available.') |
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
64 |
991c817d1e6b
Fail when libepoxy can’t be found, pass --disable-opengl to skip the OpenGL backend compilation.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
555
diff
changeset
|
65 |
541
8895ede4e51e
Fix Windows and OSX build by making pkg-config optional and assuming every dependency is available.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
528
diff
changeset
|
66 default_libs = { |
8895ede4e51e
Fix Windows and OSX build by making pkg-config optional and assuming every dependency is available.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
528
diff
changeset
|
67 'sdl2': '-lSDL2', |
8895ede4e51e
Fix Windows and OSX build by making pkg-config optional and assuming every dependency is available.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
528
diff
changeset
|
68 'SDL2_image': '-lSDL2_image', |
8895ede4e51e
Fix Windows and OSX build by making pkg-config optional and assuming every dependency is available.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
528
diff
changeset
|
69 'SDL2_mixer': '-lSDL2_mixer', |
8895ede4e51e
Fix Windows and OSX build by making pkg-config optional and assuming every dependency is available.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
528
diff
changeset
|
70 'SDL2_ttf': '-lSDL2_ttf', |
555
98380e4a0ee5
Switch to libepoxy instead of libGLEW, which will help with OpenGL portability.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
553
diff
changeset
|
71 'epoxy': '-lepoxy' |
541
8895ede4e51e
Fix Windows and OSX build by making pkg-config optional and assuming every dependency is available.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
528
diff
changeset
|
72 } |
521
53129f3a54af
Add a debug option to enable HTML annotations, type inference display and profiling.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
515
diff
changeset
|
73 |
228
8f4cd1c01d22
Add basic cx_Freeze support in order to freeze to a windows executable.
Thibaut Girka <thib@sitedethib.com>
parents:
226
diff
changeset
|
74 |
451
c034570ac785
Give a friendlier error message if pkg-config isn’t found.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
450
diff
changeset
|
75 def get_arguments(arg, libraries): |
c034570ac785
Give a friendlier error message if pkg-config isn’t found.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
450
diff
changeset
|
76 try: |
590
e15672733c93
Switch to Python 3.x instead of 2.7.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
580
diff
changeset
|
77 return check_output([COMMAND, arg] + libraries).decode().split() |
513
5e3e0b09a531
Move the OpenGL backend to its own package.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
512
diff
changeset
|
78 except CalledProcessError: |
5e3e0b09a531
Move the OpenGL backend to its own package.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
512
diff
changeset
|
79 # The error has already been displayed, just exit. |
5e3e0b09a531
Move the OpenGL backend to its own package.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
512
diff
changeset
|
80 sys.exit(1) |
451
c034570ac785
Give a friendlier error message if pkg-config isn’t found.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
450
diff
changeset
|
81 except OSError: |
541
8895ede4e51e
Fix Windows and OSX build by making pkg-config optional and assuming every dependency is available.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
528
diff
changeset
|
82 # We already said to the user pkg-config was suggested. |
8895ede4e51e
Fix Windows and OSX build by making pkg-config optional and assuming every dependency is available.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
528
diff
changeset
|
83 if arg == '--cflags': |
8895ede4e51e
Fix Windows and OSX build by making pkg-config optional and assuming every dependency is available.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
528
diff
changeset
|
84 return [] |
8895ede4e51e
Fix Windows and OSX build by making pkg-config optional and assuming every dependency is available.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
528
diff
changeset
|
85 return [default_libs[library] for library in libraries] |
451
c034570ac785
Give a friendlier error message if pkg-config isn’t found.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
450
diff
changeset
|
86 |
c034570ac785
Give a friendlier error message if pkg-config isn’t found.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
450
diff
changeset
|
87 |
541
8895ede4e51e
Fix Windows and OSX build by making pkg-config optional and assuming every dependency is available.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
528
diff
changeset
|
88 sdl_args = {'extra_compile_args': get_arguments('--cflags', SDL_LIBRARIES), |
8895ede4e51e
Fix Windows and OSX build by making pkg-config optional and assuming every dependency is available.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
528
diff
changeset
|
89 'extra_link_args': get_arguments('--libs', SDL_LIBRARIES)} |
513
5e3e0b09a531
Move the OpenGL backend to its own package.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
512
diff
changeset
|
90 |
541
8895ede4e51e
Fix Windows and OSX build by making pkg-config optional and assuming every dependency is available.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
528
diff
changeset
|
91 if use_opengl: |
8895ede4e51e
Fix Windows and OSX build by making pkg-config optional and assuming every dependency is available.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
528
diff
changeset
|
92 opengl_args = {'extra_compile_args': get_arguments('--cflags', GL_LIBRARIES + SDL_LIBRARIES), |
8895ede4e51e
Fix Windows and OSX build by making pkg-config optional and assuming every dependency is available.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
528
diff
changeset
|
93 'extra_link_args': get_arguments('--libs', GL_LIBRARIES + SDL_LIBRARIES)} |
513
5e3e0b09a531
Move the OpenGL backend to its own package.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
512
diff
changeset
|
94 |
5e3e0b09a531
Move the OpenGL backend to its own package.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
512
diff
changeset
|
95 |
619
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
96 def get_module_hierarchy(directory): |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
97 packages = {} |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
98 allowed_extensions = ('.py', '.pyx', '.pxd') |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
99 pycache = os.path.sep + '__pycache__' |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
100 for directory, _, files in os.walk(directory): |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
101 if directory.endswith(pycache): |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
102 continue |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
103 package_name = directory.replace(os.path.sep, '.') |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
104 package = packages.setdefault(package_name, {}) |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
105 for filename in files: |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
106 module_name, file_ext = os.path.splitext(filename) |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
107 if file_ext not in allowed_extensions: |
522
e8496e5ba056
Add a compilation option to disable anmviewer.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
521
diff
changeset
|
108 continue |
619
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
109 package.setdefault(module_name, []).append(file_ext) |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
110 for module_name, extensions in list(package.items()): |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
111 if '.pyx' not in extensions and '.py' not in extensions: |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
112 del package[module_name] |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
113 return packages |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
114 |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
115 |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
116 def extract_module_types(packages): |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
117 py_modules = [] |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
118 ext_modules = [] |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
119 for package_name, package in packages.items(): |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
120 if package_name in ('pytouhou.ui', 'pytouhou.ui.sdl'): |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
121 package_args = sdl_args |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
122 elif package_name == 'pytouhou.ui.opengl': |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
123 package_args = opengl_args |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
124 else: |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
125 package_args = {} |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
126 for module_name, extensions in package.items(): |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
127 fully_qualified_name = '%s.%s' % (package_name, module_name) |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
128 if '.pyx' in extensions or '.pxd' in extensions or compile_everything: |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
129 if fully_qualified_name == 'pytouhou.lib.sdl': |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
130 compile_args = sdl_args |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
131 else: |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
132 compile_args = package_args |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
133 ext = 'pyx' if '.pyx' in extensions else 'py' |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
134 source = '%s.%s' % (fully_qualified_name.replace('.', os.path.sep), ext) |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
135 ext_modules.append(Extension(fully_qualified_name, |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
136 [source], |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
137 **compile_args)) |
513
5e3e0b09a531
Move the OpenGL backend to its own package.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
512
diff
changeset
|
138 else: |
619
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
139 py_modules.append(fully_qualified_name) |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
140 return py_modules, ext_modules |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
141 |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
142 |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
143 packages = get_module_hierarchy('pytouhou') |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
144 |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
145 if not use_opengl: |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
146 del packages['pytouhou.ui.opengl'] |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
147 del packages['pytouhou.ui.opengl.shaders'] |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
148 |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
149 if not anmviewer: |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
150 del packages['pytouhou.ui']['anmrenderer'] |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
151 |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
152 py_modules, ext_modules = extract_module_types(packages) |
213
9bdf116bb2a5
Add a distutils setup and don’t hardcode DAT list.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
153 |
9bdf116bb2a5
Add a distutils setup and don’t hardcode DAT list.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
154 |
541
8895ede4e51e
Fix Windows and OSX build by making pkg-config optional and assuming every dependency is available.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
528
diff
changeset
|
155 # OS-specific setuptools options. |
228
8f4cd1c01d22
Add basic cx_Freeze support in order to freeze to a windows executable.
Thibaut Girka <thib@sitedethib.com>
parents:
226
diff
changeset
|
156 try: |
8f4cd1c01d22
Add basic cx_Freeze support in order to freeze to a windows executable.
Thibaut Girka <thib@sitedethib.com>
parents:
226
diff
changeset
|
157 from cx_Freeze import setup, Executable |
8f4cd1c01d22
Add basic cx_Freeze support in order to freeze to a windows executable.
Thibaut Girka <thib@sitedethib.com>
parents:
226
diff
changeset
|
158 except ImportError: |
8f4cd1c01d22
Add basic cx_Freeze support in order to freeze to a windows executable.
Thibaut Girka <thib@sitedethib.com>
parents:
226
diff
changeset
|
159 extra = {} |
8f4cd1c01d22
Add basic cx_Freeze support in order to freeze to a windows executable.
Thibaut Girka <thib@sitedethib.com>
parents:
226
diff
changeset
|
160 else: |
541
8895ede4e51e
Fix Windows and OSX build by making pkg-config optional and assuming every dependency is available.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
528
diff
changeset
|
161 nthreads = None # It seems Windows can’t compile in parallel. |
8895ede4e51e
Fix Windows and OSX build by making pkg-config optional and assuming every dependency is available.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
528
diff
changeset
|
162 base = 'Win32GUI' if sys.platform == 'win32' else None |
626
13789ac717c4
Fix (again…) the OSX and Win32 build.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
621
diff
changeset
|
163 extra = {'options': {'build_exe': {'includes': [mod.name for mod in ext_modules] + ['glob', 'socket', 'select']}}, |
546
94dd9862c470
Rename the eosd script into pytouhou, and remove the obsolete pcb one.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
542
diff
changeset
|
164 'executables': [Executable(script='scripts/pytouhou', base=base)]} |
228
8f4cd1c01d22
Add basic cx_Freeze support in order to freeze to a windows executable.
Thibaut Girka <thib@sitedethib.com>
parents:
226
diff
changeset
|
165 |
8f4cd1c01d22
Add basic cx_Freeze support in order to freeze to a windows executable.
Thibaut Girka <thib@sitedethib.com>
parents:
226
diff
changeset
|
166 |
572
7f113f15300b
Include the Glade file in the main package on install.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
563
diff
changeset
|
167 # Create a link to the data files (for packaging purposes) |
7f113f15300b
Include the Glade file in the main package on install.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
563
diff
changeset
|
168 current_dir = os.path.dirname(os.path.realpath(__file__)) |
7f113f15300b
Include the Glade file in the main package on install.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
563
diff
changeset
|
169 temp_data_dir = os.path.join(current_dir, 'pytouhou', 'data') |
7f113f15300b
Include the Glade file in the main package on install.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
563
diff
changeset
|
170 if not os.path.exists(temp_data_dir): |
7f113f15300b
Include the Glade file in the main package on install.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
563
diff
changeset
|
171 os.symlink(os.path.join(current_dir, 'data'), temp_data_dir) |
7f113f15300b
Include the Glade file in the main package on install.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
563
diff
changeset
|
172 |
7f113f15300b
Include the Glade file in the main package on install.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
563
diff
changeset
|
173 |
213
9bdf116bb2a5
Add a distutils setup and don’t hardcode DAT list.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
174 setup(name='PyTouhou', |
431
77c0e9a53795
Use cythonize in setup.py, also compile .py files, and entirely remove pyximport support.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
423
diff
changeset
|
175 version='0.1', |
218
9634eefd2063
Minor changes to the setup script
Thibaut Girka <thib@sitedethib.com>
parents:
213
diff
changeset
|
176 author='Thibaut Girka', |
9634eefd2063
Minor changes to the setup script
Thibaut Girka <thib@sitedethib.com>
parents:
213
diff
changeset
|
177 author_email='thib@sitedethib.com', |
431
77c0e9a53795
Use cythonize in setup.py, also compile .py files, and entirely remove pyximport support.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
423
diff
changeset
|
178 url='http://pytouhou.linkmauve.fr/', |
218
9634eefd2063
Minor changes to the setup script
Thibaut Girka <thib@sitedethib.com>
parents:
213
diff
changeset
|
179 license='GPLv3', |
619
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
180 py_modules=py_modules, |
39874a722b76
Use two passes for the module search, and clean it up so that pure Python modules don’t get compiled by default.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
608
diff
changeset
|
181 ext_modules=cythonize(ext_modules, nthreads=nthreads, annotate=debug, |
607
9dbc234ea087
Actually compile under 3.x feature level.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
590
diff
changeset
|
182 language_level=3, |
431
77c0e9a53795
Use cythonize in setup.py, also compile .py files, and entirely remove pyximport support.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
423
diff
changeset
|
183 compiler_directives={'infer_types': True, |
521
53129f3a54af
Add a debug option to enable HTML annotations, type inference display and profiling.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
515
diff
changeset
|
184 'infer_types.verbose': debug, |
53129f3a54af
Add a debug option to enable HTML annotations, type inference display and profiling.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
515
diff
changeset
|
185 'profile': debug}, |
515
b3193b43a86c
Add an indirection layer for textures, to cope with drivers assigning them random names.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
513
diff
changeset
|
186 compile_time_env={'MAX_TEXTURES': 128, |
505
bfea9e9a6845
Manage the texture-specific indices in the Texture, and some more renderer optimisations.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
488
diff
changeset
|
187 'MAX_ELEMENTS': 640 * 4 * 3, |
528
7c3c90468996
Inherit music players from a base class.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
525
diff
changeset
|
188 'MAX_SOUNDS': 26, |
555
98380e4a0ee5
Switch to libepoxy instead of libGLEW, which will help with OpenGL portability.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
553
diff
changeset
|
189 'USE_OPENGL': use_opengl}), |
546
94dd9862c470
Rename the eosd script into pytouhou, and remove the obsolete pcb one.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
542
diff
changeset
|
190 scripts=['scripts/pytouhou'] + (['scripts/anmviewer'] if anmviewer else []), |
572
7f113f15300b
Include the Glade file in the main package on install.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
563
diff
changeset
|
191 package_data={'pytouhou': ['data/menu.glade']}, |
431
77c0e9a53795
Use cythonize in setup.py, also compile .py files, and entirely remove pyximport support.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
423
diff
changeset
|
192 **extra) |
572
7f113f15300b
Include the Glade file in the main package on install.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
563
diff
changeset
|
193 |
7f113f15300b
Include the Glade file in the main package on install.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
563
diff
changeset
|
194 |
7f113f15300b
Include the Glade file in the main package on install.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
563
diff
changeset
|
195 # Remove the link afterwards |
7f113f15300b
Include the Glade file in the main package on install.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
563
diff
changeset
|
196 if os.path.exists(temp_data_dir): |
7f113f15300b
Include the Glade file in the main package on install.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
563
diff
changeset
|
197 os.unlink(temp_data_dir) |