summaryrefslogtreecommitdiff
path: root/scripts/main.mk
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/main.mk')
-rw-r--r--scripts/main.mk198
1 files changed, 79 insertions, 119 deletions
diff --git a/scripts/main.mk b/scripts/main.mk
index d10fa39d52..a0e6a0d67a 100644
--- a/scripts/main.mk
+++ b/scripts/main.mk
@@ -1,31 +1,39 @@
-ifeq (,$(V))
- QUIET = @
+ifeq ($(shell uname -s), Darwin)
+ export PLATFORM ?= osx
+else ifeq ($(shell uname -s), Linux)
+ export PLATFORM ?= linux
endif
-# Determine host platform
-export HOST ?= $(BUILD)
-
-# Defines host defaults
-include platform/$(HOST)/scripts/defaults.mk
-
-export HOST_VERSION ?= $(BUILD_VERSION)
-
-# Optionally include version-specific host defaults
--include scripts/$(HOST)/$(HOST_VERSION)/defaults.mk
--include platform/$(HOST)/scripts/$(HOST_VERSION)/defaults.mk
-
-export MASON_PLATFORM=$(HOST)
-export MASON_PLATFORM_VERSION=$(HOST_VERSION)
-
-export HOST_SLUG = $(HOST)-$(HOST_VERSION)
-CONFIGURE_FILES = platform/$(HOST)/scripts/configure.sh
-ifneq (,$(wildcard scripts/$(HOST)/$(HOST_VERSION)/configure.sh))
- CONFIGURE_FILES += scripts/$(HOST)/$(HOST_VERSION)/configure.sh
+ifeq ($(PLATFORM),android)
+ export SUBPLATFORM ?= arm-v7
+ GYP_FLAVOR_SUFFIX = -android
+ ENV = $(shell MASON_ANDROID_ABI=$(SUBPLATFORM) ./platform/android/scripts/toolchain.sh)
+else ifeq ($(PLATFORM),ios)
+ export SUBPLATFORM = all
+else ifeq ($(PLATFORM),osx)
+ export SUBPLATFORM = x86_64
+else
+ export SUBPLATFORM ?= $(shell uname -m)
endif
-ifneq (,$(wildcard platform/$(HOST)/scripts/$(HOST_VERSION)/configure.sh))
- CONFIGURE_FILES += platform/$(HOST)/scripts/$(HOST_VERSION)/configure.sh
+
+ifneq ($(PLATFORM),node)
+ export MASON_PLATFORM = $(PLATFORM)
+ export MASON_PLATFORM_VERSION = $(SUBPLATFORM)
+ export PLATFORM_SLUG = $(PLATFORM)-$(SUBPLATFORM)
+else ifeq ($(shell uname -s), Darwin)
+ export MASON_PLATFORM = osx
+ export MASON_PLATFORM_VERSION = $(SUBPLATFORM)
+ export PLATFORM_SLUG = node-osx-$(SUBPLATFORM)
+else ifeq ($(shell uname -s), Linux)
+ export MASON_PLATFORM = linux
+ export MASON_PLATFORM_VERSION = $(SUBPLATFORM)
+ export PLATFORM_SLUG = node-linux-$(SUBPLATFORM)
endif
+export PLATFORM_OUTPUT = ./build/$(PLATFORM_SLUG)
+export PLATFORM_CONFIG_INPUT = platform/$(MASON_PLATFORM)/scripts/configure.sh
+export PLATFORM_CONFIG_OUTPUT = $(PLATFORM_OUTPUT)/config.gypi
+
ifneq (,$(findstring clang,$(CXX)))
CXX_HOST = "clang"
else ifneq (,$(findstring g++,$(CXX)))
@@ -39,155 +47,107 @@ COLOR_CYAN = \033[36m
COLOR_PINK = \033[35m
FORMAT_END = \033[0m
-default: ;
+# Never remove intermediate files
+.SECONDARY:
#### Dependencies ##############################################################
ifneq (,$(wildcard .git/.))
-SUBMODULES += .mason/mason.sh
-.mason/mason.sh:
- ./scripts/flock.py .git/Submodule.lock git submodule update --init .mason
-
-ifeq ($(HOST),ios)
-SUBMODULES += platform/ios/vendor/SMCalloutView/SMCalloutView.h
-platform/ios/vendor/SMCalloutView/SMCalloutView.h:
- ./scripts/flock.py .git/Submodule.lock git submodule update --init platform/ios/vendor/SMCalloutView
-
-SUBMODULES += platform/ios/test/KIF/KIF.xcodeproj
-platform/ios/test/KIF/KIF.xcodeproj:
- ./scripts/flock.py .git/Submodule.lock git submodule update --init platform/ios/test/KIF
+.mason:
+ git submodule update --init
+else
+.mason: ;
endif
-endif
-
-# Wildcard targets get removed after build by default, but we want to preserve the config.
-.PRECIOUS: config/%.gypi
-config/%.gypi: $(SUBMODULES) configure $(CONFIGURE_FILES)
- @printf "$(TEXT_BOLD)$(COLOR_GREEN)* Recreating project...$(FORMAT_END)\n"
- $(QUIET)$(ENV) ./scripts/flock.py build/Configure.lock ./configure config/$*.gypi
-.PHONY: config
-config: config/$(HOST_SLUG).gypi
+$(PLATFORM_CONFIG_OUTPUT): .mason configure $(PLATFORM_CONFIG_INPUT)
+ @printf "$(TEXT_BOLD)$(COLOR_GREEN)* Running configure...$(FORMAT_END)\n"
+ $(ENV) ./configure $(PLATFORM_CONFIG_INPUT) $(PLATFORM_CONFIG_OUTPUT)
#### Build files ###############################################################
-GYP_FLAGS += -Dhost=$(HOST)
-GYP_FLAGS += -Iconfig/$(HOST_SLUG).gypi
-GYP_FLAGS += -Dplatform_lib=$(PLATFORM)
-GYP_FLAGS += -Dhttp_lib=$(HTTP)
-GYP_FLAGS += -Dloop_lib=$(LOOP)
-GYP_FLAGS += -Dasset_lib=$(ASSET)
-GYP_FLAGS += -Dheadless_lib=$(HEADLESS)
-GYP_FLAGS += -Dtest=$(BUILD_TEST)
-GYP_FLAGS += -Drender=$(BUILD_RENDER)
-GYP_FLAGS += -Doffline=$(BUILD_OFFLINE)
+GYP_FLAGS += -I$(PLATFORM_CONFIG_OUTPUT)
GYP_FLAGS += -Dcoverage=$(ENABLE_COVERAGE)
GYP_FLAGS += -Dcxx_host=$(CXX_HOST)
-GYP_FLAGS += --depth=.
GYP_FLAGS += -Goutput_dir=.
-GYP_FLAGS += --generator-output=./build/$(HOST_SLUG)
+GYP_FLAGS += --depth=.
+GYP_FLAGS += --generator-output=$(PLATFORM_OUTPUT)
.PHONY: Makefile/__project__
-Makefile/__project__: print-env $(SUBMODULES) config/$(HOST_SLUG).gypi
+Makefile/__project__: $(PLATFORM_CONFIG_OUTPUT)
@printf "$(TEXT_BOLD)$(COLOR_GREEN)* Recreating project...$(FORMAT_END)\n"
- $(QUIET)$(ENV) deps/run_gyp gyp/$(HOST).gyp $(GYP_FLAGS) \
- -f make$(GYP_FLAVOR_SUFFIX)
+ $(ENV) deps/run_gyp platform/$(PLATFORM)/platform.gyp $(GYP_FLAGS) -f make$(GYP_FLAVOR_SUFFIX)
.PHONY: Xcode/__project__
-Xcode/__project__: print-env $(SUBMODULES) config/$(HOST_SLUG).gypi
+Xcode/__project__: $(PLATFORM_CONFIG_OUTPUT)
@printf "$(TEXT_BOLD)$(COLOR_GREEN)* Recreating project...$(FORMAT_END)\n"
- $(QUIET)$(ENV) deps/run_gyp gyp/$(HOST).gyp $(GYP_FLAGS) \
- -f xcode$(GYP_FLAVOR_SUFFIX)
+ $(ENV) deps/run_gyp platform/$(PLATFORM)/platform.gyp $(GYP_FLAGS) -f xcode$(GYP_FLAVOR_SUFFIX)
.PHONY: Ninja/__project__
-Ninja/__project__: print-env $(SUBMODULES) config/$(HOST_SLUG).gypi
+Ninja/__project__: $(PLATFORM_CONFIG_OUTPUT)
@printf "$(TEXT_BOLD)$(COLOR_GREEN)* Recreating project...$(FORMAT_END)\n"
- $(QUIET)$(ENV) deps/run_gyp gyp/$(HOST).gyp -Gconfig=$(BUILDTYPE) $(GYP_FLAGS) \
- -f ninja
+ $(ENV) deps/run_gyp platform/$(PLATFORM)/platform.gyp $(GYP_FLAGS) -f ninja
-#### Build individual targets ##################################################
+#### Node targets ##############################################################
NODE_PRE_GYP = $(shell npm bin)/node-pre-gyp
-node/configure:
- $(QUIET)$(ENV) $(NODE_PRE_GYP) configure --clang -- \
- $(GYP_FLAGS) -Dlibuv_cflags= -Dlibuv_ldflags= -Dlibuv_static_libs=
-node/xproj: Xcode/__project__ node/configure
- $(QUIET)$(ENV) $(NODE_PRE_GYP) configure --clang -- \
- $(GYP_FLAGS) -f xcode -Dlibuv_cflags= -Dlibuv_ldflags= -Dlibuv_static_libs=
- $(QUIET)$(ENV) ./platform/node/scripts/create_node_scheme.sh "node test" "`npm bin tape`/tape platform/node/test/js/**/*.test.js"
- $(QUIET)$(ENV) ./platform/node/scripts/create_node_scheme.sh "npm run test-suite" "platform/node/test/render.test.js"
+Makefile/node: $(PLATFORM_CONFIG_OUTPUT)
+ $(NODE_PRE_GYP) configure --clang -- $(GYP_FLAGS) \
+ -Dlibuv_cflags= -Dlibuv_ldflags= -Dlibuv_static_libs=
+ $(NODE_PRE_GYP) build --clang
-Makefile/node: Makefile/__project__ node/configure
- @printf "$(TEXT_BOLD)$(COLOR_GREEN)* Building target node...$(FORMAT_END)\n"
- $(QUIET)$(ENV) $(NODE_PRE_GYP) build --clang -- \
- -j$(JOBS)
+Xcode/node: $(PLATFORM_CONFIG_OUTPUT)
+ $(NODE_PRE_GYP) configure --clang -- $(GYP_FLAGS) -f xcode \
+ -Dlibuv_cflags= -Dlibuv_ldflags= -Dlibuv_static_libs=
+
+#### Build individual targets ##################################################
Makefile/%: Makefile/__project__
@printf "$(TEXT_BOLD)$(COLOR_GREEN)* Building target $*...$(FORMAT_END)\n"
- $(QUIET)$(ENV) $(MAKE) -C build/$(HOST_SLUG) BUILDTYPE=$(BUILDTYPE) $*
-
-Xcode/node: Xcode/__project__ node/xproj
- @printf "$(TEXT_BOLD)$(COLOR_GREEN)* Building target node...$(FORMAT_END)\n"
- xcodebuild \
- $(XCODEBUILD_ARGS) \
- -project ./build/binding.xcodeproj \
- -configuration $(BUILDTYPE) \
- -target mapbox-gl-native \
- -jobs $(JOBS)
+ $(ENV) $(MAKE) -j$(JOBS) -C $(PLATFORM_OUTPUT) BUILDTYPE=$(BUILDTYPE) $*
Xcode/%: Xcode/__project__
@printf "$(TEXT_BOLD)$(COLOR_GREEN)* Building target $*...$(FORMAT_END)\n"
xcodebuild \
- PROVISIONING_PROFILE="$(PROVISIONING_PROFILE)" \
- $(XCODEBUILD_ARGS) \
- -project ./build/$(HOST_SLUG)/gyp/$(HOST).xcodeproj \
+ CODE_SIGNING_REQUIRED=NO \
+ CODE_SIGN_IDENTITY= \
+ -project $(PLATFORM_OUTPUT)/platform/$(PLATFORM)/platform.xcodeproj \
-configuration $(BUILDTYPE) \
-target $* \
-jobs $(JOBS)
Ninja/%: Ninja/__project__
@printf "$(TEXT_BOLD)$(COLOR_GREEN)* Building target $*...$(FORMAT_END)\n"
- $(QUIET)$(ENV) deps/ninja/ninja-$(BUILD) -C build/$(HOST_SLUG)/$(BUILDTYPE) $*
+ $(ENV) deps/ninja/ninja-$(PLATFORM) -C $(PLATFORM_OUTPUT)/$(BUILDTYPE) $*
+#### Tidy ######################################################################
-Ninja/compdb: OUTPUT=build/$(HOST_SLUG)/$(BUILDTYPE)/compile_commands.json
+Ninja/compdb: OUTPUT=$(PLATFORM_OUTPUT)/$(BUILDTYPE)/compile_commands.json
Ninja/compdb: Ninja/__project__
@printf "$(TEXT_BOLD)$(COLOR_GREEN)* Writing to $(OUTPUT)$(FORMAT_END)\n"
- $(QUIET)$(ENV) deps/ninja/ninja-$(BUILD) -C build/$(HOST_SLUG)/$(BUILDTYPE) \
+ $(ENV) deps/ninja/ninja-$(PLATFORM) -C $(PLATFORM_OUTPUT)/$(BUILDTYPE) \
-t compdb cc cc_s cxx objc objcxx > $(OUTPUT)
-#### Tidy ######################################################################
-
tidy: Ninja/compdb
@printf "$(TEXT_BOLD)$(COLOR_GREEN)* Generating header files...$(FORMAT_END)\n"
- $(QUIET)$(ENV) deps/ninja/ninja-$(BUILD) -C build/$(HOST_SLUG)/$(BUILDTYPE) version shaders
+ $(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
#### Run tests #################################################################
-test-%: Makefile/test
- ./scripts/run_tests.sh "build/$(HOST_SLUG)/$(BUILDTYPE)/test" --gtest_filter=$*
+run-glfw-app:
+ $(PLATFORM_OUTPUT)/$(BUILDTYPE)/mapbox-glfw
-check: Makefile/test
- ./scripts/collect-coverage.sh
-
-coveralls: Makefile/test
- ./scripts/coveralls.sh
+run-valgrind-glfw-app:
+ valgrind --leak-check=full --suppressions=../../../scripts/valgrind.sup $(PLATFORM_OUTPUT)/$(BUILDTYPE)/mapbox-glfw
-#### Helper targets ############################################################
+ifneq (,$(shell command -v gdb))
+ GDB = gdb -batch -return-child-result -ex 'set print thread-events off' -ex 'run' -ex 'thread apply all bt' --args
+endif
-.PHONY: print-env
-print-env: $(SUBMODULES)
- @printf "$(COLOR_PINK)build:$(FORMAT_END) $(BUILD)/$(BUILD_VERSION)\n"
- @printf "$(COLOR_PINK)host:$(FORMAT_END) $(HOST)/$(HOST_VERSION)\n"
- @printf "$(COLOR_PINK)libs:$(FORMAT_END) "
- @printf "headless=$(COLOR_CYAN)%s$(FORMAT_END) " $(HEADLESS)
- @printf "platform=$(COLOR_CYAN)%s$(FORMAT_END) " $(PLATFORM)
- @printf "asset=$(COLOR_CYAN)%s$(FORMAT_END) " $(ASSET)
- @printf "http=$(COLOR_CYAN)%s$(FORMAT_END) " $(HTTP)
- @printf "loop=$(COLOR_CYAN)%s$(FORMAT_END) " $(LOOP)
- @printf "\n"
+test-%: Makefile/test
+ $(GDB) $(PLATFORM_OUTPUT)/$(BUILDTYPE)/test --gtest_filter=$*
-# Never remove intermediate files
-.SECONDARY:
+check: Makefile/test
+ ./scripts/collect-coverage.sh