From 069f920466b7e6d9208b1ab4e53325d69b9fcdc1 Mon Sep 17 00:00:00 2001 From: smlng Date: Tue, 27 Mar 2018 19:00:28 +0200 Subject: [PATCH 1/4] make: export RANLIB tool with prefix --- makefiles/toolchain/gnu.inc.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/makefiles/toolchain/gnu.inc.mk b/makefiles/toolchain/gnu.inc.mk index 0d4ddd721e..039b8aa14d 100644 --- a/makefiles/toolchain/gnu.inc.mk +++ b/makefiles/toolchain/gnu.inc.mk @@ -3,8 +3,10 @@ export CXX = $(PREFIX)g++ export CCAS ?= $(CC) ifeq ($(LTO),1) export AR = $(PREFIX)gcc-ar +export RANLIB = $(PREFIX)gcc-ranlib else export AR = $(PREFIX)ar +export RANLIB = $(PREFIX)ranlib endif export AS = $(PREFIX)as export LINK = $(PREFIX)gcc From a777f6fab0fb6bbde62ab6ccb4cd276d0c06c057 Mon Sep 17 00:00:00 2001 From: smlng Date: Tue, 27 Mar 2018 19:02:06 +0200 Subject: [PATCH 2/4] tools: add helper script for xcompile with cmake --- dist/tools/cmake/generate-xcompile-toolchain.sh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100755 dist/tools/cmake/generate-xcompile-toolchain.sh diff --git a/dist/tools/cmake/generate-xcompile-toolchain.sh b/dist/tools/cmake/generate-xcompile-toolchain.sh new file mode 100755 index 0000000000..55f4af8c45 --- /dev/null +++ b/dist/tools/cmake/generate-xcompile-toolchain.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env sh +echo "SET(CMAKE_SYSTEM_NAME Generic)" +echo "SET(CMAKE_SYSTEM_VERSION 1)" +# specify the cross compiler" +echo "SET(CMAKE_C_COMPILER \"${CC}\" CACHE STRING \"\")" +echo "SET(CMAKE_CXX_COMPILER \"${CXX}\" CACHE STRING \"\")" +echo "SET(CMAKE_LINKER \"${LINK}\" CACHE STRING \"\")" +echo "SET(CMAKE_RANLIB \"${RANLIB}\" CACHE STRING \"\")" +# disable linker test +echo "SET(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)" +echo "SET(CMAKE_C_FLAGS \"${CFLAGS}\" CACHE STRING \"\")" +echo "SET(CMAKE_EXE_LINKER_FLAGS \"${LFLAGS}\" CACHE STRING \"\")" +# search for programs in the build host directories +echo "SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)" +# for libraries and headers in the target directories +echo "SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)" +echo "SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)" From 3ad07c6a9d0d71d4acde664c2d04e6c5eb08a77f Mon Sep 17 00:00:00 2001 From: smlng Date: Tue, 27 Mar 2018 19:03:27 +0200 Subject: [PATCH 3/4] pkg/ccn-lite: fix xcompile with cmake on macOS --- pkg/ccn-lite/Makefile | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/pkg/ccn-lite/Makefile b/pkg/ccn-lite/Makefile index 5de11aeee2..27e6d73d4b 100644 --- a/pkg/ccn-lite/Makefile +++ b/pkg/ccn-lite/Makefile @@ -7,8 +7,18 @@ PKG_LICENSE=ISC export RIOT_CFLAGS = $(CFLAGS) $(INCLUDES) -all: git-download - cd $(PKG_BUILDDIR)/src && cmake -DCCNL_RIOT=1 -DRIOT_CFLAGS="$(RIOT_CFLAGS)" -DBUILD_TESTING=OFF . && make - cp $(PKG_BUILDDIR)/src/lib/libccnl-riot.a $(BINDIR)/ccn-lite.a +TOOLCHAIN_FILE=$(PKG_BUILDDIR)/xcompile-toolchain.cmake + +all: $(PKG_BUILDDIR)/src/Makefile + $(MAKE) -C $(PKG_BUILDDIR)/src && \ + cp $(PKG_BUILDDIR)/src/lib/libccnl-riot.a ${BINDIR}/ccn-lite.a + +$(PKG_BUILDDIR)/src/Makefile: $(TOOLCHAIN_FILE) + cd $(PKG_BUILDDIR)/src && \ + cmake -DCMAKE_TOOLCHAIN_FILE=$(TOOLCHAIN_FILE) \ + -DCCNL_RIOT=1 -DRIOT_CFLAGS="${RIOT_CFLAGS}" -DBUILD_TESTING=OFF . + +$(TOOLCHAIN_FILE): git-download + $(RIOTBASE)/dist/tools/cmake/generate-xcompile-toolchain.sh > $(TOOLCHAIN_FILE) include $(RIOTBASE)/pkg/pkg.mk From 0e26cf849dd77a0fd7b30a8c726e19a11859f80a Mon Sep 17 00:00:00 2001 From: smlng Date: Tue, 27 Mar 2018 19:03:51 +0200 Subject: [PATCH 4/4] pkg/relic: adapt cmake xcompile on macOS --- pkg/relic/Makefile | 20 +++++++++++------- pkg/relic/generate-cmake-xcompile.perl | 29 -------------------------- 2 files changed, 13 insertions(+), 36 deletions(-) delete mode 100755 pkg/relic/generate-cmake-xcompile.perl diff --git a/pkg/relic/Makefile b/pkg/relic/Makefile index 78906b187c..30a185ddd6 100644 --- a/pkg/relic/Makefile +++ b/pkg/relic/Makefile @@ -5,17 +5,22 @@ PKG_LICENSE=LGPL-2.1 .PHONY: all +CFLAGS += -Wno-gnu-zero-variadic-macro-arguments -Wno-unused-function -Wno-newline-eof + +TOOLCHAIN_FILE=$(PKG_BUILDDIR)/xcompile-toolchain.cmake + all: $(PKG_BUILDDIR)/Makefile - "$(MAKE)" -C $(PKG_BUILDDIR) && \ + $(MAKE) -C $(PKG_BUILDDIR) && \ cp $(PKG_BUILDDIR)/lib/librelic_s.a $(BINDIR)/$(PKG_NAME).a -$(PKG_BUILDDIR)/comp-options.cmake: fix_source - cd "$(PKG_BUILDDIR)" && perl $(PKG_DIR)/generate-cmake-xcompile.perl > comp-options.cmake +$(PKG_BUILDDIR)/Makefile: $(TOOLCHAIN_FILE) + cd $(PKG_BUILDDIR) && \ + COMP="$(filter-out -Werror=old-style-definition -Werror=strict-prototypes, $(CFLAGS) ) " \ + cmake -DCMAKE_TOOLCHAIN_FILE=$(TOOLCHAIN_FILE) \ + -DCHECK=off -DTESTS=0 -DBENCH=0 -DSHLIB=off -Wno-dev $(RELIC_CONFIG_FLAGS) . -$(PKG_BUILDDIR)/Makefile: $(PKG_BUILDDIR)/comp-options.cmake - cd "$(PKG_BUILDDIR)" && COMP="$(filter-out -Werror=old-style-definition -Werror=strict-prototypes, $(CFLAGS) ) " cmake -DCMAKE_TOOLCHAIN_FILE=comp-options.cmake -DCHECK=off -DTESTS=0 -DBENCH=0 -DSHLIB=off -Wno-dev $(RELIC_CONFIG_FLAGS) . - -CFLAGS += -Wno-gnu-zero-variadic-macro-arguments -Wno-unused-function -Wno-newline-eof +$(TOOLCHAIN_FILE): fix_source + $(RIOTBASE)/dist/tools/cmake/generate-xcompile-toolchain.sh > $(TOOLCHAIN_FILE) fix_source: git-download ./fix-util_print_wo_args.sh $(PKG_BUILDDIR) @@ -23,4 +28,5 @@ fix_source: git-download clean:: @rm -rf $(BINDIR)/$(PKG_NAME).a + include $(RIOTBASE)/pkg/pkg.mk diff --git a/pkg/relic/generate-cmake-xcompile.perl b/pkg/relic/generate-cmake-xcompile.perl deleted file mode 100755 index 34bc106ee6..0000000000 --- a/pkg/relic/generate-cmake-xcompile.perl +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env perl -print "INCLUDE(CMakeForceCompiler)\n"; -print "\n"; -print "\n"; -print "SET(CMAKE_SYSTEM_NAME Generic)\n"; -print "SET(CMAKE_SYSTEM_VERSION 1)\n"; -print "\n"; -print "SET(CMAKE_C_COMPILER \"$ENV{CC}\" CACHE STRING \"\")\n"; -print "SET(CMAKE_CXX_COMPILER \"$ENV{CXX}\" CACHE STRING \"\")\n"; -print "SET(CMAKE_RANLIB \"echo\" CACHE STRING \"\")\n"; - -print "\n"; -print "# specify the cross compiler\n"; -print "CMAKE_FORCE_C_COMPILER(\${CMAKE_C_COMPILER} GNU)\n"; -print "CMAKE_FORCE_CXX_COMPILER(\${CMAKE_CXX_COMPILER} GNU)\n"; -print "SET(CMAKE_LINKER \"$ENV{LINK}\" CACHE STRING \"\")\n"; -print "\n"; -my $esc_c_flags = "$ENV{CFLAGS}"; -$esc_c_flags =~ s/"/\\"/g; -print "SET(CMAKE_C_FLAGS \"$esc_c_flags\" CACHE STRING \"\")\n"; -print "\n"; -print "SET(CMAKE_EXE_LINKER_FLAGS \"$ENV{LINKFLAGS}\" CACHE STRING \"\")\n"; - -print "\n"; -print "# search for programs in the build host directories\n"; -print "SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)\n"; -print "# for libraries and headers in the target directories\n"; -print "SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)\n"; -print "SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)\n";