From d91277e377d9dbbc87e7997db7059b30a3389bb2 Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Fri, 3 Feb 2017 17:49:45 -0800 Subject: Add zlib as a companion lib with version 1.2.11. Signed-off-by: Alexey Neyman diff --git a/config/binutils/binutils.in.2 b/config/binutils/binutils.in.2 index 7a1291f..dfb00bd 100644 --- a/config/binutils/binutils.in.2 +++ b/config/binutils/binutils.in.2 @@ -2,6 +2,10 @@ if ARCH_BINFMT_FLAT +config ELF2FLT_REQUIRES_ZLIB + def_bool y + select ZLIB + comment "elf2flt" choice diff --git a/config/cc/gcc.in.2 b/config/cc/gcc.in.2 index 2c5d45e..aad488b 100644 --- a/config/cc/gcc.in.2 +++ b/config/cc/gcc.in.2 @@ -81,6 +81,9 @@ config CC_GCC_SYSTEM_ZLIB help Do not use bundled zlib, and use the zlib already available for the host (eg. the system library). + + If zlib is built as a companion library, selecting this option + will use it. If you want to build a static toolchain, you will need to also install the static version of zlib for your host. diff --git a/config/companion_libs.in b/config/companion_libs.in index 7d1d4f7..02f2ecb 100644 --- a/config/companion_libs.in +++ b/config/companion_libs.in @@ -119,6 +119,12 @@ config NCURSES config NCURSES_TARGET bool +config ZLIB + bool "Build local zlib" + +if ZLIB +source "config/companion_libs/zlib.in" +endif if LIBICONV source "config/companion_libs/libiconv.in" endif diff --git a/config/companion_libs/zlib.in b/config/companion_libs/zlib.in new file mode 100644 index 0000000..df93682 --- /dev/null +++ b/config/companion_libs/zlib.in @@ -0,0 +1,19 @@ +# Zlib options + +choice + bool + prompt "zlib version" +# Don't remove next line +# CT_INSERT_VERSION_BELOW + +config ZLIB_V_1_2_11 + bool + prompt "1.2.11" + +endchoice + +config ZLIB_VERSION + string +# Don't remove next line +# CT_INSERT_VERSION_STRING_BELOW + default "1.2.11" if ZLIB_V_1_2_11 diff --git a/scripts/addToolVersion.sh b/scripts/addToolVersion.sh index bf59232..dbd1243 100755 --- a/scripts/addToolVersion.sh +++ b/scripts/addToolVersion.sh @@ -18,7 +18,7 @@ doHelp() { 'tool' in one of: gcc, binutils, glibc, uClibc, uClibc-ng, newlib, linux, gdb, duma, strace, ltrace, libelf, gmp, mpfr, isl, cloog, mpc, - mingw-w64, expat, ncurses, musl, gettext + mingw-w64, expat, ncurses, musl, gettext, zlib Valid options for all tools: --stable, -s, +x (default) @@ -210,6 +210,7 @@ while [ $# -gt 0 ]; do --expat) EXP=; OBS=; cat=EXPAT; tool=expat; tool_prefix=companion_libs; dot2suffix=;; --ncurses) EXP=; OBS=; cat=NCURSES; tool=ncurses; tool_prefix=companion_libs; dot2suffix=;; --gettext) EXP=; OBS=; cat=GETTEXT; tool=gettext; tool_prefix=companion_libs; dot2suffix=;; + --zlib) EXP=; OBS=; cat=ZLIB; tool=zlib; tool_prefix=companion_tools; dot2suffix=;; --make) EXP=; OBS=; cat=MAKE; tool=make; tool_prefix=companion_tools; dot2suffix=;; --m4) EXP=; OBS=; cat=M4; tool=m4; tool_prefix=companion_tools; dot2suffix=;; --autoconf) EXP=; OBS=; cat=AUTOCONF; tool=autoconf; tool_prefix=companion_tools; dot2suffix=;; diff --git a/scripts/build/companion_libs/050-zlib.sh b/scripts/build/companion_libs/050-zlib.sh new file mode 100644 index 0000000..45518e9 --- /dev/null +++ b/scripts/build/companion_libs/050-zlib.sh @@ -0,0 +1,108 @@ +# This file adds the functions to build the zlib library +# Copyright 2017 Alexey Neyman +# Licensed under the GPL v2. See COPYING in the root of this package + +do_zlib_get() { :; } +do_zlib_extract() { :; } +do_zlib_for_build() { :; } +do_zlib_for_host() { :; } +do_zlib_for_target() { :; } + +# Overide functions depending on configuration +if [ "${CT_ZLIB}" = "y" ]; then + +# Download zlib +do_zlib_get() { + CT_GetFile "zlib-${CT_ZLIB_VERSION}" \ + "http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION}" +} + +# Extract zlib +do_zlib_extract() { + CT_Extract "zlib-${CT_ZLIB_VERSION}" + CT_Patch "zlib" "${CT_ZLIB_VERSION}" +} + +# Build zlib for running on build +# - always build statically +# - install in build-tools prefix +do_zlib_for_build() { + local -a zlib_opts + + case "${CT_TOOLCHAIN_TYPE}" in + native|cross) return 0;; + esac + + CT_DoStep INFO "Installing zlib for build" + CT_mkdir_pushd "${CT_BUILD_DIR}/build-zlib-build-${CT_BUILD}" + + zlib_opts+=( "host=${CT_BUILD}" ) + zlib_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" ) + zlib_opts+=( "cflags=${CT_CFLAGS_FOR_BUILD}" ) + zlib_opts+=( "ldflags=${CT_LDFLAGS_FOR_BUILD}" ) + do_zlib_backend "${zlib_opts[@]}" + + CT_Popd + CT_EndStep +} + +# Build zlib for running on host +do_zlib_for_host() { + local -a zlib_opts + + CT_DoStep INFO "Installing zlib for host" + CT_mkdir_pushd "${CT_BUILD_DIR}/build-zlib-host-${CT_HOST}" + + zlib_opts+=( "host=${CT_HOST}" ) + zlib_opts+=( "prefix=${CT_HOST_COMPLIBS_DIR}" ) + zlib_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" ) + zlib_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" ) + do_zlib_backend "${zlib_opts[@]}" + + CT_Popd + CT_EndStep +} + +# Build zlib +# Parameter : description : type : default +# host : machine to run on : tuple : (none) +# prefix : prefix to install into : dir : (none) +# cflags : cflags to use : string : (empty) +# ldflags : ldflags to use : string : (empty) +do_zlib_backend() { + local host + local prefix + local cflags + local ldflags + local arg + local -a extra_config + + for arg in "$@"; do + eval "${arg// /\\ }" + done + + CT_DoLog EXTRA "Configuring zlib" + + CT_DoExecLog CFG \ + CFLAGS="${cflags}" \ + LDFLAGS="${ldflags}" \ + CROSS_PREFIX="${host}-" \ + ${CONFIG_SHELL} \ + "${CT_SRC_DIR}/zlib-${CT_ZLIB_VERSION}/configure" \ + --prefix="${prefix}" \ + --static \ + "${extra_config[@]}" + + CT_DoLog EXTRA "Building zlib" + CT_DoExecLog ALL make ${JOBSFLAGS} + + if [ "${CT_COMPLIBS_CHECK}" = "y" ]; then + CT_DoLog EXTRA "Checking zlib" + CT_DoExecLog ALL make ${JOBSFLAGS} -s check + fi + + CT_DoLog EXTRA "Installing zlib" + CT_DoExecLog ALL make install +} + +fi # CT_ZLIB diff --git a/scripts/build/companion_libs/100-gmp.sh b/scripts/build/companion_libs/100-gmp.sh index 8ce500e..6b526c8 100644 --- a/scripts/build/companion_libs/100-gmp.sh +++ b/scripts/build/companion_libs/100-gmp.sh @@ -26,7 +26,6 @@ do_gmp_extract() { # Build GMP for running on build # - always build statically -# - we do not have build-specific CFLAGS # - install in build-tools prefix do_gmp_for_build() { local -a gmp_opts @@ -101,7 +100,7 @@ do_gmp_backend() { --enable-cxx \ --disable-shared \ --enable-static \ - "${extra_config}" + "${extra_config[@]}" CT_DoLog EXTRA "Building GMP" CT_DoExecLog ALL make ${JOBSFLAGS} diff --git a/scripts/build/companion_libs/110-mpfr.sh b/scripts/build/companion_libs/110-mpfr.sh index 05b6860..4b9bc64 100644 --- a/scripts/build/companion_libs/110-mpfr.sh +++ b/scripts/build/companion_libs/110-mpfr.sh @@ -68,7 +68,6 @@ do_mpfr_extract() { # Build MPFR for running on build # - always build statically -# - we do not have build-specific CFLAGS # - install in build-tools prefix do_mpfr_for_build() { local -a mpfr_opts diff --git a/scripts/build/companion_libs/121-isl.sh b/scripts/build/companion_libs/121-isl.sh index bde63e3..8783f2d 100644 --- a/scripts/build/companion_libs/121-isl.sh +++ b/scripts/build/companion_libs/121-isl.sh @@ -25,7 +25,6 @@ do_isl_extract() { # Build ISL for running on build # - always build statically -# - we do not have build-specific CFLAGS # - install in build-tools prefix do_isl_for_build() { local -a isl_opts diff --git a/scripts/build/companion_libs/130-cloog.sh b/scripts/build/companion_libs/130-cloog.sh index b1c307c..b6ea1e5 100644 --- a/scripts/build/companion_libs/130-cloog.sh +++ b/scripts/build/companion_libs/130-cloog.sh @@ -29,7 +29,6 @@ do_cloog_extract() { # Build CLooG for running on build # - always build statically -# - we do not have build-specific CFLAGS # - install in build-tools prefix do_cloog_for_build() { local -a cloog_opts diff --git a/scripts/build/companion_libs/140-mpc.sh b/scripts/build/companion_libs/140-mpc.sh index f753c51..acb5fd3 100644 --- a/scripts/build/companion_libs/140-mpc.sh +++ b/scripts/build/companion_libs/140-mpc.sh @@ -26,7 +26,6 @@ do_mpc_extract() { # Build MPC for running on build # - always build statically -# - we do not have build-specific CFLAGS # - install in build-tools prefix do_mpc_for_build() { local -a mpc_opts diff --git a/scripts/build/companion_libs/200-libelf.sh b/scripts/build/companion_libs/200-libelf.sh index 41e4564..807ce7e 100644 --- a/scripts/build/companion_libs/200-libelf.sh +++ b/scripts/build/companion_libs/200-libelf.sh @@ -24,7 +24,6 @@ if [ "${CT_LIBELF}" = "y" ]; then # Build libelf for running on build # - always build statically -# - we do not have build-specific CFLAGS # - install in build-tools prefix do_libelf_for_build() { local -a libelf_opts diff --git a/scripts/gen_in_frags.sh b/scripts/gen_in_frags.sh index 9c656a8..9fbb871 100755 --- a/scripts/gen_in_frags.sh +++ b/scripts/gen_in_frags.sh @@ -128,7 +128,7 @@ gen_menu() { shift 4 local file entry _entry - # GEnerate the menuconfig + # Generate the menuconfig exec >"${out_file}" printf '# %s menu\n' "${label}" printf '# Generated file, do not edit!!!\n' -- cgit v0.10.2-6-g49f6