1.1 --- a/scripts/build/companion_libs/libelf.sh Tue Jan 03 18:39:11 2012 +0100
1.2 +++ b/scripts/build/companion_libs/libelf.sh Sun Jul 17 18:56:30 2011 +0200
1.3 @@ -2,7 +2,7 @@
1.4
1.5 do_libelf_get() { :; }
1.6 do_libelf_extract() { :; }
1.7 -do_libelf() { :; }
1.8 +do_libelf_for_host() { :; }
1.9 do_libelf_for_target() { :; }
1.10
1.11 if [ "${CT_LIBELF}" = "y" -o "${CT_LIBELF_TARGET}" = "y" ]; then
1.12 @@ -21,32 +21,17 @@
1.13
1.14 if [ "${CT_LIBELF}" = "y" ]; then
1.15
1.16 -do_libelf() {
1.17 - CT_DoStep INFO "Installing libelf"
1.18 - mkdir -p "${CT_BUILD_DIR}/build-libelf"
1.19 - CT_Pushd "${CT_BUILD_DIR}/build-libelf"
1.20 +# Build libelf for running on host
1.21 +do_libelf_for_host() {
1.22 + local -a libelf_opts
1.23
1.24 - CT_DoLog EXTRA "Configuring libelf"
1.25 + CT_DoStep INFO "Installing libelf for host"
1.26 + CT_mkdir_pushd "${CT_BUILD_DIR}/build-libelf-host-${CT_HOST}"
1.27
1.28 - CT_DoExecLog CFG \
1.29 - CC="${CT_HOST}-gcc" \
1.30 - CFLAGS="-fPIC" \
1.31 - "${CT_SRC_DIR}/libelf-${CT_LIBELF_VERSION}/configure" \
1.32 - --build=${CT_BUILD} \
1.33 - --host=${CT_HOST} \
1.34 - --target=${CT_TARGET} \
1.35 - --prefix="${CT_COMPLIBS_DIR}" \
1.36 - --enable-compat \
1.37 - --enable-elf64 \
1.38 - --enable-extended-format \
1.39 - --disable-shared \
1.40 - --enable-static
1.41 -
1.42 - CT_DoLog EXTRA "Building libelf"
1.43 - CT_DoExecLog ALL make
1.44 -
1.45 - CT_DoLog EXTRA "Installing libelf"
1.46 - CT_DoExecLog ALL make install
1.47 + libelf_opts+=( "host=${CT_HOST}" )
1.48 + libelf_opts+=( "prefix=${CT_COMPLIBS_DIR}" )
1.49 + libelf_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" )
1.50 + do_libelf_backend "${libelf_opts[@]}"
1.51
1.52 CT_Popd
1.53 CT_EndStep
1.54 @@ -57,31 +42,16 @@
1.55 if [ "${CT_LIBELF_TARGET}" = "y" ]; then
1.56
1.57 do_libelf_for_target() {
1.58 + local -a libelf_opts
1.59 +
1.60 CT_DoStep INFO "Installing libelf for the target"
1.61 - mkdir -p "${CT_BUILD_DIR}/build-libelf-for-target"
1.62 - CT_Pushd "${CT_BUILD_DIR}/build-libelf-for-target"
1.63 + CT_mkdir_pushd "${CT_BUILD_DIR}/build-libelf-target-${CT_TARGET}"
1.64
1.65 - CT_DoLog EXTRA "Configuring libelf"
1.66 - CT_DoExecLog CFG \
1.67 - CC="${CT_TARGET}-gcc" \
1.68 - CFLAGS="-fPIC" \
1.69 - RANLIB="${CT_TARGET}-ranlib" \
1.70 - "${CT_SRC_DIR}/libelf-${CT_LIBELF_VERSION}/configure" \
1.71 - --build=${CT_BUILD} \
1.72 - --host=${CT_TARGET} \
1.73 - --target=${CT_TARGET} \
1.74 - --prefix=/usr \
1.75 - --enable-compat \
1.76 - --enable-elf64 \
1.77 - --enable-shared \
1.78 - --enable-extended-format \
1.79 - --enable-static
1.80 -
1.81 - CT_DoLog EXTRA "Building libelf"
1.82 - CT_DoExecLog ALL make
1.83 -
1.84 - CT_DoLog EXTRA "Installing libelf"
1.85 - CT_DoExecLog ALL make instroot="${CT_SYSROOT_DIR}" install
1.86 + libelf_opts+=( "destdir=${CT_SYSROOT_DIR}" )
1.87 + libelf_opts+=( "host=${CT_TARGET}" )
1.88 + libelf_opts+=( "prefix=/usr" )
1.89 + libelf_opts+=( "shared=y" )
1.90 + do_libelf_backend "${libelf_opts[@]}"
1.91
1.92 CT_Popd
1.93 CT_EndStep
1.94 @@ -89,4 +59,54 @@
1.95
1.96 fi # CT_LIBELF_TARGET
1.97
1.98 +# Build libelf
1.99 +# Parameter : description : type : default
1.100 +# destdir : out-of-tree install dir : string : /
1.101 +# host : machine to run on : tuple : (none)
1.102 +# prefix : prefix to install into : dir : (none)
1.103 +# cflags : host cflags to use : string : (empty)
1.104 +# shared : also buils shared lib : bool : n
1.105 +do_libelf_backend() {
1.106 + local destdir="/"
1.107 + local host
1.108 + local prefix
1.109 + local cflags
1.110 + local shared
1.111 + local -a extra_config
1.112 + local arg
1.113 +
1.114 + for arg in "$@"; do
1.115 + eval "${arg// /\\ }"
1.116 + done
1.117 +
1.118 + CT_DoLog EXTRA "Configuring libelf"
1.119 +
1.120 + if [ "${shared}" = "y" ]; then
1.121 + extra_config+=( --enable-shared )
1.122 + else
1.123 + extra_config+=( --disable-shared )
1.124 + fi
1.125 +
1.126 + CT_DoExecLog CFG \
1.127 + CC="${host}-gcc" \
1.128 + RANLIB="${host}-ranlib" \
1.129 + CFLAGS="${cflags} -fPIC" \
1.130 + "${CT_SRC_DIR}/libelf-${CT_LIBELF_VERSION}/configure" \
1.131 + --build=${CT_BUILD} \
1.132 + --host=${host} \
1.133 + --target=${CT_TARGET} \
1.134 + --prefix="${prefix}" \
1.135 + --enable-compat \
1.136 + --enable-elf64 \
1.137 + --enable-extended-format \
1.138 + --enable-static \
1.139 + "${extra_config[@]}"
1.140 +
1.141 + CT_DoLog EXTRA "Building libelf"
1.142 + CT_DoExecLog ALL make
1.143 +
1.144 + CT_DoLog EXTRA "Installing libelf"
1.145 + CT_DoExecLog ALL make instroot="${destdir}" install
1.146 +}
1.147 +
1.148 fi # CT_LIBELF || CT_LIBELF_TARGET