Merge pull request #14286 from aabadie/pr/pkg/cmake_build_source_dir
pkg: tools: ensure cmake based packages/tools are built out-of-source
This commit is contained in:
commit
b4e268423e
9
dist/tools/flatc/Makefile
vendored
9
dist/tools/flatc/Makefile
vendored
@ -5,6 +5,9 @@ PKG_LICENSE=Apache2.0
|
||||
|
||||
PKG_BUILDDIR=$(CURDIR)/bin
|
||||
|
||||
FLATC_SOURCE_DIR = $(PKG_BUILDDIR)
|
||||
FLATC_BUILD_DIR = $(PKG_BUILDDIR)/build
|
||||
|
||||
# manually set some RIOT env vars, so this Makefile can be called stand-alone
|
||||
RIOTBASE ?= $(CURDIR)/../../..
|
||||
RIOTTOOLS ?= $(CURDIR)/..
|
||||
@ -24,9 +27,9 @@ endif
|
||||
include $(RIOTBASE)/pkg/pkg.mk
|
||||
|
||||
all:
|
||||
@cd "$(PKG_BUILDDIR)" && env -i PATH="$(PATH)" cmake -G "Unix Makefiles" $(CMAKE_OPTIONS) .
|
||||
"$(MAKE)" -C "$(PKG_BUILDDIR)"
|
||||
@mv "$(PKG_BUILDDIR)"/flatc $(CURDIR)/flatc
|
||||
@env -i PATH="$(PATH)" cmake -G "Unix Makefiles" $(CMAKE_OPTIONS) -H"$(FLATC_SOURCE_DIR)" -B"$(FLATC_BUILD_DIR)"
|
||||
"$(MAKE)" -C "$(FLATC_BUILD_DIR)"
|
||||
@mv "$(FLATC_BUILD_DIR)"/flatc $(CURDIR)/flatc
|
||||
|
||||
distclean::
|
||||
@rm -f $(CURDIR)/flatc
|
||||
|
||||
@ -7,6 +7,9 @@ include $(RIOTBASE)/pkg/pkg.mk
|
||||
|
||||
.PHONY: ..cmake_version_supported
|
||||
|
||||
CCNLITE_SOURCE_DIR = $(PKG_BUILDDIR)
|
||||
CCNLITE_BUILD_DIR = $(PKG_BUILDDIR)/build
|
||||
|
||||
CMAKE_MINIMAL_VERSION = 3.6.0
|
||||
|
||||
RIOT_CFLAGS = $(INCLUDES)
|
||||
@ -15,18 +18,18 @@ ifeq (llvm,$(TOOLCHAIN))
|
||||
RIOT_CFLAGS += -Wno-char-subscripts
|
||||
endif
|
||||
|
||||
TOOLCHAIN_FILE = $(PKG_BUILDDIR)/xcompile-toolchain.cmake
|
||||
TOOLCHAIN_FILE = $(CCNLITE_SOURCE_DIR)/xcompile-toolchain.cmake
|
||||
|
||||
all: $(BINDIR)/ccn-lite.a
|
||||
|
||||
$(BINDIR)/ccn-lite.a: $(PKG_BUILDDIR)/bin/lib/libccnl-riot.a
|
||||
$(BINDIR)/ccn-lite.a: $(CCNLITE_BUILD_DIR)/lib/libccnl-riot.a
|
||||
cp $< $@
|
||||
|
||||
$(PKG_BUILDDIR)/bin/lib/libccnl-riot.a: $(PKG_BUILDDIR)/bin/Makefile
|
||||
$(MAKE) -C $(PKG_BUILDDIR)/bin
|
||||
$(CCNLITE_BUILD_DIR)/lib/libccnl-riot.a: $(CCNLITE_BUILD_DIR)/Makefile
|
||||
$(MAKE) -C $(CCNLITE_BUILD_DIR)
|
||||
|
||||
$(PKG_BUILDDIR)/bin/Makefile: $(PKG_PREPARED) $(TOOLCHAIN_FILE) | ..cmake_version_supported
|
||||
cmake -B$(PKG_BUILDDIR)/bin -H$(PKG_BUILDDIR)/src \
|
||||
$(CCNLITE_BUILD_DIR)/Makefile: $(PKG_PREPARED) $(TOOLCHAIN_FILE) | ..cmake_version_supported
|
||||
cmake -B$(CCNLITE_BUILD_DIR) -H$(CCNLITE_SOURCE_DIR)/src \
|
||||
-DCMAKE_TOOLCHAIN_FILE=$(TOOLCHAIN_FILE) \
|
||||
-DCCNL_RIOT=1 -DRIOT_CFLAGS="$(RIOT_CFLAGS)" -DBUILD_TESTING=OFF
|
||||
|
||||
|
||||
@ -5,12 +5,61 @@ PKG_LICENSE=Apache-2.0
|
||||
|
||||
include $(RIOTBASE)/pkg/pkg.mk
|
||||
|
||||
JERRYSCRIPT_BUILD_DIR ?= $(PKG_BUILDDIR)/build
|
||||
JERRYSCRIPT_SOURCE_DIR ?= $(PKG_BUILDDIR)
|
||||
|
||||
CFLAGS += -Wno-implicit-fallthrough
|
||||
|
||||
JERRYHEAP ?= 16
|
||||
|
||||
EXT_CFLAGS := -D__TARGET_RIOT
|
||||
|
||||
# disable warnings when compiling with LLVM for board native
|
||||
ifeq ($(TOOLCHAIN)_$(BOARD),llvm_native)
|
||||
CFLAGS += -Wno-macro-redefined -Wno-gnu-folding-constant
|
||||
EXT_CFLAGS += -Wno-conversion
|
||||
else ifeq ($(OS)_$(BOARD),FreeBSD_native)
|
||||
EXT_CFLAGS += -Wno-conversion
|
||||
else ifeq (esp32,$(CPU))
|
||||
# The esp32 C newlib version 2.2.0 has errors when compiling with warnings
|
||||
# that are enabled by jerryscript build system so disable them for this cpu:
|
||||
# * -Wundef: stdio.h: `__GNU_VISIBLE` and `__BSD_VISIBLE` are not defined
|
||||
EXT_CFLAGS += -Wno-undef -Wno-error=undef
|
||||
else ifeq (esp8266,$(CPU))
|
||||
# The esp8266 C newlib version 3.0.0 has errors when compiling with warnings
|
||||
# that are enabled by jerryscript build system so disable them for this cpu:
|
||||
# * -Wundef
|
||||
# * -Wconversion
|
||||
# * -Wsign-conversion
|
||||
EXT_CFLAGS += -Wno-undef -Wno-error=undef
|
||||
EXT_CFLAGS += -Wno-conversion -Wno-error=conversion
|
||||
EXT_CFLAGS += -Wno-sign-conversion -Wno-error=sign-conversion
|
||||
endif
|
||||
|
||||
all:
|
||||
"$(MAKE)" -C $(PKG_BUILDDIR) -f $(CURDIR)/Makefile.jerryscript all
|
||||
.PHONY: libjerry
|
||||
|
||||
all: libjerry
|
||||
|
||||
libjerry: $(JERRYSCRIPT_BUILD_DIR)/Makefile
|
||||
"$(MAKE)" -C $(JERRYSCRIPT_BUILD_DIR) jerry-core jerry-ext jerry-port-default-minimal
|
||||
@cp $(JERRYSCRIPT_BUILD_DIR)/lib/libjerry-core.a $(BINDIR)/jerryscript.a
|
||||
@cp $(JERRYSCRIPT_BUILD_DIR)/lib/libjerry-ext.a $(BINDIR)/jerryscript-ext.a
|
||||
@cp $(JERRYSCRIPT_BUILD_DIR)/lib/libjerry-port-default-minimal.a $(BINDIR)/jerryport-minimal.a
|
||||
|
||||
$(JERRYSCRIPT_BUILD_DIR)/Makefile:
|
||||
cmake -B$(JERRYSCRIPT_BUILD_DIR) -H$(JERRYSCRIPT_SOURCE_DIR) \
|
||||
-DCMAKE_SYSTEM_NAME=RIOT \
|
||||
-DCMAKE_SYSTEM_PROCESSOR="$(MCPU)" \
|
||||
-DCMAKE_C_COMPILER=$(CC) \
|
||||
-DCMAKE_C_COMPILER_WORKS=TRUE \
|
||||
-DENABLE_LTO=OFF \
|
||||
-DFEATURE_VALGRIND=OFF \
|
||||
-DENABLE_ALL_IN_ONE=OFF \
|
||||
-DJERRY_LIBM=OFF \
|
||||
-DJERRY_CMDLINE=OFF \
|
||||
-DHAVE_TIME_H=0 \
|
||||
-DEXTERNAL_COMPILE_FLAGS="$(INCLUDES) $(EXT_CFLAGS)" \
|
||||
-DMEM_HEAP_SIZE_KB=$(JERRYHEAP)
|
||||
|
||||
clean::
|
||||
@rm -rf $(JERRYSCRIPT_BUILD_DIR)
|
||||
|
||||
@ -1,50 +0,0 @@
|
||||
JERRYSCRIPT_BUILD_DIR ?= $(BINDIR)/jerryscript
|
||||
|
||||
JERRYHEAP ?= 16
|
||||
|
||||
EXT_CFLAGS :=-D__TARGET_RIOT
|
||||
|
||||
ifeq ($(TOOLCHAIN)_$(BOARD),llvm_native)
|
||||
EXT_CFLAGS :=-D__TARGET_RIOT -Wno-conversion
|
||||
else ifeq ($(OS)_$(BOARD),FreeBSD_native)
|
||||
EXT_CFLAGS += -Wno-conversion
|
||||
else ifeq (esp32,$(CPU))
|
||||
# The esp32 C newlib version 2.2.0 has errors when compiling with warnings
|
||||
# that are enabled by jerryscript build system so disable them for this cpu:
|
||||
# * -Wundef: stdio.h: `__GNU_VISIBLE` and `__BSD_VISIBLE` are not defined
|
||||
EXT_CFLAGS += -Wno-undef -Wno-error=undef
|
||||
else ifeq (esp8266,$(CPU))
|
||||
# The esp8266 C newlib version 3.0.0 has errors when compiling with warnings
|
||||
# that are enabled by jerryscript build system so disable them for this cpu:
|
||||
# * -Wundef
|
||||
# * -Wconversion
|
||||
# * -Wsign-conversion
|
||||
EXT_CFLAGS += -Wno-undef -Wno-error=undef
|
||||
EXT_CFLAGS += -Wno-conversion -Wno-error=conversion
|
||||
EXT_CFLAGS += -Wno-sign-conversion -Wno-error=sign-conversion
|
||||
endif
|
||||
|
||||
.PHONY: all libjerry
|
||||
|
||||
all: libjerry
|
||||
|
||||
libjerry:
|
||||
cmake -B$(JERRYSCRIPT_BUILD_DIR) -H./ \
|
||||
-DCMAKE_SYSTEM_NAME=RIOT \
|
||||
-DCMAKE_SYSTEM_PROCESSOR="$(MCPU)" \
|
||||
-DCMAKE_C_COMPILER=$(CC) \
|
||||
-DCMAKE_C_COMPILER_WORKS=TRUE \
|
||||
-DENABLE_LTO=OFF \
|
||||
-DFEATURE_VALGRIND=OFF \
|
||||
-DENABLE_ALL_IN_ONE=OFF \
|
||||
-DJERRY_LIBC=OFF \
|
||||
-DJERRY_LIBM=OFF \
|
||||
-DJERRY_CMDLINE=OFF \
|
||||
-DHAVE_TIME_H=0 \
|
||||
-DEXTERNAL_COMPILE_FLAGS="$(INCLUDES) $(EXT_CFLAGS)" \
|
||||
-DMEM_HEAP_SIZE_KB=$(JERRYHEAP)
|
||||
|
||||
"$(MAKE)" -C $(JERRYSCRIPT_BUILD_DIR) jerry-core jerry-ext jerry-port-default-minimal
|
||||
cp $(JERRYSCRIPT_BUILD_DIR)/lib/libjerry-core.a $(BINDIR)/jerryscript.a
|
||||
cp $(JERRYSCRIPT_BUILD_DIR)/lib/libjerry-ext.a $(BINDIR)/jerryscript-ext.a
|
||||
cp $(JERRYSCRIPT_BUILD_DIR)/lib/libjerry-port-default-minimal.a $(BINDIR)/jerryport-minimal.a
|
||||
@ -51,6 +51,9 @@ PKG_PREPARED = $(PKG_STATE)-prepared
|
||||
PKG_PATCHED = $(PKG_STATE)-patched
|
||||
PKG_DOWNLOADED = $(PKG_STATE)-downloaded
|
||||
|
||||
# Custom prepared target that can be defined in packages Makefile.
|
||||
PKG_CUSTOM_PREPARED ?=
|
||||
|
||||
# Declare 'all' first to have it being the default target
|
||||
all: prepare
|
||||
|
||||
@ -95,7 +98,7 @@ $(PKG_DOWNLOADED): $(MAKEFILE_LIST) | $(PKG_BUILDDIR)/.git
|
||||
$(Q)$(GIT_IN_PKG) fetch $(GIT_QUIET) $(PKG_URL) $(PKG_VERSION)
|
||||
echo $(PKG_VERSION) > $@
|
||||
|
||||
$(PKG_BUILDDIR)/.git:
|
||||
$(PKG_BUILDDIR)/.git: | $(PKG_CUSTOM_PREPARED)
|
||||
$(info [INFO] cloning $(PKG_NAME))
|
||||
$(Q)rm -Rf $(PKG_BUILDDIR)
|
||||
$(Q)mkdir -p $(PKG_BUILDDIR)
|
||||
|
||||
@ -3,30 +3,39 @@ PKG_URL=https://github.com/relic-toolkit/relic.git
|
||||
PKG_VERSION=0b0442a8218df8d309266923f2dd5b9ae3b318ce
|
||||
PKG_LICENSE=LGPL-2.1
|
||||
|
||||
PKG_CUSTOM_PREPARED = $(PKGDIRBASE)/$(PKG_NAME)/build/include
|
||||
|
||||
include $(RIOTBASE)/pkg/pkg.mk
|
||||
|
||||
.PHONY: ..cmake_version_supported
|
||||
|
||||
RELIC_BUILD_DIR = $(PKG_BUILDDIR)/build
|
||||
RELIC_SOURCE_DIR = $(PKG_BUILDDIR)
|
||||
|
||||
CMAKE_MINIMAL_VERSION = 3.6.0
|
||||
|
||||
CFLAGS += -Wno-gnu-zero-variadic-macro-arguments -Wno-unused-function -Wno-newline-eof
|
||||
|
||||
TOOLCHAIN_FILE = $(PKG_BUILDDIR)/xcompile-toolchain.cmake
|
||||
TOOLCHAIN_FILE = $(RELIC_SOURCE_DIR)/xcompile-toolchain.cmake
|
||||
|
||||
all: $(BINDIR)/$(PKG_NAME).a
|
||||
|
||||
$(BINDIR)/$(PKG_NAME).a: $(PKG_BUILDDIR)/lib/librelic_s.a
|
||||
$(PKG_CUSTOM_PREPARED):
|
||||
$(info [INFO] Relic: create include directory in build)
|
||||
mkdir -p $(PKG_CUSTOM_PREPARED)
|
||||
|
||||
$(BINDIR)/$(PKG_NAME).a: $(RELIC_BUILD_DIR)/lib/librelic_s.a
|
||||
cp $< $@
|
||||
|
||||
$(PKG_BUILDDIR)/lib/librelic_s.a: $(PKG_BUILDDIR)/Makefile
|
||||
$(MAKE) -C $(PKG_BUILDDIR)
|
||||
$(RELIC_BUILD_DIR)/lib/librelic_s.a: $(RELIC_BUILD_DIR)/Makefile
|
||||
$(MAKE) -C $(RELIC_BUILD_DIR)
|
||||
|
||||
# Pass 'COMP' with a target specific export to not have issues with the shell
|
||||
# escaping evaluation.
|
||||
COMP = $(filter-out -Werror -Werror=old-style-definition -Werror=strict-prototypes -std=gnu99,$(CFLAGS))
|
||||
$(PKG_BUILDDIR)/Makefile: export COMP ?=
|
||||
$(PKG_BUILDDIR)/Makefile: $(PKG_PREPARED) $(TOOLCHAIN_FILE) | ..cmake_version_supported
|
||||
cmake -B$(PKG_BUILDDIR) -H$(PKG_BUILDDIR) \
|
||||
$(RELIC_BUILD_DIR)/Makefile: export COMP ?=
|
||||
$(RELIC_BUILD_DIR)/Makefile: $(PKG_PREPARED) $(TOOLCHAIN_FILE) | ..cmake_version_supported
|
||||
cmake -B$(RELIC_BUILD_DIR) -H$(RELIC_SOURCE_DIR) \
|
||||
-DCMAKE_TOOLCHAIN_FILE=$(TOOLCHAIN_FILE) \
|
||||
-DCHECK=off -DTESTS=0 -DBENCH=0 -DSHLIB=off -Wno-dev $(RELIC_CONFIG_FLAGS)
|
||||
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
INCLUDES += -I$(PKGDIRBASE)/relic/include
|
||||
INCLUDES += -I$(PKGDIRBASE)/relic/build/include
|
||||
|
||||
ifneq (,$(filter cortex-m%,$(CPU_CORE)))
|
||||
# relic package package is not using system includes right now, so
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user