diff options
Diffstat (limited to 'scripts/build/companion_libs/330-gettext.sh')
-rwxr-xr-x | scripts/build/companion_libs/330-gettext.sh | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/scripts/build/companion_libs/330-gettext.sh b/scripts/build/companion_libs/330-gettext.sh new file mode 100755 index 0000000..5a3f461 --- /dev/null +++ b/scripts/build/companion_libs/330-gettext.sh @@ -0,0 +1,136 @@ +# Build script for gettext + +do_gettext_get() { :; } +do_gettext_extract() { :; } +do_gettext_for_build() { :; } +do_gettext_for_host() { :; } + +if [ "${CT_GETTEXT}" = "y" ]; then + +do_gettext_get() { + CT_GetFile "gettext-${CT_GETTEXT_VERSION}" \ + http://ftp.gnu.org/pub/gnu/gettext/ +} + +do_gettext_extract() { + CT_Extract "gettext-${CT_GETTEXT_VERSION}" + CT_Patch "gettext" "${CT_GETTEXT_VERSION}" +} + +# Build gettext for running on build +do_gettext_for_build() { + local -a gettext_opts + + case "$CT_BUILD" in + *linux*) + return 0 + ;; + esac + + CT_DoStep INFO "Installing gettext for build" + CT_mkdir_pushd "${CT_BUILD_DIR}/build-gettext-build-${CT_BUILD}" + + gettext_opts+=( "host=${CT_BUILD}" ) + gettext_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" ) + gettext_opts+=( "cflags=${CT_CFLAGS_FOR_BUILD}" ) + gettext_opts+=( "ldflags=${CT_LDFLAGS_FOR_BUILD}" ) + gettext_opts+=( "static_build=y" ) + do_gettext_backend "${gettext_opts[@]}" + + CT_Popd + CT_EndStep +} + +# Build gettext for running on host +do_gettext_for_host() { + local -a gettext_opts + + case "$CT_HOST" in + *linux*) + return 0 + ;; + esac + + CT_DoStep INFO "Installing gettext for host" + CT_mkdir_pushd "${CT_BUILD_DIR}/build-gettext-host-${CT_HOST}" + + gettext_opts+=( "host=${CT_HOST}" ) + gettext_opts+=( "prefix=${CT_HOST_COMPLIBS_DIR}" ) + gettext_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" ) + gettext_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" ) + gettext_opts+=( "static_build=${CT_STATIC_TOOLCHAIN}" ) + do_gettext_backend "${gettext_opts[@]}" + + CT_Popd + CT_EndStep +} + +# Build gettext +# Parameter : description : type : default +# host : machine to run on : tuple : (none) +# prefix : prefix to install into : dir : (none) +# static_build : build statically : bool : no +# cflags : host cflags to use : string : (empty) +# ldflags : host ldflags to use : string : (empty) +do_gettext_backend() { + local host + local prefix + local static_build + local cflags + local ldflags + local arg + local -a extra_config + + for arg in "$@"; do + eval "${arg// /\\ }" + done + + CT_DoLog EXTRA "Configuring gettext" + + CT_DoExecLog ALL cp -av "${CT_SRC_DIR}/gettext-${CT_GETTEXT_VERSION}/"/* . + + # A bit ugly. D__USE_MINGW_ANSI_STDIO=1 has its own {v}asprintf functions + # but gettext configure doesn't see this flag when it checks for that. An + # alternative may be to use CC="${host}-gcc ${cflags}" but that didn't + # work. + # -O2 works around bug at http://savannah.gnu.org/bugs/?36443 + # gettext needs some fixing for MinGW-w64 it would seem. + case "${host}" in + *mingw*) + case "${cflags}" in + *D__USE_MINGW_ANSI_STDIO=1*) + extra_config+=( --disable-libasprintf ) + ;; + esac + extra_config+=( --enable-threads=win32 ) + cflags=$cflags" -O2" + ;; + esac + + if [ "${static_build}" = "y" ]; then + extra_config+=("--disable-shared") + extra_config+=("--enable-static") + fi + + CT_DoExecLog CFG \ + CFLAGS="${cflags}" \ + LDFLAGS="${ldflags}" \ + "${CT_SRC_DIR}/gettext-${CT_GETTEXT_VERSION}/configure" \ + --build=${CT_BUILD} \ + --host="${host}" \ + --prefix="${prefix}" \ + --disable-java \ + --disable-native-java \ + --disable-csharp \ + --without-emacs \ + --disable-openmp \ + "${extra_config[@]}" + + CT_DoLog EXTRA "Building gettext" + CT_DoExecLog ALL make ${JOBSFLAGS} + + CT_DoLog EXTRA "Installing gettext" + CT_DoExecLog ALL make install +} + +fi |