2 # Configuration script for Tennix
3 # 2013-07-27 Thomas Perl <m@thp.io>
9 DEFAULT_CFLAGS
="-I. -Wall -fPIC"
15 if [ -z "$CXX" ]; then
19 if [ -z "$CFLAGS" ]; then
23 if [ -z "$LDFLAGS" ]; then
27 if [ -z "$SDL_CONFIG" ]; then
28 SDL_CONFIG
="sdl2-config"
31 CFLAGS
="$DEFAULT_CFLAGS $CFLAGS"
35 GENERATED_HEADER
="Generated: $(date)"
36 CONFIG_H
="/* $GENERATED_HEADER */"
37 CONFIG_MK
="# $GENERATED_HEADER"
48 CONFIG_MK
="$CONFIG_MK$NL$1 := $2"
52 CONFIG_H
="$CONFIG_H$NL#define $1"
56 CONFIG_H
="$CONFIG_H$NL#undef $1"
61 set_make_variable
$1 1
66 set_make_variable
$1 0
78 echo "int main() { return 0; }" |
$CC $CFLAGS -x c
-c -o configtest.o
- 2>/dev
/null
82 echo "class A { public: A() {} }; int main() { A a; }" |
$CXX $CFLAGS -x c
++ -c -o configtest.o
-
86 echo "int main() { return 0; }" |
$CC $CFLAGS $LDFLAGS -l$1 -x c
-o configtest.o
- 2>/dev
/null
90 echo "#include <$1>" |
$CC $CFLAGS -c -x c
-o configtest.o
-c - 2>/dev
/null
107 if ! which "$SDL_CONFIG" >/dev
/null
2>&1; then
111 CFLAGS
="$("$SDL_CONFIG" --cflags) $CFLAGS"
112 LDFLAGS
="$("$SDL_CONFIG" --libs) $LDFLAGS"
117 printf "Detecting operating system ... "
130 fail
"Unknown platform: $UNAME"
136 message_wrapper
"Testing working C compiler ($CC)" check_cc || fail
"C compiler ($CC) not working"
137 message_wrapper
"Testing working C++ compiler ($CXX)" check_cxx || fail
"C++ compiler ($CXX) not working"
141 message_wrapper
"Checking for SDL2" check_sdl_lib
142 cond_definition $? HAVE_SDL
146 check_sdl2 || fail
"SDL2 not found"
149 check_voice_files
() {
150 message_wrapper
"Checking for voice files" [ -f voice
/deuce.ogg
]
151 cond_definition $? HAVE_VOICE_FILES
155 if [ -z "$PYTHON3_CONFIG" ]; then
156 PYTHON3_CONFIG
="python3-config"
159 if ! which "$PYTHON3_CONFIG" >/dev
/null
2>&1; then
163 CFLAGS
="$("$PYTHON3_CONFIG" --cflags) $CFLAGS"
164 if "$PYTHON3_CONFIG" --embed --libs >/dev
/null
2>&1; then
165 # Python 3.8 and newer
166 LDFLAGS
="$("$PYTHON3_CONFIG" --embed --libs) $LDFLAGS"
168 # Python 3.7 and older
169 LDFLAGS
="$("$PYTHON3_CONFIG" --libs) $LDFLAGS"
178 if ! which $COMMAND >/dev
/null
2>&1; then
182 if [ "$VARIABLE" != "" ]; then
183 set_make_variable
$VARIABLE $
(which $COMMAND 2>/dev
/null
)
188 message_wrapper
"Checking for $1" check_tool_path $
*
192 check_tool $
* || fail
"Required command '$1' not found"
196 message_wrapper
"Checking for libpython3" check_python_lib
197 cond_definition $? HAVE_PYTHON
201 message_wrapper
"Checking for $1" check_header_cc
$1
205 message_wrapper
"Checking for -l$1" check_linker_cc
$1
212 check_linker
$LIBRARY
216 if [ $HAVE_LINKER -eq 0 -a $HAVE_HEADER -eq 0 ]; then
217 add_definition
$DEFINE
218 LDFLAGS
="-l$LIBRARY $LDFLAGS"
220 no_definition
$DEFINE
227 check_library $
* || fail
"Library $1 ($2) not found"
230 generate_dependencies
() {
231 echo "Generating dependencies.mk"
232 rm -f dependencies.mk
234 echo "# $GENERATED_HEADER"
235 for filename
in src
/*.cc
; do $CXX -MM $filename $CFLAGS -o -; done
240 echo "Writing config.h"
244 echo "#define VERSION \"$V\""
245 echo "#define PREFIX \"$PREFIX\""
248 echo "Writing config.mk"
253 echo "SILENT = $SILENT"
254 echo "PREFIX = $PREFIX"
255 echo "PLATFORM = $PLATFORM"
258 echo "CFLAGS = $CFLAGS"
259 echo "CXXFLAGS = $CFLAGS"
260 echo "LDFLAGS = $LDFLAGS"
270 --prefix PREFIX Install into PREFIX (default: $PREFIX)
271 --help | -h Show this help message
272 --with-debug Enable additional debugging output
273 --enable-update-rect Visualize screen updates
274 --enable-nonfree-locations Additional tennis courts on world map
275 --enable-fps-limit Limit frame rate
276 --disable-silent Disable silent make output
277 --disable-python Disable checking for Python
283 while [ $# -gt 0 ]; do
286 [ $# -gt 1 ] || fail
"Not enough arguments."
288 CFLAGS
="-I$PREFIX/include $CFLAGS"
289 LDFLAGS
="-L$PREFIX/lib $LDFLAGS"
296 --enable-update-rect)
297 define_macro DRAW_UPDATE_RECTANGLE
299 --enable-nonfree-locations)
300 define_macro NONFREE_LOCATIONS
303 define_macro ENABLE_FPS_LIMIT
317 fail
"Unknown argument: $1"
324 # Parse command-line arguments
328 trap "rm -f configtest.o" EXIT
330 # Check for compatible OS and working compiler
334 # Check for command-line tools needed for build
337 # Check for command-line tools required in makefile
339 require_tool
install INSTALL
342 # Check for SDL 2 and libpython3
344 [ "$PYTHON" != "0" ] && check_python
346 # Check for mandatory and optional libraries
347 require_library SDL2_image SDL_image.h HAVE_SDL_IMAGE
348 require_library SDL2_ttf SDL_ttf.h HAVE_SDL_TTF
349 check_library SDL2_net SDL_net.h HAVE_SDL_NET
350 require_library SDL2_mixer SDL_mixer.h HAVE_SDL_MIXER
351 require_library SDL2_gfx SDL2_rotozoom.h HAVE_SDL_GFX
353 # Check for optional game content
356 # Save configuration results and generate dependency file
358 generate_dependencies