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 printf "detect platform... " 62 if [ "$OS" = "SunOS" ]; then 63 PLATFORM="solaris sunos unix svr4" 64 elif [ "$OS" = "Linux" ]; then 65 PLATFORM="linux unix" 66 elif [ "$OS" = "FreeBSD" ]; then 67 PLATFORM="freebsd bsd unix" 68 elif [ "$OS" = "OpenBSD" ]; then 69 PLATFORM="openbsd bsd unix" 70 elif [ "$OS" = "NetBSD" ]; then 71 PLATFORM="netbsd bsd unix" 72 elif [ "$OS" = "Darwin" ]; then 73 PLATFORM="macos osx bsd unix" 74 elif echo "$OS" | grep -i "MINGW" > /dev/null; then 75 PLATFORM="windows mingw" 76 fi 77 : ${PLATFORM:="unix"} 78 79 PLATFORM_NAME=`echo "$PLATFORM" | cut -f1 -d' ' -` 80 echo "$PLATFORM_NAME" 81 82 83 # help text 84 printhelp() 85 { 86 echo "Usage: $0 [OPTIONS]..." 87 cat << __EOF__ 88 Installation directories: 89 --prefix=PREFIX path prefix for architecture-independent files 90 [$prefix] 91 --exec-prefix=EPREFIX path prefix for architecture-dependent files 92 [PREFIX] 93 94 --bindir=DIR user executables [EPREFIX/bin] 95 --sbindir=DIR system admin executables [EPREFIX/sbin] 96 --libexecdir=DIR program executables [EPREFIX/libexec] 97 --sysconfdir=DIR system configuration files [PREFIX/etc] 98 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] 99 --localstatedir=DIR modifiable single-machine data [PREFIX/var] 100 --runstatedir=DIR run-time variable data [LOCALSTATEDIR/run] 101 --libdir=DIR object code libraries [EPREFIX/lib] 102 --includedir=DIR C header files [PREFIX/include] 103 --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] 104 --datadir=DIR read-only architecture-independent data [DATAROOTDIR] 105 --infodir=DIR info documentation [DATAROOTDIR/info] 106 --mandir=DIR man documentation [DATAROOTDIR/man] 107 --localedir=DIR locale-dependent data [DATAROOTDIR/locale] 108 109 Build Types: 110 --debug add extra compile flags for debug builds 111 --release add extra compile flags for release builds 112 113 Options: 114 --toolkit=(libadwaita|gtk4|gtk3|cocoa|qt5|motif) 115 116 __EOF__ 117 } 118 119 # create temporary directory 120 TEMP_DIR=".tmp-`uname -n`" 121 rm -Rf "$TEMP_DIR" 122 if mkdir -p "$TEMP_DIR"; then 123 : 124 else 125 echo "Cannot create tmp dir $TEMP_DIR" 126 echo "Abort" 127 exit 1 128 fi 129 touch "$TEMP_DIR/options" 130 touch "$TEMP_DIR/features" 131 132 # define standard variables 133 # also define standard prefix (this is where we will search for config.site) 134 prefix=/usr 135 exec_prefix= 136 bindir= 137 sbindir= 138 libdir= 139 libexecdir= 140 datarootdir= 141 datadir= 142 sysconfdir= 143 sharedstatedir= 144 localstatedir= 145 runstatedir= 146 includedir= 147 infodir= 148 localedir= 149 mandir= 150 151 # custom variables 152 153 # features 154 155 # 156 # parse arguments 157 # 158 BUILD_TYPE="default" 159 for ARG in "$@" 160 do 161 case "$ARG" in 162 "--prefix="*) prefix=${ARG#--prefix=} ;; 163 "--exec-prefix="*) exec_prefix=${ARG#--exec-prefix=} ;; 164 "--bindir="*) bindir=${ARG#----bindir=} ;; 165 "--sbindir="*) sbindir=${ARG#--sbindir=} ;; 166 "--libdir="*) libdir=${ARG#--libdir=} ;; 167 "--libexecdir="*) libexecdir=${ARG#--libexecdir=} ;; 168 "--datarootdir="*) datarootdir=${ARG#--datarootdir=} ;; 169 "--datadir="*) datadir=${ARG#--datadir=} ;; 170 "--sysconfdir="*) sysconfdir=${ARG#--sysconfdir=} ;; 171 "--sharedstatedir="*) sharedstatedir=${ARG#--sharedstatedir=} ;; 172 "--localstatedir="*) localstatedir=${ARG#--localstatedir=} ;; 173 "--includedir="*) includedir=${ARG#--includedir=} ;; 174 "--infodir="*) infodir=${ARG#--infodir=} ;; 175 "--mandir"*) mandir=${ARG#--mandir} ;; 176 "--localedir"*) localedir=${ARG#--localedir} ;; 177 "--help"*) printhelp; abort_configure ;; 178 "--debug") BUILD_TYPE="debug" ;; 179 "--release") BUILD_TYPE="release" ;; 180 "--toolkit="*) OPT_TOOLKIT=${ARG#--toolkit=} ;; 181 "--toolkit") echo "option '$ARG' needs a value:"; echo " $ARG=(libadwaita|gtk4|gtk3|cocoa|qt5|motif)"; abort_configure ;; 182 "-"*) echo "unknown option: $ARG"; abort_configure ;; 183 esac 184 done 185 186 187 188 # set defaults for dir variables 189 : ${exec_prefix:="$prefix"} 190 : ${bindir:='${exec_prefix}/bin'} 191 : ${sbindir:='${exec_prefix}/sbin'} 192 : ${libdir:='${exec_prefix}/lib'} 193 : ${libexecdir:='${exec_prefix}/libexec'} 194 : ${datarootdir:='${prefix}/share'} 195 : ${datadir:='${datarootdir}'} 196 : ${sysconfdir:='${prefix}/etc'} 197 : ${sharedstatedir:='${prefix}/com'} 198 : ${localstatedir:='${prefix}/var'} 199 : ${runstatedir:='${localstatedir}/run'} 200 : ${includedir:='${prefix}/include'} 201 : ${infodir:='${datarootdir}/info'} 202 : ${mandir:='${datarootdir}/man'} 203 : ${localedir:='${datarootdir}/locale'} 204 205 # remember the above values and compare them later 206 orig_bindir="$bindir" 207 orig_sbindir="$sbindir" 208 orig_libdir="$libdir" 209 orig_libexecdir="$libexecdir" 210 orig_datarootdir="$datarootdir" 211 orig_datadir="$datadir" 212 orig_sysconfdir="$sysconfdir" 213 orig_sharedstatedir="$sharedstatedir" 214 orig_localstatedir="$localstatedir" 215 orig_runstatedir="$runstatedir" 216 orig_includedir="$includedir" 217 orig_infodir="$infodir" 218 orig_mandir="$mandir" 219 orig_localedir="$localedir" 220 221 # check if a config.site exists and load it 222 if [ -n "$CONFIG_SITE" ]; then 223 # CONFIG_SITE may contain space separated file names 224 for cs in $CONFIG_SITE; do 225 printf "loading defaults from $cs... " 226 . "$cs" 227 echo ok 228 done 229 elif [ -f "$prefix/share/config.site" ]; then 230 printf "loading site defaults... " 231 . "$prefix/share/config.site" 232 echo ok 233 elif [ -f "$prefix/etc/config.site" ]; then 234 printf "loading site defaults... " 235 . "$prefix/etc/config.site" 236 echo ok 237 fi 238 239 240 # generate vars.mk 241 cat > "$TEMP_DIR/vars.mk" << __EOF__ 242 prefix=$prefix 243 exec_prefix=$exec_prefix 244 bindir=$bindir 245 sbindir=$sbindir 246 libdir=$libdir 247 libexecdir=$libexecdir 248 datarootdir=$datarootdir 249 datadir=$datadir 250 sysconfdir=$sysconfdir 251 sharedstatedir=$sharedstatedir 252 localstatedir=$localstatedir 253 runstatedir=$runstatedir 254 includedir=$includedir 255 infodir=$infodir 256 mandir=$mandir 257 localedir=$localedir 258 __EOF__ 259 260 # toolchain detection utilities 261 . make/toolchain.sh 262 263 # 264 # DEPENDENCIES 265 # 266 267 # check languages 268 lang_c= 269 lang_cpp= 270 if detect_cpp_compiler ; then 271 lang_cpp=1 272 fi 273 if detect_c_compiler ; then 274 lang_c=1 275 fi 276 277 # create buffer for make variables required by dependencies 278 echo > "$TEMP_DIR/make.mk" 279 280 test_pkg_config() 281 { 282 if "$PKG_CONFIG" --exists "$1" ; then : 283 else return 1 ; fi 284 if [ -z "$2" ] || "$PKG_CONFIG" --atleast-version="$2" "$1" ; then : 285 else return 1 ; fi 286 if [ -z "$3" ] || "$PKG_CONFIG" --exact-version="$3" "$1" ; then : 287 else return 1 ; fi 288 if [ -z "$4" ] || "$PKG_CONFIG" --max-version="$4" "$1" ; then : 289 else return 1 ; fi 290 return 0 291 } 292 293 print_check_msg() 294 { 295 if [ -z "$1" ]; then 296 shift 297 printf "$@" 298 fi 299 } 300 301 dependency_error_curl() 302 { 303 print_check_msg "$dep_checked_curl" "checking for curl... " 304 # dependency curl platform="macos" 305 while true 306 do 307 if notisplatform "macos"; then 308 break 309 fi 310 if tmp_flags=`curl-config --cflags` ; then 311 TEMP_CFLAGS="$TEMP_CFLAGS $tmp_flags" 312 else 313 break 314 fi 315 if tmp_flags=`curl-config --ldflags` ; then 316 TEMP_LDFLAGS="$TEMP_LDFLAGS $tmp_flags" 317 else 318 break 319 fi 320 print_check_msg "$dep_checked_curl" "yes\n" 321 dep_checked_curl=1 322 return 1 323 done 324 325 # dependency curl 326 while true 327 do 328 if [ -z "$PKG_CONFIG" ]; then 329 break 330 fi 331 if test_pkg_config "libcurl" "" "" "" ; then 332 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags libcurl`" 333 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs libcurl`" 334 else 335 break 336 fi 337 print_check_msg "$dep_checked_curl" "yes\n" 338 dep_checked_curl=1 339 return 1 340 done 341 342 # dependency curl 343 while true 344 do 345 if tmp_flags=`curl-config --cflags` ; then 346 TEMP_CFLAGS="$TEMP_CFLAGS $tmp_flags" 347 else 348 break 349 fi 350 if tmp_flags=`curl-config --libs` ; then 351 TEMP_LDFLAGS="$TEMP_LDFLAGS $tmp_flags" 352 else 353 break 354 fi 355 print_check_msg "$dep_checked_curl" "yes\n" 356 dep_checked_curl=1 357 return 1 358 done 359 360 print_check_msg "$dep_checked_curl" "no\n" 361 dep_checked_curl=1 362 return 0 363 } 364 dependency_error_gtk2() 365 { 366 print_check_msg "$dep_checked_gtk2" "checking for gtk2... " 367 # dependency gtk2 368 while true 369 do 370 if [ -z "$PKG_CONFIG" ]; then 371 break 372 fi 373 if pkg-config --atleast-version=2.20 gtk+-2.0 > /dev/null ; then 374 : 375 else 376 break 377 fi 378 if test_pkg_config "gtk+-2.0" "" "" "" ; then 379 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags gtk+-2.0`" 380 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs gtk+-2.0`" 381 else 382 break 383 fi 384 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_GTK2" 385 TEMP_LDFLAGS="$TEMP_LDFLAGS -lpthread" 386 print_check_msg "$dep_checked_gtk2" "yes\n" 387 dep_checked_gtk2=1 388 return 1 389 done 390 391 print_check_msg "$dep_checked_gtk2" "no\n" 392 dep_checked_gtk2=1 393 return 0 394 } 395 dependency_error_sqlite() 396 { 397 print_check_msg "$dep_checked_sqlite" "checking for sqlite... " 398 # dependency sqlite 399 while true 400 do 401 if [ -z "$PKG_CONFIG" ]; then 402 break 403 fi 404 if test_pkg_config "sqlite3" "" "" "" ; then 405 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags sqlite3`" 406 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs sqlite3`" 407 else 408 break 409 fi 410 TEMP_CFLAGS="$TEMP_CFLAGS -DDBU_SQLITE" 411 print_check_msg "$dep_checked_sqlite" "yes\n" 412 dep_checked_sqlite=1 413 return 1 414 done 415 416 print_check_msg "$dep_checked_sqlite" "no\n" 417 dep_checked_sqlite=1 418 return 0 419 } 420 dependency_error_gtk3() 421 { 422 print_check_msg "$dep_checked_gtk3" "checking for gtk3... " 423 # dependency gtk3 424 while true 425 do 426 if [ -z "$PKG_CONFIG" ]; then 427 break 428 fi 429 if test_pkg_config "gtk+-3.0" "" "" "" ; then 430 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags gtk+-3.0`" 431 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs gtk+-3.0`" 432 else 433 break 434 fi 435 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_GTK3" 436 TEMP_LDFLAGS="$TEMP_LDFLAGS -lpthread" 437 print_check_msg "$dep_checked_gtk3" "yes\n" 438 dep_checked_gtk3=1 439 return 1 440 done 441 442 print_check_msg "$dep_checked_gtk3" "no\n" 443 dep_checked_gtk3=1 444 return 0 445 } 446 dependency_error_gtk4() 447 { 448 print_check_msg "$dep_checked_gtk4" "checking for gtk4... " 449 # dependency gtk4 450 while true 451 do 452 if [ -z "$PKG_CONFIG" ]; then 453 break 454 fi 455 if test_pkg_config "gtk4" "" "" "" ; then 456 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags gtk4`" 457 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs gtk4`" 458 else 459 break 460 fi 461 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_GTK3" 462 TEMP_LDFLAGS="$TEMP_LDFLAGS -lpthread" 463 print_check_msg "$dep_checked_gtk4" "yes\n" 464 dep_checked_gtk4=1 465 return 1 466 done 467 468 print_check_msg "$dep_checked_gtk4" "no\n" 469 dep_checked_gtk4=1 470 return 0 471 } 472 dependency_error_webkitgtk6() 473 { 474 print_check_msg "$dep_checked_webkitgtk6" "checking for webkitgtk6... " 475 # dependency webkitgtk6 476 while true 477 do 478 if [ -z "$PKG_CONFIG" ]; then 479 break 480 fi 481 if test_pkg_config "webkitgtk-6.0" "" "" "" ; then 482 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags webkitgtk-6.0`" 483 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs webkitgtk-6.0`" 484 else 485 break 486 fi 487 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_WEBVIEW" 488 print_check_msg "$dep_checked_webkitgtk6" "yes\n" 489 dep_checked_webkitgtk6=1 490 return 1 491 done 492 493 # dependency webkitgtk6 494 while true 495 do 496 print_check_msg "$dep_checked_webkitgtk6" "yes\n" 497 dep_checked_webkitgtk6=1 498 return 1 499 done 500 501 print_check_msg "$dep_checked_webkitgtk6" "no\n" 502 dep_checked_webkitgtk6=1 503 return 0 504 } 505 dependency_error_libxml2() 506 { 507 print_check_msg "$dep_checked_libxml2" "checking for libxml2... " 508 # dependency libxml2 platform="windows" 509 while true 510 do 511 if notisplatform "windows"; then 512 break 513 fi 514 if tmp_flags=`xml2-config --cflags` ; then 515 TEMP_CFLAGS="$TEMP_CFLAGS $tmp_flags" 516 else 517 break 518 fi 519 if tmp_flags=`xml2-config --libs` ; then 520 TEMP_LDFLAGS="$TEMP_LDFLAGS $tmp_flags" 521 else 522 break 523 fi 524 print_check_msg "$dep_checked_libxml2" "yes\n" 525 dep_checked_libxml2=1 526 return 1 527 done 528 529 # dependency libxml2 platform="macos" 530 while true 531 do 532 if notisplatform "macos"; then 533 break 534 fi 535 if tmp_flags=`xml2-config --cflags` ; then 536 TEMP_CFLAGS="$TEMP_CFLAGS $tmp_flags" 537 else 538 break 539 fi 540 if tmp_flags=`xml2-config --libs` ; then 541 TEMP_LDFLAGS="$TEMP_LDFLAGS $tmp_flags" 542 else 543 break 544 fi 545 print_check_msg "$dep_checked_libxml2" "yes\n" 546 dep_checked_libxml2=1 547 return 1 548 done 549 550 # dependency libxml2 551 while true 552 do 553 if [ -z "$PKG_CONFIG" ]; then 554 break 555 fi 556 if test_pkg_config "libxml-2.0" "" "" "" ; then 557 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags libxml-2.0`" 558 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs libxml-2.0`" 559 else 560 break 561 fi 562 print_check_msg "$dep_checked_libxml2" "yes\n" 563 dep_checked_libxml2=1 564 return 1 565 done 566 567 # dependency libxml2 568 while true 569 do 570 if tmp_flags=`xml2-config --cflags` ; then 571 TEMP_CFLAGS="$TEMP_CFLAGS $tmp_flags" 572 else 573 break 574 fi 575 if tmp_flags=`xml2-config --libs` ; then 576 TEMP_LDFLAGS="$TEMP_LDFLAGS $tmp_flags" 577 else 578 break 579 fi 580 print_check_msg "$dep_checked_libxml2" "yes\n" 581 dep_checked_libxml2=1 582 return 1 583 done 584 585 print_check_msg "$dep_checked_libxml2" "no\n" 586 dep_checked_libxml2=1 587 return 0 588 } 589 dependency_error_webkit2gtk4() 590 { 591 print_check_msg "$dep_checked_webkit2gtk4" "checking for webkit2gtk4... " 592 # dependency webkit2gtk4 593 while true 594 do 595 if [ -z "$PKG_CONFIG" ]; then 596 break 597 fi 598 if test_pkg_config "webkit2gtk-4.1" "" "" "" ; then 599 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags webkit2gtk-4.1`" 600 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs webkit2gtk-4.1`" 601 else 602 break 603 fi 604 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_WEBVIEW" 605 print_check_msg "$dep_checked_webkit2gtk4" "yes\n" 606 dep_checked_webkit2gtk4=1 607 return 1 608 done 609 610 # dependency webkit2gtk4 611 while true 612 do 613 if [ -z "$PKG_CONFIG" ]; then 614 break 615 fi 616 if test_pkg_config "webkit2gtk-4.0" "" "" "" ; then 617 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags webkit2gtk-4.0`" 618 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs webkit2gtk-4.0`" 619 else 620 break 621 fi 622 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_WEBVIEW" 623 print_check_msg "$dep_checked_webkit2gtk4" "yes\n" 624 dep_checked_webkit2gtk4=1 625 return 1 626 done 627 628 # dependency webkit2gtk4 629 while true 630 do 631 print_check_msg "$dep_checked_webkit2gtk4" "yes\n" 632 dep_checked_webkit2gtk4=1 633 return 1 634 done 635 636 print_check_msg "$dep_checked_webkit2gtk4" "no\n" 637 dep_checked_webkit2gtk4=1 638 return 0 639 } 640 dependency_error_cocoa() 641 { 642 print_check_msg "$dep_checked_cocoa" "checking for cocoa... " 643 # dependency cocoa platform="macos" 644 while true 645 do 646 if notisplatform "macos"; then 647 break 648 fi 649 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_COCOA" 650 TEMP_LDFLAGS="$TEMP_LDFLAGS -lobjc -framework Cocoa" 651 print_check_msg "$dep_checked_cocoa" "yes\n" 652 dep_checked_cocoa=1 653 return 1 654 done 655 656 print_check_msg "$dep_checked_cocoa" "no\n" 657 dep_checked_cocoa=1 658 return 0 659 } 660 dependency_error_winui() 661 { 662 print_check_msg "$dep_checked_winui" "checking for winui... " 663 # dependency winui platform="windows" 664 while true 665 do 666 if notisplatform "windows"; then 667 break 668 fi 669 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_WINUI" 670 print_check_msg "$dep_checked_winui" "yes\n" 671 dep_checked_winui=1 672 return 1 673 done 674 675 print_check_msg "$dep_checked_winui" "no\n" 676 dep_checked_winui=1 677 return 0 678 } 679 dependency_error_gtk2legacy() 680 { 681 print_check_msg "$dep_checked_gtk2legacy" "checking for gtk2legacy... " 682 # dependency gtk2legacy 683 while true 684 do 685 if [ -z "$PKG_CONFIG" ]; then 686 break 687 fi 688 if test_pkg_config "gtk+-2.0" "" "" "" ; then 689 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags gtk+-2.0`" 690 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs gtk+-2.0`" 691 else 692 break 693 fi 694 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_GTK2 -DUI_GTK2LEGACY" 695 TEMP_LDFLAGS="$TEMP_LDFLAGS -lpthread" 696 print_check_msg "$dep_checked_gtk2legacy" "yes\n" 697 dep_checked_gtk2legacy=1 698 return 1 699 done 700 701 print_check_msg "$dep_checked_gtk2legacy" "no\n" 702 dep_checked_gtk2legacy=1 703 return 0 704 } 705 dependency_error_qt5() 706 { 707 print_check_msg "$dep_checked_qt5" "checking for qt5... " 708 # dependency qt5 709 while true 710 do 711 if [ -z "$lang_cpp" ] ; then 712 break 713 fi 714 if [ -z "$PKG_CONFIG" ]; then 715 break 716 fi 717 if which qmake-qt5 > /dev/null ; then 718 : 719 else 720 break 721 fi 722 if test_pkg_config "Qt5Widgets" "" "" "" ; then 723 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags Qt5Widgets`" 724 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs Qt5Widgets`" 725 else 726 break 727 fi 728 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_QT5" 729 cat >> $TEMP_DIR/make.mk << __EOF__ 730 # Dependency: qt5 731 QMAKE = qmake-qt5 732 QT_PRO_FILE = qt5.pro 733 __EOF__ 734 print_check_msg "$dep_checked_qt5" "yes\n" 735 dep_checked_qt5=1 736 return 1 737 done 738 739 print_check_msg "$dep_checked_qt5" "no\n" 740 dep_checked_qt5=1 741 return 0 742 } 743 dependency_error_openssl() 744 { 745 print_check_msg "$dep_checked_openssl" "checking for openssl... " 746 # dependency openssl platform="windows" 747 while true 748 do 749 if notisplatform "windows"; then 750 break 751 fi 752 TEMP_LDFLAGS="$TEMP_LDFLAGS -lssl -lcrypto" 753 print_check_msg "$dep_checked_openssl" "yes\n" 754 dep_checked_openssl=1 755 return 1 756 done 757 758 # dependency openssl platform="macos" 759 while true 760 do 761 if notisplatform "macos"; then 762 break 763 fi 764 TEMP_LDFLAGS="$TEMP_LDFLAGS -framework CoreFoundation" 765 print_check_msg "$dep_checked_openssl" "yes\n" 766 dep_checked_openssl=1 767 return 1 768 done 769 770 # dependency openssl platform="bsd" 771 while true 772 do 773 if notisplatform "bsd"; then 774 break 775 fi 776 if isplatform "macos" || istoolchain "macos"; then 777 break 778 fi 779 TEMP_LDFLAGS="$TEMP_LDFLAGS -lssl -lcrypto" 780 print_check_msg "$dep_checked_openssl" "yes\n" 781 dep_checked_openssl=1 782 return 1 783 done 784 785 # dependency openssl 786 while true 787 do 788 if [ -z "$PKG_CONFIG" ]; then 789 break 790 fi 791 if test_pkg_config "openssl" "" "" "" ; then 792 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags openssl`" 793 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs openssl`" 794 else 795 break 796 fi 797 print_check_msg "$dep_checked_openssl" "yes\n" 798 dep_checked_openssl=1 799 return 1 800 done 801 802 print_check_msg "$dep_checked_openssl" "no\n" 803 dep_checked_openssl=1 804 return 0 805 } 806 dependency_error_libadwaita() 807 { 808 print_check_msg "$dep_checked_libadwaita" "checking for libadwaita... " 809 # dependency libadwaita 810 while true 811 do 812 if [ -z "$PKG_CONFIG" ]; then 813 break 814 fi 815 if test_pkg_config "libadwaita-1" "" "" "" ; then 816 TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags libadwaita-1`" 817 TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs libadwaita-1`" 818 else 819 break 820 fi 821 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_GTK4 -DUI_LIBADWAITA" 822 TEMP_LDFLAGS="$TEMP_LDFLAGS -lpthread" 823 print_check_msg "$dep_checked_libadwaita" "yes\n" 824 dep_checked_libadwaita=1 825 return 1 826 done 827 828 print_check_msg "$dep_checked_libadwaita" "no\n" 829 dep_checked_libadwaita=1 830 return 0 831 } 832 dependency_error_motif() 833 { 834 print_check_msg "$dep_checked_motif" "checking for motif... " 835 # dependency motif platform="bsd" 836 while true 837 do 838 if notisplatform "bsd"; then 839 break 840 fi 841 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_MOTIF -I/usr/local/include/X11" 842 TEMP_LDFLAGS="$TEMP_LDFLAGS -lXm -lXt -lX11 -lpthread" 843 print_check_msg "$dep_checked_motif" "yes\n" 844 dep_checked_motif=1 845 return 1 846 done 847 848 # dependency motif 849 while true 850 do 851 TEMP_CFLAGS="$TEMP_CFLAGS -DUI_MOTIF" 852 TEMP_LDFLAGS="$TEMP_LDFLAGS -lXm -lXt -lX11 -lpthread" 853 print_check_msg "$dep_checked_motif" "yes\n" 854 dep_checked_motif=1 855 return 1 856 done 857 858 print_check_msg "$dep_checked_motif" "no\n" 859 dep_checked_motif=1 860 return 0 861 } 862 863 # start collecting dependency information 864 echo > "$TEMP_DIR/flags.mk" 865 866 DEPENDENCIES_FAILED= 867 ERROR=0 868 # unnamed dependencies 869 TEMP_CFLAGS="$CFLAGS" 870 TEMP_CXXFLAGS="$CXXFLAGS" 871 TEMP_LDFLAGS="$LDFLAGS" 872 while true 873 do 874 while true 875 do 876 if [ -z "$lang_c" ] ; then 877 ERROR=1 878 break 879 fi 880 881 cat >> "$TEMP_DIR/make.mk" << __EOF__ 882 LD = \$(CC) 883 __EOF__ 884 break 885 done 886 break 887 done 888 while true 889 do 890 if notisplatform "macos"; then 891 break 892 fi 893 while true 894 do 895 896 cat >> "$TEMP_DIR/make.mk" << __EOF__ 897 OBJ_EXT = .o 898 LIB_EXT = .a 899 SHLIB_EXT = .dylib 900 LIB_PREFIX = lib 901 PACKAGE_SCRIPT = package_osx.sh 902 __EOF__ 903 break 904 done 905 break 906 done 907 while true 908 do 909 if notisplatform "unix"; then 910 break 911 fi 912 if isplatform "macos" || istoolchain "macos"; then 913 break 914 fi 915 while true 916 do 917 918 cat >> "$TEMP_DIR/make.mk" << __EOF__ 919 OBJ_EXT = .o 920 LIB_EXT = .a 921 SHLIB_EXT = .so 922 LIB_PREFIX = lib 923 PACKAGE_SCRIPT = package_unix.sh 924 __EOF__ 925 break 926 done 927 break 928 done 929 while true 930 do 931 while true 932 do 933 934 cat >> "$TEMP_DIR/make.mk" << __EOF__ 935 BUILD_BIN_DIR = bin 936 BUILD_LIB_DIR = lib 937 __EOF__ 938 break 939 done 940 break 941 done 942 while true 943 do 944 if notisplatform "bsd"; then 945 break 946 fi 947 while true 948 do 949 950 TEMP_CFLAGS="$TEMP_CFLAGS -I/usr/local/include" 951 TEMP_LDFLAGS="$TEMP_LDFLAGS -L/usr/local/lib" 952 break 953 done 954 break 955 done 956 957 # build type 958 if [ "$BUILD_TYPE" = "debug" ]; then 959 TEMP_CFLAGS="\${DEBUG_CC_FLAGS} $TEMP_CFLAGS" 960 TEMP_CXXFLAGS="\${DEBUG_CXX_FLAGS} $TEMP_CXXFLAGS" 961 fi 962 if [ "$BUILD_TYPE" = "release" ]; then 963 TEMP_CFLAGS="\${RELEASE_CC_FLAGS} $TEMP_CFLAGS" 964 TEMP_CXXFLAGS="\${RELEASE_CXX_FLAGS} $TEMP_CXXFLAGS" 965 fi 966 967 # add general dependency flags to flags.mk 968 echo "# general flags" >> "$TEMP_DIR/flags.mk" 969 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then 970 echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 971 fi 972 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then 973 echo "CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 974 fi 975 if [ -n "${TEMP_LDFLAGS}" ]; then 976 echo "LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" 977 fi 978 979 # 980 # OPTION VALUES 981 # 982 checkopt_toolkit_libadwaita() 983 { 984 VERR=0 985 if dependency_error_libadwaita ; then 986 VERR=1 987 fi 988 if dependency_error_webkitgtk6 ; then 989 VERR=1 990 fi 991 if [ $VERR -ne 0 ]; then 992 return 1 993 fi 994 cat >> "$TEMP_DIR/make.mk" << __EOF__ 995 TOOLKIT = gtk 996 GTKOBJ = draw_cairo.o 997 APP_PLATFORM_SRC = gtk-text.c 998 APP_PLATFORM_SRC += gtk-image.c 999 __EOF__ 1000 return 0 1001 } 1002 checkopt_toolkit_gtk4() 1003 { 1004 VERR=0 1005 if dependency_error_gtk4 ; then 1006 VERR=1 1007 fi 1008 if dependency_error_webkitgtk6 ; then 1009 VERR=1 1010 fi 1011 if [ $VERR -ne 0 ]; then 1012 return 1 1013 fi 1014 cat >> "$TEMP_DIR/make.mk" << __EOF__ 1015 TOOLKIT = gtk 1016 GTKOBJ = draw_cairo.o 1017 APP_PLATFORM_SRC = gtk-text.c 1018 APP_PLATFORM_SRC += gtk-image.c 1019 __EOF__ 1020 return 0 1021 } 1022 checkopt_toolkit_gtk3() 1023 { 1024 VERR=0 1025 if dependency_error_gtk3 ; then 1026 VERR=1 1027 fi 1028 if dependency_error_webkit2gtk4 ; then 1029 VERR=1 1030 fi 1031 if [ $VERR -ne 0 ]; then 1032 return 1 1033 fi 1034 cat >> "$TEMP_DIR/make.mk" << __EOF__ 1035 TOOLKIT = gtk 1036 GTKOBJ = draw_cairo.o 1037 GTKOBJ = draw_cairo.o 1038 APP_PLATFORM_SRC = gtk-text.c 1039 APP_PLATFORM_SRC += gtk-image.c 1040 __EOF__ 1041 return 0 1042 } 1043 checkopt_toolkit_cocoa() 1044 { 1045 VERR=0 1046 if dependency_error_cocoa ; then 1047 VERR=1 1048 fi 1049 if [ $VERR -ne 0 ]; then 1050 return 1 1051 fi 1052 cat >> "$TEMP_DIR/make.mk" << __EOF__ 1053 TOOLKIT = cocoa 1054 APP_PLATFORM_SRC = cocoa-text.m 1055 __EOF__ 1056 return 0 1057 } 1058 checkopt_toolkit_qt5() 1059 { 1060 VERR=0 1061 if dependency_error_qt5 ; then 1062 VERR=1 1063 fi 1064 if [ $VERR -ne 0 ]; then 1065 return 1 1066 fi 1067 cat >> "$TEMP_DIR/make.mk" << __EOF__ 1068 TOOLKIT = qt 1069 LD = \$(CXX) 1070 __EOF__ 1071 return 0 1072 } 1073 checkopt_toolkit_motif() 1074 { 1075 VERR=0 1076 if dependency_error_motif ; then 1077 VERR=1 1078 fi 1079 if [ $VERR -ne 0 ]; then 1080 return 1 1081 fi 1082 cat >> "$TEMP_DIR/make.mk" << __EOF__ 1083 TOOLKIT = motif 1084 __EOF__ 1085 return 0 1086 } 1087 1088 # 1089 # TARGETS 1090 # 1091 1092 echo >> "$TEMP_DIR/flags.mk" 1093 echo "configuring target: dav" 1094 echo "# flags for target dav" >> "$TEMP_DIR/flags.mk" 1095 TEMP_CFLAGS= 1096 TEMP_CXXFLAGS= 1097 TEMP_LDFLAGS= 1098 1099 if dependency_error_curl; then 1100 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED curl " 1101 ERROR=1 1102 fi 1103 if dependency_error_libxml2; then 1104 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED libxml2 " 1105 ERROR=1 1106 fi 1107 if dependency_error_openssl; then 1108 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED openssl " 1109 ERROR=1 1110 fi 1111 1112 # Features 1113 1114 1115 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then 1116 echo "DAV_CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 1117 fi 1118 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then 1119 echo "DAV_CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 1120 fi 1121 if [ -n "${TEMP_LDFLAGS}" ]; then 1122 echo "DAV_LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" 1123 fi 1124 1125 echo >> "$TEMP_DIR/flags.mk" 1126 echo "configuring target: dbu" 1127 echo "# flags for target dbu" >> "$TEMP_DIR/flags.mk" 1128 TEMP_CFLAGS= 1129 TEMP_CXXFLAGS= 1130 TEMP_LDFLAGS= 1131 1132 if dependency_error_sqlite; then 1133 DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED sqlite " 1134 ERROR=1 1135 fi 1136 1137 # Features 1138 1139 1140 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then 1141 echo "DBU_CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 1142 fi 1143 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then 1144 echo "DBU_CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 1145 fi 1146 if [ -n "${TEMP_LDFLAGS}" ]; then 1147 echo "DBU_LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" 1148 fi 1149 1150 echo >> "$TEMP_DIR/flags.mk" 1151 echo "configuring target: tk" 1152 echo "# flags for target tk" >> "$TEMP_DIR/flags.mk" 1153 TEMP_CFLAGS= 1154 TEMP_CXXFLAGS= 1155 TEMP_LDFLAGS= 1156 1157 1158 # Features 1159 1160 # Option: --toolkit 1161 if [ -z "$OPT_TOOLKIT" ]; then 1162 echo "auto-detecting option 'toolkit'" 1163 SAVED_ERROR="$ERROR" 1164 SAVED_DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED" 1165 ERROR=1 1166 while true 1167 do 1168 if isplatform "windows"; then 1169 if checkopt_toolkit_winui ; then 1170 echo " toolkit: winui" >> "$TEMP_DIR/options" 1171 ERROR=0 1172 break 1173 fi 1174 fi 1175 if isplatform "macos"; then 1176 if checkopt_toolkit_cocoa ; then 1177 echo " toolkit: cocoa" >> "$TEMP_DIR/options" 1178 ERROR=0 1179 break 1180 fi 1181 fi 1182 if checkopt_toolkit_libadwaita ; then 1183 echo " toolkit: libadwaita" >> "$TEMP_DIR/options" 1184 ERROR=0 1185 break 1186 fi 1187 if checkopt_toolkit_gtk4 ; then 1188 echo " toolkit: gtk4" >> "$TEMP_DIR/options" 1189 ERROR=0 1190 break 1191 fi 1192 if checkopt_toolkit_gtk3 ; then 1193 echo " toolkit: gtk3" >> "$TEMP_DIR/options" 1194 ERROR=0 1195 break 1196 fi 1197 if checkopt_toolkit_motif ; then 1198 echo " toolkit: motif" >> "$TEMP_DIR/options" 1199 ERROR=0 1200 break 1201 fi 1202 break 1203 done 1204 if [ $ERROR -ne 0 ]; then 1205 SAVED_ERROR=1 1206 SAVED_DEPENDENCIES_FAILED="option 'toolkit' $SAVED_DEPENDENCIES_FAILED" 1207 fi 1208 ERROR="$SAVED_ERROR" 1209 DEPENDENCIES_FAILED="$SAVED_DEPENDENCIES_FAILED" 1210 else 1211 echo "checking option toolkit = $OPT_TOOLKIT" 1212 if false; then 1213 false 1214 elif [ "$OPT_TOOLKIT" = "libadwaita" ]; then 1215 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1216 if checkopt_toolkit_libadwaita ; then 1217 : 1218 else 1219 ERROR=1 1220 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1221 fi 1222 elif [ "$OPT_TOOLKIT" = "gtk4" ]; then 1223 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1224 if checkopt_toolkit_gtk4 ; then 1225 : 1226 else 1227 ERROR=1 1228 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1229 fi 1230 elif [ "$OPT_TOOLKIT" = "gtk3" ]; then 1231 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1232 if checkopt_toolkit_gtk3 ; then 1233 : 1234 else 1235 ERROR=1 1236 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1237 fi 1238 elif [ "$OPT_TOOLKIT" = "cocoa" ]; then 1239 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1240 if checkopt_toolkit_cocoa ; then 1241 : 1242 else 1243 ERROR=1 1244 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1245 fi 1246 elif [ "$OPT_TOOLKIT" = "qt5" ]; then 1247 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1248 if checkopt_toolkit_qt5 ; then 1249 : 1250 else 1251 ERROR=1 1252 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1253 fi 1254 elif [ "$OPT_TOOLKIT" = "motif" ]; then 1255 echo " toolkit: $OPT_TOOLKIT" >> $TEMP_DIR/options 1256 if checkopt_toolkit_motif ; then 1257 : 1258 else 1259 ERROR=1 1260 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1261 fi 1262 else 1263 echo 1264 echo "Invalid option value - usage:" 1265 echo " --toolkit=(libadwaita|gtk4|gtk3|cocoa|qt5|motif)" 1266 abort_configure 1267 fi 1268 fi 1269 1270 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then 1271 echo "TK_CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 1272 fi 1273 if [ -n "${TEMP_CXXFLAGS}" ] && [ -n "$lang_cpp" ]; then 1274 echo "TK_CXXFLAGS += $TEMP_CXXFLAGS" >> "$TEMP_DIR/flags.mk" 1275 fi 1276 if [ -n "${TEMP_LDFLAGS}" ]; then 1277 echo "TK_LDFLAGS += $TEMP_LDFLAGS" >> "$TEMP_DIR/flags.mk" 1278 fi 1279 1280 1281 # final result 1282 if [ $ERROR -ne 0 ]; then 1283 echo 1284 echo "Error: Unresolved dependencies" 1285 echo "$DEPENDENCIES_FAILED" 1286 abort_configure 1287 fi 1288 1289 echo "configure finished" 1290 echo 1291 echo "Toolchain" 1292 echo " name: $TOOLCHAIN_NAME" 1293 if [ -n "$TOOLCHAIN_CC" ]; then 1294 echo " cc: $TOOLCHAIN_CC" 1295 fi 1296 if [ -n "$TOOLCHAIN_CXX" ]; then 1297 echo " cxx: $TOOLCHAIN_CXX" 1298 fi 1299 if [ -n "$TOOLCHAIN_WSIZE" ]; then 1300 echo " word size: $TOOLCHAIN_WSIZE bit" 1301 fi 1302 if [ -n "$TOOLCHAIN_CSTD" ]; then 1303 echo " default C std: $TOOLCHAIN_CSTD" 1304 fi 1305 echo 1306 echo "Build Config:" 1307 echo " prefix: $prefix" 1308 echo " exec_prefix: $exec_prefix" 1309 if [ "$orig_bindir" != "$bindir" ]; then 1310 echo " bindir: $bindir" 1311 fi 1312 if [ "$orig_sbindir" != "$sbindir" ]; then 1313 echo " sbindir: $sbindir" 1314 fi 1315 if [ "$orig_libdir" != "$libdir" ]; then 1316 echo " libdir: $libdir" 1317 fi 1318 if [ "$orig_libexecdir" != "$libexecdir" ]; then 1319 echo " libexecdir: $libexecdir" 1320 fi 1321 if [ "$orig_datarootdir" != "$datarootdir" ]; then 1322 echo " datarootdir: $datarootdir" 1323 fi 1324 if [ "$orig_datadir" != "$datadir" ]; then 1325 echo " datadir: $datadir" 1326 fi 1327 if [ "$orig_sysconfdir" != "$sysconfdir" ]; then 1328 echo " sysconfdir: $sysconfdir" 1329 fi 1330 if [ "$orig_sharedstatedir" != "$sharedstatedir" ]; then 1331 echo " sharedstatedir: $sharedstatedir" 1332 fi 1333 if [ "$orig_localstatedir" != "$localstatedir" ]; then 1334 echo " localstatedir: $localstatedir" 1335 fi 1336 if [ "$orig_runstatedir" != "$runstatedir" ]; then 1337 echo " runstatedir: $runstatedir" 1338 fi 1339 if [ "$orig_includedir" != "$includedir" ]; then 1340 echo " includedir: $includedir" 1341 fi 1342 if [ "$orig_infodir" != "$infodir" ]; then 1343 echo " infodir: $infodir" 1344 fi 1345 if [ "$orig_mandir" != "$mandir" ]; then 1346 echo " mandir: $mandir" 1347 fi 1348 if [ "$orig_localedir" != "$localedir" ]; then 1349 echo " localedir: $localedir" 1350 fi 1351 echo 1352 echo "Options:" 1353 cat "$TEMP_DIR/options" 1354 echo 1355 1356 # generate the config.mk file 1357 pwd=`pwd` 1358 cat > "$TEMP_DIR/config.mk" << __EOF__ 1359 # 1360 # config.mk generated by: 1361 # pwd: $pwd 1362 # $0 $@ 1363 # 1364 1365 __EOF__ 1366 write_toolchain_defaults "$TEMP_DIR/toolchain.mk" 1367 cat "$TEMP_DIR/config.mk" "$TEMP_DIR/vars.mk" "$TEMP_DIR/toolchain.mk" "$TEMP_DIR/flags.mk" "$TEMP_DIR/make.mk" > config.mk 1368 rm -Rf "$TEMP_DIR" 1369