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