| [29] | 1 | #!/bin/sh | 
|---|
 | 2 | # Copyright (C) 2005, 2006 Douglas Gregor. | 
|---|
 | 3 | # Copyright (C) 2006 The Trustees of Indiana University | 
|---|
 | 4 | # | 
|---|
 | 5 | # Distributed under the Boost Software License, Version 1.0. | 
|---|
 | 6 | # (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) | 
|---|
 | 7 |  | 
|---|
 | 8 | # boostinspect:notab - Tabs are required for the Makefile. | 
|---|
 | 9 |  | 
|---|
 | 10 | BJAM="" | 
|---|
 | 11 | TOOLSET="" | 
|---|
 | 12 | BJAM_CONFIG="" | 
|---|
 | 13 | BUILD="" | 
|---|
 | 14 | PREFIX=/usr/local | 
|---|
 | 15 | EPREFIX= | 
|---|
 | 16 | LIBDIR= | 
|---|
 | 17 | INCLUDEDIR= | 
|---|
 | 18 | LIBS="" | 
|---|
 | 19 | PYTHON=python | 
|---|
 | 20 | PYTHON_VERSION= | 
|---|
 | 21 | PYTHON_ROOT= | 
|---|
 | 22 | ICU_ROOT= | 
|---|
 | 23 |  | 
|---|
 | 24 | # Internal flags | 
|---|
 | 25 | flag_no_python= | 
|---|
 | 26 | flag_icu= | 
|---|
 | 27 | flag_show_libraries= | 
|---|
 | 28 |  | 
|---|
 | 29 | for option | 
|---|
 | 30 | do | 
|---|
 | 31 |     case $option in | 
|---|
 | 32 |  | 
|---|
 | 33 |     -help | --help | -h) | 
|---|
 | 34 |       want_help=yes ;; | 
|---|
 | 35 |  | 
|---|
 | 36 |     -prefix=* | --prefix=*) | 
|---|
 | 37 |       PREFIX=`expr "x$option" : "x-*prefix=\(.*\)"` | 
|---|
 | 38 |       ;; | 
|---|
 | 39 |  | 
|---|
 | 40 |     -exec-prefix=* | --exec-prefix=*) | 
|---|
 | 41 |       EPREFIX=`expr "x$option" : "x-*exec-prefix=\(.*\)"` | 
|---|
 | 42 |       ;; | 
|---|
 | 43 |  | 
|---|
 | 44 |     -libdir=* | --libdir=*) | 
|---|
 | 45 |       LIBDIR=`expr "x$option" : "x-*libdir=\(.*\)"` | 
|---|
 | 46 |       ;; | 
|---|
 | 47 |  | 
|---|
 | 48 |     -includedir=* | --includedir=*) | 
|---|
 | 49 |       INCLUDEDIR=`expr "x$option" : "x-*includedir=\(.*\)"` | 
|---|
 | 50 |       ;; | 
|---|
 | 51 |  | 
|---|
 | 52 |     -show-libraries | --show-libraries ) | 
|---|
 | 53 |       flag_show_libraries=yes | 
|---|
 | 54 |       ;; | 
|---|
 | 55 |  | 
|---|
 | 56 |     -with-bjam=* | --with-bjam=* ) | 
|---|
 | 57 |       BJAM=`expr "x$option" : "x-*with-bjam=\(.*\)"` | 
|---|
 | 58 |       ;; | 
|---|
 | 59 |  | 
|---|
 | 60 |     -with-icu | --with-icu ) | 
|---|
 | 61 |       flag_icu=yes | 
|---|
 | 62 |       ;; | 
|---|
 | 63 |  | 
|---|
 | 64 |     -with-icu=* | --with-icu=* ) | 
|---|
 | 65 |       flag_icu=yes | 
|---|
 | 66 |       ICU_ROOT=`expr "x$option" : "x-*with-icu=\(.*\)"` | 
|---|
 | 67 |       ;; | 
|---|
 | 68 |  | 
|---|
 | 69 |     -without-icu | --without-icu ) | 
|---|
 | 70 |       flag_icu=no | 
|---|
 | 71 |       ;; | 
|---|
 | 72 |  | 
|---|
 | 73 |     -with-libraries=* | --with-libraries=* ) | 
|---|
 | 74 |       library_list=`expr "x$option" : "x-*with-libraries=\(.*\)"` | 
|---|
 | 75 |       if test "$library_list" != "all"; then | 
|---|
 | 76 |           old_IFS=$IFS | 
|---|
 | 77 |           IFS=, | 
|---|
 | 78 |           for library in $library_list | 
|---|
 | 79 |           do | 
|---|
 | 80 |               LIBS="$LIBS --with-$library" | 
|---|
 | 81 |  | 
|---|
 | 82 |               if test $library = python; then | 
|---|
 | 83 |                   requested_python=yes | 
|---|
 | 84 |               fi | 
|---|
 | 85 |           done | 
|---|
 | 86 |           IFS=$old_IFS | 
|---|
 | 87 |  | 
|---|
 | 88 |           if test "x$requested_python" != xyes; then | 
|---|
 | 89 |               flag_no_python=yes | 
|---|
 | 90 |           fi | 
|---|
 | 91 |       fi | 
|---|
 | 92 |       ;; | 
|---|
 | 93 |  | 
|---|
 | 94 |     -without-libraries=* | --without-libraries=* ) | 
|---|
 | 95 |       library_list=`expr "x$option" : "x-*without-libraries=\(.*\)"` | 
|---|
 | 96 |       old_IFS=$IFS | 
|---|
 | 97 |       IFS=, | 
|---|
 | 98 |       for library in $library_list | 
|---|
 | 99 |       do | 
|---|
 | 100 |           LIBS="$LIBS --without-$library" | 
|---|
 | 101 |  | 
|---|
 | 102 |           if test $library = python; then | 
|---|
 | 103 |               flag_no_python=yes | 
|---|
 | 104 |           fi | 
|---|
 | 105 |       done | 
|---|
 | 106 |       IFS=$old_IFS | 
|---|
 | 107 |       ;; | 
|---|
 | 108 |  | 
|---|
 | 109 |     -with-python=* | --with-python=* ) | 
|---|
 | 110 |       PYTHON=`expr "x$option" : "x-*with-python=\(.*\)"` | 
|---|
 | 111 |       ;; | 
|---|
 | 112 |  | 
|---|
 | 113 |     -with-python-root=* | --with-python-root=* ) | 
|---|
 | 114 |       PYTHON_ROOT=`expr "x$option" : "x-*with-python-root=\(.*\)"` | 
|---|
 | 115 |       ;; | 
|---|
 | 116 |  | 
|---|
 | 117 |     -with-python-version=* | --with-python-version=* ) | 
|---|
 | 118 |       PYTHON_VERSION=`expr "x$option" : "x-*with-python-version=\(.*\)"` | 
|---|
 | 119 |       ;; | 
|---|
 | 120 |  | 
|---|
 | 121 |     -with-toolset=* | --with-toolset=* ) | 
|---|
 | 122 |       TOOLSET=`expr "x$option" : "x-*with-toolset=\(.*\)"` | 
|---|
 | 123 |       ;; | 
|---|
 | 124 |  | 
|---|
 | 125 |     -*) | 
|---|
 | 126 |       { echo "error: unrecognized option: $option | 
|---|
 | 127 | Try \`$0 --help' for more information." >&2 | 
|---|
 | 128 |       { (exit 1); exit 1; }; } | 
|---|
 | 129 |       ;;  | 
|---|
 | 130 |  | 
|---|
 | 131 |     esac | 
|---|
 | 132 | done | 
|---|
 | 133 |  | 
|---|
 | 134 | if test "x$want_help" = xyes; then | 
|---|
 | 135 |   cat <<EOF | 
|---|
 | 136 | \`configure' configures Boost to adapt to a few kinds of systems. | 
|---|
 | 137 |  | 
|---|
 | 138 | Usage: $0 [OPTION]...  | 
|---|
 | 139 |  | 
|---|
 | 140 | Defaults for the options are specified in brackets. | 
|---|
 | 141 |  | 
|---|
 | 142 | Configuration: | 
|---|
 | 143 |   -h, --help                display this help and exit | 
|---|
 | 144 |   --with-bjam=BJAM          use existing Boost.Jam executable (bjam) | 
|---|
 | 145 |                             [automatically built] | 
|---|
 | 146 |   --with-toolset=TOOLSET    use specific Boost.Build toolset | 
|---|
 | 147 |                             [automatically detected] | 
|---|
 | 148 |   --show-libraries          show the set of libraries that require build | 
|---|
 | 149 |                             and installation steps (i.e., those libraries | 
|---|
 | 150 |                             that can be used with --with-libraries or | 
|---|
 | 151 |                             --without-libraries), then exit | 
|---|
 | 152 |   --with-libraries=list     build only a particular set of libraries, | 
|---|
 | 153 |                             describing using either a comma-separated list of | 
|---|
 | 154 |                             library names or "all" | 
|---|
 | 155 |                             [all] | 
|---|
 | 156 |   --without-libraries=list  build all libraries except the ones listed [] | 
|---|
 | 157 |   --with-icu                enable Unicode/ICU support in Regex  | 
|---|
 | 158 |                             [automatically detected] | 
|---|
 | 159 |   --without-icu             disable Unicode/ICU support in Regex | 
|---|
 | 160 |   --with-icu=DIR            specify the root of the ICU library installation | 
|---|
 | 161 |                             and enable Unicode/ICU support in Regex | 
|---|
 | 162 |                             [automatically detected] | 
|---|
 | 163 |   --with-python=PYTHON      specify the Python executable [python] | 
|---|
 | 164 |   --with-python-root=DIR    specify the root of the Python installation | 
|---|
 | 165 |                             [automatically detected] | 
|---|
 | 166 |   --with-python-version=X.Y specify the Python version as X.Y | 
|---|
 | 167 |                             [automatically detected] | 
|---|
 | 168 |  | 
|---|
 | 169 | Installation directories: | 
|---|
 | 170 |   --prefix=PREFIX           install Boost into the given PREFIX | 
|---|
 | 171 |                             [/usr/local] | 
|---|
 | 172 |   --exec-prefix=EPREFIX     install Boost binaries into the given EPREFIX | 
|---|
 | 173 |                             [PREFIX] | 
|---|
 | 174 |  | 
|---|
 | 175 | More precise control over installation directories: | 
|---|
 | 176 |   --libdir=DIR              install libraries here [EPREFIX/lib] | 
|---|
 | 177 |   --includedir=DIR          install headers here [PREFIX/include] | 
|---|
 | 178 |  | 
|---|
 | 179 | EOF | 
|---|
 | 180 | fi | 
|---|
 | 181 | test -n "$want_help" && exit 0 | 
|---|
 | 182 |  | 
|---|
 | 183 | # TBD: Determine where the script is located | 
|---|
 | 184 | my_dir="." | 
|---|
 | 185 |  | 
|---|
 | 186 | # Determine the toolset, if not already decided | 
|---|
 | 187 | if test "x$TOOLSET" = x; then | 
|---|
 | 188 |   TOOLSET=`$my_dir/tools/jam/src/build.sh --guess-toolset` | 
|---|
 | 189 | fi | 
|---|
 | 190 |  | 
|---|
 | 191 | rm -f config.log | 
|---|
 | 192 |  | 
|---|
 | 193 | # Build bjam | 
|---|
 | 194 | if test "x$BJAM" = x; then | 
|---|
 | 195 |   echo -n "Building Boost.Jam with toolset $TOOLSET... " | 
|---|
 | 196 |   pwd=`pwd` | 
|---|
 | 197 |   cd "$my_dir/tools/jam/src" && ./build.sh "$TOOLSET" > config.log 2>&1 | 
|---|
 | 198 |   cd $pwd | 
|---|
 | 199 |   arch=`cd $my_dir/tools/jam/src && ./bootstrap/jam0 -d0 -f build.jam --toolset=$TOOLSET --toolset-root= --show-locate-target && cd ..` | 
|---|
 | 200 |   BJAM="$my_dir/tools/jam/src/$arch/bjam" | 
|---|
 | 201 |   echo "tools/jam/src/$arch/bjam" | 
|---|
 | 202 | fi | 
|---|
 | 203 |  | 
|---|
 | 204 | # TBD: Turn BJAM into an absolute path | 
|---|
 | 205 |  | 
|---|
 | 206 | # If there is a list of libraries  | 
|---|
 | 207 | if test "x$flag_show_libraries" = xyes; then | 
|---|
 | 208 |   libraries=`$BJAM -d0 --show-libraries` | 
|---|
 | 209 |   cat <<EOF | 
|---|
 | 210 |  | 
|---|
 | 211 | The following Boost libraries have portions that require a separate build | 
|---|
 | 212 | and installation step. Any library not listed here can be used by including | 
|---|
 | 213 | the headers only. | 
|---|
 | 214 |  | 
|---|
 | 215 | The Boost libraries requiring separate building and installation are: | 
|---|
 | 216 | EOF | 
|---|
 | 217 |   for lib in $libraries | 
|---|
 | 218 |   do | 
|---|
 | 219 |     echo "         $lib" | 
|---|
 | 220 |   done | 
|---|
 | 221 |   exit 0 | 
|---|
 | 222 | fi | 
|---|
 | 223 |  | 
|---|
 | 224 | # Setup paths | 
|---|
 | 225 | if test "x$EPREFIX" = x; then | 
|---|
 | 226 |   EPREFIX=$PREFIX | 
|---|
 | 227 | fi | 
|---|
 | 228 |  | 
|---|
 | 229 | if test "x$LIBDIR" = x; then | 
|---|
 | 230 |   LIBDIR="$EPREFIX/lib" | 
|---|
 | 231 | fi | 
|---|
 | 232 |  | 
|---|
 | 233 | if test "x$INCLUDEDIR" = x; then | 
|---|
 | 234 |   INCLUDEDIR="$PREFIX/include" | 
|---|
 | 235 | fi | 
|---|
 | 236 |  | 
|---|
 | 237 | # Find Python | 
|---|
 | 238 | if test "x$flag_no_python" = x; then | 
|---|
 | 239 |   result=`$PYTHON -c "exit" > /dev/null 2>&1` | 
|---|
 | 240 |   if [ "$?" -ne "0" ]; then | 
|---|
 | 241 |     flag_no_python=yes | 
|---|
 | 242 |   fi | 
|---|
 | 243 | fi | 
|---|
 | 244 |  | 
|---|
 | 245 | if test "x$flag_no_python" = x; then | 
|---|
 | 246 |     if test "x$PYTHON_VERSION" = x; then | 
|---|
 | 247 |         echo -n "Detecting Python version... " | 
|---|
 | 248 |         PYTHON_VERSION=`$PYTHON -c "import sys; print (\"%d.%d\" % (sys.version_info[0], sys.version_info[1]))"` | 
|---|
 | 249 |         echo $PYTHON_VERSION | 
|---|
 | 250 |     fi | 
|---|
 | 251 |  | 
|---|
 | 252 |     if test "x$PYTHON_ROOT" = x; then | 
|---|
 | 253 |         echo -n "Detecting Python root... " | 
|---|
 | 254 |         PYTHON_ROOT=`$PYTHON -c "import sys; print sys.prefix"` | 
|---|
 | 255 |         echo $PYTHON_ROOT | 
|---|
 | 256 |     fi     | 
|---|
 | 257 | fi | 
|---|
 | 258 |  | 
|---|
 | 259 | # Configure ICU | 
|---|
 | 260 | echo -n "Unicode/ICU support for Boost.Regex?... " | 
|---|
 | 261 | if test "x$flag_icu" != xno; then | 
|---|
 | 262 |   if test "x$ICU_ROOT" = x; then | 
|---|
 | 263 |     COMMON_ICU_PATHS="/usr /usr/local /sw" | 
|---|
 | 264 |     for p in $COMMON_ICU_PATHS; do | 
|---|
 | 265 |       if test -r $p/include/unicode/utypes.h; then | 
|---|
 | 266 |         ICU_ROOT=$p | 
|---|
 | 267 |       fi | 
|---|
 | 268 |     done | 
|---|
 | 269 |    | 
|---|
 | 270 |     if test "x$ICU_ROOT" = x; then | 
|---|
 | 271 |       echo "not found." | 
|---|
 | 272 |     else       | 
|---|
 | 273 |       BJAM_CONFIG="$BJAM_CONFIG -sICU_PATH=$ICU_ROOT" | 
|---|
 | 274 |       echo "$ICU_ROOT" | 
|---|
 | 275 |     fi | 
|---|
 | 276 |   else | 
|---|
 | 277 |     BJAM_CONFIG="$BJAM_CONFIG -sICU_PATH=$ICU_ROOT" | 
|---|
 | 278 |     echo "$ICU_ROOT" | 
|---|
 | 279 |   fi | 
|---|
 | 280 | else | 
|---|
 | 281 |   echo "disabled." | 
|---|
 | 282 | fi | 
|---|
 | 283 |  | 
|---|
 | 284 | # Backup the user's existing user-config.jam | 
|---|
 | 285 | JAM_CONFIG_OUT="user-config.jam" | 
|---|
 | 286 | if test -r "user-config.jam"; then | 
|---|
 | 287 |   counter=1 | 
|---|
 | 288 |   | 
|---|
 | 289 |   while test -r "user-config.jam.$counter"; do | 
|---|
 | 290 |     counter=`expr $counter + 1` | 
|---|
 | 291 |   done | 
|---|
 | 292 |  | 
|---|
 | 293 |   echo "Backing up existing Boost.Build configuration in user-config.jam.$counter" | 
|---|
 | 294 |   mv "user-config.jam" "user-config.jam.$counter" | 
|---|
 | 295 | fi | 
|---|
 | 296 |  | 
|---|
 | 297 | # Generate user-config.jam | 
|---|
 | 298 | echo "Generating Boost.Build configuration in user-config.jam..." | 
|---|
 | 299 | cat > user-config.jam <<EOF | 
|---|
 | 300 | # Boost.Build Configuration | 
|---|
 | 301 | # Automatically generated by Boost configure  | 
|---|
 | 302 |  | 
|---|
 | 303 | # Compiler configuration | 
|---|
 | 304 | using $TOOLSET ;  | 
|---|
 | 305 | EOF | 
|---|
 | 306 |  | 
|---|
 | 307 | #  - Python configuration | 
|---|
 | 308 | if test "x$flag_no_python" = x; then | 
|---|
 | 309 |   cat >> user-config.jam <<EOF | 
|---|
 | 310 |  | 
|---|
 | 311 | # Python configuration | 
|---|
 | 312 | using python : $PYTHON_VERSION : $PYTHON_ROOT ; | 
|---|
 | 313 | EOF | 
|---|
 | 314 | fi | 
|---|
 | 315 |  | 
|---|
 | 316 | # Generate the Makefile | 
|---|
 | 317 | echo "Generating Makefile..." | 
|---|
 | 318 | cat > Makefile <<EOF | 
|---|
 | 319 | BJAM=$BJAM | 
|---|
 | 320 | BJAM_CONFIG=$BJAM_CONFIG | 
|---|
 | 321 | PREFIX=$PREFIX | 
|---|
 | 322 | EPREFIX=$EPREFIX | 
|---|
 | 323 | LIBDIR=$LIBDIR | 
|---|
 | 324 | INCLUDEDIR=$INCLUDEDIR | 
|---|
 | 325 | LIBS=$LIBS | 
|---|
 | 326 |  | 
|---|
 | 327 | all: .dummy | 
|---|
 | 328 |         @echo "\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam \$(LIBS)" | 
|---|
 | 329 |         @\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam \$(LIBS) || \\ | 
|---|
 | 330 |         echo "Not all Boost libraries built properly." | 
|---|
 | 331 |  | 
|---|
 | 332 | clean: .dummy | 
|---|
 | 333 |         rm -rf bin.v2 | 
|---|
 | 334 |  | 
|---|
 | 335 | distclean: clean | 
|---|
 | 336 |         rm -rf Makefile config.log | 
|---|
 | 337 |  | 
|---|
 | 338 | check: .dummy | 
|---|
 | 339 |         @cd status && ../\$(BJAM) \$(BJAM_CONFIG) --user-config=../user-config.jam || echo "Some Boost regression tests failed. This is normal for many compilers." | 
|---|
 | 340 |  | 
|---|
 | 341 | install: .dummy | 
|---|
 | 342 |         @echo "\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam --prefix=\$(PREFIX) --exec-prefix=\$(EPREFIX) --libdir=\$(LIBDIR) --includedir=\$(INCLUDEDIR) \$(LIBS) install" | 
|---|
 | 343 |         @\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam --prefix=\$(PREFIX) --exec-prefix=\$(EPREFIX) --libdir=\$(LIBDIR) --includedir=\$(INCLUDEDIR) \$(LIBS) install || echo "Not all Boost libraries built properly." | 
|---|
 | 344 |  | 
|---|
 | 345 | .dummy: | 
|---|
 | 346 |  | 
|---|
 | 347 | EOF | 
|---|