diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 894 |
1 files changed, 0 insertions, 894 deletions
diff --git a/Makefile b/Makefile deleted file mode 100644 index 9002542eee..0000000000 --- a/Makefile +++ /dev/null @@ -1,894 +0,0 @@ -export BUILDTYPE ?= Debug -export IS_LOCAL_DEVELOPMENT ?= true -export WITH_CXX11ABI ?= $(shell scripts/check-cxx11abi.sh) -export TARGET_BRANCH ?= master - -CMAKE ?= cmake - - -ifeq ($(BUILDTYPE), Release) -else ifeq ($(BUILDTYPE), RelWithDebInfo) -else ifeq ($(BUILDTYPE), Sanitize) -else ifeq ($(BUILDTYPE), Debug) -else - $(error BUILDTYPE must be Debug, Sanitize, Release or RelWithDebInfo) -endif - -buildtype := $(shell echo "$(BUILDTYPE)" | tr "[A-Z]" "[a-z]") - -ifeq ($(shell uname -s), Darwin) - HOST_PLATFORM = macos - HOST_PLATFORM_VERSION = $(shell uname -m) - export NINJA = platform/macos/ninja - export JOBS ?= $(shell sysctl -n hw.ncpu) -else ifeq ($(shell uname -s), Linux) - HOST_PLATFORM = linux - HOST_PLATFORM_VERSION = $(shell uname -m) - export NINJA = platform/linux/ninja - export JOBS ?= $(shell grep --count processor /proc/cpuinfo) -else - $(error Cannot determine host platform) -endif - -ifeq ($(MASON_PLATFORM),) - BUILD_PLATFORM = $(HOST_PLATFORM) -else - BUILD_PLATFORM = $(MASON_PLATFORM) -endif - -ifeq ($(MASON_PLATFORM_VERSION),) - BUILD_PLATFORM_VERSION = $(HOST_PLATFORM_VERSION) -else - BUILD_PLATFORM_VERSION = $(MASON_PLATFORM_VERSION) -endif - -ifeq ($(MASON_PLATFORM),macos) - MASON_PLATFORM=osx -endif - -ifeq ($(V), 1) - export XCPRETTY - NINJA_ARGS ?= -v -else - export XCPRETTY ?= | tee '$(shell pwd)/build/xcodebuild-$(shell date +"%Y-%m-%d_%H%M%S").log' | xcpretty - NINJA_ARGS ?= -endif - -.PHONY: default -default: test - -BUILD_DEPS += Makefile -BUILD_DEPS += CMakeLists.txt - -BUILD_DOCS ?= true - -#### macOS targets ############################################################## - -ifeq ($(HOST_PLATFORM), macos) - -export PATH := $(shell pwd)/platform/macos:$(PATH) - -MACOS_OUTPUT_PATH = build/macos -MACOS_PROJ_PATH = $(MACOS_OUTPUT_PATH)/mbgl.xcodeproj -MACOS_WORK_PATH = platform/macos/macos.xcworkspace -MACOS_USER_DATA_PATH = $(MACOS_WORK_PATH)/xcuserdata/$(USER).xcuserdatad -MACOS_COMPDB_PATH = $(MACOS_OUTPUT_PATH)/compdb/$(BUILDTYPE) - -MACOS_XCODEBUILD = xcodebuild \ - -derivedDataPath $(MACOS_OUTPUT_PATH) \ - -configuration $(BUILDTYPE) \ - -workspace $(MACOS_WORK_PATH) \ - -jobs $(JOBS) - -ifneq ($(CI),) - MACOS_XCODEBUILD += -xcconfig platform/darwin/ci.xcconfig -endif - -$(MACOS_PROJ_PATH): $(BUILD_DEPS) $(MACOS_USER_DATA_PATH)/WorkspaceSettings.xcsettings - mkdir -p $(MACOS_OUTPUT_PATH) - (cd $(MACOS_OUTPUT_PATH) && $(CMAKE) -G Xcode ../.. \ - -DWITH_EGL=${WITH_EGL}) - -$(MACOS_USER_DATA_PATH)/WorkspaceSettings.xcsettings: platform/macos/WorkspaceSettings.xcsettings - mkdir -p "$(MACOS_USER_DATA_PATH)" - cp platform/macos/WorkspaceSettings.xcsettings "$@" - -.PHONY: macos -macos: $(MACOS_PROJ_PATH) - set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'CI' build $(XCPRETTY) - -.PHONY: xproj -xproj: $(MACOS_PROJ_PATH) - xed $(MACOS_WORK_PATH) - -.PHONY: test -test: $(MACOS_PROJ_PATH) - set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'mbgl-test' build $(XCPRETTY) - -.PHONY: benchmark -benchmark: $(MACOS_PROJ_PATH) - set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'mbgl-benchmark' build $(XCPRETTY) - -.PHONY: run-test -run-test: run-test-* - -run-test-%: test - ulimit -c unlimited && ($(MACOS_OUTPUT_PATH)/$(BUILDTYPE)/mbgl-test --gtest_catch_exceptions=0 --gtest_filter=$* & pid=$$! && wait $$pid \ - || (lldb -c /cores/core.$$pid --batch --one-line 'thread backtrace all' --one-line 'quit' && exit 1)) - set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'CI' test $(XCPRETTY) - -.PHONY: run-benchmark -run-benchmark: run-benchmark-. - -run-benchmark-%: benchmark - $(MACOS_OUTPUT_PATH)/$(BUILDTYPE)/mbgl-benchmark --benchmark_filter=$* ${BENCHMARK_ARGS} - -.PHONY: node-benchmark -node-benchmark: node - -.PHONY: run-node-benchmark -run-node-benchmark: node-benchmark - node platform/node/test/benchmark.js - -.PHONY: glfw-app -glfw-app: $(MACOS_PROJ_PATH) - set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'mbgl-glfw' build $(XCPRETTY) - -.PHONY: run-glfw-app -run-glfw-app: glfw-app - "$(MACOS_OUTPUT_PATH)/$(BUILDTYPE)/mbgl-glfw" - -.PHONY: render -render: $(MACOS_PROJ_PATH) - set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'mbgl-render' build $(XCPRETTY) - -.PHONY: offline -offline: $(MACOS_PROJ_PATH) - set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'mbgl-offline' build $(XCPRETTY) - -.PHONY: node -node: $(MACOS_PROJ_PATH) - set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'mbgl-node (Active ABI)' build $(XCPRETTY) - -.PHONY: node-all -node-all: $(MACOS_PROJ_PATH) - set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'mbgl-node (All ABIs)' build $(XCPRETTY) - -.PHONY: macos-test -macos-test: $(MACOS_PROJ_PATH) - set -o pipefail && $(MACOS_XCODEBUILD) -scheme 'CI' test $(XCPRETTY) - -.PHONY: macos-lint -macos-lint: - find platform/macos -type f -name '*.plist' | xargs plutil -lint - -.PHONY: xpackage -xpackage: $(MACOS_PROJ_PATH) - SYMBOLS=$(SYMBOLS) ./platform/macos/scripts/package.sh - -.PHONY: xdeploy -xdeploy: - caffeinate -i ./platform/macos/scripts/deploy-packages.sh - -.PHONY: xdocument -xdocument: - OUTPUT=$(OUTPUT) ./platform/macos/scripts/document.sh - -.PHONY: genstrings -genstrings: - genstrings -u -o platform/macos/sdk/Base.lproj platform/darwin/src/*.{m,mm} - genstrings -u -o platform/macos/sdk/Base.lproj platform/macos/src/*.{m,mm} - genstrings -u -o platform/ios/resources/Base.lproj platform/ios/src/*.{m,mm} - -find platform/ios/resources platform/macos/sdk -path '*/Base.lproj/*.strings' -exec \ - textutil -convert txt -extension strings -inputencoding UTF-16 -encoding UTF-8 {} \; - mv platform/macos/sdk/Base.lproj/Foundation.strings platform/darwin/resources/Base.lproj/ - -$(MACOS_COMPDB_PATH)/Makefile: - mkdir -p $(MACOS_COMPDB_PATH) - (cd $(MACOS_COMPDB_PATH) && $(CMAKE) ../../../.. \ - -DCMAKE_BUILD_TYPE=$(BUILDTYPE) \ - -DWITH_EGL=${WITH_EGL}) - -.PHONY: -compdb: $(BUILD_DEPS) $(TEST_DEPS) $(MACOS_COMPDB_PATH)/Makefile - @$(MAKE) -C $(MACOS_COMPDB_PATH) cmake_check_build_system - -.PHONY: tidy -tidy: compdb - scripts/clang-tools.sh $(MACOS_COMPDB_PATH) $(TARGET_BRANCH) - -.PHONY: check -check: compdb - scripts/clang-tools.sh $(MACOS_COMPDB_PATH) $(TARGET_BRANCH) --diff -endif - -#### iOS targets ############################################################## - -ifeq ($(HOST_PLATFORM), macos) - -IOS_OUTPUT_PATH = build/ios -IOS_PROJ_PATH = $(IOS_OUTPUT_PATH)/mbgl.xcodeproj -IOS_WORK_PATH = platform/ios/ios.xcworkspace -IOS_USER_DATA_PATH = $(IOS_WORK_PATH)/xcuserdata/$(USER).xcuserdatad - -IOS_XCODEBUILD_SIM = xcodebuild \ - ARCHS=x86_64 ONLY_ACTIVE_ARCH=YES \ - -derivedDataPath $(IOS_OUTPUT_PATH) \ - -configuration $(BUILDTYPE) -sdk iphonesimulator \ - -workspace $(IOS_WORK_PATH) \ - -jobs $(JOBS) - -ifneq ($(MORE_SIMULATORS),) - IOS_LATEST = true - IOS_11 = true - IOS_10 = true - IOS_9 = true -endif - -ifdef IOS_LATEST - IOS_XCODEBUILD_SIM += \ - -destination 'platform=iOS Simulator,OS=latest,name=iPhone 8' \ - -destination 'platform=iOS Simulator,OS=latest,name=iPhone Xs Max' \ - -destination 'platform=iOS Simulator,OS=latest,name=iPhone Xr' \ - -destination 'platform=iOS Simulator,OS=latest,name=iPad Pro (11-inch)' -endif - -ifdef IOS_11 - IOS_XCODEBUILD_SIM += \ - -destination 'platform=iOS Simulator,OS=11.4,name=iPhone 7' \ - -destination 'platform=iOS Simulator,OS=11.4,name=iPhone X' \ - -destination 'platform=iOS Simulator,OS=11.4,name=iPad (5th generation)' -endif - -ifdef IOS_10 - IOS_XCODEBUILD_SIM += \ - -destination 'platform=iOS Simulator,OS=10.3.1,name=iPhone SE' \ - -destination 'platform=iOS Simulator,OS=10.3.1,name=iPhone 7 Plus' \ - -destination 'platform=iOS Simulator,OS=10.3.1,name=iPad Pro (9.7-inch)' -endif - -ifdef IOS_9 - IOS_XCODEBUILD_SIM += \ - -destination 'platform=iOS Simulator,OS=9.3,name=iPhone 6s Plus' \ - -destination 'platform=iOS Simulator,OS=9.3,name=iPhone 6s' \ - -destination 'platform=iOS Simulator,OS=9.3,name=iPad Air 2' -endif - -# If IOS_XCODEBUILD_SIM does not contain a simulator destination, add the default. -ifeq (, $(findstring destination, $(IOS_XCODEBUILD_SIM))) - IOS_XCODEBUILD_SIM += \ - -destination 'platform=iOS Simulator,OS=latest,name=iPhone 8' -else - IOS_XCODEBUILD_SIM += -parallel-testing-enabled YES -endif - -ifneq ($(ONLY_TESTING),) - IOS_XCODEBUILD_SIM += -only-testing:$(ONLY_TESTING) -endif - -ifneq ($(SKIP_TESTING),) - IOS_XCODEBUILD_SIM += -skip-testing:$(SKIP_TESTING) -endif - -ifneq ($(CI),) - IOS_XCODEBUILD_SIM += -xcconfig platform/darwin/ci.xcconfig -endif - -$(IOS_PROJ_PATH): $(IOS_USER_DATA_PATH)/WorkspaceSettings.xcsettings $(BUILD_DEPS) - mkdir -p $(IOS_OUTPUT_PATH) - (cd $(IOS_OUTPUT_PATH) && $(CMAKE) -G Xcode ../.. \ - -DCMAKE_TOOLCHAIN_FILE=../../platform/ios/toolchain.cmake \ - -DMBGL_PLATFORM=ios \ - -DMASON_PLATFORM=ios) - -$(IOS_USER_DATA_PATH)/WorkspaceSettings.xcsettings: platform/ios/WorkspaceSettings.xcsettings - mkdir -p "$(IOS_USER_DATA_PATH)" - cp platform/ios/WorkspaceSettings.xcsettings "$@" - -.PHONY: ios -ios: $(IOS_PROJ_PATH) - set -o pipefail && $(IOS_XCODEBUILD_SIM) -scheme 'CI' build $(XCPRETTY) - -.PHONY: iproj -iproj: $(IOS_PROJ_PATH) - xed $(IOS_WORK_PATH) - -.PHONY: ios-lint -ios-lint: ios-pod-lint - find platform/ios/framework -type f -name '*.plist' | xargs plutil -lint - find platform/ios/app -type f -name '*.plist' | xargs plutil -lint - -.PHONY: ios-pod-lint -ios-pod-lint: - ./platform/ios/scripts/lint-podspecs.js - -.PHONY: ios-test -ios-test: $(IOS_PROJ_PATH) - set -o pipefail && $(IOS_XCODEBUILD_SIM) -scheme 'CI' test $(XCPRETTY) - -.PHONY: ios-integration-test -ios-integration-test: $(IOS_PROJ_PATH) - set -o pipefail && $(IOS_XCODEBUILD_SIM) -scheme 'Integration Test Harness' test $(XCPRETTY) - -.PHONY: ios-sanitize -ios-sanitize: $(IOS_PROJ_PATH) - set -o pipefail && $(IOS_XCODEBUILD_SIM) -scheme 'CI' -enableThreadSanitizer YES -enableUndefinedBehaviorSanitizer YES test $(XCPRETTY) - -.PHONY: ios-sanitize-address -ios-sanitize-address: $(IOS_PROJ_PATH) - set -o pipefail && $(IOS_XCODEBUILD_SIM) -scheme 'CI' -enableAddressSanitizer YES test $(XCPRETTY) - -.PHONY: ios-static-analyzer -ios-static-analyzer: $(IOS_PROJ_PATH) - set -o pipefail && $(IOS_XCODEBUILD_SIM) analyze -scheme 'CI' test $(XCPRETTY) - -.PHONY: ios-install-simulators -ios-install-simulators: - xcversion simulators --install="iOS 11.4" || true - xcversion simulators --install="iOS 10.3.1" || true - xcversion simulators --install="iOS 9.3" || true - -.PHONY: ios-check-events-symbols -ios-check-events-symbols: - ./platform/ios/scripts/check-events-symbols.sh - -.PHONY: ipackage -ipackage: ipackage* -ipackage%: - @echo make ipackage is deprecated — use make iframework. - -.PHONY: iframework -iframework: $(IOS_PROJ_PATH) - FORMAT=$(FORMAT) BUILD_DEVICE=$(BUILD_DEVICE) SYMBOLS=$(SYMBOLS) BUILD_DOCS=$(BUILD_DOCS) \ - ./platform/ios/scripts/package.sh - -.PHONY: ideploy -ideploy: - caffeinate -i ./platform/ios/scripts/deploy-packages.sh - -.PHONY: idocument -idocument: - OUTPUT=$(OUTPUT) ./platform/ios/scripts/document.sh - -.PHONY: darwin-style-code -darwin-style-code: - node platform/darwin/scripts/generate-style-code.js - node platform/darwin/scripts/update-examples.js -style-code: darwin-style-code - -.PHONY: darwin-update-examples -darwin-update-examples: - node platform/darwin/scripts/update-examples.js - -.PHONY: darwin-check-public-symbols -darwin-check-public-symbols: - node platform/darwin/scripts/check-public-symbols.js macOS iOS - -endif - -#### Linux targets ##################################################### - -ifeq ($(HOST_PLATFORM), linux) - -export PATH := $(shell pwd)/platform/linux:$(PATH) -export LINUX_OUTPUT_PATH = build/linux-$(shell uname -m)/$(BUILDTYPE) -LINUX_BUILD = $(LINUX_OUTPUT_PATH)/build.ninja - -$(LINUX_BUILD): $(BUILD_DEPS) - mkdir -p $(LINUX_OUTPUT_PATH) - (cd $(LINUX_OUTPUT_PATH) && $(CMAKE) -G Ninja ../../.. \ - -DCMAKE_BUILD_TYPE=$(BUILDTYPE) \ - -DWITH_CXX11ABI=${WITH_CXX11ABI} \ - -DWITH_COVERAGE=${WITH_COVERAGE} \ - -DWITH_OSMESA=${WITH_OSMESA} \ - -DWITH_EGL=${WITH_EGL}) - -.PHONY: linux -linux: glfw-app render offline - -.PHONY: linux-core -linux-core: $(LINUX_BUILD) - $(NINJA) $(NINJA_ARGS) -j$(JOBS) -C $(LINUX_OUTPUT_PATH) mbgl-core mbgl-loop-uv mbgl-filesource - -.PHONY: test -test: $(LINUX_BUILD) - $(NINJA) $(NINJA_ARGS) -j$(JOBS) -C $(LINUX_OUTPUT_PATH) mbgl-test - -.PHONY: benchmark -benchmark: $(LINUX_BUILD) - $(NINJA) $(NINJA_ARGS) -j$(JOBS) -C $(LINUX_OUTPUT_PATH) mbgl-benchmark - -GDB ?= gdb \ - -batch -return-child-result \ - -ex 'set print thread-events off' \ - -ex 'set disable-randomization off' \ - -ex 'run' \ - -ex 'thread apply all bt' --args - -.PHONY: run-test -run-test: run-test-* - -run-test-%: test - $(GDB) $(LINUX_OUTPUT_PATH)/mbgl-test --gtest_catch_exceptions=0 --gtest_filter=$* - -.PHONY: run-benchmark -run-benchmark: run-benchmark-. - -run-benchmark-%: benchmark - $(LINUX_OUTPUT_PATH)/mbgl-benchmark --benchmark_filter=$* - -.PHONY: render -render: $(LINUX_BUILD) - $(NINJA) $(NINJA_ARGS) -j$(JOBS) -C $(LINUX_OUTPUT_PATH) mbgl-render - -.PHONY: offline -offline: $(LINUX_BUILD) - $(NINJA) $(NINJA_ARGS) -j$(JOBS) -C $(LINUX_OUTPUT_PATH) mbgl-offline - -.PHONY: glfw-app -glfw-app: $(LINUX_BUILD) - $(NINJA) $(NINJA_ARGS) -j$(JOBS) -C $(LINUX_OUTPUT_PATH) mbgl-glfw - -.PHONY: run-glfw-app -run-glfw-app: glfw-app - cd $(LINUX_OUTPUT_PATH) && ./mbgl-glfw - -.PHONY: node -node: $(LINUX_BUILD) - $(NINJA) $(NINJA_ARGS) -j$(JOBS) -C $(LINUX_OUTPUT_PATH) mbgl-node.active - -.PHONY: node-all -node-all: $(LINUX_BUILD) - $(NINJA) $(NINJA_ARGS) -j$(JOBS) -C $(LINUX_OUTPUT_PATH) mbgl-node.all - -.PHONY: compdb -compdb: $(LINUX_BUILD) - # Ninja generator already outputs the file at the right location - -.PHONY: tidy -tidy: compdb - scripts/clang-tools.sh $(LINUX_OUTPUT_PATH) $(TARGET_BRANCH) - -.PHONY: check -check: compdb - scripts/clang-tools.sh $(LINUX_OUTPUT_PATH) $(TARGET_BRANCH) --diff - -endif - -#### Qt targets ##################################################### - -QT_QMAKE_FOUND := $(shell command -v qmake 2> /dev/null) -ifdef QT_QMAKE_FOUND - export QT_INSTALL_DOCS = $(shell qmake -query QT_INSTALL_DOCS) - QT_ROOT_PATH = build/qt-$(BUILD_PLATFORM)-$(BUILD_PLATFORM_VERSION) -endif - -export QT_OUTPUT_PATH = $(QT_ROOT_PATH)/$(BUILDTYPE) -QT_BUILD = $(QT_OUTPUT_PATH)/build.ninja - -$(QT_BUILD): $(BUILD_DEPS) - @scripts/check-qt.sh - mkdir -p $(QT_OUTPUT_PATH) - (cd $(QT_OUTPUT_PATH) && $(CMAKE) -G Ninja ../../.. \ - -DCMAKE_BUILD_TYPE=$(BUILDTYPE) \ - -DMBGL_PLATFORM=qt \ - -DMASON_PLATFORM=$(MASON_PLATFORM) \ - -DMASON_PLATFORM_VERSION=$(MASON_PLATFORM_VERSION) \ - -DWITH_QT_DECODERS=${WITH_QT_DECODERS} \ - -DWITH_QT_I18N=${WITH_QT_I18N} \ - -DWITH_CXX11ABI=${WITH_CXX11ABI} \ - -DWITH_COVERAGE=${WITH_COVERAGE}) - -ifeq ($(HOST_PLATFORM), macos) - -MACOS_QT_PROJ_PATH = $(QT_ROOT_PATH)/xcode/mbgl.xcodeproj -$(MACOS_QT_PROJ_PATH): $(BUILD_DEPS) - @scripts/check-qt.sh - mkdir -p $(QT_ROOT_PATH)/xcode - (cd $(QT_ROOT_PATH)/xcode && $(CMAKE) -G Xcode ../../.. \ - -DMBGL_PLATFORM=qt \ - -DMASON_PLATFORM=$(MASON_PLATFORM) \ - -DMASON_PLATFORM_VERSION=$(MASON_PLATFORM_VERSION) \ - -DWITH_QT_DECODERS=${WITH_QT_DECODERS} \ - -DWITH_QT_I18N=${WITH_QT_I18N} \ - -DWITH_CXX11ABI=${WITH_CXX11ABI} \ - -DWITH_COVERAGE=${WITH_COVERAGE}) - -.PHONY: qtproj -qtproj: $(MACOS_QT_PROJ_PATH) - open $(MACOS_QT_PROJ_PATH) - -endif - -ifdef QNX_HOST -export WITH_QT_DECODERS ?= ON -export QCC_COMPILER_TARGET ?= gcc_ntox86_64 -export QCC_NTOARCH ?= x86_64 - -export QNX_OUTPUT_PATH = build/qt-qnx-$(QCC_NTOARCH)/$(BUILDTYPE) -QNX_QT_BUILD = $(QNX_OUTPUT_PATH)/build.ninja -$(QNX_QT_BUILD): $(BUILD_DEPS) - @scripts/check-qt.sh - mkdir -p $(QNX_OUTPUT_PATH) - (cd $(QNX_OUTPUT_PATH) && $(CMAKE) -G Ninja ../../.. \ - -DCMAKE_BUILD_TYPE=$(BUILDTYPE) \ - -DQCC_COMPILER_TARGET=${QCC_COMPILER_TARGET} \ - -DQCC_NTOARCH=${QCC_NTOARCH} \ - -DCMAKE_TOOLCHAIN_FILE=platform/qt/qnx.cmake \ - -DMBGL_PLATFORM=qt \ - -DWITH_QT_DECODERS=${WITH_QT_DECODERS} \ - -DWITH_QT_I18N=${WITH_QT_I18N} \ - -DWITH_CXX11ABI=${WITH_CXX11ABI} \ - -DWITH_COVERAGE=${WITH_COVERAGE}) - -.PHONY: qnx-qt-lib -qnx-qt-lib: $(QNX_QT_BUILD) - $(NINJA) $(NINJA_ARGS) -j$(JOBS) -C $(QNX_OUTPUT_PATH) qmapboxgl - -endif - -.PHONY: qt-lib -qt-lib: $(QT_BUILD) - $(NINJA) $(NINJA_ARGS) -j$(JOBS) -C $(QT_OUTPUT_PATH) qmapboxgl - -.PHONY: qt-app -qt-app: $(QT_BUILD) - $(NINJA) $(NINJA_ARGS) -j$(JOBS) -C $(QT_OUTPUT_PATH) mbgl-qt - -.PHONY: run-qt-app -run-qt-app: qt-app - $(QT_OUTPUT_PATH)/mbgl-qt - -.PHONY: qt-test -qt-test: $(QT_BUILD) - $(NINJA) $(NINJA_ARGS) -j$(JOBS) -C $(QT_OUTPUT_PATH) mbgl-test - -run-qt-test-%: qt-test - $(QT_OUTPUT_PATH)/mbgl-test --gtest_catch_exceptions=0 --gtest_filter=$* - -.PHONY: run-qt-test -run-qt-test: run-qt-test-* - -.PHONY: qt-docs -qt-docs: - qdoc $(shell pwd)/platform/qt/config.qdocconf -outputdir $(shell pwd)/$(QT_OUTPUT_PATH)/docs - -#### Node targets ############################################################## - -.PHONY: test-node -test-node: node - npm test - npm run test-query - npm run test-memory - npm run test-expressions - -#### Android targets ########################################################### - -MBGL_ANDROID_ABIS = arm-v7;armeabi-v7a -MBGL_ANDROID_ABIS += arm-v8;arm64-v8a -MBGL_ANDROID_ABIS += x86;x86 -MBGL_ANDROID_ABIS += x86-64;x86_64 - -MBGL_ANDROID_LOCAL_WORK_DIR = /data/local/tmp/core-tests -MBGL_ANDROID_LOCAL_BENCHMARK_DIR = /data/local/tmp/benchmark -MBGL_ANDROID_LIBDIR = lib$(if $(filter arm-v8 x86-64,$1),64) -MBGL_ANDROID_DALVIKVM = dalvikvm$(if $(filter arm-v8 x86-64,$1),64,32) -MBGL_ANDROID_APK_SUFFIX = $(if $(filter Release,$(BUILDTYPE)),release,debug) -MBGL_ANDROID_CORE_TEST_DIR = platform/android/MapboxGLAndroidSDK/.externalNativeBuild/cmake/$(buildtype)/$2/core-tests -MBGL_ANDROID_BENCHMARK_DIR = platform/android/MapboxGLAndroidSDK/.externalNativeBuild/cmake/$(buildtype)/$2/benchmark -MBGL_ANDROID_STL ?= c++_static -MBGL_ANDROID_GRADLE = ./gradlew --parallel --max-workers=$(JOBS) -Pmapbox.buildtype=$(buildtype) -Pmapbox.stl=$(MBGL_ANDROID_STL) - -# Lists all devices, and extracts the identifiers, then obtains the ABI for every one. -# Some devices return \r\n, so we'll have to remove the carriage return before concatenating. -MBGL_ANDROID_ACTIVE_ARCHS = $(shell adb devices | sed '1d;/^\*/d;s/[[:space:]].*//' | xargs -n 1 -I DEV `type -P adb` -s DEV shell getprop ro.product.cpu.abi | tr -d '\r') - -# Generate code based on the style specification -.PHONY: android-style-code -android-style-code: - node platform/android/scripts/generate-style-code.js -style-code: android-style-code - -# Configuration file for running CMake from Gradle within Android Studio. -platform/android/gradle/configuration.gradle: - @printf "ext {\n node = '`command -v node || command -v nodejs`'\n npm = '`command -v npm`'\n ccache = '`command -v ccache`'\n}" > $@ - -define ANDROID_RULES -# $1 = arm-v7 (short arch) -# $2 = armeabi-v7a (internal arch) - -.PHONY: android-test-lib-$1 -android-test-lib-$1: platform/android/gradle/configuration.gradle - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=$2 -Pmapbox.with_test=true :MapboxGLAndroidSDKTestApp:assemble$(BUILDTYPE) - -.PHONY: android-benchmark-$1 -android-benchmark-$1: platform/android/gradle/configuration.gradle - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=$2 -Pmapbox.with_benchmark=true :MapboxGLAndroidSDKTestApp:assemble$(BUILDTYPE) - -# Build SDK for for specified abi -.PHONY: android-lib-$1 -android-lib-$1: platform/android/gradle/configuration.gradle - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=$2 :MapboxGLAndroidSDK:assemble$(BUILDTYPE) - -# Build test app and SDK for for specified abi -.PHONY: android-$1 -android-$1: platform/android/gradle/configuration.gradle - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=$2 :MapboxGLAndroidSDKTestApp:assemble$(BUILDTYPE) - -# Build the core test for specified abi -.PHONY: android-core-test-$1 -android-core-test-$1: android-test-lib-$1 - # Compile main sources and extract the classes (using the test app to get all transitive dependencies in one place) - mkdir -p $(MBGL_ANDROID_CORE_TEST_DIR) - unzip -o platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk/$(buildtype)/MapboxGLAndroidSDKTestApp-$(MBGL_ANDROID_APK_SUFFIX).apk classes.dex -d $(MBGL_ANDROID_CORE_TEST_DIR) - -run-android-core-test-$1-%: android-core-test-$1 - # Ensure clean state on the device - adb shell "rm -Rf $(MBGL_ANDROID_LOCAL_WORK_DIR) && mkdir -p $(MBGL_ANDROID_LOCAL_WORK_DIR)/test && mkdir -p $(MBGL_ANDROID_LOCAL_WORK_DIR)/mapbox-gl-js/src/style-spec/reference" - - # Push all needed files to the device - adb push $(MBGL_ANDROID_CORE_TEST_DIR)/classes.dex $(MBGL_ANDROID_LOCAL_WORK_DIR) > /dev/null 2>&1 - adb push platform/android/MapboxGLAndroidSDK/build/intermediates/intermediate-jars/$(buildtype)/jni/$2/libmapbox-gl.so $(MBGL_ANDROID_LOCAL_WORK_DIR) > /dev/null 2>&1 - adb push test/fixtures $(MBGL_ANDROID_LOCAL_WORK_DIR)/test > /dev/null 2>&1 - adb push mapbox-gl-js/src/style-spec/reference/v8.json $(MBGL_ANDROID_LOCAL_WORK_DIR)/mapbox-gl-js/src/style-spec/reference > /dev/null 2>&1 - adb push platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/$(buildtype)/obj/$2/mbgl-test $(MBGL_ANDROID_LOCAL_WORK_DIR) > /dev/null 2>&1 - -# Create gtest filter for skipped tests. - $(eval SKIPPED_TESTS := -$(shell sed -n '/#\|^$$/!p' platform/android/tests/skipped.txt | sed ':a;$!N;s/\n/:/g;ta')) - - # Kick off the tests - adb shell "export LD_LIBRARY_PATH=$(MBGL_ANDROID_LOCAL_WORK_DIR) && cd $(MBGL_ANDROID_LOCAL_WORK_DIR) && chmod +x mbgl-test && ./mbgl-test --class_path=$(MBGL_ANDROID_LOCAL_WORK_DIR)/classes.dex --gtest_filter=$$*:$(SKIPPED_TESTS)" - - # Gather the results and unpack them - adb shell "cd $(MBGL_ANDROID_LOCAL_WORK_DIR) && tar -cvzf results.tgz test/fixtures/* > /dev/null 2>&1" - adb pull $(MBGL_ANDROID_LOCAL_WORK_DIR)/results.tgz $(MBGL_ANDROID_CORE_TEST_DIR)/ > /dev/null 2>&1 - rm -rf $(MBGL_ANDROID_CORE_TEST_DIR)/results && mkdir -p $(MBGL_ANDROID_CORE_TEST_DIR)/results - tar -xzf $(MBGL_ANDROID_CORE_TEST_DIR)/results.tgz --strip-components=2 -C $(MBGL_ANDROID_CORE_TEST_DIR)/results - -# Run the core test for specified abi -.PHONY: run-android-core-test-$1 -run-android-core-test-$1: run-android-core-test-$1-* - -# Run benchmarks for specified abi -.PHONY: run-android-benchmark-$1 -run-android-benchmark-$1: run-android-benchmark-$1-* - -run-android-benchmark-$1-%: android-benchmark-$1 - mkdir -p $(MBGL_ANDROID_BENCHMARK_DIR) - unzip -o platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk/$(buildtype)/MapboxGLAndroidSDKTestApp-$(MBGL_ANDROID_APK_SUFFIX).apk classes.dex -d $(MBGL_ANDROID_BENCHMARK_DIR) - - # Delete old test folder and create new one - adb shell "rm -Rf $(MBGL_ANDROID_LOCAL_BENCHMARK_DIR) && mkdir -p $(MBGL_ANDROID_LOCAL_BENCHMARK_DIR)/benchmark && mkdir -p $(MBGL_ANDROID_LOCAL_BENCHMARK_DIR)/test" - - # Push compiled java sources, test data and executable to device - adb push $(MBGL_ANDROID_BENCHMARK_DIR)/classes.dex $(MBGL_ANDROID_LOCAL_BENCHMARK_DIR) > /dev/null 2>&1 - adb push platform/android/MapboxGLAndroidSDK/build/intermediates/intermediate-jars/$(buildtype)/jni/$2/libmapbox-gl.so $(MBGL_ANDROID_LOCAL_BENCHMARK_DIR) > /dev/null 2>&1 - adb push benchmark/fixtures $(MBGL_ANDROID_LOCAL_BENCHMARK_DIR)/benchmark > /dev/null 2>&1 - adb push test/fixtures $(MBGL_ANDROID_LOCAL_BENCHMARK_DIR)/test > /dev/null 2>&1 - adb push platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/$(buildtype)/obj/$2/mbgl-benchmark $(MBGL_ANDROID_LOCAL_BENCHMARK_DIR) > /dev/null 2>&1 - - # Run benchmark. Number of benchmark iterations can be set by run-android-benchmark-N parameter. - adb shell "export LD_LIBRARY_PATH=$(MBGL_ANDROID_LOCAL_BENCHMARK_DIR) && cd $(MBGL_ANDROID_LOCAL_BENCHMARK_DIR) && chmod +x mbgl-benchmark && ./mbgl-benchmark --class_path=$(MBGL_ANDROID_LOCAL_BENCHMARK_DIR)/classes.dex --benchmark_repetitions=$$* --benchmark_format=json --benchmark_out=results.json" - - # Pull results.json from the device - rm -rf $(MBGL_ANDROID_BENCHMARK_DIR)/results && mkdir -p $(MBGL_ANDROID_BENCHMARK_DIR)/results - adb pull $(MBGL_ANDROID_LOCAL_BENCHMARK_DIR)/results.json $(MBGL_ANDROID_BENCHMARK_DIR)/results > /dev/null 2>&1 - -# Run the test app on connected android device with specified abi -.PHONY: run-android-$1 -run-android-$1: platform/android/gradle/configuration.gradle - -adb uninstall com.mapbox.mapboxsdk.testapp 2> /dev/null - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=$2 :MapboxGLAndroidSDKTestApp:install$(BUILDTYPE) && adb shell am start -n com.mapbox.mapboxsdk.testapp/.activity.FeatureOverviewActivity - -# Build test app instrumentation tests apk and test app apk for specified abi -.PHONY: android-ui-test-$1 -android-ui-test-$1: platform/android/gradle/configuration.gradle - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=$2 :MapboxGLAndroidSDKTestApp:assembleDebug :MapboxGLAndroidSDKTestApp:assembleAndroidTest - -# Run test app instrumentation tests on a connected android device or emulator with specified abi -.PHONY: run-android-ui-test-$1 -run-android-ui-test-$1: platform/android/gradle/configuration.gradle - -adb uninstall com.mapbox.mapboxsdk.testapp 2> /dev/null - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=$2 :MapboxGLAndroidSDKTestApp:connectedAndroidTest - -# Run Java Instrumentation tests on a connected android device or emulator with specified abi and test filter -run-android-ui-test-$1-%: platform/android/gradle/configuration.gradle - -adb uninstall com.mapbox.mapboxsdk.testapp 2> /dev/null - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=$2 :MapboxGLAndroidSDKTestApp:connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class="$$*" - -# Symbolicate native stack trace with the specified abi -.PHONY: android-ndk-stack-$1 -android-ndk-stack-$1: platform/android/gradle/configuration.gradle - adb logcat | ndk-stack -sym platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/debug/obj/$2/ - -# Run render tests with pixelmatch -.PHONY: run-android-render-test-$1 -run-android-render-test-$1: $(BUILD_DEPS) platform/android/gradle/configuration.gradle - -adb uninstall com.mapbox.mapboxsdk.testapp 2> /dev/null - # delete old test results - rm -rf platform/android/build/render-test/mapbox/ - # copy test definitions & ignore file to test app assets folder, clear old ones first - rm -rf platform/android/MapboxGLAndroidSDKTestApp/src/main/assets/integration - cp -r mapbox-gl-js/test/integration platform/android/MapboxGLAndroidSDKTestApp/src/main/assets - cp platform/node/test/ignores.json platform/android/MapboxGLAndroidSDKTestApp/src/main/assets/integration/ignores.json - # run RenderTest.java to generate static map images - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=$2 :MapboxGLAndroidSDKTestApp:connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class="com.mapbox.mapboxsdk.testapp.render.RenderTest" - # pull generated images from the device - adb pull "`adb shell 'printenv EXTERNAL_STORAGE' | tr -d '\r'`/mapbox/render" platform/android/build/render-test - # copy expected result and run pixelmatch - python platform/android/scripts/run-render-test.py - # remove test definitions from assets - rm -rf platform/android/MapboxGLAndroidSDKTestApp/src/main/assets/integration - -endef - -# Explodes the arguments into individual variables -define ANDROID_RULES_INVOKER -$(call ANDROID_RULES,$(word 1,$1),$(word 2,$1)) -endef - -$(foreach abi,$(MBGL_ANDROID_ABIS),$(eval $(call ANDROID_RULES_INVOKER,$(subst ;, ,$(abi))))) - -# Build the Android SDK and test app with abi set to arm-v7 -.PHONY: android -android: android-arm-v7 - -# Build the Android SDK with abi set to arm-v7 -.PHONY: android-lib -android-lib: android-lib-arm-v7 - -# Run the test app on connected android device with abi set to arm-v7 -.PHONY: run-android -run-android: run-android-arm-v7 - -# Run Java Instrumentation tests on a connected android device or emulator with abi set to arm-v7 -.PHONY: run-android-ui-test -run-android-ui-test: run-android-ui-test-arm-v7 -run-android-ui-test-%: run-android-ui-test-arm-v7-% - -# Run Java Unit tests on the JVM of the development machine executing this -.PHONY: run-android-unit-test -run-android-unit-test: platform/android/gradle/configuration.gradle - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=none :MapboxGLAndroidSDK:testDebugUnitTest --info -run-android-unit-test-%: platform/android/gradle/configuration.gradle - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=none :MapboxGLAndroidSDK:testDebugUnitTest --info --tests "$*" - -# Run unit test and build a coverage report from .exec file generated by unit tests and .ec file generated by instrumentation tests -.PHONY: android-create-jacoco-report -android-create-jacoco-report: platform/android/gradle/configuration.gradle - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=none :MapboxGLAndroidSDK:jacocoTestReport - -# Parse merged jacoco report and send it to S3 -.PHONY: android-parse-and-send-jacoco-report -android-parse-and-send-jacoco-report: - python platform/android/scripts/parse-jacoco-report.py - -# Builds a release package of the Android SDK -.PHONY: apackage -apackage: platform/android/gradle/configuration.gradle - make android-lib-arm-v7 && make android-lib-arm-v8 && make android-lib-x86 && make android-lib-x86-64 - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=all assemble$(BUILDTYPE) - -# Build test app instrumentation tests apk and test app apk for all abi's -.PHONY: android-ui-test -android-ui-test: platform/android/gradle/configuration.gradle - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=all :MapboxGLAndroidSDKTestApp:assembleDebug :MapboxGLAndroidSDKTestApp:assembleAndroidTest - -#Run instrumentations tests on MicroSoft App Center -.PHONY: run-android-test-app-center -run-android-test-app-center: - cd platform/android && appcenter test run espresso --app "mapboxcn-outlook.com/MapsSdk" --devices "mapboxcn-outlook.com/china" --app-path MapboxGLAndroidSDKTestApp/build/outputs/apk/debug/MapboxGLAndroidSDKTestApp-debug.apk --test-series "master" --locale "en_US" --build-dir MapboxGLAndroidSDKTestApp/build/outputs/apk/androidTest/debug - -# Uploads the compiled Android SDK to Bintray -.PHONY: run-android-upload-to-bintray -run-android-upload-to-bintray: platform/android/gradle/configuration.gradle - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=all :MapboxGLAndroidSDK:bintrayUpload - -# Uploads the compiled Android SDK SNAPSHOT to oss.jfrog.org -.PHONY: run-android-upload-to-artifactory -run-android-upload-to-artifactory: platform/android/gradle/configuration.gradle - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=all :MapboxGLAndroidSDK:artifactoryPublish - -# Dump system graphics information for the test app -.PHONY: android-gfxinfo -android-gfxinfo: - adb shell dumpsys gfxinfo com.mapbox.mapboxsdk.testapp reset - -# Generates Activity sanity tests -.PHONY: test-code-android -test-code-android: - node platform/android/scripts/generate-test-code.js - -# Runs checkstyle and lint on the java code -.PHONY: android-check -android-check : android-checkstyle run-android-nitpick android-lint-sdk android-lint-test-app android-ktlint - -# Runs checkstyle on the java code -.PHONY: android-checkstyle -android-checkstyle: platform/android/gradle/configuration.gradle - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=none :MapboxGLAndroidSDK:checkstyle :MapboxGLAndroidSDKTestApp:checkstyle - -# Runs checkstyle on the kotlin code -.PHONY: android-ktlint -android-ktlint: - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=none ktlint - -# Runs lint on the Android SDK java code -.PHONY: android-lint-sdk -android-lint-sdk: platform/android/gradle/configuration.gradle - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=none :MapboxGLAndroidSDK:lint - -# Runs lint on the Android test app java code -.PHONY: android-lint-test-app -android-lint-test-app: platform/android/gradle/configuration.gradle - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=none :MapboxGLAndroidSDKTestApp:lint - -# Generates javadoc from the Android SDK -.PHONY: android-javadoc -android-javadoc: platform/android/gradle/configuration.gradle - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=none :MapboxGLAndroidSDK:javadocrelease - -# Generates platform/android/LICENSE.md file based on all Android project dependencies -.PHONY: android-license -android-license: platform/android/gradle/configuration.gradle - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=none :MapboxGLAndroidSDK:licenseReleaseReport - python platform/android/scripts/generate-license.py - -# Symbolicate ndk stack traces for the arm-v7 abi -.PHONY: android-ndk-stack -android-ndk-stack: android-ndk-stack-arm-v7 - -# Open Android Studio if machine is macos -ifeq ($(HOST_PLATFORM), macos) -.PHONY: aproj -aproj: platform/android/gradle/configuration.gradle - open -b com.google.android.studio platform/android -endif - -# Creates the configuration needed to build with Android Studio -.PHONY: android-configuration -android-configuration: platform/android/gradle/configuration.gradle - cat platform/android/gradle/configuration.gradle - -# Updates Android's vendor submodules -.PHONY: android-update-vendor -android-update-vendor: platform/android/gradle/configuration.gradle - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=none updateVendorSubmodules - -# Run android nitpick script -.PHONY: run-android-nitpick -run-android-nitpick: android-update-vendor - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=none androidNitpick - -# Creates a dependency graph using Graphviz -.PHONY: android-graph -android-graph: platform/android/gradle/configuration.gradle - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=none :MapboxGLAndroidSDK:generateDependencyGraphMapboxLibraries - -#### Miscellaneous targets ##################################################### - -.PHONY: style-code -style-code: - node scripts/generate-style-code.js - node scripts/generate-shaders.js - -.PHONY: codestyle -codestyle: - scripts/codestyle.sh - -.PHONY: clean -clean: - -rm -rf ./build \ - ./lib/*.node \ - ./platform/android/gradle/configuration.gradle \ - ./platform/android/MapboxGLAndroidSDK/build \ - ./platform/android/MapboxGLAndroidSDK/.externalNativeBuild \ - ./platform/android/MapboxGLAndroidSDKTestApp/build \ - ./platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/gen \ - ./platform/android/MapboxGLAndroidSDK/src/main/assets \ - ./platform/android/MapboxGLAndroidSDKTestApp/src/main/assets/integration - -.PHONY: distclean -distclean: clean - -rm -rf ./mason_packages - -rm -rf ./node_modules |