annotate setup.py @ 629:26d9d251f658

Use the current revision as the version number.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Tue, 05 May 2015 13:32:56 +0200
parents 13789ac717c4
children 6c40f5840a06
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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',
629
26d9d251f658 Use the current revision as the version number.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 626
diff changeset
175 version=check_output(['hg', 'heads', '.', '-T', '{rev}']).decode(),
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)