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 "detect 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 fi 78 : ${PLATFORM:="unix"} 79 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 # Dependency: qt5 342 QMAKE = qmake-qt5 343 QT_PRO_FILE = qt5.pro 344 __EOF__ 345 print_check_msg "$dep_checked_qt5" "yes\n" 346 dep_checked_qt5=1 347 return 1 348 done 349 350 print_check_msg "$dep_checked_qt5" "no\n" 351 dep_checked_qt5=1 352 return 0 353 } 354 dependency_error_gtk2() 355 { 356 print_check_msg "$dep_checked_gtk2" "checking for gtk2... " 357 # dependency gtk2 358 while true 359 do 360 if [ -z "$PKG_CONFIG" ]; then 361 break 362 fi 363 if pkg-config --atleast-version=2.20 gtk+-2.0 > /dev/null 2>&1 ; then 364 : 365 else 366 break 367 fi 368 if test_pkg_config "gtk+-2.0" "" "" "" ; then 369 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags gtk+-2.0`" 370 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs gtk+-2.0`" 371 else 372 break 373 fi 374 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_GTK2" 375 TEMP_LDFLAGS="$TEMP_LDFLAGS -lpthread" 376 print_check_msg "$dep_checked_gtk2" "yes\n" 377 dep_checked_gtk2=1 378 return 1 379 done 380 381 print_check_msg "$dep_checked_gtk2" "no\n" 382 dep_checked_gtk2=1 383 return 0 384 } 385 dependency_error_gtk3() 386 { 387 print_check_msg "$dep_checked_gtk3" "checking for gtk3... " 388 # dependency gtk3 389 while true 390 do 391 if [ -z "$PKG_CONFIG" ]; then 392 break 393 fi 394 if test_pkg_config "gtk+-3.0" "" "" "" ; then 395 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags gtk+-3.0`" 396 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs gtk+-3.0`" 397 else 398 break 399 fi 400 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_GTK3" 401 TEMP_LDFLAGS="$TEMP_LDFLAGS -lpthread" 402 print_check_msg "$dep_checked_gtk3" "yes\n" 403 dep_checked_gtk3=1 404 return 1 405 done 406 407 print_check_msg "$dep_checked_gtk3" "no\n" 408 dep_checked_gtk3=1 409 return 0 410 } 411 dependency_error_gtk4() 412 { 413 print_check_msg "$dep_checked_gtk4" "checking for gtk4... " 414 # dependency gtk4 415 while true 416 do 417 if [ -z "$PKG_CONFIG" ]; then 418 break 419 fi 420 if test_pkg_config "gtk4" "" "" "" ; then 421 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags gtk4`" 422 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs gtk4`" 423 else 424 break 425 fi 426 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_GTK4" 427 TEMP_LDFLAGS="$TEMP_LDFLAGS -lpthread" 428 print_check_msg "$dep_checked_gtk4" "yes\n" 429 dep_checked_gtk4=1 430 return 1 431 done 432 433 print_check_msg "$dep_checked_gtk4" "no\n" 434 dep_checked_gtk4=1 435 return 0 436 } 437 dependency_error_libadwaita() 438 { 439 print_check_msg "$dep_checked_libadwaita" "checking for libadwaita... " 440 # dependency libadwaita 441 while true 442 do 443 if [ -z "$PKG_CONFIG" ]; then 444 break 445 fi 446 if test_pkg_config "libadwaita-1" "" "" "" ; then 447 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags libadwaita-1`" 448 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs libadwaita-1`" 449 else 450 break 451 fi 452 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_GTK4 -DUI_LIBADWAITA" 453 TEMP_LDFLAGS="$TEMP_LDFLAGS -lpthread" 454 print_check_msg "$dep_checked_libadwaita" "yes\n" 455 dep_checked_libadwaita=1 456 return 1 457 done 458 459 print_check_msg "$dep_checked_libadwaita" "no\n" 460 dep_checked_libadwaita=1 461 return 0 462 } 463 dependency_error_webkitgtk6() 464 { 465 print_check_msg "$dep_checked_webkitgtk6" "checking for webkitgtk6... " 466 # dependency webkitgtk6 467 while true 468 do 469 if [ -z "$PKG_CONFIG" ]; then 470 break 471 fi 472 if test_pkg_config "webkitgtk-6.0" "" "" "" ; then 473 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags webkitgtk-6.0`" 474 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs webkitgtk-6.0`" 475 else 476 break 477 fi 478 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_WEBVIEW" 479 print_check_msg "$dep_checked_webkitgtk6" "yes\n" 480 dep_checked_webkitgtk6=1 481 return 1 482 done 483 484 # dependency webkitgtk6 485 while true 486 do 487 print_check_msg "$dep_checked_webkitgtk6" "yes\n" 488 dep_checked_webkitgtk6=1 489 return 1 490 done 491 492 print_check_msg "$dep_checked_webkitgtk6" "no\n" 493 dep_checked_webkitgtk6=1 494 return 0 495 } 496 dependency_error_motif() 497 { 498 print_check_msg "$dep_checked_motif" "checking for motif... " 499 # dependency motif platform="bsd" 500 while true 501 do 502 if notisplatform "bsd"; then 503 break 504 fi 505 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_MOTIF -I/usr/local/include/X11" 506 TEMP_LDFLAGS="$TEMP_LDFLAGS -lXm -lXt -lX11 -lpthread" 507 print_check_msg "$dep_checked_motif" "yes\n" 508 dep_checked_motif=1 509 return 1 510 done 511 512 # dependency motif 513 while true 514 do 515 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_MOTIF" 516 TEMP_LDFLAGS="$TEMP_LDFLAGS -lXm -lXt -lX11 -lpthread" 517 print_check_msg "$dep_checked_motif" "yes\n" 518 dep_checked_motif=1 519 return 1 520 done 521 522 print_check_msg "$dep_checked_motif" "no\n" 523 dep_checked_motif=1 524 return 0 525 } 526 dependency_error_webkit2gtk4() 527 { 528 print_check_msg "$dep_checked_webkit2gtk4" "checking for webkit2gtk4... " 529 # dependency webkit2gtk4 530 while true 531 do 532 if [ -z "$PKG_CONFIG" ]; then 533 break 534 fi 535 if test_pkg_config "webkit2gtk-4.1" "" "" "" ; then 536 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags webkit2gtk-4.1`" 537 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs webkit2gtk-4.1`" 538 else 539 break 540 fi 541 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_WEBVIEW" 542 print_check_msg "$dep_checked_webkit2gtk4" "yes\n" 543 dep_checked_webkit2gtk4=1 544 return 1 545 done 546 547 # dependency webkit2gtk4 548 while true 549 do 550 if [ -z "$PKG_CONFIG" ]; then 551 break 552 fi 553 if test_pkg_config "webkit2gtk-4.0" "" "" "" ; then 554 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags webkit2gtk-4.0`" 555 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs webkit2gtk-4.0`" 556 else 557 break 558 fi 559 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_WEBVIEW" 560 print_check_msg "$dep_checked_webkit2gtk4" "yes\n" 561 dep_checked_webkit2gtk4=1 562 return 1 563 done 564 565 # dependency webkit2gtk4 566 while true 567 do 568 print_check_msg "$dep_checked_webkit2gtk4" "yes\n" 569 dep_checked_webkit2gtk4=1 570 return 1 571 done 572 573 print_check_msg "$dep_checked_webkit2gtk4" "no\n" 574 dep_checked_webkit2gtk4=1 575 return 0 576 } 577 dependency_error_cocoa() 578 { 579 print_check_msg "$dep_checked_cocoa" "checking for cocoa... " 580 # dependency cocoa platform="macos" 581 while true 582 do 583 if notisplatform "macos"; then 584 break 585 fi 586 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_COCOA" 587 TEMP_LDFLAGS="$TEMP_LDFLAGS -lobjc -framework Cocoa" 588 print_check_msg "$dep_checked_cocoa" "yes\n" 589 dep_checked_cocoa=1 590 return 1 591 done 592 593 print_check_msg "$dep_checked_cocoa" "no\n" 594 dep_checked_cocoa=1 595 return 0 596 } 597 dependency_error_winui() 598 { 599 print_check_msg "$dep_checked_winui" "checking for winui... " 600 # dependency winui platform="windows" 601 while true 602 do 603 if notisplatform "windows"; then 604 break 605 fi 606 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_WINUI" 607 print_check_msg "$dep_checked_winui" "yes\n" 608 dep_checked_winui=1 609 return 1 610 done 611 612 print_check_msg "$dep_checked_winui" "no\n" 613 dep_checked_winui=1 614 return 0 615 } 616 617 # start collecting dependency information 618 echo > "$TEMP_DIR/flags.mk" 619 620 DEPENDENCIES_FAILED= 621 ERROR=0 622 # unnamed dependencies 623 TEMP_CFLAGS="$CFLAGS" 624 TEMP_CXXFLAGS="$CXXFLAGS" 625 TEMP_LDFLAGS="$LDFLAGS" 626 while true 627 do 628 while true 629 do 630 if [ -z "$lang_c" ] ; then 631 ERROR=1 632 break 633 fi 634 635 cat >> "$TEMP_DIR/make.mk" << __EOF__ 636 LD = \$(CC) 637 __EOF__ 638 break 639 done 640 break 641 done 642 while true 643 do 644 if notisplatform "unix"; then 645 break 646 fi 647 while true 648 do 649 650 cat >> "$TEMP_DIR/make.mk" << __EOF__ 651 SYS_MAKEFILE = Makefile.unix 652 __EOF__ 653 break 654 done 655 break 656 done 657 while true 658 do 659 if notisplatform "windows"; then 660 break 661 fi 662 while true 663 do 664 665 cat >> "$TEMP_DIR/make.mk" << __EOF__ 666 SYS_MAKEFILE = Makefile.win32 667 __EOF__ 668 break 669 done 670 break 671 done 672 while true 673 do 674 if notisplatform "macos"; then 675 break 676 fi 677 while true 678 do 679 680 cat >> "$TEMP_DIR/make.mk" << __EOF__ 681 OBJ_EXT = .o 682 LIB_EXT = .a 683 SHLIB_EXT = .dylib 684 LIB_PREFIX = lib 685 PACKAGE_SCRIPT = package_osx.sh 686 __EOF__ 687 break 688 done 689 break 690 done 691 while true 692 do 693 if notisplatform "unix"; then 694 break 695 fi 696 if isplatform "macos" || istoolchain "macos"; then 697 break 698 fi 699 while true 700 do 701 702 cat >> "$TEMP_DIR/make.mk" << __EOF__ 703 OBJ_EXT = .o 704 LIB_EXT = .a 705 SHLIB_EXT = .so 706 LIB_PREFIX = lib 707 PACKAGE_SCRIPT = package_unix.sh 708 __EOF__ 709 break 710 done 711 break 712 done 713 while true 714 do 715 while true 716 do 717 718 cat >> "$TEMP_DIR/make.mk" << __EOF__ 719 BUILD_BIN_DIR = bin 720 BUILD_LIB_DIR = lib 721 __EOF__ 722 break 723 done 724 break 725 done 726 while true 727 do 728 if notisplatform "bsd"; then 729 break 730 fi 731 while true 732 do 733 734 TEMP_CFLAGS="$TEMP_CFLAGS -I/usr/local/include" 735 TEMP_LDFLAGS="$TEMP_LDFLAGS -L/usr/local/lib" 736 break 737 done 738 break 739 done 740 741 # build type 742 if [ "$BUILD_TYPE" = "debug" ]; then 743 TEMP_CFLAGS="\${DEBUG_CFLAGS} $TEMP_CFLAGS" 744 TEMP_CXXFLAGS="\${DEBUG_CXXFLAGS} $TEMP_CXXFLAGS" 745 fi 746 if [ "$BUILD_TYPE" = "release" ]; then 747 TEMP_CFLAGS="\${RELEASE_CFLAGS} $TEMP_CFLAGS" 748 TEMP_CXXFLAGS="\${RELEASE_CXXFLAGS} $TEMP_CXXFLAGS" 749 fi 750 751 # add general dependency flags to flags.mk 752 echo "# general flags" >> "$TEMP_DIR/flags.mk" 753 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then 754 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 755 fi 756 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then 757 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 758 fi 759 if [ -n "${TEMP_LDFLAGS}" ]; then 760 echo "LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" 761 fi 762 763 # 764 # OPTION VALUES 765 # 766 checkopt_toolkit_libadwaita() 767 { 768 VERR=0 769 if dependency_error_libadwaita ; then 770 VERR=1 771 fi 772 if dependency_error_webkitgtk6 ; then 773 VERR=1 774 fi 775 if [ $VERR -ne 0 ]; then 776 return 1 777 fi 778 cat >> "$TEMP_DIR/make.mk" << __EOF__ 779 TOOLKIT = gtk 780 GTKOBJ = draw_cairo.o 781 __EOF__ 782 return 0 783 } 784 checkopt_toolkit_gtk4() 785 { 786 VERR=0 787 if dependency_error_gtk4 ; then 788 VERR=1 789 fi 790 if dependency_error_webkitgtk6 ; then 791 VERR=1 792 fi 793 if [ $VERR -ne 0 ]; then 794 return 1 795 fi 796 cat >> "$TEMP_DIR/make.mk" << __EOF__ 797 TOOLKIT = gtk 798 GTKOBJ = draw_cairo.o 799 __EOF__ 800 return 0 801 } 802 checkopt_toolkit_gtk3() 803 { 804 VERR=0 805 if dependency_error_gtk3 ; then 806 VERR=1 807 fi 808 if dependency_error_webkit2gtk4 ; then 809 VERR=1 810 fi 811 if [ $VERR -ne 0 ]; then 812 return 1 813 fi 814 cat >> "$TEMP_DIR/make.mk" << __EOF__ 815 TOOLKIT = gtk 816 GTKOBJ = draw_cairo.o 817 __EOF__ 818 return 0 819 } 820 checkopt_toolkit_gtk2() 821 { 822 VERR=0 823 if dependency_error_gtk2 ; then 824 VERR=1 825 fi 826 if [ $VERR -ne 0 ]; then 827 return 1 828 fi 829 cat >> "$TEMP_DIR/make.mk" << __EOF__ 830 TOOLKIT = gtk 831 GTKOBJ = draw_cairo.o 832 __EOF__ 833 return 0 834 } 835 checkopt_toolkit_qt5() 836 { 837 VERR=0 838 if dependency_error_qt5 ; then 839 VERR=1 840 fi 841 if [ $VERR -ne 0 ]; then 842 return 1 843 fi 844 cat >> "$TEMP_DIR/make.mk" << __EOF__ 845 TOOLKIT = qt 846 LD = \$(CXX) 847 __EOF__ 848 return 0 849 } 850 checkopt_toolkit_qt4() 851 { 852 VERR=0 853 if dependency_error_qt4 ; then 854 VERR=1 855 fi 856 if [ $VERR -ne 0 ]; then 857 return 1 858 fi 859 cat >> "$TEMP_DIR/make.mk" << __EOF__ 860 TOOLKIT = qt 861 LD = \$(CXX) 862 __EOF__ 863 return 0 864 } 865 checkopt_toolkit_cocoa() 866 { 867 VERR=0 868 if dependency_error_cocoa ; 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 TOOLKIT = cocoa 876 __EOF__ 877 return 0 878 } 879 checkopt_toolkit_motif() 880 { 881 VERR=0 882 if dependency_error_motif ; then 883 VERR=1 884 fi 885 if [ $VERR -ne 0 ]; then 886 return 1 887 fi 888 cat >> "$TEMP_DIR/make.mk" << __EOF__ 889 TOOLKIT = motif 890 __EOF__ 891 return 0 892 } 893 checkopt_toolkit_server() 894 { 895 VERR=0 896 if dependency_error_server ; then 897 VERR=1 898 fi 899 if [ $VERR -ne 0 ]; then 900 return 1 901 fi 902 cat >> "$TEMP_DIR/make.mk" << __EOF__ 903 TOOLKIT = server 904 __EOF__ 905 return 0 906 } 907 908 # 909 # TARGETS 910 # 911 912 echo >> "$TEMP_DIR/flags.mk" 913 echo "configuring target: tk" 914 echo "# flags for target tk" >> "$TEMP_DIR/flags.mk" 915 TEMP_CFLAGS= 916 TEMP_CXXFLAGS= 917 TEMP_LDFLAGS= 918 919 920 # Features 921 922 # Option: --toolkit 923 if [ -z "$OPT_TOOLKIT" ]; then 924 echo "auto-detecting option 'toolkit'" 925 SAVED_ERROR="$ERROR" 926 SAVED_DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED" 927 ERROR=1 928 while true 929 do 930 if isplatform "windows"; then 931 if checkopt_toolkit_winui ; then 932 echo " toolkit: winui" >> "$TEMP_DIR/options" 933 ERROR=0 934 break 935 fi 936 fi 937 if isplatform "macos"; then 938 if checkopt_toolkit_cocoa ; then 939 echo " toolkit: cocoa" >> "$TEMP_DIR/options" 940 ERROR=0 941 break 942 fi 943 fi 944 if checkopt_toolkit_libadwaita ; then 945 echo " toolkit: libadwaita" >> "$TEMP_DIR/options" 946 ERROR=0 947 break 948 fi 949 if checkopt_toolkit_gtk4 ; then 950 echo " toolkit: gtk4" >> "$TEMP_DIR/options" 951 ERROR=0 952 break 953 fi 954 if checkopt_toolkit_gtk3 ; then 955 echo " toolkit: gtk3" >> "$TEMP_DIR/options" 956 ERROR=0 957 break 958 fi 959 if checkopt_toolkit_qt5 ; then 960 echo " toolkit: qt5" >> "$TEMP_DIR/options" 961 ERROR=0 962 break 963 fi 964 if checkopt_toolkit_gtk2 ; then 965 echo " toolkit: gtk2" >> "$TEMP_DIR/options" 966 ERROR=0 967 break 968 fi 969 if checkopt_toolkit_qt4 ; then 970 echo " toolkit: qt4" >> "$TEMP_DIR/options" 971 ERROR=0 972 break 973 fi 974 if checkopt_toolkit_motif ; then 975 echo " toolkit: motif" >> "$TEMP_DIR/options" 976 ERROR=0 977 break 978 fi 979 break 980 done 981 if [ $ERROR -ne 0 ]; then 982 SAVED_ERROR=1 983 SAVED_DEPENDENCIES_FAILED="option 'toolkit' $SAVED_DEPENDENCIES_FAILED" 984 fi 985 ERROR="$SAVED_ERROR" 986 DEPENDENCIES_FAILED="$SAVED_DEPENDENCIES_FAILED" 987 else 988 echo "checking option toolkit = $OPT_TOOLKIT" 989 if false; then 990 false 991 elif [ "$OPT_TOOLKIT" = "libadwaita" ]; then 992 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 993 if checkopt_toolkit_libadwaita ; then 994 : 995 else 996 ERROR=1 997 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 998 fi 999 elif [ "$OPT_TOOLKIT" = "gtk4" ]; then 1000 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1001 if checkopt_toolkit_gtk4 ; then 1002 : 1003 else 1004 ERROR=1 1005 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1006 fi 1007 elif [ "$OPT_TOOLKIT" = "gtk3" ]; then 1008 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1009 if checkopt_toolkit_gtk3 ; then 1010 : 1011 else 1012 ERROR=1 1013 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1014 fi 1015 elif [ "$OPT_TOOLKIT" = "gtk2" ]; then 1016 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1017 if checkopt_toolkit_gtk2 ; then 1018 : 1019 else 1020 ERROR=1 1021 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1022 fi 1023 elif [ "$OPT_TOOLKIT" = "qt5" ]; then 1024 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1025 if checkopt_toolkit_qt5 ; then 1026 : 1027 else 1028 ERROR=1 1029 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1030 fi 1031 elif [ "$OPT_TOOLKIT" = "qt4" ]; then 1032 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1033 if checkopt_toolkit_qt4 ; then 1034 : 1035 else 1036 ERROR=1 1037 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1038 fi 1039 elif [ "$OPT_TOOLKIT" = "cocoa" ]; then 1040 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1041 if checkopt_toolkit_cocoa ; then 1042 : 1043 else 1044 ERROR=1 1045 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1046 fi 1047 elif [ "$OPT_TOOLKIT" = "motif" ]; then 1048 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1049 if checkopt_toolkit_motif ; then 1050 : 1051 else 1052 ERROR=1 1053 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1054 fi 1055 elif [ "$OPT_TOOLKIT" = "server" ]; then 1056 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1057 if checkopt_toolkit_server ; then 1058 : 1059 else 1060 ERROR=1 1061 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1062 fi 1063 else 1064 echo 1065 echo "Invalid option value - usage:" 1066 echo " --toolkit=(libadwaita|gtk4|gtk3|gtk2|qt5|qt4|cocoa|motif|server)" 1067 abort_configure 1068 fi 1069 fi 1070 1071 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then 1072 echo "TK_CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 1073 fi 1074 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then 1075 echo "TK_CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 1076 fi 1077 if [ -n "${TEMP_LDFLAGS}" ]; then 1078 echo "TK_LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" 1079 fi 1080 1081 echo >> "$TEMP_DIR/flags.mk" 1082 echo "configuring target: client" 1083 echo "# flags for target client" >> "$TEMP_DIR/flags.mk" 1084 TEMP_CFLAGS= 1085 TEMP_CXXFLAGS= 1086 TEMP_LDFLAGS= 1087 1088 1089 # Features 1090 if [ -n "$FEATURE_CLIENT" ]; then 1091 if [ -n "$DISABLE_FEATURE_CLIENT" ]; then 1092 unset FEATURE_CLIENT 1093 fi 1094 fi 1095 if [ -n "$FEATURE_CLIENT" ]; then 1096 : 1097 else 1098 : 1099 cat >> "$TEMP_DIR/make.mk" << __EOF__ 1100 DISABLE_CLIENT=1 1101 __EOF__ 1102 fi 1103 1104 1105 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then 1106 echo "CLIENT_CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 1107 fi 1108 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then 1109 echo "CLIENT_CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 1110 fi 1111 if [ -n "${TEMP_LDFLAGS}" ]; then 1112 echo "CLIENT_LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" 1113 fi 1114 1115 1116 # final result 1117 if [ $ERROR -ne 0 ]; then 1118 echo 1119 echo "Error: Unresolved dependencies" 1120 echo "$DEPENDENCIES_FAILED" 1121 abort_configure 1122 fi 1123 1124 echo "configure finished" 1125 echo 1126 echo "Toolchain:" 1127 echo " name: $TOOLCHAIN_NAME" 1128 if [ -n "$TOOLCHAIN_CC" ]; then 1129 echo " cc: $TOOLCHAIN_CC" 1130 fi 1131 if [ -n "$TOOLCHAIN_CXX" ]; then 1132 echo " cxx: $TOOLCHAIN_CXX" 1133 fi 1134 if [ -n "$TOOLCHAIN_WSIZE" ]; then 1135 echo " word size: $TOOLCHAIN_WSIZE bit" 1136 fi 1137 if [ -n "$TOOLCHAIN_CSTD" ]; then 1138 echo " default C std: $TOOLCHAIN_CSTD" 1139 fi 1140 if [ $has_overridable_config_vars__ -eq 1 ]; then 1141 echo 1142 echo "Config:" 1143 fi 1144 echo 1145 echo "Options:" 1146 cat "$TEMP_DIR/options" 1147 echo 1148 echo "Features:" 1149 printf ' %-16s' 'client:' 1150 if [ -n "$FEATURE_CLIENT" ]; then 1151 echo 'on' 1152 else 1153 echo 'off' 1154 fi 1155 echo 1156 1157 # generate the config.mk file 1158 pwd=`pwd` 1159 cat > "$TEMP_DIR/config.mk" << __EOF__ 1160 # 1161 # config.mk generated by: 1162 # pwd: $pwd 1163 # $0 $@ 1164 # 1165 1166 __EOF__ 1167 write_toolchain_defaults "$TEMP_DIR/toolchain.mk" 1168 cat "$TEMP_DIR/config.mk" "$TEMP_DIR/vars.mk" "$TEMP_DIR/toolchain.mk" "$TEMP_DIR/flags.mk" "$TEMP_DIR/make.mk" > config.mk 1169 rm -Rf "$TEMP_DIR" 1170