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