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