configure
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Wed May 21 22:00:52 2008 +0000 (2008-05-21)
changeset 527 4ac12179ef23
parent 435 ff598e5b4bb5
child 542 4cdd0e37b577
permissions -rwxr-xr-x
Introduce target-specific LDFLAGS, the same way we have CFLAGS for the target.
It seems to be helping gcc somewhat into telling the correct endianness to ld that sticks with little endian even when the target is big (eg armeb-unknown-linux-uclibcgnueabi).
There's still work to do, especially finish the gcc part that is not in this commit.

/trunk/scripts/functions | 9 7 2 0 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
     1 #!/bin/sh
     2 
     3 VERSION=$(cat .version)
     4 DATE=$(date +%Y%m%d)
     5 
     6 PREFIX_DEFAULT=/usr/local
     7 
     8 BINDIR_set=
     9 LIBDIR_set=
    10 DOCDIR_set=
    11 MANDIR_set=
    12 LOCAL_set=
    13 
    14 get_optval(){
    15     local ret
    16     case "$1" in
    17         --*=?*)
    18             echo "${1}" |cut -d '=' -f 2-
    19             ret=0
    20             ;;
    21         *)
    22             echo "${2}"
    23             ret=1
    24             ;;
    25     esac
    26     return ${ret}
    27 }
    28 
    29 set_prefix() {
    30     PREFIX=$(get_optval "$1" "$2")
    31     return $?
    32 }
    33 
    34 set_bindir() {
    35     BINDIR_set=1
    36     BINDIR=$(get_optval "$1" "$2")
    37     return $?
    38 }
    39 
    40 set_libdir() {
    41     LIBDIR_set=1
    42     LIBDIR=$(get_optval "$1" "$2")
    43     return $?
    44 }
    45 
    46 set_docdir() {
    47     DOCDIR_set=1
    48     DOCDIR=$(get_optval "$1" "$2")
    49     return $?
    50 }
    51 
    52 set_mandir() {
    53     MANDIR_set=1
    54     MANDIR=$(get_optval "$1" "$2")
    55     return $?
    56 }
    57 
    58 do_help() {
    59     cat <<__EOF__
    60 \`configure' configures crosstool-NG ${VERSION} to adapt to many kind of systems.
    61 
    62 USAGE: ./configure [OPTION]...
    63 
    64 Defaults for the options are specified in brackets.
    65 
    66 Configuration:
    67   -h, --help              display this help and exit                                                                                                                  
    68   --prefix=PREFIX         install files in PREFIX [${PREFIX_DEFAULT}]
    69   --local                 don't install, and use current directory
    70 
    71 By default, \`make install' will install all the files in
    72 \`${PREFIX_DEFAULT}/bin', \`${PREFIX_DEFAULT}/lib' etc.  You can specify
    73 an installation prefix other than \`${PREFIX_DEFAULT}' using \`--prefix',
    74 for instance \`--prefix=\${HOME}'.
    75 
    76 For better control, use the options below.
    77 
    78 Fine tuning of the installation directories:
    79   --bindir=DIR           user executables [PREFIX/bin]
    80   --libdir=DIR           object code libraries [PREFIX/lib]
    81   --docdir=DIR           info documentation [PREFIX/share/doc]
    82   --mandir=DIR           man documentation [PREFIX/share/man]
    83 __EOF__
    84 }
    85 
    86 do_error() {
    87     echo "[ERROR] ${@}"
    88     exit 1
    89 }
    90 
    91 #---------------------------------------------------------------------
    92 # Set user's options
    93 
    94 while [ $# -ne 0 ]; do
    95     case "$1" in
    96         --prefix*)  set_prefix "$1" "$2" && shift || shift 2;;
    97         --bindir*)  set_bindir "$1" "$2" && shift || shift 2;;
    98         --libdir*)  set_libdir "$1" "$2" && shift || shift 2;;
    99         --docdir*)  set_docdir "$1" "$2" && shift || shift 2;;
   100         --mandir*)  set_mandir "$1" "$2" && shift || shift 2;;
   101         --local)    LOCAL_set=1; shift;;
   102         --help|-h)  do_help; exit 0;;
   103         *)          do_help; exit 1;;
   104     esac
   105 done
   106 
   107 [ -z "${PREFIX}" ] && set_prefix "" "${PREFIX_DEFAULT}"
   108 if [ "${LOCAL_set}" = "1" ]; then
   109     set_prefix "" $(pwd)
   110     set_bindir "" $(pwd)
   111     set_libdir "" $(pwd)
   112     set_docdir "" $(pwd)/docs
   113     set_mandir "" $(pwd)/docs
   114 fi
   115 
   116 [ -z "${BINDIR_set}" ] && BINDIR="${PREFIX}/bin"
   117 [ -z "${LIBDIR_set}" ] && LIBDIR="${PREFIX}/lib/ct-ng-${VERSION}"
   118 [ -z "${DOCDIR_set}" ] && DOCDIR="${PREFIX}/share/doc/ct-ng-${VERSION}"
   119 [ -z "${MANDIR_set}" ] && MANDIR="${PREFIX}/share/man/man1"
   120 
   121 #---------------------------------------------------------------------
   122 # Some sanity checks, now
   123 
   124 # If this version is a svn snapshot, try to get the revision number
   125 # If we can't get the revision number, use date
   126 case "${VERSION}" in
   127   *+svn)
   128     REVISION=$(svnversion)
   129     case "${REVISION}" in
   130       exported)
   131         VERSION="${VERSION}:unknown@$(date +%Y%m%d.%H%M%S)";;
   132       *)
   133         URL=$(LANG=C svn info 2>/dev/null |egrep 'URL: ' |cut -d ' ' -f 2-)
   134         ROOT=$(LANG=C svn info 2>/dev/null |egrep 'Repository Root: ' |cut -d ' ' -f 3-)
   135         VERSION="${VERSION}:${URL#${ROOT}}@${REVISION}"
   136         ;;
   137     esac
   138     ;;
   139 esac
   140 
   141 # Check bash is present, and at least version 3.0
   142 [ -x /bin/bash ] || do_error "bash 3.0 or above was not found in /bin/bash"
   143 bash_version=$(/bin/bash -c 'echo ${BASH_VERSION}')
   144 bash_major=$(/bin/bash -c 'echo ${BASH_VERSINFO[0]}')
   145 [ ${bash_major} -ge 3 ] || do_error "bash 3.0 or above is needed (/bin/bash is ${bash_version})"
   146 
   147 sed -r -e "s,@@BINDIR@@,${BINDIR},g;"   \
   148        -e "s,@@LIBDIR@@,${LIBDIR},g;"   \
   149        -e "s,@@DOCDIR@@,${DOCDIR},g;"   \
   150        -e "s,@@MANDIR@@,${MANDIR},g;"   \
   151        -e "s,@@VERSION@@,${VERSION},g;" \
   152        -e "s,@@DATE@@,${DATE},g;"       \
   153        -e "s,@@LOCAL@@,${LOCAL_set},g;" \
   154        Makefile.in >Makefile
   155 
   156 cat <<__EOF__
   157 crosstool-NG configured as follows:
   158   PREFIX="${PREFIX}"
   159   BINDIR="${BINDIR}"
   160   LIBDIR="${LIBDIR}"
   161   DOCDIR="${DOCDIR}"
   162   MANDIR="${MANDIR}"
   163 __EOF__