skalibs: new package
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@free.fr> [Thomas: remove post install target hook, do it directly in the target installation commands.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
parent
006a328ad6
commit
332360e342
@ -1367,6 +1367,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"
|
||||
|
95
package/skalibs/0001-No-runtime-tests-for-endianness.patch
Normal file
95
package/skalibs/0001-No-runtime-tests-for-endianness.patch
Normal file
@ -0,0 +1,95 @@
|
||||
From 1e6f0b094c6ce6454be572704b866d2ce0962e59 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Le Bihan <eric.le.bihan.dev@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@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
|
||||
|
54
package/skalibs/0002-No-runtime-tests-for-type-sizes.patch
Normal file
54
package/skalibs/0002-No-runtime-tests-for-type-sizes.patch
Normal file
@ -0,0 +1,54 @@
|
||||
From d868600a3f437750bc44a783d677a25a48100096 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Le Bihan <eric.le.bihan.dev@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@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
|
||||
|
9
package/skalibs/Config.in
Normal file
9
package/skalibs/Config.in
Normal file
@ -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/
|
2
package/skalibs/skalibs.hash
Normal file
2
package/skalibs/skalibs.hash
Normal file
@ -0,0 +1,2 @@
|
||||
# Locally generated
|
||||
sha256 0708172bc2ec9825f8a4f312d35f8dcd94da5f291425a598c33c873b3de77df8 skalibs-2.4.0.2.tar.gz
|
54
package/skalibs/skalibs.mk
Normal file
54
package/skalibs/skalibs.mk
Normal file
@ -0,0 +1,54 @@
|
||||
################################################################################
|
||||
#
|
||||
# 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_INSTALL_TARGET_CMDS
|
||||
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install
|
||||
rm -rf $(TARGET_DIR)/usr/lib/skalibs
|
||||
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))
|
Loading…
Reference in New Issue
Block a user