customize-target-features.lisp still works, but the system refuses to mix it
with --with[out] options to avoid confusion.
;;;; -*- coding: utf-8; fill-column: 78 -*-
changes relative to sbcl-1.0.54:
* enhancements to building SBCL:
;;;; -*- coding: utf-8; fill-column: 78 -*-
changes relative to sbcl-1.0.54:
* enhancements to building SBCL:
+ ** --with-<feature> and --without-<feature> can be used to specify
+ which features to build with.
** --arch option can be used to specify the architecture to build for.
(Mainly useful for building 32-bit SBCL's on x86-64 hosts, not
full-blows cross-compilation.)
** --arch option can be used to specify the architecture to build for.
(Mainly useful for building 32-bit SBCL's on x86-64 hosts, not
full-blows cross-compilation.)
+WITH_FEATURES=""
+WITHOUT_FEATURES=""
+
some_options=false
for option
do
some_options=false
for option
do
# Split --foo=bar into --foo and bar.
case $option in
*=*)
# 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\([^=]*=\).*'`
;;
# 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\(--[^-]*\).*'`
+ ;;
--dynamic-space-size=)
$optarg_ok && SBCL_DYNAMIC_SPACE_SIZE=$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\""
;;
-*)
bad_option "Unknown command-line option to $0: \"$option\""
;;
+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
# Previously XC host was provided as a positional argument.
if test -n "$legacy_xc_spec"
then
taken to be megabytes unless explicitly suffixed with Gb in
order to specify the size in gigabytes.
taken to be megabytes unless explicitly suffixed with Gb in
order to specify the size in gigabytes.
+ --with-<feature> Build with specified feature.
+ --without-<feature> Build wihout the specfied feature.
+
--arch=<string> Specify the architecture to build for.
Mainly for doing x86 builds on x86-64.
--arch=<string> Specify the architecture to build for.
Mainly for doing x86 builds on x86-64.
echo ';;;; This is a machine-generated file.' > $ltf
echo ';;;; Please do not edit it by hand.' >> $ltf
echo ';;;; See make-config.sh.' >> $ltf
echo ';;;; This is a machine-generated file.' > $ltf
echo ';;;; Please do not edit it by hand.' >> $ltf
echo ';;;; See make-config.sh.' >> $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
echo //guessing default target CPU architecture from host architecture
case `uname -m` in
sh tools-for-build/grovel-features.sh >> $ltf
echo //finishing $ltf
sh tools-for-build/grovel-features.sh >> $ltf
echo //finishing $ltf
# FIXME: The version system should probably be redone along these lines:
#
# FIXME: The version system should probably be redone along these lines:
#
(setf *shebang-features*
(let* ((default-features
(append (read-from-file "base-target-features.lisp-expr")
(setf *shebang-features*
(let* ((default-features
(append (read-from-file "base-target-features.lisp-expr")
- (read-from-file "local-target-features.lisp-expr")))
+ (eval (read-from-file "local-target-features.lisp-expr"))))
(customizer-file-name "customize-target-features.lisp")
(customizer (if (probe-file customizer-file-name)
(compile nil
(customizer-file-name "customize-target-features.lisp")
(customizer (if (probe-file customizer-file-name)
(compile nil