X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=make-config.sh;h=7b03394e4a76002963d9f8677c2fcd3ffa519163;hb=89a02d3ba803a1d85d745e22b4ac05ef8cb12370;hp=157eea0f461028e386785d8c2fc3991019c11ac1;hpb=3c786524acb7de770a111279dbccce25bf2d2f15;p=sbcl.git diff --git a/make-config.sh b/make-config.sh index 157eea0..7b03394 100644 --- a/make-config.sh +++ b/make-config.sh @@ -42,6 +42,9 @@ bad_option() { exit 1 } +WITH_FEATURES="" +WITHOUT_FEATURES="" + some_options=false for option do @@ -49,11 +52,16 @@ do # Split --foo=bar into --foo and bar. case $option in *=*) - # For ease of scripting treat skip valued options with empty + # For ease of scripting skip valued options with empty # values. optarg=`expr "X$option" : '[^=]*=\(.*\)'` || optarg_ok=false option=`expr "X$option" : 'X\([^=]*=\).*'` ;; + --with*) + optarg=`expr "X$option" : 'X--[^-]*-\(.*\)'` \ + || bad_option "Malformed feature toggle: $option" + option=`expr "X$option" : 'X\(--[^-]*\).*'` + ;; *) optarg="" ;; @@ -65,12 +73,21 @@ do --prefix=) $optarg_ok && SBCL_PREFIX=$optarg ;; + --arch=) + $oparg_ok && SBCL_ARCH=$optarg + ;; --xc-host=) $optarg_ok && SBCL_XC_HOST=$optarg ;; --dynamic-space-size=) $optarg_ok && SBCL_DYNAMIC_SPACE_SIZE=$optarg ;; + --with) + WITH_FEATURES="$WITH_FEATURES :$optarg" + ;; + --without) + WITHOUT_FEATURES="$WITHOUT_FEATURES :$optarg" + ;; -*) bad_option "Unknown command-line option to $0: \"$option\"" ;; @@ -86,6 +103,16 @@ do some_options=true done +if (test -f customize-target-features.lisp && \ + (test -n "$WITH_FEATURES" || test -n "$WITHOUT_FEATURES")) +then + # Actually there's no reason why it would not work, but it would + # be confusing to say --with-thread only to have it turned off by + # customize-target-features.lisp... + echo "ERROR: Both customize-target-features.lisp, and feature-options" + echo "to make.sh present -- cannot use both at the same time." +fi + # Previously XC host was provided as a positional argument. if test -n "$legacy_xc_spec" then @@ -128,6 +155,13 @@ Options: taken to be megabytes unless explicitly suffixed with Gb in order to specify the size in gigabytes. + --with- Build with specified feature. + --without- Build wihout the specfied feature. + + --arch= Specify the architecture to build for. + + Mainly for doing x86 builds on x86-64. + --xc-host= Specify the Common Lisp compilation host. The string provided should be a command to invoke the @@ -279,7 +313,8 @@ echo //initializing $ltf echo ';;;; This is a machine-generated file.' > $ltf echo ';;;; Please do not edit it by hand.' >> $ltf echo ';;;; See make-config.sh.' >> $ltf -printf '(' >> $ltf +echo "((lambda (features) (set-difference features (list$WITHOUT_FEATURES)))" >> $ltf +printf " (union (list$WITH_FEATURES) (list " >> $ltf echo //guessing default target CPU architecture from host architecture case `uname -m` in @@ -318,7 +353,7 @@ echo //setting up CPU-architecture-dependent information sbcl_arch=${SBCL_ARCH:-$guessed_sbcl_arch} echo sbcl_arch=\"$sbcl_arch\" if [ "$sbcl_arch" = "" ] ; then - echo "can't guess target SBCL architecture, need SBCL_ARCH environment var" + echo "can't guess target SBCL architecture, please specify --arch=" exit 1 fi printf ":%s" "$sbcl_arch" >> $ltf @@ -564,7 +599,7 @@ export sbcl_os sbcl_arch sh tools-for-build/grovel-features.sh >> $ltf echo //finishing $ltf -echo ')' >> $ltf +echo ')))' >> $ltf # FIXME: The version system should probably be redone along these lines: #