diff options
author | Laurent Bercot <ska-skaware@skarnet.org> | 2016-03-19 18:22:03 +0000 |
---|---|---|
committer | Laurent Bercot <ska-skaware@skarnet.org> | 2016-03-19 18:22:03 +0000 |
commit | 5089f82369cd1dc0b8f76ff1cf9c7b7ec104a3c4 (patch) | |
tree | ceecdd9a522bb90ee6f5ad09072006da6ae49501 | |
parent | 32c75049b6b198cbb6cb038977a840353976dd9e (diff) | |
download | s6-5089f82369cd1dc0b8f76ff1cf9c7b7ec104a3c4.tar.xz |
More standard cross-compilation support (only --host, no --enable-cross needed)
-rw-r--r-- | INSTALL | 43 | ||||
-rwxr-xr-x | configure | 22 |
2 files changed, 41 insertions, 24 deletions
@@ -6,7 +6,7 @@ Build Instructions - A POSIX-compliant C development environment - GNU make version 3.81 or later - - skalibs version 2.3.9.0 or later: http://skarnet.org/software/skalibs/ + - skalibs version 2.3.10.0 or later: http://skarnet.org/software/skalibs/ - execline version 2.1.4.5 or later: http://skarnet.org/software/execline/ This software will run on any operating system that implements @@ -40,23 +40,30 @@ off them. Controlling a build process via environment variables is a big and dangerous hammer. You should try and pass flags to configure instead; -nevertheless, the standard environment variables are recognized. +nevertheless, a few standard environment variables are recognized. - The value of the CROSS_COMPILE environment variable will prefix the -building tools' names. The --enable-cross option is preferred, see -"Cross-compilation" below. - If the CC environment variable is set, its value will override compiler -detection by configure. +detection by configure. The --host=HOST option will still add a HOST- +prefix to the value of CC. The values of CFLAGS, CPPFLAGS and LDFLAGS will be appended to flags auto-detected by configure. To entirely override the flags set by -configure, use make -e. +configure instead, use make variables. - The value of LDLIBS will be appended by make to command lines that link -an executable, even without the -e option. - The Makefile supports the DESTDIR convention for staging. +* Make variables + -------------- + + You can invoke make with a few variables for more configuration. + + CC, CFLAGS, CPPFLAGS, LDFLAGS, LDLIBS, AR, RANLIB, STRIP, INSTALL and +CROSS_COMPILE can all be overridden on the make command line. This is +an even bigger hammer than running ./configure with environment +variables, so it is advised to only do this when it is the only way of +obtaining the behaviour you want. + + DESTDIR can be given on the "make install" command line in order to +install to a staging directory. * Shared libraries @@ -96,13 +103,15 @@ have a suitable libc. cross-compilation in one place: skalibs. Once you have cross-compiled skalibs, the rest is easy. - Use the --enable-cross=PREFIX option to configure, or simply ---enable-cross if your default toolchain is a cross-compiling -toolchain. And make sure to use the correct version of skalibs -for your target, and the correct sysdeps directory, making use -of the --with-include, --with-lib, --with-dynlib and --with-sysdeps + * Use the --host=HOST option to configure, HOST being the triplet +for your target. + * Make sure your cross-toolchain binaries (i.e. prefixed with HOST-) +are accessible via your PATH environment variable. + * Make sure to use the correct version of skalibs for your target, +and the correct sysdeps directory, making use of the +--with-include, --with-lib, --with-dynlib and --with-sysdeps options as necessary. - + * The slashpackage convention --------------------------- @@ -43,7 +43,6 @@ Optional features: --disable-allstatic do not prefer linking against static libraries [enabled] --enable-static-libc make entirely static binaries [disabled] --enable-slashpackage[=ROOT] assume /package installation at ROOT [disabled] - --enable-cross=CROSS prefix toolchain executable names with CROSS [none] EOF exit 0 @@ -150,7 +149,7 @@ addlibspath='' addlibdpath='' vpaths='' vpathd='' -cross="$CROSS_COMPILE" +build= for arg ; do case "$arg" in @@ -179,11 +178,9 @@ for arg ; do --enable-slashpackage=*) sproot=${arg#*=} ; slashpackage=true ; ;; --enable-slashpackage) sproot= ; slashpackage=true ;; --disable-slashpackage) sproot= ; slashpackage=false ;; - --enable-cross=*) cross=${arg#*=} ;; - --enable-cross) ;; - --disable-cross) cross= ;; - --enable-*|--disable-*|--with-*|--without-*|--*dir=*|--build=*) ;; + --enable-*|--disable-*|--with-*|--without-*|--*dir=*) ;; --host=*|--target=*) target=${arg#*=} ;; + --build=*) build=${arg#*=} ;; -* ) echo "$0: unknown option $arg" ;; *=*) ;; *) target=$arg ;; @@ -252,6 +249,11 @@ if $slashpackage ; then fi # Find a C compiler to use +if test -n "$target" && test x${build} != x${target} ; then + cross=${target}- +else + cross= +fi echo "checking for C compiler..." trycc ${cross}${CC} trycc ${cross}gcc @@ -270,7 +272,13 @@ else fi echo "checking target system type..." -test -n "$target" || target=$($CC_AUTO -dumpmachine 2>/dev/null) || target=unknown +if test -z "$target" ; then + if test -n "$build" ; then + target=$build ; + else + target=$($CC_AUTO -dumpmachine 2>/dev/null) || target=unknown + fi +fi echo " ... $target" if test ! -d $sysdeps || test ! -f $sysdeps/target ; then echo "$0: error: $sysdeps is not a valid sysdeps directory" |