Merge pull request #8509 from smlng/cmake/xcompile
pkg: fix cross compiling with cmake on macOS
This commit is contained in:
commit
b502637f60
17
dist/tools/cmake/generate-xcompile-toolchain.sh
vendored
Executable file
17
dist/tools/cmake/generate-xcompile-toolchain.sh
vendored
Executable file
@ -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)"
|
||||||
@ -3,8 +3,10 @@ export CXX = $(PREFIX)g++
|
|||||||
export CCAS ?= $(CC)
|
export CCAS ?= $(CC)
|
||||||
ifeq ($(LTO),1)
|
ifeq ($(LTO),1)
|
||||||
export AR = $(PREFIX)gcc-ar
|
export AR = $(PREFIX)gcc-ar
|
||||||
|
export RANLIB = $(PREFIX)gcc-ranlib
|
||||||
else
|
else
|
||||||
export AR = $(PREFIX)ar
|
export AR = $(PREFIX)ar
|
||||||
|
export RANLIB = $(PREFIX)ranlib
|
||||||
endif
|
endif
|
||||||
export AS = $(PREFIX)as
|
export AS = $(PREFIX)as
|
||||||
export LINK = $(PREFIX)gcc
|
export LINK = $(PREFIX)gcc
|
||||||
|
|||||||
@ -7,8 +7,18 @@ PKG_LICENSE=ISC
|
|||||||
|
|
||||||
export RIOT_CFLAGS = $(CFLAGS) $(INCLUDES)
|
export RIOT_CFLAGS = $(CFLAGS) $(INCLUDES)
|
||||||
|
|
||||||
all: git-download
|
TOOLCHAIN_FILE=$(PKG_BUILDDIR)/xcompile-toolchain.cmake
|
||||||
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
|
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
|
include $(RIOTBASE)/pkg/pkg.mk
|
||||||
|
|||||||
@ -5,17 +5,22 @@ PKG_LICENSE=LGPL-2.1
|
|||||||
|
|
||||||
.PHONY: all
|
.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
|
all: $(PKG_BUILDDIR)/Makefile
|
||||||
"$(MAKE)" -C $(PKG_BUILDDIR) && \
|
$(MAKE) -C $(PKG_BUILDDIR) && \
|
||||||
cp $(PKG_BUILDDIR)/lib/librelic_s.a $(BINDIR)/$(PKG_NAME).a
|
cp $(PKG_BUILDDIR)/lib/librelic_s.a $(BINDIR)/$(PKG_NAME).a
|
||||||
|
|
||||||
$(PKG_BUILDDIR)/comp-options.cmake: fix_source
|
$(PKG_BUILDDIR)/Makefile: $(TOOLCHAIN_FILE)
|
||||||
cd "$(PKG_BUILDDIR)" && perl $(PKG_DIR)/generate-cmake-xcompile.perl > comp-options.cmake
|
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
|
$(TOOLCHAIN_FILE): fix_source
|
||||||
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) .
|
$(RIOTBASE)/dist/tools/cmake/generate-xcompile-toolchain.sh > $(TOOLCHAIN_FILE)
|
||||||
|
|
||||||
CFLAGS += -Wno-gnu-zero-variadic-macro-arguments -Wno-unused-function -Wno-newline-eof
|
|
||||||
|
|
||||||
fix_source: git-download
|
fix_source: git-download
|
||||||
./fix-util_print_wo_args.sh $(PKG_BUILDDIR)
|
./fix-util_print_wo_args.sh $(PKG_BUILDDIR)
|
||||||
@ -23,4 +28,5 @@ fix_source: git-download
|
|||||||
|
|
||||||
clean::
|
clean::
|
||||||
@rm -rf $(BINDIR)/$(PKG_NAME).a
|
@rm -rf $(BINDIR)/$(PKG_NAME).a
|
||||||
|
|
||||||
include $(RIOTBASE)/pkg/pkg.mk
|
include $(RIOTBASE)/pkg/pkg.mk
|
||||||
|
|||||||
@ -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";
|
|
||||||
Loading…
x
Reference in New Issue
Block a user