diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 244 |
1 files changed, 184 insertions, 60 deletions
@@ -32,6 +32,10 @@ else BUILD_PLATFORM_VERSION = $(MASON_PLATFORM_VERSION) endif +ifeq ($(MASON_PLATFORM),macos) + MASON_PLATFORM=osx +endif + ifeq ($(V), 1) export XCPRETTY NINJA_ARGS ?= -v @@ -43,18 +47,10 @@ endif .PHONY: default default: test -ifneq (,$(wildcard .git/.)) -.mason/mason: - git submodule update --init -else -.mason/mason: ; -endif - .NOTPARALLEL: node_modules node_modules: package.json - npm update # Install dependencies but don't run our own install script. + npm install --ignore-scripts # Install dependencies but don't run our own install script. -BUILD_DEPS += .mason/mason BUILD_DEPS += Makefile BUILD_DEPS += node_modules BUILD_DEPS += CMakeLists.txt @@ -190,18 +186,12 @@ $(MACOS_COMPDB_PATH)/Makefile: compdb: $(BUILD_DEPS) $(TEST_DEPS) $(MACOS_COMPDB_PATH)/Makefile @$(MAKE) -C $(MACOS_COMPDB_PATH) cmake_check_build_system -.PHONY: clang-tools -clang-tools: compdb - if test -z $(CLANG_TIDY); then .mason/mason install clang-tidy 3.8.0; fi - if test -z $(CLANG_FORMAT); then .mason/mason install clang-format 3.8.0; fi - $(MAKE) -C $(MACOS_COMPDB_PATH) mbgl-headers - .PHONY: tidy -tidy: clang-tools +tidy: compdb scripts/clang-tools.sh $(MACOS_COMPDB_PATH) .PHONY: check -check: clang-tools +check: compdb scripts/clang-tools.sh $(MACOS_COMPDB_PATH) --diff endif @@ -226,7 +216,9 @@ $(IOS_PROJ_PATH): $(IOS_USER_DATA_PATH)/WorkspaceSettings.xcsettings $(BUILD_DEP mkdir -p $(IOS_OUTPUT_PATH) (cd $(IOS_OUTPUT_PATH) && cmake -G Xcode ../.. \ -DCMAKE_TOOLCHAIN_FILE=../../platform/ios/toolchain.cmake \ - -DMBGL_PLATFORM=ios) + -DMBGL_PLATFORM=ios \ + -DMASON_PLATFORM=ios \ + -DMASON_PLATFORM_VERSION=8.0) $(IOS_USER_DATA_PATH)/WorkspaceSettings.xcsettings: platform/ios/WorkspaceSettings.xcsettings mkdir -p "$(IOS_USER_DATA_PATH)" @@ -277,12 +269,19 @@ ideploy: idocument: OUTPUT=$(OUTPUT) ./platform/ios/scripts/document.sh -style-code-darwin: +.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: check-public-symbols +check-public-symbols: + node platform/darwin/scripts/check-public-symbols.js macOS endif #### Linux targets ##################################################### @@ -300,7 +299,8 @@ $(LINUX_BUILD): $(BUILD_DEPS) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ -DWITH_CXX11ABI=$(shell scripts/check-cxx11abi.sh) \ -DWITH_COVERAGE=${WITH_COVERAGE} \ - -DWITH_OSMESA=${WITH_OSMESA}) + -DWITH_OSMESA=${WITH_OSMESA} \ + -DWITH_EGL=${WITH_EGL}) .PHONY: linux linux: glfw-app render offline @@ -353,18 +353,12 @@ node: $(LINUX_BUILD) compdb: $(LINUX_BUILD) # Ninja generator already outputs the file at the right location -.PHONY: clang-tools -clang-tools: compdb - if test -z $(CLANG_TIDY); then .mason/mason install clang-tidy 3.8.0; fi - if test -z $(CLANG_FORMAT); then .mason/mason install clang-format 3.8.0; fi - $(NINJA) $(NINJA_ARGS) -j$(JOBS) -C $(LINUX_OUTPUT_PATH) mbgl-headers - .PHONY: tidy -tidy: clang-tools +tidy: compdb scripts/clang-tools.sh $(LINUX_OUTPUT_PATH) .PHONY: check -check: clang-tools +check: compdb scripts/clang-tools.sh $(LINUX_OUTPUT_PATH) --diff endif @@ -390,9 +384,10 @@ $(QT_BUILD): $(BUILD_DEPS) -DCMAKE_BUILD_TYPE=$(BUILDTYPE) \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ -DMBGL_PLATFORM=qt \ - -DMASON_PLATFORM=$(BUILD_PLATFORM) \ - -DMASON_PLATFORM_VERSION=$(BUILD_PLATFORM_VERSION) \ + -DMASON_PLATFORM=$(MASON_PLATFORM) \ + -DMASON_PLATFORM_VERSION=$(MASON_PLATFORM_VERSION) \ -DWITH_QT_DECODERS=${WITH_QT_DECODERS} \ + -DWITH_QT_I18N=${WITH_QT_I18N} \ -DWITH_QT_4=${WITH_QT_4} \ -DWITH_CXX11ABI=$(shell scripts/check-cxx11abi.sh) \ -DWITH_COVERAGE=${WITH_COVERAGE}) @@ -404,9 +399,10 @@ $(MACOS_QT_PROJ_PATH): $(BUILD_DEPS) mkdir -p $(QT_ROOT_PATH)/xcode (cd $(QT_ROOT_PATH)/xcode && cmake -G Xcode ../../.. \ -DMBGL_PLATFORM=qt \ - -DMASON_PLATFORM=$(BUILD_PLATFORM) \ - -DMASON_PLATFORM_VERSION=$(BUILD_PLATFORM_VERSION) \ + -DMASON_PLATFORM=$(MASON_PLATFORM) \ + -DMASON_PLATFORM_VERSION=$(MASON_PLATFORM_VERSION) \ -DWITH_QT_DECODERS=${WITH_QT_DECODERS} \ + -DWITH_QT_I18N=${WITH_QT_I18N} \ -DWITH_QT_4=${WITH_QT_4} \ -DWITH_CXX11ABI=$(shell scripts/check-cxx11abi.sh) \ -DWITH_COVERAGE=${WITH_COVERAGE}) @@ -469,71 +465,199 @@ test-node: node #### Android targets ########################################################### -ANDROID_ENV = platform/android/scripts/toolchain.sh -ANDROID_ABIS = arm-v5 arm-v7 arm-v8 x86 x86-64 mips - -.PHONY: style-code-android -style-code-android: $(BUILD_DEPS) +MBGL_ANDROID_ABIS = arm-v5-9 arm-v7-9 arm-v8-21 x86-9 x86-64-21 mips-9 +MBGL_ANDROID_LOCAL_WORK_DIR = /data/local/tmp/core-tests +MBGL_ANDROID_LIBDIR = lib$(if $(filter arm-v8-21 x86-64-21,$1),64) +MBGL_ANDROID_DALVIKVM = dalvikvm$(if $(filter arm-v8-21 x86-64-21,$1),64,32) +MBGL_ANDROID_APK_SUFFIX = $(if $(filter Release,$(BUILDTYPE)),release-unsigned,debug) +MBGL_ANDROID_CORE_TEST_DIR = build/android-$1/$(BUILDTYPE)/core-tests + +.PHONY: android-help +android-help: + @echo + @echo "Available Android architecture targets:" + @echo + @echo " make android-arm-v5-9" + @echo " (android-arm-v5)" + @echo " make android-arm-v7-9" + @echo " (android, android-arm-v7)" + @echo " make android-arm-v8-21" + @echo " (android-arm-v8)" + @echo " make android-mips-9" + @echo " (android-mips)" + @echo " make android-mips-64-21" + @echo " (android-mips-64)" + @echo " make android-x86-9" + @echo " (android-x86)" + @echo " make android-x86-64-21" + @echo " (android-x86-64)" + @echo " make apackage" + @echo + +.PHONY: android-style-code +android-style-code: node platform/android/scripts/generate-style-code.js +style-code: android-style-code define ANDROID_RULES -build/android-$1/$(BUILDTYPE): style-code-android - mkdir -p build/android-$1/$(BUILDTYPE) - -build/android-$1/$(BUILDTYPE)/toolchain.cmake: platform/android/scripts/toolchain.sh build/android-$1/$(BUILDTYPE) - $(ANDROID_ENV) $1 > build/android-$1/$(BUILDTYPE)/toolchain.cmake - -build/android-$1/$(BUILDTYPE)/Makefile: build/android-$1/$(BUILDTYPE)/toolchain.cmake platform/android/config.cmake +build/android-$1/$(BUILDTYPE)/build.ninja: $(BUILD_DEPS) platform/android/config.cmake + @mkdir -p build/android-$1/$(BUILDTYPE) + export MASON_XC_ROOT=`scripts/mason.sh PREFIX android-ndk VERSION $1-r13b` && \ cd build/android-$1/$(BUILDTYPE) && cmake ../../.. -G Ninja \ - -DCMAKE_TOOLCHAIN_FILE=build/android-$1/$(BUILDTYPE)/toolchain.cmake \ + -DMASON_XC_ROOT="$$$${MASON_XC_ROOT}" \ + -DCMAKE_TOOLCHAIN_FILE="$$$${MASON_XC_ROOT}/toolchain.cmake" \ -DCMAKE_BUILD_TYPE=$(BUILDTYPE) \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ - -DMBGL_PLATFORM=android + -DMBGL_PLATFORM=android \ + -DMASON_PLATFORM=android \ + -DMASON_PLATFORM_VERSION=$1 + +.PHONY: android-test-lib-$1 +android-test-lib-$1: build/android-$1/$(BUILDTYPE)/build.ninja + $(NINJA) $(NINJA_ARGS) -j$(JOBS) -C build/android-$1/$(BUILDTYPE) mbgl-test .PHONY: android-lib-$1 -android-lib-$1: build/android-$1/$(BUILDTYPE)/Makefile - $(NINJA) $(NINJA_ARGS) -j$(JOBS) -C build/android-$1/$(BUILDTYPE) all +android-lib-$1: build/android-$1/$(BUILDTYPE)/build.ninja + $(NINJA) $(NINJA_ARGS) -j$(JOBS) -C build/android-$1/$(BUILDTYPE) mapbox-gl example-custom-layer .PHONY: android-$1 android-$1: android-lib-$1 - cd platform/android && ./gradlew --parallel --max-workers=$(JOBS) assemble$(BUILDTYPE) + cd platform/android && ./gradlew --parallel --max-workers=$(JOBS) :MapboxGLAndroidSDKTestApp:assemble$(BUILDTYPE) + +.PHONY: android-core-test-$1 +android-core-test-$1: android-test-lib-$1 + mkdir -p $(MBGL_ANDROID_CORE_TEST_DIR) + + # Compile main sources and extract the classes (using the test app to get all transitive dependencies in one place) + cd platform/android && ./gradlew :MapboxGLAndroidSDKTestApp:assemble$(BUILDTYPE) + unzip -o platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk/MapboxGLAndroidSDKTestApp-$(MBGL_ANDROID_APK_SUFFIX).apk classes.dex -d $(MBGL_ANDROID_CORE_TEST_DIR) + + # Compile Test runner + find platform/android/src/test -name "*.java" > $(MBGL_ANDROID_CORE_TEST_DIR)/java-sources.txt + javac -sourcepath platform/android/src/test -d $(MBGL_ANDROID_CORE_TEST_DIR) -source 1.7 -target 1.7 @$(MBGL_ANDROID_CORE_TEST_DIR)/java-sources.txt + + # Combine and dex + cd $(MBGL_ANDROID_CORE_TEST_DIR) && $(ANDROID_HOME)/build-tools/25.0.0/dx --dex --output=test.jar *.class classes.dex + +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" + + # Generate zipped asset files + cd test/fixtures/api && zip -r assets.zip assets && cd - + cd test/fixtures/storage && zip -r assets.zip assets && cd - + + # Push all needed files to the device + adb push $(MBGL_ANDROID_CORE_TEST_DIR)/test.jar $(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 build/android-$1/$(BUILDTYPE)/stripped/libmapbox-gl.so $(MBGL_ANDROID_LOCAL_WORK_DIR) > /dev/null 2>&1 + adb push build/android-$1/$(BUILDTYPE)/stripped/libmbgl-test.so $(MBGL_ANDROID_LOCAL_WORK_DIR) > /dev/null 2>&1 + + # Kick off the tests + adb shell "export LD_LIBRARY_PATH=/system/$(MBGL_ANDROID_LIBDIR):$(MBGL_ANDROID_LOCAL_WORK_DIR) && cd $(MBGL_ANDROID_LOCAL_WORK_DIR) && $(MBGL_ANDROID_DALVIKVM) -cp $(MBGL_ANDROID_LOCAL_WORK_DIR)/test.jar Main --gtest_filter=$$*" + + # 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 + +.PHONY: run-android-core-test-$1 +run-android-core-test-$1: run-android-core-test-$1-* + +.PHONY: run-android-$1 +run-android-$1: android-$1 + cd platform/android && ./gradlew :MapboxGLAndroidSDKTestApp:install$(BUILDTYPE) && adb shell am start -n com.mapbox.mapboxsdk.testapp/.activity.FeatureOverviewActivity apackage: android-lib-$1 endef -$(foreach abi,$(ANDROID_ABIS),$(eval $(call ANDROID_RULES,$(abi)))) +$(foreach abi,$(MBGL_ANDROID_ABIS),$(eval $(call ANDROID_RULES,$(abi)))) + +# Backwards compatibility +%-arm-v5: %-arm-v5-9 ; +%-arm-v7: %-arm-v7-9 ; +%-arm-v8: %-arm-v8-21 ; +%-mips: %-mips-9 ; +%-mips-64: %-mips-64-21 ; +%-x86: %-x86-9 ; +%-x86-64: %-x86-64-21 ; .PHONY: android -android: android-arm-v7 +android: android-arm-v7-9 + +.PHONY: run-android +run-android: run-android-arm-v7-9 + +.PHONY: run-android-unit-test +run-android-unit-test: + cd platform/android && ./gradlew :MapboxGLAndroidSDKTestApp:testDebugUnitTest --continue + +run-android-unit-test-%: + cd platform/android && ./gradlew :MapboxGLAndroidSDKTestApp:testDebugUnitTest --tests "$*" -.PHONY: android-test -android-test: - cd platform/android && ./gradlew testDebugUnitTest --continue +.PHONY: run-android-wear-unit-test +run-android-wear-unit-test: + cd platform/android && ./gradlew :MapboxGLAndroidSDKWearTestApp:testDebugUnitTest --continue -.PHONY: android-test-apk -android-test-apk: - cd platform/android && ./gradlew assembleDebug --continue && ./gradlew assembleAndroidTest --continue +.PHONY: android-ui-test +android-ui-test: + cd platform/android && ./gradlew :MapboxGLAndroidSDKTestApp:assembleDebug --continue && ./gradlew :MapboxGLAndroidSDKTestApp:assembleAndroidTest --continue + +.PHONY: run-android-ui-test +run-android-ui-test: + cd platform/android && ./gradlew :MapboxGLAndroidSDKTestApp:connectedAndroidTest -i + +run-android-ui-test-%: + cd platform/android && ./gradlew :MapboxGLAndroidSDKTestApp:connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class="$*" + +.PHONY: run-android-ui-test-aws +run-android-ui-test-aws: + cd platform/android && ./gradlew devicefarmUpload + +.PHONY: run-android-ui-test-spoon +run-android-ui-test-spoon: + cd platform/android && ./gradlew spoon .PHONY: apackage apackage: - cd platform/android && ./gradlew --parallel-threads=$(JOBS) assemble$(BUILDTYPE) + cd platform/android && ./gradlew --parallel --max-workers=$(JOBS) assemble$(BUILDTYPE) -.PHONY: android-generate-test -android-generate-test: +.PHONY: test-code-android +test-code-android: node platform/android/scripts/generate-test-code.js +.PHONY: android-ndk-stack +android-ndk-stack: + adb logcat | ndk-stack -sym build/android-arm-v7-9/Debug + +.PHONY: android-checkstyle +android-checkstyle: + cd platform/android && ./gradlew checkstyle + +.PHONY: android-javadoc +android-javadoc: + cd platform/android && ./gradlew :MapboxGLAndroidSDK:javadocrelease + #### 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 \ ./platform/android/MapboxGLAndroidSDK/build \ ./platform/android/MapboxGLAndroidSDKTestApp/build \ + ./platform/android/MapboxGLAndroidSDKWearTestApp/build \ + ./platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/gen \ ./platform/android/MapboxGLAndroidSDK/src/main/jniLibs \ ./platform/android/MapboxGLAndroidSDKTestApp/src/main/jniLibs \ ./platform/android/MapboxGLAndroidSDK/src/main/assets |