UNIXworkcode

1 #!/bin/sh 2 3 4 # some utility functions 5 isplatform() 6 { 7 for p in $PLATFORM 8 do 9 if [ "$p" = "$1" ]; then 10 return 0 11 fi 12 done 13 return 1 14 } 15 notisplatform() 16 { 17 for p in $PLATFORM 18 do 19 if [ "$p" = "$1" ]; then 20 return 1 21 fi 22 done 23 return 0 24 } 25 istoolchain() 26 { 27 for t in $TOOLCHAIN 28 do 29 if [ "$t" = "$1" ]; then 30 return 0 31 fi 32 done 33 return 1 34 } 35 notistoolchain() 36 { 37 for t in $TOOLCHAIN 38 do 39 if [ "$t" = "$1" ]; then 40 return 1 41 fi 42 done 43 return 0 44 } 45 46 # clean abort 47 abort_configure() 48 { 49 rm -Rf "$TEMP_DIR" 50 exit 1 51 } 52 53 # Test for availability of pkg-config 54 PKG_CONFIG=`command -v pkg-config` 55 : ${PKG_CONFIG:="false"} 56 57 # Simple uname based platform detection 58 # $PLATFORM is used for platform dependent dependency selection 59 OS=`uname -s` 60 OS_VERSION=`uname -r` 61 ARCH=`uname -m` 62 printf "Configure script for platform: " 63 if [ "$OS" = "SunOS" ]; then 64 PLATFORM="solaris sunos unix svr4" 65 elif [ "$OS" = "Linux" ]; then 66 PLATFORM="linux unix" 67 elif [ "$OS" = "FreeBSD" ]; then 68 PLATFORM="freebsd bsd unix" 69 elif [ "$OS" = "OpenBSD" ]; then 70 PLATFORM="openbsd bsd unix" 71 elif [ "$OS" = "NetBSD" ]; then 72 PLATFORM="netbsd bsd unix" 73 elif [ "$OS" = "Darwin" ]; then 74 PLATFORM="macos osx bsd unix" 75 elif echo "$OS" | grep -i "MINGW" > /dev/null; then 76 PLATFORM="windows mingw" 77 else 78 PLATFORM="unix" 79 fi 80 PLATFORM_NAME=`echo "$PLATFORM" | cut -f1 -d' ' -` 81 echo "$PLATFORM_NAME" 82 83 84 # help text 85 printhelp() 86 { 87 echo "Usage: $0 [OPTIONS]..." 88 if [ $has_overridable_config_vars__ -eq 1 ] ; then 89 echo 90 echo "Configuration:" 91 fi 92 cat << '__EOF__' 93 94 Build Types: 95 --debug add extra compile flags for debug builds 96 --release add extra compile flags for release builds 97 98 Options: 99 --toolkit=(libadwaita|gtk4|gtk3|gtk2|qt5|qt4|cocoa|motif|server) 100 101 Optional Features: 102 --enable-client 103 104 __EOF__ 105 abort_configure 106 } 107 108 # create temporary directory 109 TEMP_DIR=".tmp-`uname -n`" 110 rm -Rf "$TEMP_DIR" 111 if mkdir -p "$TEMP_DIR"; then 112 : 113 else 114 echo "Cannot create tmp dir $TEMP_DIR" 115 echo "Abort" 116 exit 1 117 fi 118 touch "$TEMP_DIR/options" 119 touch "$TEMP_DIR/features" 120 121 # config variables 122 has_overridable_config_vars__=0 123 124 # features 125 126 # 127 # parse arguments 128 # 129 BUILD_TYPE="default" 130 for ARG in "$@" 131 do 132 case "$ARG" in 133 "--help"*) printhelp ;; 134 "--debug") BUILD_TYPE="debug" ;; 135 "--release") BUILD_TYPE="release" ;; 136 "--toolkit="*) OPT_TOOLKIT=${ARG#--toolkit=} ;; 137 "--toolkit") echo "option '$ARG' needs a value:"; echo " $ARG=(libadwaita|gtk4|gtk3|gtk2|qt5|qt4|cocoa|motif|server)"; abort_configure ;; 138 "--enable-client") FEATURE_CLIENT=on ;; 139 "--disable-client") unset FEATURE_CLIENT ;; 140 "-"*) echo "unknown option: $ARG"; abort_configure ;; 141 esac 142 done 143 144 # toolchain detection utilities 145 . make/toolchain.sh 146 147 # check languages 148 lang_c= 149 lang_cpp= 150 if detect_cpp_compiler ; then 151 lang_cpp=1 152 fi 153 if detect_c_compiler ; then 154 lang_c=1 155 fi 156 157 158 159 # set defaults for dir variables 160 : ${exec_prefix:="$prefix"} 161 : ${bindir:='${exec_prefix}/bin'} 162 : ${sbindir:='${exec_prefix}/sbin'} 163 : ${libdir:='${exec_prefix}/lib'} 164 : ${libexecdir:='${exec_prefix}/libexec'} 165 : ${datarootdir:='${prefix}/share'} 166 : ${datadir:='${datarootdir}'} 167 : ${sharedstatedir:='${prefix}/com'} 168 if [ -z "$sysconfdir" ]; then 169 if [ "$prefix" = '/usr' ]; then 170 sysconfdir='/etc' 171 else 172 sysconfdir='${prefix}/etc' 173 fi 174 fi 175 if [ -z "$localstatedir" ]; then 176 if [ "$prefix" = '/usr' ]; then 177 localstatedir='/var' 178 else 179 localstatedir='${prefix}/var' 180 fi 181 fi 182 if [ -z "$runstatedir" ]; then 183 if [ "$prefix" = '/usr' ]; then 184 runstatedir='/var/run' 185 else 186 runstatedir='${prefix}/var' 187 fi 188 fi 189 : ${includedir:='${prefix}/include'} 190 : ${infodir:='${datarootdir}/info'} 191 : ${mandir:='${datarootdir}/man'} 192 : ${localedir:='${datarootdir}/locale'} 193 194 195 # check if a config.site exists and load it 196 CONFIG_SITE_OK=0 197 if [ -n "$CONFIG_SITE" ]; then 198 # CONFIG_SITE may contain space separated file names 199 for cs in $CONFIG_SITE; do 200 printf "loading defaults from $cs... " 201 if [ -f "$cs" ]; then 202 . "$cs" 203 echo ok 204 CONFIG_SITE_OK=1 205 break 206 else 207 echo "not found" 208 fi 209 done 210 elif [ -f "$prefix/share/config.site" ]; then 211 printf "loading site defaults... " 212 . "$prefix/share/config.site" 213 echo ok 214 CONFIG_SITE_OK=1 215 elif [ -f "$prefix/etc/config.site" ]; then 216 printf "loading site defaults... " 217 . "$prefix/etc/config.site" 218 echo ok 219 CONFIG_SITE_OK=1 220 fi 221 222 if [ $CONFIG_SITE_OK -eq 0 ]; then 223 # try to detect the correct libdir on our own, except it was changed by the user 224 if [ "$libdir" = '${exec_prefix}/lib' ] ; then 225 if [ "$TOOLCHAIN_WSIZE" = "64" ] ; then 226 if [ "$OS" = "SunOS" ]; then 227 [ -d "${exec_prefix}/lib/64" ] && libdir='${exec_prefix}/lib/64' 228 else 229 [ -d "${exec_prefix}/lib64" ] && libdir='${exec_prefix}/lib64' 230 fi 231 elif [ "$TOOLCHAIN_WSIZE" = "32" ] ; then 232 if [ "$OS" = "SunOS" ]; then 233 [ -d "${exec_prefix}/lib/32" ] && libdir='${exec_prefix}/lib/32' 234 else 235 [ -d "${exec_prefix}/lib32" ] && libdir='${exec_prefix}/lib32' 236 fi 237 fi 238 fi 239 fi 240 241 242 # generate vars.mk 243 echo '# configuration' > "$TEMP_DIR/vars.mk" 244 echo >> "$TEMP_DIR/vars.mk" 245 246 # 247 # DEPENDENCIES 248 # 249 250 # create buffer for make variables required by dependencies 251 echo > "$TEMP_DIR/make.mk" 252 253 test_pkg_config() 254 { 255 if "$PKG_CONFIG" --exists "$1" ; then : 256 else return 1 ; fi 257 if [ -z "$2" ] || "$PKG_CONFIG" --atleast-version="$2" "$1" ; then : 258 else return 1 ; fi 259 if [ -z "$3" ] || "$PKG_CONFIG" --exact-version="$3" "$1" ; then : 260 else return 1 ; fi 261 if [ -z "$4" ] || "$PKG_CONFIG" --max-version="$4" "$1" ; then : 262 else return 1 ; fi 263 return 0 264 } 265 266 print_check_msg() 267 { 268 if [ -z "$1" ]; then 269 shift 270 printf "$@" 271 fi 272 } 273 274 dependency_error_server() 275 { 276 print_check_msg "$dep_checked_server" "checking for server... " 277 # dependency server 278 while true 279 do 280 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_SERVER -DUI_WEBVIEW" 281 print_check_msg "$dep_checked_server" "yes\n" 282 dep_checked_server=1 283 return 1 284 done 285 286 print_check_msg "$dep_checked_server" "no\n" 287 dep_checked_server=1 288 return 0 289 } 290 dependency_error_gtk2legacy() 291 { 292 print_check_msg "$dep_checked_gtk2legacy" "checking for gtk2legacy... " 293 # dependency gtk2legacy 294 while true 295 do 296 if [ -z "$PKG_CONFIG" ]; then 297 break 298 fi 299 if test_pkg_config "gtk+-2.0" "" "" "" ; then 300 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags gtk+-2.0`" 301 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs gtk+-2.0`" 302 else 303 break 304 fi 305 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_GTK2 -DUI_GTK2LEGACY" 306 TEMP_LDFLAGS="$TEMP_LDFLAGS -lpthread" 307 print_check_msg "$dep_checked_gtk2legacy" "yes\n" 308 dep_checked_gtk2legacy=1 309 return 1 310 done 311 312 print_check_msg "$dep_checked_gtk2legacy" "no\n" 313 dep_checked_gtk2legacy=1 314 return 0 315 } 316 dependency_error_qt5() 317 { 318 print_check_msg "$dep_checked_qt5" "checking for qt5... " 319 # dependency qt5 320 while true 321 do 322 if [ -z "$lang_cpp" ] ; then 323 break 324 fi 325 if [ -z "$PKG_CONFIG" ]; then 326 break 327 fi 328 if which qmake-qt5 > /dev/null 2>&1 ; then 329 : 330 else 331 break 332 fi 333 if test_pkg_config "Qt5Widgets" "" "" "" ; then 334 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags Qt5Widgets`" 335 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs Qt5Widgets`" 336 else 337 break 338 fi 339 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_QT5" 340 cat >> $TEMP_DIR/make.mk << __EOF__ 341 342 # dependency: qt5 343 QMAKE = qmake-qt5 344 QT_PRO_FILE = qt5.pro 345 __EOF__ 346 print_check_msg "$dep_checked_qt5" "yes\n" 347 dep_checked_qt5=1 348 return 1 349 done 350 351 print_check_msg "$dep_checked_qt5" "no\n" 352 dep_checked_qt5=1 353 return 0 354 } 355 dependency_error_gtk2() 356 { 357 print_check_msg "$dep_checked_gtk2" "checking for gtk2... " 358 # dependency gtk2 359 while true 360 do 361 if [ -z "$PKG_CONFIG" ]; then 362 break 363 fi 364 if pkg-config --atleast-version=2.20 gtk+-2.0 > /dev/null 2>&1 ; then 365 : 366 else 367 break 368 fi 369 if test_pkg_config "gtk+-2.0" "" "" "" ; then 370 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags gtk+-2.0`" 371 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs gtk+-2.0`" 372 else 373 break 374 fi 375 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_GTK2" 376 TEMP_LDFLAGS="$TEMP_LDFLAGS -lpthread" 377 print_check_msg "$dep_checked_gtk2" "yes\n" 378 dep_checked_gtk2=1 379 return 1 380 done 381 382 print_check_msg "$dep_checked_gtk2" "no\n" 383 dep_checked_gtk2=1 384 return 0 385 } 386 dependency_error_gtk3() 387 { 388 print_check_msg "$dep_checked_gtk3" "checking for gtk3... " 389 # dependency gtk3 390 while true 391 do 392 if [ -z "$PKG_CONFIG" ]; then 393 break 394 fi 395 if test_pkg_config "gtk+-3.0" "" "" "" ; then 396 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags gtk+-3.0`" 397 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs gtk+-3.0`" 398 else 399 break 400 fi 401 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_GTK3" 402 TEMP_LDFLAGS="$TEMP_LDFLAGS -lpthread" 403 print_check_msg "$dep_checked_gtk3" "yes\n" 404 dep_checked_gtk3=1 405 return 1 406 done 407 408 print_check_msg "$dep_checked_gtk3" "no\n" 409 dep_checked_gtk3=1 410 return 0 411 } 412 dependency_error_gtk4() 413 { 414 print_check_msg "$dep_checked_gtk4" "checking for gtk4... " 415 # dependency gtk4 416 while true 417 do 418 if [ -z "$PKG_CONFIG" ]; then 419 break 420 fi 421 if test_pkg_config "gtk4" "" "" "" ; then 422 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags gtk4`" 423 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs gtk4`" 424 else 425 break 426 fi 427 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_GTK4" 428 TEMP_LDFLAGS="$TEMP_LDFLAGS -lpthread" 429 print_check_msg "$dep_checked_gtk4" "yes\n" 430 dep_checked_gtk4=1 431 return 1 432 done 433 434 print_check_msg "$dep_checked_gtk4" "no\n" 435 dep_checked_gtk4=1 436 return 0 437 } 438 dependency_error_libadwaita() 439 { 440 print_check_msg "$dep_checked_libadwaita" "checking for libadwaita... " 441 # dependency libadwaita 442 while true 443 do 444 if [ -z "$PKG_CONFIG" ]; then 445 break 446 fi 447 if test_pkg_config "libadwaita-1" "" "" "" ; then 448 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags libadwaita-1`" 449 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs libadwaita-1`" 450 else 451 break 452 fi 453 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_GTK4 -DUI_LIBADWAITA" 454 TEMP_LDFLAGS="$TEMP_LDFLAGS -lpthread" 455 print_check_msg "$dep_checked_libadwaita" "yes\n" 456 dep_checked_libadwaita=1 457 return 1 458 done 459 460 print_check_msg "$dep_checked_libadwaita" "no\n" 461 dep_checked_libadwaita=1 462 return 0 463 } 464 dependency_error_webkitgtk6() 465 { 466 print_check_msg "$dep_checked_webkitgtk6" "checking for webkitgtk6... " 467 # dependency webkitgtk6 468 while true 469 do 470 if [ -z "$PKG_CONFIG" ]; then 471 break 472 fi 473 if test_pkg_config "webkitgtk-6.0" "" "" "" ; then 474 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags webkitgtk-6.0`" 475 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs webkitgtk-6.0`" 476 else 477 break 478 fi 479 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_WEBVIEW" 480 print_check_msg "$dep_checked_webkitgtk6" "yes\n" 481 dep_checked_webkitgtk6=1 482 return 1 483 done 484 485 # dependency webkitgtk6 486 while true 487 do 488 print_check_msg "$dep_checked_webkitgtk6" "yes\n" 489 dep_checked_webkitgtk6=1 490 return 1 491 done 492 493 print_check_msg "$dep_checked_webkitgtk6" "no\n" 494 dep_checked_webkitgtk6=1 495 return 0 496 } 497 dependency_error_motif() 498 { 499 print_check_msg "$dep_checked_motif" "checking for motif... " 500 # dependency motif platform="bsd" 501 while true 502 do 503 if notisplatform "bsd"; then 504 break 505 fi 506 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_MOTIF -I/usr/local/include/X11" 507 TEMP_LDFLAGS="$TEMP_LDFLAGS -lXm -lXt -lX11 -lpthread" 508 print_check_msg "$dep_checked_motif" "yes\n" 509 dep_checked_motif=1 510 return 1 511 done 512 513 # dependency motif 514 while true 515 do 516 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_MOTIF" 517 TEMP_LDFLAGS="$TEMP_LDFLAGS -lXm -lXt -lX11 -lpthread" 518 print_check_msg "$dep_checked_motif" "yes\n" 519 dep_checked_motif=1 520 return 1 521 done 522 523 print_check_msg "$dep_checked_motif" "no\n" 524 dep_checked_motif=1 525 return 0 526 } 527 dependency_error_webkit2gtk4() 528 { 529 print_check_msg "$dep_checked_webkit2gtk4" "checking for webkit2gtk4... " 530 # dependency webkit2gtk4 531 while true 532 do 533 if [ -z "$PKG_CONFIG" ]; then 534 break 535 fi 536 if test_pkg_config "webkit2gtk-4.1" "" "" "" ; then 537 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags webkit2gtk-4.1`" 538 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs webkit2gtk-4.1`" 539 else 540 break 541 fi 542 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_WEBVIEW" 543 print_check_msg "$dep_checked_webkit2gtk4" "yes\n" 544 dep_checked_webkit2gtk4=1 545 return 1 546 done 547 548 # dependency webkit2gtk4 549 while true 550 do 551 if [ -z "$PKG_CONFIG" ]; then 552 break 553 fi 554 if test_pkg_config "webkit2gtk-4.0" "" "" "" ; then 555 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags webkit2gtk-4.0`" 556 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs webkit2gtk-4.0`" 557 else 558 break 559 fi 560 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_WEBVIEW" 561 print_check_msg "$dep_checked_webkit2gtk4" "yes\n" 562 dep_checked_webkit2gtk4=1 563 return 1 564 done 565 566 # dependency webkit2gtk4 567 while true 568 do 569 print_check_msg "$dep_checked_webkit2gtk4" "yes\n" 570 dep_checked_webkit2gtk4=1 571 return 1 572 done 573 574 print_check_msg "$dep_checked_webkit2gtk4" "no\n" 575 dep_checked_webkit2gtk4=1 576 return 0 577 } 578 dependency_error_cocoa() 579 { 580 print_check_msg "$dep_checked_cocoa" "checking for cocoa... " 581 # dependency cocoa platform="macos" 582 while true 583 do 584 if notisplatform "macos"; then 585 break 586 fi 587 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_COCOA" 588 TEMP_LDFLAGS="$TEMP_LDFLAGS -lobjc -framework Cocoa -framework WebKit" 589 print_check_msg "$dep_checked_cocoa" "yes\n" 590 dep_checked_cocoa=1 591 return 1 592 done 593 594 print_check_msg "$dep_checked_cocoa" "no\n" 595 dep_checked_cocoa=1 596 return 0 597 } 598 dependency_error_winui() 599 { 600 print_check_msg "$dep_checked_winui" "checking for winui... " 601 # dependency winui platform="windows" 602 while true 603 do 604 if notisplatform "windows"; then 605 break 606 fi 607 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_WINUI" 608 print_check_msg "$dep_checked_winui" "yes\n" 609 dep_checked_winui=1 610 return 1 611 done 612 613 print_check_msg "$dep_checked_winui" "no\n" 614 dep_checked_winui=1 615 return 0 616 } 617 618 # start collecting dependency information 619 echo > "$TEMP_DIR/flags.mk" 620 621 DEPENDENCIES_FAILED= 622 ERROR=0 623 # unnamed dependencies 624 cat >> "$TEMP_DIR/make.mk" << __EOF__ 625 626 # definitions from unnamed dependencies 627 __EOF__ 628 TEMP_CFLAGS="$CFLAGS" 629 TEMP_CXXFLAGS="$CXXFLAGS" 630 TEMP_LDFLAGS="$LDFLAGS" 631 while true 632 do 633 while true 634 do 635 if [ -z "$lang_c" ] ; then 636 ERROR=1 637 break 638 fi 639 640 cat >> "$TEMP_DIR/make.mk" << __EOF__ 641 LD = \$(CC) 642 __EOF__ 643 break 644 done 645 break 646 done 647 while true 648 do 649 if notisplatform "unix"; then 650 break 651 fi 652 while true 653 do 654 655 cat >> "$TEMP_DIR/make.mk" << __EOF__ 656 SYS_MAKEFILE = Makefile.unix 657 __EOF__ 658 break 659 done 660 break 661 done 662 while true 663 do 664 if notisplatform "windows"; then 665 break 666 fi 667 while true 668 do 669 670 cat >> "$TEMP_DIR/make.mk" << __EOF__ 671 SYS_MAKEFILE = Makefile.win32 672 __EOF__ 673 break 674 done 675 break 676 done 677 while true 678 do 679 if notisplatform "macos"; then 680 break 681 fi 682 while true 683 do 684 685 cat >> "$TEMP_DIR/make.mk" << __EOF__ 686 OBJ_EXT = .o 687 LIB_EXT = .a 688 SHLIB_EXT = .dylib 689 LIB_PREFIX = lib 690 PACKAGE_SCRIPT = package_osx.sh 691 __EOF__ 692 break 693 done 694 break 695 done 696 while true 697 do 698 if notisplatform "unix"; then 699 break 700 fi 701 if isplatform "macos" || istoolchain "macos"; then 702 break 703 fi 704 while true 705 do 706 707 cat >> "$TEMP_DIR/make.mk" << __EOF__ 708 OBJ_EXT = .o 709 LIB_EXT = .a 710 SHLIB_EXT = .so 711 LIB_PREFIX = lib 712 PACKAGE_SCRIPT = package_unix.sh 713 __EOF__ 714 break 715 done 716 break 717 done 718 while true 719 do 720 while true 721 do 722 723 cat >> "$TEMP_DIR/make.mk" << __EOF__ 724 BUILD_BIN_DIR = bin 725 BUILD_LIB_DIR = lib 726 __EOF__ 727 break 728 done 729 break 730 done 731 while true 732 do 733 if notisplatform "bsd"; then 734 break 735 fi 736 while true 737 do 738 739 TEMP_CFLAGS="$TEMP_CFLAGS -I/usr/local/include" 740 TEMP_LDFLAGS="$TEMP_LDFLAGS -L/usr/local/lib" 741 break 742 done 743 break 744 done 745 746 # build type 747 if [ "$BUILD_TYPE" = "debug" ]; then 748 TEMP_CFLAGS="\${DEBUG_CFLAGS} $TEMP_CFLAGS" 749 TEMP_CXXFLAGS="\${DEBUG_CXXFLAGS} $TEMP_CXXFLAGS" 750 fi 751 if [ "$BUILD_TYPE" = "release" ]; then 752 TEMP_CFLAGS="\${RELEASE_CFLAGS} $TEMP_CFLAGS" 753 TEMP_CXXFLAGS="\${RELEASE_CXXFLAGS} $TEMP_CXXFLAGS" 754 fi 755 756 # add general dependency flags to flags.mk 757 echo "# general flags" >> "$TEMP_DIR/flags.mk" 758 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then 759 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 760 fi 761 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then 762 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 763 fi 764 if [ -n "${TEMP_LDFLAGS}" ]; then 765 echo "LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" 766 fi 767 768 # 769 # OPTION VALUES 770 # 771 checkopt_toolkit_libadwaita() 772 { 773 VERR=0 774 if dependency_error_libadwaita ; then 775 VERR=1 776 fi 777 if dependency_error_webkitgtk6 ; then 778 VERR=1 779 fi 780 if [ $VERR -ne 0 ]; then 781 return 1 782 fi 783 cat >> "$TEMP_DIR/make.mk" << __EOF__ 784 785 # option: toolkit = libadwaita 786 TOOLKIT = gtk 787 GTKOBJ = draw_cairo.o 788 __EOF__ 789 return 0 790 } 791 checkopt_toolkit_gtk4() 792 { 793 VERR=0 794 if dependency_error_gtk4 ; then 795 VERR=1 796 fi 797 if dependency_error_webkitgtk6 ; then 798 VERR=1 799 fi 800 if [ $VERR -ne 0 ]; then 801 return 1 802 fi 803 cat >> "$TEMP_DIR/make.mk" << __EOF__ 804 805 # option: toolkit = gtk4 806 TOOLKIT = gtk 807 GTKOBJ = draw_cairo.o 808 __EOF__ 809 return 0 810 } 811 checkopt_toolkit_gtk3() 812 { 813 VERR=0 814 if dependency_error_gtk3 ; then 815 VERR=1 816 fi 817 if dependency_error_webkit2gtk4 ; then 818 VERR=1 819 fi 820 if [ $VERR -ne 0 ]; then 821 return 1 822 fi 823 cat >> "$TEMP_DIR/make.mk" << __EOF__ 824 825 # option: toolkit = gtk3 826 TOOLKIT = gtk 827 GTKOBJ = draw_cairo.o 828 __EOF__ 829 return 0 830 } 831 checkopt_toolkit_gtk2() 832 { 833 VERR=0 834 if dependency_error_gtk2 ; then 835 VERR=1 836 fi 837 if [ $VERR -ne 0 ]; then 838 return 1 839 fi 840 cat >> "$TEMP_DIR/make.mk" << __EOF__ 841 842 # option: toolkit = gtk2 843 TOOLKIT = gtk 844 GTKOBJ = draw_cairo.o 845 __EOF__ 846 return 0 847 } 848 checkopt_toolkit_qt5() 849 { 850 VERR=0 851 if dependency_error_qt5 ; then 852 VERR=1 853 fi 854 if [ $VERR -ne 0 ]; then 855 return 1 856 fi 857 cat >> "$TEMP_DIR/make.mk" << __EOF__ 858 859 # option: toolkit = qt5 860 TOOLKIT = qt 861 LD = \$(CXX) 862 __EOF__ 863 return 0 864 } 865 checkopt_toolkit_qt4() 866 { 867 VERR=0 868 if dependency_error_qt4 ; then 869 VERR=1 870 fi 871 if [ $VERR -ne 0 ]; then 872 return 1 873 fi 874 cat >> "$TEMP_DIR/make.mk" << __EOF__ 875 876 # option: toolkit = qt4 877 TOOLKIT = qt 878 LD = \$(CXX) 879 __EOF__ 880 return 0 881 } 882 checkopt_toolkit_cocoa() 883 { 884 VERR=0 885 if dependency_error_cocoa ; then 886 VERR=1 887 fi 888 if [ $VERR -ne 0 ]; then 889 return 1 890 fi 891 cat >> "$TEMP_DIR/make.mk" << __EOF__ 892 893 # option: toolkit = cocoa 894 TOOLKIT = cocoa 895 __EOF__ 896 return 0 897 } 898 checkopt_toolkit_motif() 899 { 900 VERR=0 901 if dependency_error_motif ; then 902 VERR=1 903 fi 904 if [ $VERR -ne 0 ]; then 905 return 1 906 fi 907 cat >> "$TEMP_DIR/make.mk" << __EOF__ 908 909 # option: toolkit = motif 910 TOOLKIT = motif 911 __EOF__ 912 return 0 913 } 914 checkopt_toolkit_server() 915 { 916 VERR=0 917 if dependency_error_server ; then 918 VERR=1 919 fi 920 if [ $VERR -ne 0 ]; then 921 return 1 922 fi 923 cat >> "$TEMP_DIR/make.mk" << __EOF__ 924 925 # option: toolkit = server 926 TOOLKIT = server 927 __EOF__ 928 return 0 929 } 930 931 # 932 # TARGETS 933 # 934 935 echo >> "$TEMP_DIR/flags.mk" 936 echo "configuring target: tk" 937 echo "# flags for target tk" >> "$TEMP_DIR/flags.mk" 938 TEMP_CFLAGS= 939 TEMP_CXXFLAGS= 940 TEMP_LDFLAGS= 941 942 943 # Features 944 945 OPTIONS_UNSELECTED= 946 # Option: --toolkit 947 if [ -z "$OPT_TOOLKIT" ]; then 948 echo "auto-detecting option: 'toolkit'" 949 SAVED_ERROR="$ERROR" 950 SAVED_DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED" 951 ERROR=1 952 while true 953 do 954 if isplatform "windows"; then 955 if checkopt_toolkit_winui ; then 956 echo " toolkit: winui" >> "$TEMP_DIR/options" 957 ERROR=0 958 break 959 fi 960 fi 961 if isplatform "macos"; then 962 if checkopt_toolkit_cocoa ; then 963 echo " toolkit: cocoa" >> "$TEMP_DIR/options" 964 ERROR=0 965 break 966 fi 967 fi 968 if checkopt_toolkit_libadwaita ; then 969 echo " toolkit: libadwaita" >> "$TEMP_DIR/options" 970 ERROR=0 971 break 972 fi 973 if checkopt_toolkit_gtk4 ; then 974 echo " toolkit: gtk4" >> "$TEMP_DIR/options" 975 ERROR=0 976 break 977 fi 978 if checkopt_toolkit_gtk3 ; then 979 echo " toolkit: gtk3" >> "$TEMP_DIR/options" 980 ERROR=0 981 break 982 fi 983 if checkopt_toolkit_qt5 ; then 984 echo " toolkit: qt5" >> "$TEMP_DIR/options" 985 ERROR=0 986 break 987 fi 988 if checkopt_toolkit_gtk2 ; then 989 echo " toolkit: gtk2" >> "$TEMP_DIR/options" 990 ERROR=0 991 break 992 fi 993 if checkopt_toolkit_qt4 ; then 994 echo " toolkit: qt4" >> "$TEMP_DIR/options" 995 ERROR=0 996 break 997 fi 998 if checkopt_toolkit_motif ; then 999 echo " toolkit: motif" >> "$TEMP_DIR/options" 1000 ERROR=0 1001 break 1002 fi 1003 break 1004 done 1005 if [ $ERROR -ne 0 ]; then 1006 SAVED_ERROR=1 1007 SAVED_DEPENDENCIES_FAILED="option 'toolkit' $SAVED_DEPENDENCIES_FAILED" 1008 fi 1009 ERROR="$SAVED_ERROR" 1010 DEPENDENCIES_FAILED="$SAVED_DEPENDENCIES_FAILED" 1011 else 1012 echo "checking option toolkit = $OPT_TOOLKIT" 1013 if false; then 1014 false 1015 elif [ "$OPT_TOOLKIT" = "libadwaita" ]; then 1016 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1017 if checkopt_toolkit_libadwaita ; then 1018 : 1019 else 1020 ERROR=1 1021 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1022 fi 1023 elif [ "$OPT_TOOLKIT" = "gtk4" ]; then 1024 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1025 if checkopt_toolkit_gtk4 ; then 1026 : 1027 else 1028 ERROR=1 1029 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1030 fi 1031 elif [ "$OPT_TOOLKIT" = "gtk3" ]; then 1032 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1033 if checkopt_toolkit_gtk3 ; then 1034 : 1035 else 1036 ERROR=1 1037 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1038 fi 1039 elif [ "$OPT_TOOLKIT" = "gtk2" ]; then 1040 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1041 if checkopt_toolkit_gtk2 ; then 1042 : 1043 else 1044 ERROR=1 1045 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1046 fi 1047 elif [ "$OPT_TOOLKIT" = "qt5" ]; then 1048 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1049 if checkopt_toolkit_qt5 ; then 1050 : 1051 else 1052 ERROR=1 1053 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1054 fi 1055 elif [ "$OPT_TOOLKIT" = "qt4" ]; then 1056 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1057 if checkopt_toolkit_qt4 ; then 1058 : 1059 else 1060 ERROR=1 1061 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1062 fi 1063 elif [ "$OPT_TOOLKIT" = "cocoa" ]; then 1064 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1065 if checkopt_toolkit_cocoa ; then 1066 : 1067 else 1068 ERROR=1 1069 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1070 fi 1071 elif [ "$OPT_TOOLKIT" = "motif" ]; then 1072 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1073 if checkopt_toolkit_motif ; then 1074 : 1075 else 1076 ERROR=1 1077 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1078 fi 1079 elif [ "$OPT_TOOLKIT" = "server" ]; then 1080 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1081 if checkopt_toolkit_server ; then 1082 : 1083 else 1084 ERROR=1 1085 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1086 fi 1087 else 1088 echo 1089 echo "Invalid option value - usage:" 1090 echo " --toolkit=(libadwaita|gtk4|gtk3|gtk2|qt5|qt4|cocoa|motif|server)" 1091 abort_configure 1092 fi 1093 fi 1094 1095 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then 1096 echo "TK_CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 1097 fi 1098 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then 1099 echo "TK_CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 1100 fi 1101 if [ -n "${TEMP_LDFLAGS}" ]; then 1102 echo "TK_LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" 1103 fi 1104 1105 echo >> "$TEMP_DIR/flags.mk" 1106 echo "configuring target: client" 1107 echo "# flags for target client" >> "$TEMP_DIR/flags.mk" 1108 TEMP_CFLAGS= 1109 TEMP_CXXFLAGS= 1110 TEMP_LDFLAGS= 1111 1112 1113 # Features 1114 if [ -n "$FEATURE_CLIENT" ]; then 1115 if [ -n "$DISABLE_FEATURE_CLIENT" ]; then 1116 unset FEATURE_CLIENT 1117 fi 1118 fi 1119 if [ -n "$FEATURE_CLIENT" ]; then 1120 : 1121 else 1122 : 1123 cat >> "$TEMP_DIR/make.mk" << __EOF__ 1124 1125 # disabled feature: client 1126 DISABLE_CLIENT=1 1127 __EOF__ 1128 fi 1129 1130 OPTIONS_UNSELECTED= 1131 1132 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then 1133 echo "CLIENT_CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 1134 fi 1135 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then 1136 echo "CLIENT_CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 1137 fi 1138 if [ -n "${TEMP_LDFLAGS}" ]; then 1139 echo "CLIENT_LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" 1140 fi 1141 1142 1143 # final result 1144 echo "configure finished" 1145 echo 1146 1147 if [ $ERROR -ne 0 ]; then 1148 echo "Error:" 1149 if [ -n "$DEPENDENCIES_FAILED" ]; then 1150 echo "Unresolved dependencies: $DEPENDENCIES_FAILED" 1151 fi 1152 if [ -n "$OPTIONS_UNSELECTED" ]; then 1153 echo "Unselected options: $OPTIONS_UNSELECTED" 1154 fi 1155 abort_configure 1156 fi 1157 1158 echo "Toolchain:" 1159 echo " name: $TOOLCHAIN_NAME" 1160 if [ -n "$TOOLCHAIN_CC" ]; then 1161 echo " cc: $TOOLCHAIN_CC" 1162 fi 1163 if [ -n "$TOOLCHAIN_CXX" ]; then 1164 echo " cxx: $TOOLCHAIN_CXX" 1165 fi 1166 if [ -n "$TOOLCHAIN_WSIZE" ]; then 1167 echo " word size: $TOOLCHAIN_WSIZE bit" 1168 fi 1169 if [ -n "$TOOLCHAIN_CSTD" ]; then 1170 echo " default C std: $TOOLCHAIN_CSTD" 1171 fi 1172 if [ $has_overridable_config_vars__ -eq 1 ]; then 1173 echo 1174 echo "Config:" 1175 fi 1176 echo 1177 echo "Options:" 1178 cat "$TEMP_DIR/options" 1179 echo 1180 echo "Features:" 1181 printf ' %-16s' 'client:' 1182 if [ -n "$FEATURE_CLIENT" ]; then 1183 echo 'on' 1184 else 1185 echo 'off' 1186 fi 1187 echo 1188 1189 # generate the config.mk file 1190 pwd=`pwd` 1191 cat > "$TEMP_DIR/config.mk" << __EOF__ 1192 # 1193 # config.mk generated by: 1194 # pwd: $pwd 1195 # $0 $@ 1196 # 1197 1198 __EOF__ 1199 write_toolchain_defaults "$TEMP_DIR/toolchain.mk" 1200 cat "$TEMP_DIR/config.mk" "$TEMP_DIR/vars.mk" "$TEMP_DIR/toolchain.mk" "$TEMP_DIR/flags.mk" "$TEMP_DIR/make.mk" > config.mk 1201 rm -Rf "$TEMP_DIR" 1202