[build] Inline main.mk linux and qt targets into Makefile

This commit is contained in:
John Firebaugh
2016-05-23 19:25:50 -07:00
parent b611a6f5dc
commit d5840beb47
2 changed files with 65 additions and 107 deletions

114
Makefile
View File

@@ -198,80 +198,96 @@ test-node: node
#### Qt targets #####################################################
.PHONY: qt-lib
qt-lib:
$(RUN) PLATFORM=qt Makefile/qt-lib
QT_OUTPUT_PATH = build/qt-$(HOST_PLATFORM)-$(shell uname -m)
QT_MAKEFILE = $(QT_OUTPUT_PATH)/Makefile
.PHONY: qt-app
qt-app:
$(RUN) PLATFORM=qt Makefile/qt-app
# Cross compilation support
QT_ENV = $(shell MASON_PLATFORM_VERSION=$(shell uname -m) ./platform/qt/scripts/toolchain.sh)
$(QT_OUTPUT_PATH)/config.gypi: platform/qt/scripts/configure.sh .mason configure
$(QT_ENV) ./configure $< $@ linux $(shell uname -m)
$(QT_MAKEFILE): $(QT_OUTPUT_PATH)/config.gypi
$(QT_ENV) deps/run_gyp platform/qt/platform.gyp -I$< -Dcoverage=$(ENABLE_COVERAGE) \
-Goutput_dir=. --depth=. --generator-output=$(QT_OUTPUT_PATH) -f make
qt-lib: $(QT_MAKEFILE)
$(QT_ENV) $(MAKE) -j$(JOBS) -C $(QT_OUTPUT_PATH) qt-lib
qt-app: $(QT_MAKEFILE)
$(QT_ENV) $(MAKE) -j$(JOBS) -C $(QT_OUTPUT_PATH) qt-app
qt-qml-app: $(QT_MAKEFILE)
$(QT_ENV) $(MAKE) -j$(JOBS) -C $(QT_OUTPUT_PATH) qt-qml-app
test-qt: $(QT_MAKEFILE) node_modules/express
$(QT_ENV) $(MAKE) -j$(JOBS) -C $(QT_OUTPUT_PATH) test
$(GDB) $(QT_OUTPUT_PATH)/$(BUILDTYPE)/test --gtest_catch_exceptions=0 --gtest_filter=*
.PHONY: run-qt-app
run-qt-app: qt-app
$(RUN) PLATFORM=qt run-qt-app
cd $(QT_OUTPUT_PATH)/$(BUILDTYPE) && ./qmapboxgl
.PHONY: qt-qml-app
qt-qml-app:
$(RUN) PLATFORM=qt Makefile/qt-qml-app
.PHONY: run-qt-qml-app
run-qt-qml-app: qt-qml-app
$(RUN) PLATFORM=qt run-qt-qml-app
cd $(QT_OUTPUT_PATH)/$(BUILDTYPE) && ./qquickmapboxgl
.PHONY: test-qt
test-qt: node_modules/express
$(RUN) PLATFORM=qt test-*
#### Linux targets #####################################################
#### Miscellaneous targets #####################################################
LINUX_OUTPUT_PATH = build/linux-$(shell uname -m)
LINUX_MAKEFILE = $(LINUX_OUTPUT_PATH)/Makefile
$(LINUX_OUTPUT_PATH)/config.gypi: platform/linux/scripts/configure.sh .mason configure
./configure $< $@ linux $(shell uname -m)
$(LINUX_MAKEFILE): $(LINUX_OUTPUT_PATH)/config.gypi
deps/run_gyp platform/linux/platform.gyp -I$< -Dcoverage=$(ENABLE_COVERAGE) \
-Goutput_dir=. --depth=. --generator-output=$(LINUX_OUTPUT_PATH) -f make
.PHONY: linux
linux: glfw-app render offline
.PHONY: test-linux
test-linux: test-*
.PHONY: glfw-app
glfw-app:
$(RUN) Makefile/glfw-app
render: $(LINUX_MAKEFILE)
$(MAKE) -j$(JOBS) -C $(LINUX_OUTPUT_PATH) mbgl-render
offline: $(LINUX_MAKEFILE)
$(MAKE) -j$(JOBS) -C $(LINUX_OUTPUT_PATH) mbgl-offline
glfw-app: $(LINUX_MAKEFILE)
$(MAKE) -j$(JOBS) -C $(LINUX_OUTPUT_PATH) glfw-app
test: $(LINUX_MAKEFILE)
$(MAKE) -j$(JOBS) -C $(LINUX_OUTPUT_PATH) test
.PHONY: run-glfw-app
run-glfw-app: glfw-app
$(RUN) run-glfw-app
cd $(LINUX_OUTPUT_PATH)/$(BUILDTYPE) && ./mapbox-glfw
.PHONY: run-valgrind-glfw-app
run-valgrind-glfw-app: glfw-app
$(RUN) run-valgrind-glfw-app
cd $(LINUX_OUTPUT_PATH)/$(BUILDTYPE) && valgrind --leak-check=full --suppressions=../../../scripts/valgrind.sup ./mapbox-glfw
.PHONY: test
test:
$(RUN) Makefile/test
ifneq (,$(shell which gdb))
GDB = gdb -batch -return-child-result -ex 'set print thread-events off' -ex 'run' -ex 'thread apply all bt' --args
endif
test-%: node_modules/express
$(RUN) test-$*
test-%: node_modules/express test
$(GDB) $(LINUX_OUTPUT_PATH)/$(BUILDTYPE)/test --gtest_catch_exceptions=0 --gtest_filter=$*
node_modules/express:
npm install express@4.11.1
.PHONY: check
check:
$(RUN) BUILDTYPE=Debug ENABLE_COVERAGE=1 check
.PHONY: render
render:
$(RUN) Makefile/mbgl-render
.PHONY: offline
offline:
$(RUN) Makefile/mbgl-offline
check: test
scripts/collect-coverage.sh $(LINUX_OUTPUT_PATH)/$(BUILDTYPE)
# Generates a compilation database with ninja for use in clang tooling
.PHONY: compdb
compdb:
$(RUN) Ninja/compdb
compdb: $(LINUX_OUTPUT_PATH)/config.gypi
deps/run_gyp platform/linux/platform.gyp $(GYP_FLAGS) -f ninja
deps/ninja/ninja-linux -C $(LINUX_OUTPUT_PATH)/$(BUILDTYPE) \
-t compdb cc cc_s cxx objc objcxx > $(LINUX_OUTPUT_PATH)/$(BUILDTYPE)/compile_commands.json
.PHONY: tidy
tidy:
$(RUN) tidy
tidy: compdb
deps/ninja/ninja-linux -C $(LINUX_OUTPUT_PATH)/$(BUILDTYPE) version shaders
scripts/clang-tidy.sh $(LINUX_OUTPUT_PATH)/$(BUILDTYPE)
#### Miscellaneous targets #####################################################
clean:
-find ./deps/gyp -name "*.pyc" -exec rm {} \;

View File

@@ -15,15 +15,6 @@ ifeq ($(PLATFORM),android)
GYP_FLAVOR_SUFFIX = -android
ENV = $(shell MASON_ANDROID_ABI=$(CONFIGURE_SUBPLATFORM) ./platform/android/scripts/toolchain.sh)
else ifeq ($(PLATFORM),qt)
CONFIGURE_PLATFORM = $(HOST_PLATFORM)
CONFIGURE_SUBPLATFORM = $(shell uname -m)
CONFIGURE_INPUT = platform/qt/scripts/configure.sh
PLATFORM_OUTPUT = ./build/qt-$(HOST_PLATFORM)-$(CONFIGURE_SUBPLATFORM)
# Cross compilation support
ENV = $(shell MASON_PLATFORM_VERSION=$(CONFIGURE_SUBPLATFORM) ./platform/qt/scripts/toolchain.sh)
else
CONFIGURE_PLATFORM = $(PLATFORM)
CONFIGURE_SUBPLATFORM = $(shell uname -m)
@@ -70,55 +61,6 @@ Makefile/__project__: $(CONFIGURE_OUTPUT)
@printf "$(TEXT_BOLD)$(COLOR_GREEN)* Recreating project...$(FORMAT_END)\n"
$(ENV) deps/run_gyp platform/$(PLATFORM)/platform.gyp $(GYP_FLAGS) -f make$(GYP_FLAVOR_SUFFIX)
.PHONY: Ninja/__project__
Ninja/__project__: $(CONFIGURE_OUTPUT)
@printf "$(TEXT_BOLD)$(COLOR_GREEN)* Recreating project...$(FORMAT_END)\n"
$(ENV) deps/run_gyp platform/$(PLATFORM)/platform.gyp $(GYP_FLAGS) -f ninja
#### Build individual targets ##################################################
Makefile/%: Makefile/__project__
@printf "$(TEXT_BOLD)$(COLOR_GREEN)* Building target $*...$(FORMAT_END)\n"
$(ENV) $(MAKE) -j$(JOBS) -C $(PLATFORM_OUTPUT) BUILDTYPE=$(BUILDTYPE) $*
Ninja/%: Ninja/__project__
@printf "$(TEXT_BOLD)$(COLOR_GREEN)* Building target $*...$(FORMAT_END)\n"
$(ENV) deps/ninja/ninja-$(PLATFORM) -C $(PLATFORM_OUTPUT)/$(BUILDTYPE) $*
#### Tidy ######################################################################
Ninja/compdb: OUTPUT=$(PLATFORM_OUTPUT)/$(BUILDTYPE)/compile_commands.json
Ninja/compdb: Ninja/__project__
@printf "$(TEXT_BOLD)$(COLOR_GREEN)* Writing to $(OUTPUT)$(FORMAT_END)\n"
$(ENV) deps/ninja/ninja-$(PLATFORM) -C $(PLATFORM_OUTPUT)/$(BUILDTYPE) \
-t compdb cc cc_s cxx objc objcxx > $(OUTPUT)
tidy: Ninja/compdb
@printf "$(TEXT_BOLD)$(COLOR_GREEN)* Generating header files...$(FORMAT_END)\n"
$(ENV) deps/ninja/ninja-$(PLATFORM) -C $(PLATFORM_OUTPUT)/$(BUILDTYPE) version shaders
@printf "$(TEXT_BOLD)$(COLOR_GREEN)* Running tidy...$(FORMAT_END)\n"
@./scripts/clang-tidy.sh $(PLATFORM_OUTPUT)/$(BUILDTYPE)
#### Run tests #################################################################
run-glfw-app:
cd $(PLATFORM_OUTPUT)/$(BUILDTYPE) && ./mapbox-glfw
run-qt-app:
cd $(PLATFORM_OUTPUT)/$(BUILDTYPE) && ./qmapboxgl
run-qt-qml-app:
cd $(PLATFORM_OUTPUT)/$(BUILDTYPE) && ./qquickmapboxgl
run-valgrind-glfw-app:
cd $(PLATFORM_OUTPUT)/$(BUILDTYPE) && valgrind --leak-check=full --suppressions=../../../scripts/valgrind.sup ./mapbox-glfw
ifneq (,$(shell which gdb))
GDB = gdb -batch -return-child-result -ex 'set print thread-events off' -ex 'run' -ex 'thread apply all bt' --args
endif
test-%: Makefile/test
$(GDB) $(PLATFORM_OUTPUT)/$(BUILDTYPE)/test --gtest_catch_exceptions=0 --gtest_filter=$*
check: Makefile/test
./scripts/collect-coverage.sh $(PLATFORM_OUTPUT)/$(BUILDTYPE)