1#! /bin/sh
2
3ARGS=$*
4
5PROGRAM=ufo
6
7#set -e
8#set -x
9
10echo "" > config.log
11CONFIG_H=config.h
12MAKEFILE_LOCAL=Makefile.local
13
14DEBUG=1
15UNIVERSAL=
16HARD_LINKED_GAME=
17HARD_LINKED_CGAME=1
18PARANOID=
19PROFILING=
20PREFIX=/usr/local
21PKGDATADIR=
22PKGBINDIR=
23PKGLIBDIR=
24LOCALEDIR=
25USE_SIGNALS=1
26MODE=
27CROSS=
28USE_CCACHE=
29STATIC=
30DISABLE_SDL2=
31W2K=
32SSE=
33DISABLE_DEPENDENCY_TRACKING=
34DEFAULT_COMPILER_CC=cc
35DEFAULT_COMPILER_CXX=c++
36
37HOST_OS=`uname | sed -e s/_.*// | tr '[:upper:]' '[:lower:]'`
38TARGET_OS=${HOST_OS}
39
40if [ "${HOST_OS}" = "sunos" ] || [ "${HOST_OS}" = "darwin" ]; then
41	TARGET_ARCH=`uname -p | sed -e s/i.86/i386/`
42else
43	TARGET_ARCH=`uname -m | sed -e s/i.86/i386/`
44fi
45
46add_line_to_makefile_local() {
47	makefile_local_data="${makefile_local_data}"'
48'"$1"
49}
50
51error() {
52	echo $@
53	exit 1
54}
55
56add_to_makefile_local_quote() {
57	VALUE=`get_var $1`
58	if [ -n "$VALUE" ]; then
59		# these are internal make variables and are already set, so don't use ?= here
60		if [ "$1" = "CC" ] || [ "$1" = "CXX" ]; then
61			add_line_to_makefile_local "$1 := \"$VALUE\""
62		else
63			add_line_to_makefile_local "$1 ?= \"$VALUE\""
64		fi
65		[ -n "$2" ] && echo $2
66	else
67		add_line_to_makefile_local "# $1 ?= \"$VALUE\""
68		[ -n "$3" ] && echo $3
69		[ "$4" = "yes" ] && exit 1
70	fi
71}
72
73add_to_makefile_local() {
74	VALUE=`get_var $1`
75	if [ -n "$VALUE" ]; then
76		# these are internal make variables and are already set, so don't use ?= here
77		if [ "$1" = "CC" ] || [ "$1" = "CXX" ]; then
78			add_line_to_makefile_local "$1 := $VALUE"
79		else
80			add_line_to_makefile_local "$1 ?= $VALUE"
81		fi
82		[ -n "$2" ] && echo $2
83	else
84		add_line_to_makefile_local "# $1 ?= $VALUE"
85		[ -n "$3" ] && echo $3
86		[ "$4" = "yes" ] && exit 1
87	fi
88}
89
90add_line_to_config_h() {
91	config_h_data="${config_h_data}"'
92'"$1"
93}
94
95add_to_config_h_quote() {
96	VALUE=`get_var $1`
97	if [ -n "$VALUE" ] && [ "$VALUE" != "no" ]; then
98		add_line_to_config_h "#define $1 \"$VALUE\""
99		[ -n "$2" ] && echo $2
100	else
101		add_line_to_config_h "/* #define $1 \"$VALUE\" */"
102		[ -n "$3" ] && echo $3
103		[ "$4" = "yes" ] && exit 1
104	fi
105}
106
107add_to_config_h() {
108	VALUE=`get_var $1`
109	if [ -n "$VALUE" ] && [ "$VALUE" != "no" ]; then
110		add_line_to_config_h "#define $1 $VALUE"
111		[ -n "$2" ] && echo $2
112	else
113		add_line_to_config_h "/* #define $1 $VALUE */"
114		[ -n "$3" ] && echo $3
115		[ "$4" = "yes" ] && exit 1
116	fi
117}
118
119config_h() {
120	add_to_config_h PARANOID "Enable paranoid build"
121	add_to_config_h HARD_LINKED_GAME "Enable hard linked game"
122	add_to_config_h HARD_LINKED_CGAME "Enable hard linked cgame"
123	add_to_config_h USE_SIGNALS "Use signal handler"
124	add_to_config_h_quote PKGDATADIR "Setting custom data directory"
125	add_to_config_h_quote PKGLIBDIR "Setting custom library directory"
126	add_to_config_h_quote LOCALEDIR "Setting custom locale directory"
127}
128
129makefile_local() {
130	add_to_makefile_local DEBUG "Debug build"
131	add_to_makefile_local PROFILING "Enable profiling"
132	add_to_makefile_local STATIC "Enable static linking"
133	add_to_makefile_local W2K "Enable Windows 2000 compatibility"
134	add_to_makefile_local SSE "Enable Streaming SIMD Extensions"
135	add_to_makefile_local HARD_LINKED_GAME
136	add_to_makefile_local HARD_LINKED_CGAME
137	add_to_makefile_local DISABLE_DEPENDENCY_TRACKING "Disable dependency tracking"
138	add_to_makefile_local UNIVERSAL "Build a universal binary"
139	add_to_makefile_local TARGET_OS "Compile for ${TARGET_OS}"
140	add_to_makefile_local TARGET_ARCH "Compile for ${TARGET_ARCH}"
141	add_to_makefile_local MODE "Compile in ${MODE} mode"
142	add_to_makefile_local USE_CCACHE "Use ccache" "Disable ccache"
143	add_to_makefile_local_quote CC "Found cc ${CC}"
144	add_to_makefile_local_quote CXX "Found cxx ${CXX}"
145	add_to_makefile_local_quote CROSS "Using tools prefix ${CROSS}"
146	add_to_makefile_local_quote PKGBINDIR "Using bindir ${PKGBINDIR}"
147	add_to_makefile_local_quote PKGDATADIR "Using datadir ${PKGDATADIR}"
148	add_to_makefile_local_quote PKGLIBDIR "Using libdir ${PKGLIBDIR}"
149	add_to_makefile_local_quote LOCALEDIR "Using localedir ${LOCALEDIR}"
150	add_to_makefile_local_quote PREFIX "Using prefix ${PREFIX}"
151}
152
153check_header_cc() {
154	SOURCE=`cat << EOF
155#include <stdlib.h>
156#include <stdio.h>
157#include <${1}>
158EOF`
159	if [ -n "${2}" ]; then
160		( echo "$SOURCE" | ${CROSS}${CXX} ${CCFLAGS} ${CXXFLAGS} ${CFLAGS} $(${CROSS}pkg-config --cflags ${2} 2> /dev/null) -o /dev/null -xc++ -c - 2>> config.log ) && echo "1" || echo ""
161	else
162		( echo "$SOURCE" | ${CROSS}${CXX} ${CCFLAGS} ${CXXFLAGS} ${CFLAGS} -o /dev/null -xc++ -c - 2>> config.log ) && echo "1" || echo ""
163	fi
164}
165
166check_header() {
167	HEADER=$1
168	PACKAGE=$2
169
170	PACKAGE=${PACKAGE%+*}
171	HEADER=${HEADER%.*}
172
173	if [ "$PACKAGE" != "" ]; then
174		PACKAGE="`echo ${PACKAGE} | sed 's,\.,_,g' | sed 's,-,_,g' | tr '[a-z]' '[A-Z]'`_"
175		HEADER=${HEADER##*/}
176	else
177		HEADER="`echo ${HEADER} | sed 's,/,_,g'`"
178	fi
179
180	HEADER="`echo ${HEADER} | sed 's,\.,_,g' | sed 's,-,_,g' | tr '[a-z]' '[A-Z]'`"
181
182	HAVE=HAVE_${PACKAGE}${HEADER}_H
183	if [ "${TARGET_OS}" = "android" ]; then
184		VALUE="no"
185	else
186		VALUE=`get_var $HAVE`
187	fi
188	if [ "$VALUE" != "no" ]; then
189		set_var $HAVE `check_header_cc $1 $2`
190		add_to_config_h $HAVE "Found $1" "Could not find $1" $2
191		add_to_makefile_local $HAVE
192	else
193		add_to_config_h $HAVE "Found $1" "Disable $1"
194	fi
195}
196
197check_headers() {
198	check_header "xvid.h"
199	check_header "theora/theora.h" "theora"
200	check_header "execinfo.h"
201	check_header "bfd.h"
202	check_header "sys/utsname.h"
203	check_header "link.h"
204	check_header "jpeglib.h"
205	check_header "zlib.h" "zlib"
206	check_header "png.h" "libpng"
207	check_header "CUnit/Basic.h"
208	check_header "mxml.h" "mxml"
209	check_header "SDL.h" "sdl"
210	check_header "SDL_mixer.h" "SDL_mixer"
211	check_header "SDL_ttf.h" "SDL_ttf"
212	if [ "$DISABLE_SDL2" != "1" ]; then
213		check_header "SDL.h" "sdl2"
214		check_header "SDL_mixer.h" "SDL2_mixer"
215		check_header "SDL_ttf.h" "SDL2_ttf"
216	fi
217	check_header "picomodel.h" "picomodel"
218	check_header "gtk/gtk.h" "gtk+-2.0"
219	check_header "gtksourceview/gtksourceview.h" "gtksourceview-2.0"
220	check_header "libxml/parser.h" "libxml-2.0"
221	check_header "AL/al.h" "openal"
222	check_header "gtk/gtkglwidget.h" "gtkglext-1.0"
223	if [ "$HAVE_CUNIT_BASIC_H" != "1" ]; then
224		set_var "testall_DISABLE" "yes"
225	fi
226	if [ "$HAVE_GTK_GTK_H" != "1" ] || [ "$HAVE_GTKSOURCEVIEW_2_0_GTKSOURCEVIEW_H" != "1" ] || [ "$HAVE_GTKGLEXT_1_0_GTKGLWIDGET_H" != "1" ]; then
227		set_var "uforadiant_DISABLE" "yes"
228	fi
229
230	if ([ "${HAVE_SDL_SDL_H}" != "1" ] && [ "${HAVE_SDL2_SDL_H}" != "1" ]); then
231		for i in `get_modules`; do
232			if [ "$i" != "uforadiant" ]; then
233				set_var "${i}_DISABLE" "yes"
234			fi
235		done
236	fi
237
238#	if ([ "${HAVE_SDL_MIXER_SDL_MIXER_H}" != "1" ] && [ "${HAVE_SDL2_MIXER_SDL_MIXER_H}" != "1" ]); then
239#		set_var "ufo_DISABLE" "yes"
240#		set_var "testall_DISABLE" "yes"
241#	fi
242
243#	if ([ "${HAVE_SDL_TTF_SDL_TTF_H}" != "1" ] && [ "${HAVE_SDL2_TTF_SDL_TTF_H}" != "1" ]); then
244#		set_var "ufo_DISABLE" "yes"
245#		set_var "testall_DISABLE" "yes"
246#	fi
247}
248
249check_compiler() {
250	# TODO Implement compiler check
251	CC=${CC:-${DEFAULT_COMPILER_CC}}
252	CXX=${CXX:-${DEFAULT_COMPILER_CXX}}
253
254	if [ "${TARGET_OS}" = "mingw32" ] || [ "${TARGET_OS}" = "mingw64" ] || [ "${TARGET_OS}" = "mingw64_64" ]; then
255		CC=gcc
256	fi
257
258	if [ "${TARGET_OS}" = "mingw32" ] && [ "${HOST_OS}" != "mingw32" ]; then
259		CROSS="i686-pc-mingw32-"
260	fi
261
262	if [ "${TARGET_OS}" = "mingw64" ] && [ "${HOST_OS}" != "mingw64" ]; then
263		CROSS="i686-w64-mingw32-"
264	fi
265
266	if [ "${TARGET_OS}" = "mingw64_64" ] && [ "${HOST_OS}" != "mingw64_64" ]; then
267		CROSS="x86_64-w64-mingw32-"
268	fi
269
270	if [ -n "${CROSS}" ]; then
271		command -v "${CROSS}${CC}" 2>> config.log >> config.log
272		if [ $? -eq 0 ]; then
273			echo "Found ${CROSS}${CC} in the path"
274		else
275			echo "Cross compiling, make sure that ${CROSS}${CC} is in your path"
276		fi
277		command -v "${CROSS}pkg-config" 2>> config.log >> config.log
278		if [ $? -eq 0 ]; then
279			echo "Found ${CROSS}pkg-config in the path"
280		else
281			echo "Cross compiling, make sure that ${CROSS}pkg-config is in your path"
282		fi
283	fi
284
285	echo "use c compiler: ${CROSS}${CC}"
286	echo "use c++ compiler: ${CROSS}${CXX}"
287
288	${CROSS}${CC} --help > /dev/null 2>&1
289	if [ $? -ne 0 ]; then
290		error "Could not find the c compiler: ${CROSS}${CC}"
291	fi
292	${CROSS}${CXX} --help > /dev/null 2>&1
293	if [ $? -ne 0 ]; then
294		error "Could not find the c++ compiler: ${CROSS}${CXX}"
295	fi
296}
297
298usage() {
299	echo "Usage: $0"
300	echo " --help                   show this help message"
301	echo " --enable-ccache          use ccache for building"
302	echo " --enable-hardlinkedgame  hard link the server game code"
303	echo " --enable-hardlinkedcgame hard link the client game code"
304	echo " --enable-paranoid        compile in paranoid mode with extra checks"
305	echo " --enable-profiling       activates profiling"
306	echo " --enable-release         build with optimizations"
307	echo " --enable-static          enable static linking"
308	echo " --enable-universal       enable universal build"
309	echo " --enable-w2k             enable Windows 2000 compatibility"
310	if [ -n "$(echo ${TARGET_ARCH} | grep -e '^i.86$' -e '^x86_64$')" ]; then
311		echo " --enable-sse             enable Streaming SIMD Extensions"
312	fi
313	echo " --disable-execinfo       disable backtraces for crashes"
314	echo " --disable-signals        disable the use of a signal handler"
315	echo " --disable-sdl2           disable the use of SDL2.x and prefer to use SDL1.x"
316	echo
317	echo " --target-os=             specify the target os"
318	(cd build/platforms; for i in *.mk; do echo "  * ${i%.mk}"; done)
319	echo
320	echo " --bindir=                path for the ufoai binaries"
321	echo " --datadir=               path for the ufoai game data"
322	echo " --libdir=                path for the ufoai shared objects"
323	echo " --localedir=             path for the ufoai translations"
324	echo " --prefix=                prefix for directories"
325	echo
326	echo " --disable-*              specify which target should not get built"
327	echo " --enable-*               specify which target should get built"
328	echo " --enable-only-*          disable all other targets"
329	(cd build/modules; for i in *.mk; do echo "  * ${i%.mk}"; done)
330	echo
331	echo " --disable-dependency-tracking"
332	exit 1
333}
334
335make_var() {
336	echo "$1" | sed 's/-/_/g'
337}
338
339set_var() {
340	eval `make_var "$1"`=\""$2"\"
341}
342
343get_var() {
344	eval echo \${`make_var "$1"`}
345}
346
347get_modules() {
348	(cd build/modules; for i in *.mk; do echo "${i%.mk}"; done)
349}
350
351check_path_characters() {
352	# Find out where configure is (in what dir)
353	ROOT_DIR="`dirname $0`"
354	# For MSYS/MinGW we want to know the FULL path. This as that path is generated
355	# once you call an outside binary. Having the same path for the rest is needed
356	# for dependency checking.
357	# pwd -W returns said FULL path, but doesn't exist on others so fall back.
358	ROOT_DIR="`cd $ROOT_DIR && (pwd -W 2>/dev/null || pwd 2>/dev/null)`"
359
360	if [ -n "`echo \"$ROOT_DIR\" | grep '[^-\w\/\\\.:]~?'`" ]; then
361		echo "WARNING: The path contains a non-alphanumeric character that might cause"
362		echo "         failures in subsequent build stages. Any failures with the build"
363		echo "         will most likely be caused by this."
364		echo "         $ROOT_DIR"
365	fi
366	if [ -n "`echo \"$ROOT_DIR\" | grep '[\(\)]'`" ]; then
367		echo "ERROR: The path contains a square character that cause"
368		echo "       failures in subsequent build stages!!!"
369		echo "       $ROOT_DIR"
370		exit 1
371	fi
372}
373
374check_ccache() {
375	if [ "$USE_CCACHE" = "1" ]; then
376		ccache --help 2>> config.log >> config.log
377		if [ $? -ne 0 ]; then
378			USE_CCACHE=0
379		fi
380	fi
381}
382
383check_program() {
384	BINARY=$1
385	TOOL=${2:-${BINARY}}
386	MANDATORY=${3:-0}
387	HAVE=PROGRAM_`echo ${BINARY%.*} | sed 's,/,_,g' | tr '[a-z]' '[A-Z]'`
388	command -v "${BINARY}" 2>> config.log >> config.log
389	if [ $? -eq 0 ]; then
390		set_var $HAVE "$1"
391	fi
392	add_to_makefile_local $HAVE "Found ${BINARY} from ${TOOL}" "Could not find ${BINARY} from ${TOOL}" $MANDATORY
393}
394
395check_programs() {
396	check_program zip
397	check_program python
398	check_program doxygen
399}
400
401check_target_os() {
402	local FOUND=0
403	for i in build/platforms/*.mk; do
404		if [ `basename $i .mk` = $1 ]; then
405			FOUND=1
406		fi
407	done
408
409	[ $FOUND -eq 0 ] && echo "invalid target-os given: $1" && exit 1
410}
411
412check_module() {
413	local FOUND=0
414	for i in `get_modules`; do
415		if [ $i = $1 ]; then
416			FOUND=1
417		fi
418	done
419
420	[ $FOUND -eq 0 ] && error "invalid module given: $1"
421}
422
423get_ini_value() {
424	awk -v str="$2" -F '[ \t]*=[ \t]*' '{if (! ($0 ~ /^;/) && $0 ~ str) print $2}' "$1" 2>> config.log
425}
426
427set_path_env() {
428	case ${TARGET_OS} in
429	mingw*)
430		MXE_FILE=~/.mxe.settings
431		set_var "ADDITIONAL_PATH" `get_ini_value "${MXE_FILE}" "PATH"`
432		add_to_makefile_local ADDITIONAL_PATH "Found mxe additional path settings" "Could not get the mxe path from ${MXE_FILE}"
433		PATH="${ADDITIONAL_PATH}:$PATH"
434		;;
435	esac
436}
437
438enable_only() {
439	for i in `get_modules`; do
440		if [ "$i" = "$1" ]; then
441			set_var "${i}_DISABLE" ""
442		else
443			set_var "${i}_DISABLE" "yes"
444		fi
445	done
446}
447
448check_path_characters
449
450while [ $# -gt 0 ]; do
451	case "$1" in
452	--help|-h)
453		usage
454		;;
455	--enable-ccache)
456		USE_CCACHE="1"
457		;;
458	--disable-ccache)
459		USE_CCACHE="0"
460		;;
461	--enable-release)
462		MODE=release
463		DEBUG=
464		;;
465	--disable-release)
466		MODE=debug
467		DEBUG=1
468		;;
469	--enable-static)
470		STATIC=1
471		;;
472	--disable-static)
473		STATIC=
474		;;
475	--enable-universal)
476		UNIVERSAL=1
477		DISABLE_DEPENDENCY_TRACKING=1
478		;;
479	--disable-universal)
480		UNIVERSAL=
481		;;
482	--enable-hardlinkedgame)
483		HARD_LINKED_GAME=1
484		;;
485	--disable-hardlinkedgame)
486		HARD_LINKED_GAME=
487		;;
488	--enable-hardlinkedcgame)
489		HARD_LINKED_CGAME=1
490		;;
491	--disable-hardlinkedcgame)
492		HARD_LINKED_CGAME=
493		;;
494	--enable-paranoid)
495		PARANOID=1
496		;;
497	--disable-paranoid)
498		PARANOID=
499		;;
500	--enable-profiling)
501		PROFILING=1
502		;;
503	--disable-profiling)
504		PROFILING=
505		;;
506	--enable-w2k)
507		W2K=1
508		;;
509	--disable-w2k)
510		W2K=
511		;;
512	--enable-sse)
513		if [ -z "$(echo ${TARGET_ARCH} | grep -e '^i.86$' -e '^x86_64$')" ] ;then
514			echo "invalid $1 option for your CPU"
515			exit 1
516		fi
517		SSE=1
518		;;
519	--disable-sse)
520		SSE=0
521		;;
522	--enable-signals)
523		USE_SIGNALS=1
524		;;
525	--disable-sdl2)
526		DISABLE_SDL2=1
527		;;
528	--disable-signals)
529		USE_SIGNALS=
530		;;
531	--enable-execinfo)
532		HAVE_EXECINFO_H=yes
533		;;
534	--disable-execinfo)
535		HAVE_EXECINFO_H=no
536		;;
537	--disable-dependency-tracking)
538		DISABLE_DEPENDENCY_TRACKING=1
539		;;
540	--prefix=*)
541		PREFIX="${1#*=}"
542		;;
543	--datadir=*)
544		PKGDATADIR="${1#*=}"
545		;;
546	--libdir=*)
547		PKGLIBDIR="${1#*=}"
548		;;
549	--localedir=*)
550		LOCALEDIR="${1#*=}"
551		;;
552	--bindir=*)
553		PKGBINDIR="${1#*=}"
554		;;
555	--target-os=*)
556		TARGET_OS="${1#*=}"
557		check_target_os $TARGET_OS
558		;;
559	--disable-*)
560		OPTION="${1#--disable-}"
561		check_module $OPTION
562		set_var "${OPTION}_DISABLE" "yes"
563		;;
564	--enable-only-*)
565		OPTION="${1#--enable-only-}"
566		HARD_LINKED_GAME=1
567		HARD_LINKED_CGAME=1
568		check_module $OPTION
569		enable_only $OPTION
570		;;
571	--enable-*)
572		OPTION="${1#--enable-}"
573		check_module $OPTION
574		set_var "${OPTION}_DISABLE" ""
575		;;
576	CC=*)       CC="${1#CC=}";;
577	CXX=*)      CXX="${1#CXX=}";;
578	CFLAGS=*)   CFLAGS="${1#*=}";;
579	LDFLAGS=*)  LDFLAGS="${1#*=}";;
580	*)
581		echo "invalid option $1"
582		exit 1
583		;;
584	esac
585	shift
586done
587
588set_path_env
589
590case ${TARGET_OS} in
591mingw32|mingw64)
592	TARGET_ARCH=i386
593	TARGET_ARCH=i386
594	;;
595mingw64_64)
596	TARGET_ARCH=x86_64
597	;;
598android)
599	TARGET_ARCH=arm
600	HARD_LINKED_GAME=1
601	HARD_LINKED_CGAME=1
602	enable_only ${PROGRAM}
603	;;
604html5)
605	HARD_LINKED_GAME=1
606	HARD_LINKED_CGAME=1
607	if [ -z "$EMSCRIPTEN_ROOT" ]; then
608		EMSCRIPTEN_ROOT=`python -c "import os, sys, re, json, shutil; exec(open(os.path.expanduser('~/.emscripten'), 'r').read()); print EMSCRIPTEN_ROOT"`
609		CONFIGURE_PREFIX=${EMSCRIPTEN_ROOT}/emconfigure
610		echo "restart configure ($ARGS)"
611		EMSCRIPTEN_ROOT="${EMSCRIPTEN_ROOT}" CONFIGURE_PREFIX="${EMSCRIPTEN_ROOT}/emconfigure" $CONFIGURE_PREFIX ./configure $ARGS
612		exit
613	else
614		enable_only ${PROGRAM}
615		add_to_makefile_local EMSCRIPTEN_ROOT "Emscripten found at ${EMSCRIPTEN_ROOT}"
616		add_to_makefile_local CONFIGURE_PREFIX "Use ${EMSCRIPTEN_ROOT}/emconfigure"
617	fi
618	;;
619darwin)
620	USE_SIGNALS=
621	;;
622esac
623
624PKGDATADIR=${PKGDATADIR:-${PREFIX}/games/${PROGRAM}/}
625PKGBINDIR=${PKGBINDIR:-${PREFIX}/bin/}
626PKGLIBDIR=${PKGLIBDIR:-${PREFIX}/lib/}
627
628check_compiler
629check_ccache
630makefile_local
631config_h
632check_programs
633check_headers
634
635echo "Build modules:"
636for i in `get_modules`; do
637	add_to_makefile_local ${i}_DISABLE
638	if [ "`get_var ${i}_DISABLE`" = "yes" ]; then
639		echo "Disable $i"
640	else
641		echo "Build $i"
642	fi
643done
644
645cat > ${MAKEFILE_LOCAL} << EOF
646# -------- Automatically generated -----------
647$makefile_local_data
648
649# allow to specify your own targets
650-include config.mk
651EOF
652
653cat > ${TARGET_OS}-${CONFIG_H}.tmp << EOF
654/* This file is automatically generated */
655#pragma once
656$config_h_data
657EOF
658
659if diff ${TARGET_OS}-${CONFIG_H}.tmp ${TARGET_OS}-${CONFIG_H} 2>/dev/null >/dev/null; then
660	if [ configure -nt ${TARGET_OS}-${CONFIG_H} ]; then
661		mv ${TARGET_OS}-${CONFIG_H}.tmp ${TARGET_OS}-${CONFIG_H}
662	else
663		rm -f ${TARGET_OS}-${CONFIG_H}.tmp
664	fi
665else
666	mv ${TARGET_OS}-${CONFIG_H}.tmp ${TARGET_OS}-${CONFIG_H}
667fi
668