configure

changeset 103
6606616eca9f
parent 99
b9767cb5b06b
child 108
77254bd6dccb
equal deleted inserted replaced
102:64ded9f6a6c6 103:6606616eca9f
1 #!/bin/sh 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|gtk2|gtk2legacy|qt5|qt4|motif)
115
116 __EOF__
117 }
2 118
3 # create temporary directory 119 # create temporary directory
4 TEMP_DIR=".tmp-`uname -n`" 120 TEMP_DIR=".tmp-`uname -n`"
5 rm -Rf "$TEMP_DIR" 121 rm -Rf "$TEMP_DIR"
6 if mkdir -p "$TEMP_DIR"; then 122 if mkdir -p "$TEMP_DIR"; then
33 mandir= 149 mandir=
34 150
35 # custom variables 151 # custom variables
36 152
37 # features 153 # features
38
39 # clean abort
40 abort_configure()
41 {
42 rm -Rf "$TEMP_DIR"
43 exit 1
44 }
45
46 # help text
47 printhelp()
48 {
49 echo "Usage: $0 [OPTIONS]..."
50 cat << __EOF__
51 Installation directories:
52 --prefix=PREFIX path prefix for architecture-independent files
53 [/usr]
54 --exec-prefix=EPREFIX path prefix for architecture-dependent files
55 [PREFIX]
56
57 --bindir=DIR user executables [EPREFIX/bin]
58 --sbindir=DIR system admin executables [EPREFIX/sbin]
59 --libexecdir=DIR program executables [EPREFIX/libexec]
60 --sysconfdir=DIR system configuration files [PREFIX/etc]
61 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
62 --localstatedir=DIR modifiable single-machine data [PREFIX/var]
63 --runstatedir=DIR run-time variable data [LOCALSTATEDIR/run]
64 --libdir=DIR object code libraries [EPREFIX/lib]
65 --includedir=DIR C header files [PREFIX/include]
66 --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
67 --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
68 --infodir=DIR info documentation [DATAROOTDIR/info]
69 --mandir=DIR man documentation [DATAROOTDIR/man]
70 --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
71
72 Options:
73 --debug add extra compile flags for debug builds
74 --release add extra compile flags for release builds
75 --toolkit=(libadwaita|gtk4|gtk3|gtk2|gtk2legacy|qt5|qt4|motif)
76
77 __EOF__
78 }
79 154
80 # 155 #
81 # parse arguments 156 # parse arguments
82 # 157 #
83 BUILD_TYPE="default" 158 BUILD_TYPE="default"
97 "--localstatedir="*) localstatedir=${ARG#--localstatedir=} ;; 172 "--localstatedir="*) localstatedir=${ARG#--localstatedir=} ;;
98 "--includedir="*) includedir=${ARG#--includedir=} ;; 173 "--includedir="*) includedir=${ARG#--includedir=} ;;
99 "--infodir="*) infodir=${ARG#--infodir=} ;; 174 "--infodir="*) infodir=${ARG#--infodir=} ;;
100 "--mandir"*) mandir=${ARG#--mandir} ;; 175 "--mandir"*) mandir=${ARG#--mandir} ;;
101 "--localedir"*) localedir=${ARG#--localedir} ;; 176 "--localedir"*) localedir=${ARG#--localedir} ;;
102 "--help"*) printhelp; abort_configure ;; 177 "--help"*) printhelp; abort_configure ;;
103 "--debug") BUILD_TYPE="debug" ;; 178 "--debug") BUILD_TYPE="debug" ;;
104 "--release") BUILD_TYPE="release" ;; 179 "--release") BUILD_TYPE="release" ;;
105 "--toolkit="*) OPT_TOOLKIT=${ARG#--toolkit=} ;; 180 "--toolkit="*) OPT_TOOLKIT=${ARG#--toolkit=} ;;
181 "--toolkit") echo "option '$ARG' needs a value:"; echo " $ARG=(libadwaita|gtk4|gtk3|gtk2|gtk2legacy|qt5|qt4|motif)"; abort_configure ;;
106 "-"*) echo "unknown option: $ARG"; abort_configure ;; 182 "-"*) echo "unknown option: $ARG"; abort_configure ;;
107 esac 183 esac
108 done 184 done
109 185
110 186
141 elif [ -f "$prefix/etc/config.site" ]; then 217 elif [ -f "$prefix/etc/config.site" ]; then
142 printf "loading site defaults... " 218 printf "loading site defaults... "
143 . "$prefix/etc/config.site" 219 . "$prefix/etc/config.site"
144 echo ok 220 echo ok
145 fi 221 fi
146
147 # Test for availability of pkg-config
148 PKG_CONFIG=`command -v pkg-config`
149 : ${PKG_CONFIG:="false"}
150
151 # Simple uname based platform detection
152 # $PLATFORM is used for platform dependent dependency selection
153 OS=`uname -s`
154 OS_VERSION=`uname -r`
155 printf "detect platform... "
156 if [ "$OS" = "SunOS" ]; then
157 PLATFORM="solaris sunos unix svr4"
158 elif [ "$OS" = "Linux" ]; then
159 PLATFORM="linux unix"
160 elif [ "$OS" = "FreeBSD" ]; then
161 PLATFORM="freebsd bsd unix"
162 elif [ "$OS" = "OpenBSD" ]; then
163 PLATFORM="openbsd bsd unix"
164 elif [ "$OS" = "NetBSD" ]; then
165 PLATFORM="netbsd bsd unix"
166 elif [ "$OS" = "Darwin" ]; then
167 PLATFORM="macos osx bsd unix"
168 elif echo "$OS" | grep -i "MINGW" > /dev/null; then
169 PLATFORM="windows mingw"
170 fi
171 : ${PLATFORM:="unix"}
172
173 PLATFORM_NAME=`echo "$PLATFORM" | cut -f1 -d' ' -`
174 echo "$PLATFORM_NAME"
175
176 isplatform()
177 {
178 for p in $PLATFORM
179 do
180 if [ "$p" = "$1" ]; then
181 return 0
182 fi
183 done
184 return 1
185 }
186 notisplatform()
187 {
188 for p in $PLATFORM
189 do
190 if [ "$p" = "$1" ]; then
191 return 1
192 fi
193 done
194 return 0
195 }
196 istoolchain()
197 {
198 for t in $TOOLCHAIN
199 do
200 if [ "$t" = "$1" ]; then
201 return 0
202 fi
203 done
204 return 1
205 }
206 notistoolchain()
207 {
208 for t in $TOOLCHAIN
209 do
210 if [ "$t" = "$1" ]; then
211 return 1
212 fi
213 done
214 return 0
215 }
216 222
217 223
218 # generate vars.mk 224 # generate vars.mk
219 cat > "$TEMP_DIR/vars.mk" << __EOF__ 225 cat > "$TEMP_DIR/vars.mk" << __EOF__
220 prefix=$prefix 226 prefix=$prefix
692 echo > "$TEMP_DIR/flags.mk" 698 echo > "$TEMP_DIR/flags.mk"
693 699
694 DEPENDENCIES_FAILED= 700 DEPENDENCIES_FAILED=
695 ERROR=0 701 ERROR=0
696 # unnamed dependencies 702 # unnamed dependencies
697 TEMP_CFLAGS= 703 TEMP_CFLAGS="$CFLAGS"
698 TEMP_CXXFLAGS= 704 TEMP_CXXFLAGS="$CXXFLAGS"
699 TEMP_LDFLAGS= 705 TEMP_LDFLAGS="$LDFLAGS"
700 while true 706 while true
701 do 707 do
702 while true 708 while true
703 do 709 do
704 if [ -z "$lang_c" ] ; then 710 if [ -z "$lang_c" ] ; then
719 do 725 do
720 726
721 cat >> "$TEMP_DIR/make.mk" << __EOF__ 727 cat >> "$TEMP_DIR/make.mk" << __EOF__
722 OBJ_EXT = .o 728 OBJ_EXT = .o
723 LIB_EXT = .a 729 LIB_EXT = .a
730 LIB_PREFIX = lib
724 PACKAGE_SCRIPT = package_osx.sh 731 PACKAGE_SCRIPT = package_osx.sh
725 __EOF__ 732 __EOF__
726 break 733 break
727 done 734 done
728 break 735 break
739 do 746 do
740 747
741 cat >> "$TEMP_DIR/make.mk" << __EOF__ 748 cat >> "$TEMP_DIR/make.mk" << __EOF__
742 OBJ_EXT = .o 749 OBJ_EXT = .o
743 LIB_EXT = .a 750 LIB_EXT = .a
751 LIB_PREFIX = lib
744 PACKAGE_SCRIPT = package_unix.sh 752 PACKAGE_SCRIPT = package_unix.sh
745 __EOF__ 753 __EOF__
746 break 754 break
747 done 755 done
748 break 756 break
1086 : 1094 :
1087 else 1095 else
1088 ERROR=1 1096 ERROR=1
1089 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED" 1097 DEPENDENCIES_FAILED="option 'toolkit' $DEPENDENCIES_FAILED"
1090 fi 1098 fi
1099 else
1100 echo
1101 echo "Invalid option value - usage:"
1102 echo " --toolkit=(libadwaita|gtk4|gtk3|gtk2|gtk2legacy|qt5|qt4|motif)"
1103 abort_configure
1091 fi 1104 fi
1092 fi 1105 fi
1093 1106
1094 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then 1107 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then
1095 echo "TK_CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" 1108 echo "TK_CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk"

mercurial