[Buildroot] [PATCH 1/9] skalibs: new package
Eric Le Bihan
eric.le.bihan.dev at free.fr
Mon Aug 8 21:02:12 UTC 2016
This new package provides skalibs, a collection of free software / open
source C development files used for building all software from
skarnet.org.
Signed-off-by: Eric Le Bihan <eric.le.bihan.dev at free.fr>
---
package/Config.in | 1 +
package/skalibs/Config.in | 12 ++
...ntime-tests-for-type-sizes-nor-endianness.patch | 127 +++++++++++++++++++++
package/skalibs/skalibs.mk | 59 ++++++++++
4 files changed, 199 insertions(+)
create mode 100644 package/skalibs/Config.in
create mode 100644 package/skalibs/skalibs-0001-No-runtime-tests-for-type-sizes-nor-endianness.patch
create mode 100644 package/skalibs/skalibs.mk
diff --git a/package/Config.in b/package/Config.in
index 645fa29..ecda732 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1333,6 +1333,7 @@ endif
source "package/protobuf-c/Config.in"
source "package/qhull/Config.in"
source "package/qlibc/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/Config.in b/package/skalibs/Config.in
new file mode 100644
index 0000000..db35681
--- /dev/null
+++ b/package/skalibs/Config.in
@@ -0,0 +1,12 @@
+config BR2_PACKAGE_SKALIBS
+ bool "skalibs"
+ depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL
+ help
+ skalibs is a package centralizing the free software / open source C
+ development files used for building all software at skarnet.org:
+ it contains essentially general-purpose libraries.
+
+ http://skarnet.org/software/skalibs/
+
+comment "skalibs need an (e)glibc or musl toolchain"
+ depends on !BR2_TOOLCHAIN_USES_GLIBC && !BR2_TOOLCHAIN_USES_MUSL
diff --git a/package/skalibs/skalibs-0001-No-runtime-tests-for-type-sizes-nor-endianness.patch b/package/skalibs/skalibs-0001-No-runtime-tests-for-type-sizes-nor-endianness.patch
new file mode 100644
index 0000000..7680840
--- /dev/null
+++ b/package/skalibs/skalibs-0001-No-runtime-tests-for-type-sizes-nor-endianness.patch
@@ -0,0 +1,127 @@
+From bb3505b564b4aba061c9f3167dbcc1460c690501 Mon Sep 17 00:00:00 2001
+From: Eric Le Bihan <eric.le.bihan.dev at free.fr>
+Date: Mon, 14 Sep 2015 12:43:27 +0200
+Subject: [PATCH] No runtime tests for type sizes nor endianness
+
+Replace build and execution of runtime test programs for determining
+some type sizes and 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 | 38 ++++++++++++++++++++++++++++++++------
+ src/sysdeps/trybigendian.c | 16 ++++++++++++++++
+ src/sysdeps/trylittleendian.c | 16 ++++++++++++++++
+ 3 files changed, 64 insertions(+), 6 deletions(-)
+ create mode 100644 src/sysdeps/trybigendian.c
+ create mode 100644 src/sysdeps/trylittleendian.c
+
+diff --git a/configure b/configure
+index 910fb7b..4503178 100755
+--- a/configure
++++ b/configure
+@@ -155,10 +155,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
+@@ -432,12 +450,20 @@ EOF
+ fi
+
+ echo "Checking system endianness..."
+- $CC_AUTO $CPPFLAGS_AUTO $CFLAGS_AUTO -o tryendianness src/sysdeps/tryendianness.c
+- endianness=$(./tryendianness) || fail "$0: unable to determine 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.1
+
diff --git a/package/skalibs/skalibs.mk b/package/skalibs/skalibs.mk
new file mode 100644
index 0000000..8567458
--- /dev/null
+++ b/package/skalibs/skalibs.mk
@@ -0,0 +1,59 @@
+################################################################################
+#
+# skalibs
+#
+################################################################################
+
+SKALIBS_VERSION = v2.3.10.0
+SKALIBS_SITE = git://git.skarnet.org/skalibs.git
+SKALIBS_LICENSE = ISC
+SKALIBS_LICENSE_FILES = COPYING
+SKALIBS_INSTALL_STAGING = YES
+
+SKALIBS_CONFIGURE_OPTS = \
+ --prefix=/usr \
+ --enable-force-devr \
+ --with-default-path=/sbin:/usr/sbin:/bin:/usr/bin
+
+ifeq ($(BR2_STATIC_LIBS),y)
+SKALIBS_CONFIGURE_OPTS += --enable-static --disable-shared
+else
+SKALIBS_CONFIGURE_OPTS += --disable-static --enable-shared --disable-allstatic
+endif
+
+define SKALIBS_CONFIGURE_CMDS
+ (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(SKALIBS_CONFIGURE_OPTS))
+endef
+
+define SKALIBS_BUILD_CMDS
+ $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
+endef
+
+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_CONFIGURE_OPTS = \
+ --prefix=/usr \
+ --disable-static \
+ --enable-shared \
+ --disable-allstatic
+
+define HOST_SKALIBS_CONFIGURE_CMDS
+ (cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure $(HOST_SKALIBS_CONFIGURE_OPTS))
+endef
+
+define HOST_SKALIBS_BUILD_CMDS
+ $(HOST_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(HOST_DIR)
+endef
+
+define HOST_SKALIBS_INSTALL_CMDS
+ $(HOST_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(HOST_DIR) install
+endef
+
+$(eval $(generic-package))
+$(eval $(host-generic-package))
--
2.4.11
More information about the buildroot
mailing list