[Buildroot] [Patch v3 1/9] skalibs: new package

Thomas De Schampheleire patrickdepinguin at gmail.com
Tue Feb 7 10:21:49 UTC 2017


On Mon, Dec 19, 2016 at 10:29 PM, Eric Le Bihan
<eric.le.bihan.dev at free.fr> wrote:
> This new package provides skalibs, a collection of free software / open
> source C development files used for building all softwares from
> skarnet.org.
>
> Note that, though skalibs (and all skarnet softwares) follows the
> "./configure; make; make install" convention, it does not behave like a
> traditional autotools project:
>
>  - static libraries are installed in $prefix/usr/lib/skalibs.
>  - pkg-config and libtool are not used: instead a custom system called
>    "sysdeps" is used and locations to libraries and headers are to be
>    passed explicitly via options of the './configure' script.
>
> The host variant is provided to allow building the host variants of the
> other skarnet softwares.
>
> Signed-off-by: Eric Le Bihan <eric.le.bihan.dev at free.fr>
> ---
>  package/Config.in                                  |  1 +
>  .../0001-No-runtime-tests-for-endianness.patch     | 95 ++++++++++++++++++++++
>  .../0002-No-runtime-tests-for-type-sizes.patch     | 54 ++++++++++++
>  package/skalibs/Config.in                          |  9 ++
>  package/skalibs/skalibs.hash                       |  2 +
>  package/skalibs/skalibs.mk                         | 59 ++++++++++++++
>  6 files changed, 220 insertions(+)
>  create mode 100644 package/skalibs/0001-No-runtime-tests-for-endianness.patch
>  create mode 100644 package/skalibs/0002-No-runtime-tests-for-type-sizes.patch
>  create mode 100644 package/skalibs/Config.in
>  create mode 100644 package/skalibs/skalibs.hash
>  create mode 100644 package/skalibs/skalibs.mk
>
> diff --git a/package/Config.in b/package/Config.in
> index be0d150..760eaff 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -1366,6 +1366,7 @@ endif
>         source "package/qhull/Config.in"
>         source "package/qlibc/Config.in"
>         source "package/shapelib/Config.in"
> +       source "package/skalibs/Config.in"
>         source "package/sphinxbase/Config.in"
>         source "package/startup-notification/Config.in"
>         source "package/tinycbor/Config.in"
> diff --git a/package/skalibs/0001-No-runtime-tests-for-endianness.patch b/package/skalibs/0001-No-runtime-tests-for-endianness.patch
> new file mode 100644
> index 0000000..4390d44
> --- /dev/null
> +++ b/package/skalibs/0001-No-runtime-tests-for-endianness.patch
> @@ -0,0 +1,95 @@
> +From 1e6f0b094c6ce6454be572704b866d2ce0962e59 Mon Sep 17 00:00:00 2001
> +From: Eric Le Bihan <eric.le.bihan.dev at free.fr>
> +Date: Sun, 4 Dec 2016 19:10:40 +0100
> +Subject: [PATCH] No runtime tests for endianness
> +
> +Replace build and execution of runtime test programs for determining
> +the endianness of the target with compile time test programs.
> +
> +This improves support for cross-compilation.
> +
> +Signed-off-by: Eric Le Bihan <eric.le.bihan.dev at free.fr>
> +---
> + configure                     | 15 +++++++++++----
> + src/sysdeps/trybigendian.c    | 16 ++++++++++++++++
> + src/sysdeps/trylittleendian.c | 16 ++++++++++++++++
> + 3 files changed, 43 insertions(+), 4 deletions(-)
> + create mode 100644 src/sysdeps/trybigendian.c
> + create mode 100644 src/sysdeps/trylittleendian.c
> +
> +diff --git a/configure b/configure
> +index 1579025..4da9c5e 100755
> +--- a/configure
> ++++ b/configure
> +@@ -463,13 +463,20 @@ EOF
> +   fi
> +   exec 3>&-
> +
> +-  echo "Checking system endianness..."
> +-  $CC_AUTO $CPPFLAGS_AUTO $CFLAGS_AUTO -o tryendianness src/sysdeps/tryendianness.c
> +-  endianness=$(./tryendianness) || fail "$0: unable to determine endianness"
> ++    echo "Checking system endianness..."
> ++  if $CC_AUTO $CPPFLAGS_AUTO $CFLAGS_AUTO -o trybigendian src/sysdeps/trybigendian.c 2>/dev/null; then
> ++      endianness=big
> ++  else
> ++      if $CC_AUTO $CPPFLAGS_AUTO $CFLAGS_AUTO -o trylittleendian src/sysdeps/trylittleendian.c 2>/dev/null; then
> ++          endianness=little
> ++      else
> ++          fail "$0: unable to determine endianness"
> ++      fi
> ++  fi
> +   echo "endianness: $endianness" >> $sysdeps/sysdeps
> +   echo "#define ${package_macro_name}_ENDIANNESS \"$endianness\"" >> $sysdeps/sysdeps.h
> +   echo "  ... $endianness"
> +-  rm -f tryendianness
> ++  rm -f trybigendian trylittleendian
> +
> +   trytypesize ushort USHORT "unsigned short"
> +   trytypesize uint UINT "unsigned int"
> +diff --git a/src/sysdeps/trybigendian.c b/src/sysdeps/trybigendian.c
> +new file mode 100644
> +index 0000000..d857572
> +--- /dev/null
> ++++ b/src/sysdeps/trybigendian.c
> +@@ -0,0 +1,16 @@
> ++#if defined(__BYTE_ORDER) && (__BYTE_ORDER == __BIG_ENDIAN) ||               \
> ++      defined(__BYTE_ORDER__) && (__BYTE_ORDER__  == __ORDER_BIG_ENDIAN__) || \
> ++      defined(__BIG_ENDIAN) ||                                       \
> ++      defined(__ARMEB__) ||                                          \
> ++      defined(__THUMBEB__) ||                                \
> ++      defined(__AARCH64EB__) ||                                      \
> ++      defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__)
> ++#define YEAH
> ++#else
> ++#error "not big endian"
> ++#endif
> ++
> ++int main(void)
> ++{
> ++      return 0;
> ++}
> +diff --git a/src/sysdeps/trylittleendian.c b/src/sysdeps/trylittleendian.c
> +new file mode 100644
> +index 0000000..eba065a
> +--- /dev/null
> ++++ b/src/sysdeps/trylittleendian.c
> +@@ -0,0 +1,16 @@
> ++#if defined(__BYTE_ORDER) && (__BYTE_ORDER == __LITTLE_ENDIAN) ||     \
> ++      defined(__BYTE_ORDER__) && (__BYTE_ORDER__  == __ORDER_LITTLE_ENDIAN__) || \
> ++      defined(__LITTLE_ENDIAN) ||                                     \
> ++      defined(__ARMEL__) ||                                           \
> ++      defined(__THUMBEL__) ||                                 \
> ++      defined(__AARCH64EL__) ||                                       \
> ++      defined(_MIPSEL) || defined(__MIPSEL) || defined(__MIPSEL__)
> ++#define YEAH
> ++#else
> ++#error "not little endian"
> ++#endif
> ++
> ++int main(void)
> ++{
> ++      return 0;
> ++}
> +--
> +2.5.5
> +
> diff --git a/package/skalibs/0002-No-runtime-tests-for-type-sizes.patch b/package/skalibs/0002-No-runtime-tests-for-type-sizes.patch
> new file mode 100644
> index 0000000..3f16171
> --- /dev/null
> +++ b/package/skalibs/0002-No-runtime-tests-for-type-sizes.patch
> @@ -0,0 +1,54 @@
> +From d868600a3f437750bc44a783d677a25a48100096 Mon Sep 17 00:00:00 2001
> +From: Eric Le Bihan <eric.le.bihan.dev at free.fr>
> +Date: Sun, 4 Dec 2016 19:11:25 +0100
> +Subject: [PATCH] No runtime tests for type sizes
> +
> +Replace build and execution of runtime test programs for determining
> +some type sizes of the target with compile time test programs.
> +
> +This improves support for cross-compilation.
> +
> +Signed-off-by: Eric Le Bihan <eric.le.bihan.dev at free.fr>
> +---
> + configure | 24 +++++++++++++++++++++---
> + 1 file changed, 21 insertions(+), 3 deletions(-)
> +
> +diff --git a/configure b/configure
> +index 4da9c5e..b5926ca 100755
> +--- a/configure
> ++++ b/configure
> +@@ -157,10 +157,28 @@ choose () {
> +
> + trytypesize () {
> +   echo "Checking size of $3..."
> +-  $CC_AUTO $CPPFLAGS_AUTO $CFLAGS_AUTO $LDFLAGS_AUTO -o trysizeof$1 src/sysdeps/trysizeof$1.c
> +-  type_size=$(./trysizeof$1) || fail "$0: unable to determine size of $3"
> ++  r=false
> ++  type_size=0
> ++  while true; do
> ++    cat<<EOF>trysizeof$1.c
> ++#include <sys/types.h>
> ++
> ++int main(void)
> ++{
> ++  static int v = 1 / !!((sizeof($3) == $type_size));
> ++  return 0;
> ++}
> ++EOF
> ++    if $CC_AUTO $CPPFLAGS_AUTO $CFLAGS_AUTO $LDFLAGS_AUTO -o trysizeof$1 trysizeof$1.c 2>/dev/null; then
> ++        r=true
> ++        break
> ++    fi
> ++    type_size=$(expr $type_size + 1)
> ++    test $type_size -le 16 || break
> ++  done
> ++  test $r = true || fail "$0: unable to determine size of $3"
> +   type_bits=$(expr 8 \* $type_size)
> +-  rm -f trysizeof$1
> ++  rm -f trysizeof$1 trysizeof$1.c
> +   echo "sizeof$1: $type_size" >> $sysdeps/sysdeps
> +   echo "#define ${package_macro_name}_SIZEOF$2 $type_size" >> $sysdeps/sysdeps.h
> +   echo "#define ${package_macro_name}_$2_BITS $type_bits" >> $sysdeps/sysdeps.h
> +--
> +2.5.5
> +
> diff --git a/package/skalibs/Config.in b/package/skalibs/Config.in
> new file mode 100644
> index 0000000..7802ae3
> --- /dev/null
> +++ b/package/skalibs/Config.in
> @@ -0,0 +1,9 @@
> +config BR2_PACKAGE_SKALIBS
> +       bool "skalibs"
> +       depends on BR2_USE_MMU # fork()
> +       help
> +         skalibs is a package centralizing the FOSS C development
> +         files used for building all software at skarnet.org:
> +         it contains essentially general-purpose libraries.
> +
> +         http://skarnet.org/software/skalibs/
> diff --git a/package/skalibs/skalibs.hash b/package/skalibs/skalibs.hash
> new file mode 100644
> index 0000000..195ac47
> --- /dev/null
> +++ b/package/skalibs/skalibs.hash
> @@ -0,0 +1,2 @@
> +# Locally generated
> +sha256 0708172bc2ec9825f8a4f312d35f8dcd94da5f291425a598c33c873b3de77df8 skalibs-2.4.0.2.tar.gz
> diff --git a/package/skalibs/skalibs.mk b/package/skalibs/skalibs.mk
> new file mode 100644
> index 0000000..e525378
> --- /dev/null
> +++ b/package/skalibs/skalibs.mk
> @@ -0,0 +1,59 @@
> +################################################################################
> +#
> +# skalibs
> +#
> +################################################################################
> +
> +SKALIBS_VERSION = 2.4.0.2
> +SKALIBS_SITE = http://skarnet.org/software/skalibs
> +SKALIBS_LICENSE = ISC
> +SKALIBS_LICENSE_FILES = COPYING
> +SKALIBS_INSTALL_STAGING = YES
> +
> +SKALIBS_CONF_OPTS = \
> +       --prefix=/usr \
> +       --with-default-path=/sbin:/usr/sbin:/bin:/usr/bin \
> +       $(SHARED_STATIC_LIBS_OPTS)
> +
> +define SKALIBS_CONFIGURE_CMDS
> +       (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(SKALIBS_CONF_OPTS))
> +endef
> +
> +define SKALIBS_BUILD_CMDS
> +       $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
> +endef
> +
> +define SKALIBS_REMOVE_STATIC_LIB_DIR
> +       rm -rf $(TARGET_DIR)/usr/lib/skalibs
> +endef
> +
> +SKALIBS_POST_INSTALL_TARGET_HOOKS += SKALIBS_REMOVE_STATIC_LIB_DIR
> +
> +define SKALIBS_INSTALL_TARGET_CMDS
> +       $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install
> +endef
> +
> +define SKALIBS_INSTALL_STAGING_CMDS
> +       $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install
> +endef
> +
> +HOST_SKALIBS_CONF_OPTS = \
> +       --prefix=$(HOST_DIR)/usr \
> +       --disable-static \
> +       --enable-shared \
> +       --disable-allstatic
> +
> +define HOST_SKALIBS_CONFIGURE_CMDS
> +       (cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure $(HOST_SKALIBS_CONF_OPTS))
> +endef
> +
> +define HOST_SKALIBS_BUILD_CMDS
> +       $(HOST_MAKE_ENV) $(MAKE) -C $(@D)
> +endef
> +
> +define HOST_SKALIBS_INSTALL_CMDS
> +       $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install
> +endef
> +
> +$(eval $(generic-package))
> +$(eval $(host-generic-package))
> --

This patch was already applied; I will mark it as such in patchwork.


More information about the buildroot mailing list