You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
3.4 KiB
135 lines
3.4 KiB
|
|
# Enforce the presence of the GIT repository |
|
# |
|
# We depend on our submodules, so we have to prevent attempts to |
|
# compile without it being present. |
|
ifeq ($(wildcard .git),) |
|
$(error YOU HAVE TO USE GIT TO DOWNLOAD THIS REPOSITORY. ABORTING.) |
|
endif |
|
|
|
|
|
# explicity set default build target |
|
all: linux |
|
|
|
# Parsing |
|
# -------------------------------------------------------------------- |
|
# assume 1st argument passed is the main target, the |
|
# rest are arguments to pass to the makefile generated |
|
# by cmake in the subdirectory |
|
FIRST_ARG := $(firstword $(MAKECMDGOALS)) |
|
ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)) |
|
j ?= 4 |
|
|
|
NINJA_BIN := ninja |
|
ifndef NO_NINJA_BUILD |
|
NINJA_BUILD := $(shell $(NINJA_BIN) --version 2>/dev/null) |
|
|
|
ifndef NINJA_BUILD |
|
NINJA_BIN := ninja-build |
|
NINJA_BUILD := $(shell $(NINJA_BIN) --version 2>/dev/null) |
|
endif |
|
endif |
|
|
|
ifdef NINJA_BUILD |
|
PX4_CMAKE_GENERATOR := Ninja |
|
PX4_MAKE := $(NINJA_BIN) |
|
|
|
ifdef VERBOSE |
|
PX4_MAKE_ARGS := -v |
|
else |
|
PX4_MAKE_ARGS := |
|
endif |
|
else |
|
ifdef SYSTEMROOT |
|
# Windows |
|
PX4_CMAKE_GENERATOR := "MSYS\ Makefiles" |
|
else |
|
PX4_CMAKE_GENERATOR := "Unix\ Makefiles" |
|
endif |
|
PX4_MAKE = $(MAKE) |
|
PX4_MAKE_ARGS = -j$(j) --no-print-directory |
|
endif |
|
|
|
CMAKE_BUILD_TYPE ?= RelWithDebInfo |
|
|
|
SRC_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) |
|
|
|
# Functions |
|
# -------------------------------------------------------------------- |
|
# describe how to build a cmake config |
|
define cmake-build |
|
+@$(eval BUILD_DIR = $(SRC_DIR)/build/$@$(BUILD_DIR_SUFFIX)) |
|
+@if [ $(PX4_CMAKE_GENERATOR) = "Ninja" ] && [ -e $(BUILD_DIR)/Makefile ]; then rm -rf $(BUILD_DIR); fi |
|
+@if [ ! -e $(BUILD_DIR)/CMakeCache.txt ]; then mkdir -p $(BUILD_DIR) && cd $(BUILD_DIR) && cmake $(2) -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -G"$(PX4_CMAKE_GENERATOR)" -DQT_MKSPEC=$(1) || (rm -rf $(BUILD_DIR)); fi |
|
+@(cd $(BUILD_DIR) && $(PX4_MAKE) $(PX4_MAKE_ARGS) $(ARGS)) |
|
endef |
|
|
|
|
|
# Qt mkspec |
|
# android_armv7 android_x86 gcc_64 |
|
|
|
gcc_64: |
|
$(call cmake-build,$@,$(SRC_DIR)) |
|
|
|
android_armv7: |
|
$(call cmake-build,$@,$(SRC_DIR)) |
|
|
|
android_x86: |
|
$(call cmake-build,$@,$(SRC_DIR)) |
|
|
|
clang_64: |
|
$(call cmake-build,$@,$(SRC_DIR)) |
|
|
|
xcode: |
|
@mkdir -p build/xcode; cd build/xcode; cmake -GXcode -DCMAKE_BUILD_TYPE=RelWithDebInfo $(SRC_DIR) |
|
|
|
linux: gcc_64 |
|
|
|
android: android_armv7 |
|
|
|
mac: clang_64 |
|
|
|
|
|
# Astyle |
|
# -------------------------------------------------------------------- |
|
.PHONY: check_format format |
|
|
|
check_format: |
|
$(call colorecho,"Checking formatting with astyle") |
|
@$(SRC_DIR)/Tools/astyle/check_code_style_all.sh |
|
@cd $(SRC_DIR) && git diff --check |
|
|
|
format: |
|
$(call colorecho,"Formatting with astyle") |
|
@$(SRC_DIR)/Tools/astyle/check_code_style_all.sh --fix |
|
|
|
# Testing |
|
# -------------------------------------------------------------------- |
|
.PHONY: tests tests_coverage |
|
|
|
tests: |
|
|
|
tests_coverage: |
|
|
|
# Cleanup |
|
# -------------------------------------------------------------------- |
|
.PHONY: clean submodulesclean submodulesupdate distclean |
|
|
|
clean: |
|
@rm -rf $(SRC_DIR)/build |
|
|
|
submodulesclean: |
|
@git submodule foreach --quiet --recursive git clean -ff -x -d |
|
@git submodule update --quiet --init --recursive --force || true |
|
@git submodule sync --recursive |
|
@git submodule update --init --recursive --force |
|
|
|
submodulesupdate: |
|
@git submodule update --quiet --init --recursive || true |
|
@git submodule sync --recursive |
|
@git submodule update --init --recursive |
|
|
|
distclean: |
|
@git submodule deinit -f . |
|
@git clean -ff -x -d -e ".project" -e ".cproject" -e ".idea" -e ".settings" -e ".vscode" |
|
|
|
|