Made storyboards and strings throughout the SDK and iosapp localizable. Replaced the compass image with an unlabeled image. Draw a localizable string atop it at runtime. Redefined NSLocalizedString() and NSLocalizedStringFromTable() macros to look at the SDK bundle rather than the main application bundle. This redefinition has no effect on the host application, because it’s in an internal header. That header must be included in all files that contain localizable strings. See NSBundle+MGLAdditions.h for a full explanation. Added a make rule that runs genstrings and ensures UTF-8 output (since genstrings insists on UTF-16). Use MGLCoordinateFormatter in iosapp for dropped pin callouts. Rely on subclasses of MGLPointAnnotation instead of annotation titles to distinguish between different kinds of point annotations.
258 lines
8.1 KiB
Makefile
258 lines
8.1 KiB
Makefile
export BUILDTYPE ?= Release
|
|
export ENABLE_COVERAGE ?= 0
|
|
|
|
ifeq ($(shell uname -s), Darwin)
|
|
export JOBS ?= $(shell sysctl -n hw.ncpu)
|
|
else ifeq ($(shell uname -s), Linux)
|
|
export JOBS ?= $(shell grep --count processor /proc/cpuinfo)
|
|
else
|
|
$(error Cannot determine host platform)
|
|
endif
|
|
|
|
ifneq (,$(wildcard .git/.))
|
|
.mason:
|
|
git submodule update --init
|
|
else
|
|
.mason: ;
|
|
endif
|
|
|
|
RUN = +$(MAKE) -f scripts/main.mk
|
|
|
|
default:
|
|
@printf "You must specify a valid target\n"
|
|
|
|
# Depend on gyp includes plus directories, so that projects are regenerated when
|
|
# files are added or removed.
|
|
GYP_DEPENDENCIES = mbgl.gypi test/test.gypi bin/*.gypi $(shell find src include -type d)
|
|
|
|
#### OS X targets ##############################################################
|
|
|
|
OSX_OUTPUT_PATH = build/osx
|
|
OSX_PROJ_PATH = $(OSX_OUTPUT_PATH)/platform/osx/platform.xcodeproj
|
|
OSX_WORK_PATH = platform/osx/osx.xcworkspace
|
|
OSX_USER_DATA_PATH = $(OSX_WORK_PATH)/xcuserdata/$(USER).xcuserdatad
|
|
|
|
$(OSX_OUTPUT_PATH)/config.gypi: platform/osx/scripts/configure.sh .mason configure
|
|
MASON_PLATFORM=osx ./configure $< $@
|
|
|
|
$(OSX_OUTPUT_PATH)/mbgl.xcconfig: $(OSX_OUTPUT_PATH)/config.gypi
|
|
./scripts/export-xcconfig.py $< $@
|
|
|
|
$(OSX_PROJ_PATH): platform/osx/platform.gyp $(OSX_OUTPUT_PATH)/config.gypi $(OSX_OUTPUT_PATH)/mbgl.xcconfig $(GYP_DEPENDENCIES)
|
|
./deps/run_gyp -f xcode --depth=. --generator-output=$(OSX_OUTPUT_PATH) $<
|
|
|
|
osx: $(OSX_PROJ_PATH)
|
|
set -o pipefail && xcodebuild \
|
|
-derivedDataPath $(OSX_OUTPUT_PATH) \
|
|
-configuration $(BUILDTYPE) \
|
|
-workspace $(OSX_WORK_PATH) -scheme CI build | xcpretty
|
|
|
|
xproj: $(OSX_PROJ_PATH) $(OSX_WORK_PATH)
|
|
mkdir -p "$(OSX_USER_DATA_PATH)"
|
|
cp platform/osx/WorkspaceSettings.xcsettings "$(OSX_USER_DATA_PATH)/WorkspaceSettings.xcsettings"
|
|
open $(OSX_WORK_PATH)
|
|
|
|
test-osx: osx node_modules/express
|
|
ulimit -c unlimited && ($(OSX_OUTPUT_PATH)/Build/Products/$(BUILDTYPE)/test & pid=$$! && wait $$pid \
|
|
|| (lldb -c /cores/core.$$pid --batch --one-line 'thread backtrace all' --one-line 'quit' && exit 1))
|
|
set -o pipefail && xcodebuild \
|
|
-derivedDataPath $(OSX_OUTPUT_PATH) \
|
|
-configuration $(BUILDTYPE) \
|
|
-workspace $(OSX_WORK_PATH) -scheme CI test | xcpretty
|
|
|
|
#### iOS targets ##############################################################
|
|
|
|
IOS_OUTPUT_PATH = build/ios
|
|
IOS_PROJ_PATH = $(IOS_OUTPUT_PATH)/platform/ios/platform.xcodeproj
|
|
IOS_WORK_PATH = platform/ios/ios.xcworkspace
|
|
IOS_USER_DATA_PATH = $(IOS_WORK_PATH)/xcuserdata/$(USER).xcuserdatad
|
|
|
|
$(IOS_OUTPUT_PATH)/config.gypi: platform/ios/scripts/configure.sh .mason configure
|
|
MASON_PLATFORM=ios ./configure $< $@
|
|
|
|
$(IOS_OUTPUT_PATH)/mbgl.xcconfig: $(IOS_OUTPUT_PATH)/config.gypi
|
|
./scripts/export-xcconfig.py $< $@
|
|
|
|
$(IOS_PROJ_PATH): platform/ios/platform.gyp $(IOS_OUTPUT_PATH)/config.gypi $(IOS_OUTPUT_PATH)/mbgl.xcconfig $(GYP_DEPENDENCIES)
|
|
./deps/run_gyp -f xcode --depth=. --generator-output=$(IOS_OUTPUT_PATH) $<
|
|
|
|
ios: $(IOS_PROJ_PATH)
|
|
set -o pipefail && xcodebuild \
|
|
ARCHS=x86_64 ONLY_ACTIVE_ARCH=YES \
|
|
-derivedDataPath $(IOS_OUTPUT_PATH) \
|
|
-configuration $(BUILDTYPE) -sdk iphonesimulator \
|
|
-destination 'platform=iOS Simulator,name=iPhone 6,OS=latest' \
|
|
-workspace $(IOS_WORK_PATH) -scheme CI build | xcpretty
|
|
|
|
iproj: $(IOS_PROJ_PATH)
|
|
mkdir -p "$(IOS_USER_DATA_PATH)"
|
|
cp platform/ios/WorkspaceSettings.xcsettings "$(IOS_USER_DATA_PATH)/WorkspaceSettings.xcsettings"
|
|
open $(IOS_WORK_PATH)
|
|
|
|
test-ios: ios
|
|
ios-sim start --devicetypeid 'com.apple.CoreSimulator.SimDeviceType.iPhone-6,9.3'
|
|
ios-sim launch $(IOS_OUTPUT_PATH)/Build/Products/$(BUILDTYPE)-iphonesimulator/ios-test.app --verbose --devicetypeid 'com.apple.CoreSimulator.SimDeviceType.iPhone-6,9.3'
|
|
set -o pipefail && xcodebuild \
|
|
ARCHS=x86_64 ONLY_ACTIVE_ARCH=YES \
|
|
-derivedDataPath $(IOS_OUTPUT_PATH) \
|
|
-configuration $(BUILDTYPE) -sdk iphonesimulator \
|
|
-destination 'platform=iOS Simulator,name=iPhone 6,OS=latest' \
|
|
-workspace $(IOS_WORK_PATH) -scheme CI test | xcpretty
|
|
|
|
ipackage: $(IOS_PROJ_PATH)
|
|
BITCODE=$(BITCODE) FORMAT=$(FORMAT) BUILD_DEVICE=$(BUILD_DEVICE) SYMBOLS=$(SYMBOLS) \
|
|
BUNDLE_RESOURCES=YES PLACE_RESOURCE_BUNDLES_OUTSIDE_FRAMEWORK=YES \
|
|
./platform/ios/scripts/package.sh
|
|
|
|
ipackage-strip: $(IOS_PROJ_PATH)
|
|
BITCODE=$(BITCODE) FORMAT=$(FORMAT) BUILD_DEVICE=$(BUILD_DEVICE) SYMBOLS=NO \
|
|
BUNDLE_RESOURCES=YES PLACE_RESOURCE_BUNDLES_OUTSIDE_FRAMEWORK=YES \
|
|
./platform/ios/scripts/package.sh
|
|
|
|
ipackage-sim: $(IOS_PROJ_PATH)
|
|
BUILDTYPE=Debug BITCODE=$(BITCODE) FORMAT=dynamic BUILD_DEVICE=false SYMBOLS=$(SYMBOLS) \
|
|
BUNDLE_RESOURCES=YES PLACE_RESOURCE_BUNDLES_OUTSIDE_FRAMEWORK=YES \
|
|
./platform/ios/scripts/package.sh
|
|
|
|
iframework: $(IOS_PROJ_PATH)
|
|
BITCODE=$(BITCODE) FORMAT=dynamic BUILD_DEVICE=$(BUILD_DEVICE) SYMBOLS=$(SYMBOLS) \
|
|
./platform/ios/scripts/package.sh
|
|
|
|
ifabric: $(IOS_PROJ_PATH)
|
|
BITCODE=$(BITCODE) FORMAT=static BUILD_DEVICE=$(BUILD_DEVICE) SYMBOLS=NO BUNDLE_RESOURCES=YES \
|
|
./platform/ios/scripts/package.sh
|
|
|
|
idocument:
|
|
OUTPUT=$(OUTPUT) ./platform/ios/scripts/document.sh
|
|
|
|
igenstrings:
|
|
genstrings -u -o platform/ios/app/Base.lproj platform/ios/app/*.{m,mm}
|
|
genstrings -u -o platform/ios/resources/Base.lproj platform/ios/src/*.{m,mm}
|
|
-find platform/ios/ -path '*/Base.lproj/Localizable.strings' -exec \
|
|
textutil -convert txt -extension strings -inputencoding UTF-16 -encoding UTF-8 {} \;
|
|
|
|
#### Android targets #####################################################
|
|
|
|
# Builds a particular android architecture.
|
|
android-lib-%:
|
|
$(RUN) PLATFORM=android SUBPLATFORM=$* Makefile/all
|
|
|
|
# Builds the default Android library
|
|
.PHONY: android-lib
|
|
android-lib: android-lib-arm-v7
|
|
|
|
# Builds the selected/default Android library
|
|
.PHONY: android
|
|
android: android-lib
|
|
cd platform/android && ./gradlew --parallel --max-workers=$(JOBS) assemble$(BUILDTYPE)
|
|
|
|
# Builds all android architectures for distribution.
|
|
.PHONY: apackage
|
|
apackage: android-lib-arm-v5 android-lib-arm-v7 android-lib-arm-v8 android-lib-x86 android-lib-x86-64 android-lib-mips
|
|
cd platform/android && ./gradlew --parallel-threads=$(JOBS) assemble$(BUILDTYPE)
|
|
|
|
test-android:
|
|
cd platform/android && ./gradlew testReleaseUnitTest --continue
|
|
|
|
#### Node targets #####################################################
|
|
|
|
node_modules: package.json
|
|
npm update # Install dependencies but don't run our own install script.
|
|
|
|
.PHONY: node
|
|
node: node_modules
|
|
$(RUN) PLATFORM=node Makefile/node
|
|
|
|
.PHONY: xnode
|
|
xnode:
|
|
$(RUN) Xcode/node
|
|
./platform/node/scripts/create_node_scheme.sh "node test" "`npm bin tape`/tape platform/node/test/js/**/*.test.js"
|
|
./platform/node/scripts/create_node_scheme.sh "npm run test-suite" "platform/node/test/render.test.js"
|
|
open ./build/binding.xcodeproj
|
|
|
|
.PHONY: test-node
|
|
test-node: node
|
|
npm test
|
|
npm run test-suite
|
|
|
|
#### Qt targets #####################################################
|
|
|
|
.PHONY: qt-lib
|
|
qt-lib:
|
|
$(RUN) PLATFORM=qt Makefile/qt-lib
|
|
|
|
.PHONY: qt-app
|
|
qt-app:
|
|
$(RUN) PLATFORM=qt Makefile/qt-app
|
|
|
|
.PHONY: run-qt-app
|
|
run-qt-app: qt-app
|
|
$(RUN) PLATFORM=qt run-qt-app
|
|
|
|
.PHONY: test-qt
|
|
test-qt: node_modules/express
|
|
$(RUN) PLATFORM=qt test-*
|
|
|
|
#### Miscellaneous targets #####################################################
|
|
|
|
.PHONY: linux
|
|
linux: glfw-app render offline
|
|
|
|
.PHONY: test-linux
|
|
test-linux: test-*
|
|
|
|
.PHONY: glfw-app
|
|
glfw-app:
|
|
$(RUN) Makefile/glfw-app
|
|
|
|
.PHONY: run-glfw-app
|
|
run-glfw-app: glfw-app
|
|
$(RUN) run-glfw-app
|
|
|
|
.PHONY: run-valgrind-glfw-app
|
|
run-valgrind-glfw-app: glfw-app
|
|
$(RUN) run-valgrind-glfw-app
|
|
|
|
.PHONY: test
|
|
test:
|
|
$(RUN) Makefile/test
|
|
|
|
test-%: node_modules/express
|
|
$(RUN) test-$*
|
|
|
|
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
|
|
|
|
# Generates a compilation database with ninja for use in clang tooling
|
|
.PHONY: compdb
|
|
compdb:
|
|
$(RUN) Ninja/compdb
|
|
|
|
.PHONY: tidy
|
|
tidy:
|
|
$(RUN) tidy
|
|
|
|
clean:
|
|
-find ./deps/gyp -name "*.pyc" -exec rm {} \;
|
|
-rm -rf ./build \
|
|
./platform/android/MapboxGLAndroidSDK/build \
|
|
./platform/android/MapboxGLAndroidSDKTestApp/build \
|
|
./platform/android/MapboxGLAndroidSDK/src/main/jniLibs \
|
|
./platform/android/MapboxGLAndroidSDKTestApp/src/main/jniLibs \
|
|
./platform/android/MapboxGLAndroidSDK/src/main/assets
|
|
|
|
distclean: clean
|
|
-rm -rf ./mason_packages
|