fixes #838 instead of rendering ad libitum on the map thread, we are now driving rendering from the UI thread on iOS via the map.renderSync() function. There are still white bars during the rotation, but the general content of the view is kept visible. - upgrades GLFW to 3.1 - removes swapped/needsSwap in favor of a more explicit scheme - View#invalidate() now replaces View#swap() and is called whenever the View needs to trigger a rerender. GLFW and Android to this right away, while iOS goes back to the main thread and does the Map redrawing as part of the GLKView update - sets all iOS deployment targets to 7.0 - disables SQLite3 version check, since the library version changed on iOS 8.2
245 lines
8.1 KiB
Makefile
245 lines
8.1 KiB
Makefile
BUILDTYPE ?= Release
|
|
PYTHON ?= python
|
|
PREFIX ?= /usr/local
|
|
ANDROID_ABI ?= arm-v7
|
|
|
|
ifeq ($(shell uname -s), Darwin)
|
|
HOST ?= osx
|
|
JOBS ?= $(shell sysctl -n hw.ncpu)
|
|
endif
|
|
HOST ?= linux
|
|
JOBS ?= 1
|
|
|
|
all: mbgl
|
|
|
|
include config/defaults.mk
|
|
|
|
#### Dependencies ##############################################################
|
|
|
|
# Wildcard targets get removed after build by default, but we want to preserve the config.
|
|
.PRECIOUS: config/%.gypi
|
|
config/%.gypi: CMD = ./configure config/$*.gypi
|
|
config/%.gypi: configure
|
|
@$(ENV_$*) ./scripts/flock.py build/Configure.lock ./configure config/$*.gypi
|
|
|
|
styles/styles:
|
|
git submodule update --init styles
|
|
|
|
#### Library builds ############################################################
|
|
|
|
.PRECIOUS: Makefile/mbgl
|
|
Makefile/mbgl: config/$(HOST).gypi styles/styles
|
|
deps/run_gyp mbgl.gyp $(CONFIG_$(HOST)) $(LIBS_$(HOST)) --generator-output=./build/$(HOST) -f make
|
|
|
|
mbgl: Makefile/mbgl
|
|
$(MAKE) -C build/$(HOST) BUILDTYPE=$(BUILDTYPE) everything
|
|
|
|
standalone: Makefile/mbgl
|
|
LINK=`pwd`/gyp/link.py $(MAKE) -C build/$(HOST) BUILDTYPE=$(BUILDTYPE) standalone
|
|
|
|
install: Makefile/mbgl
|
|
LINK=`pwd`/gyp/link.py $(MAKE) -C build/$(HOST) BUILDTYPE=$(BUILDTYPE) install
|
|
|
|
.PRECIOUS: Xcode/mbgl
|
|
Xcode/mbgl: config/$(HOST).gypi styles/styles
|
|
deps/run_gyp mbgl.gyp $(CONFIG_$(HOST)) $(LIBS_$(HOST)) --generator-output=./build/$(HOST) -f xcode
|
|
|
|
##### Test builds ##############################################################
|
|
|
|
.PRECIOUS: Makefile/test
|
|
Makefile/test: test/test.gyp config/$(HOST).gypi styles/styles
|
|
deps/run_gyp test/test.gyp $(CONFIG_$(HOST)) $(LIBS_$(HOST)) --generator-output=./build/$(HOST) -f make
|
|
|
|
test: Makefile/test
|
|
$(MAKE) -C build/$(HOST) BUILDTYPE=$(BUILDTYPE) test
|
|
|
|
test-%: test
|
|
./scripts/run_tests.sh "build/$(HOST)/$(BUILDTYPE)/test" --gtest_filter=$*
|
|
|
|
|
|
.PRECIOUS: Xcode/test
|
|
Xcode/test: test/test.gyp config/osx.gypi styles/styles
|
|
deps/run_gyp test/test.gyp $(CONFIG_osx) $(LIBS_osx) --generator-output=./build/osx -f xcode
|
|
|
|
.PHONY: lproj lbuild run-xlinux
|
|
xtest-proj: Xcode/test
|
|
open ./build/osx/test/test.xcodeproj
|
|
|
|
xtest: Xcode/test
|
|
xcodebuild -project ./build/osx/test/test.xcodeproj -configuration $(BUILDTYPE) -target test -jobs $(JOBS)
|
|
|
|
xtest-%: xtest
|
|
./scripts/run_tests.sh "build/osx/Build/Products/$(BUILDTYPE)/test" --gtest_filter=$*
|
|
|
|
|
|
#### Mac OS X application builds ###############################################
|
|
|
|
.PRECIOUS: Makefile/osx
|
|
Makefile/osx: macosx/mapboxgl-app.gyp config/osx.gypi styles/styles
|
|
deps/run_gyp macosx/mapboxgl-app.gyp $(CONFIG_osx) $(LIBS_osx) --generator-output=./build/osx -f make
|
|
|
|
.PHONY: osx run-osx
|
|
osx: Makefile/osx
|
|
$(MAKE) -C build/osx BUILDTYPE=$(BUILDTYPE) osxapp
|
|
|
|
run-osx: osx
|
|
"build/osx/$(BUILDTYPE)/Mapbox GL.app/Contents/MacOS/Mapbox GL"
|
|
|
|
|
|
.PRECIOUS: Xcode/osx
|
|
Xcode/osx: macosx/mapboxgl-app.gyp config/osx.gypi styles/styles
|
|
deps/run_gyp macosx/mapboxgl-app.gyp $(CONFIG_osx) $(LIBS_osx) --generator-output=./build/osx -f xcode
|
|
|
|
.PHONY: xosx-proj xosx run-xosx
|
|
xosx-proj: Xcode/osx
|
|
open ./build/osx/macosx/mapboxgl-app.xcodeproj
|
|
|
|
xosx: Xcode/osx
|
|
xcodebuild -project ./build/osx/macosx/mapboxgl-app.xcodeproj -configuration $(BUILDTYPE) -target osxapp -jobs $(JOBS)
|
|
|
|
run-xosx: xosx
|
|
"build/osx/Build/Products/$(BUILDTYPE)/Mapbox GL.app/Contents/MacOS/Mapbox GL"
|
|
|
|
# Legacy name
|
|
xproj: xosx-proj
|
|
|
|
|
|
|
|
#### iOS application builds ####################################################
|
|
|
|
.PRECIOUS: Xcode/ios
|
|
Xcode/ios: ios/app/mapboxgl-app.gyp config/ios.gypi styles/styles
|
|
deps/run_gyp ios/app/mapboxgl-app.gyp $(CONFIG_ios) $(LIBS_ios) --generator-output=./build/ios -f xcode
|
|
|
|
.PHONY: ios-proj ios run-ios
|
|
ios-proj: Xcode/ios
|
|
open ./build/ios/ios/app/mapboxgl-app.xcodeproj
|
|
|
|
ios: Xcode/ios
|
|
xcodebuild -sdk iphoneos ARCHS="arm64 armv7 armv7s" PROVISIONING_PROFILE="2b532944-bf3d-4bf4-aa6c-a81676984ae8" -project ./build/ios/ios/app/mapboxgl-app.xcodeproj -configuration Release -target iosapp -jobs $(JOBS)
|
|
|
|
isim: Xcode/ios
|
|
xcodebuild -sdk iphonesimulator ARCHS="x86_64 i386" -project ./build/ios/ios/app/mapboxgl-app.xcodeproj -configuration Debug -target iosapp -jobs $(JOBS)
|
|
|
|
# Legacy name
|
|
iproj: ios-proj
|
|
|
|
|
|
#### Linux application builds ##################################################
|
|
|
|
.PRECIOUS: Makefile/linux
|
|
Makefile/linux: linux/mapboxgl-app.gyp config/$(HOST).gypi styles/styles
|
|
deps/run_gyp linux/mapboxgl-app.gyp $(CONFIG_$(HOST)) $(LIBS_linux) --generator-output=./build/$(HOST) -f make
|
|
|
|
.PHONY: linux run-linux
|
|
linux: Makefile/linux
|
|
$(MAKE) -C build/$(HOST) BUILDTYPE=$(BUILDTYPE) linuxapp
|
|
|
|
run-linux: linux
|
|
(cd build/$(HOST)/$(BUILDTYPE) && ./mapbox-gl)
|
|
|
|
|
|
.PRECIOUS: Xcode/linux
|
|
Xcode/linux: linux/mapboxgl-app.gyp config/osx.gypi styles/styles
|
|
deps/run_gyp linux/mapboxgl-app.gyp $(CONFIG_osx) $(LIBS_linux) --generator-output=./build/osx -f xcode
|
|
|
|
.PHONY: lproj lbuild run-xlinux
|
|
xlinux-proj: Xcode/linux
|
|
open ./build/osx/linux/mapboxgl-app.xcodeproj
|
|
|
|
xlinux: Xcode/linux
|
|
xcodebuild -project ./build/osx/linux/mapboxgl-app.xcodeproj -configuration $(BUILDTYPE) -target linuxapp
|
|
|
|
run-xlinux: xlinux
|
|
"build/osx/Build/Products/$(BUILDTYPE)/mapbox-gl"
|
|
|
|
# Legacy name
|
|
lproj: xlinux-proj
|
|
|
|
|
|
#### Android libaries #########################################################
|
|
|
|
.PRECIOUS: Makefile/android-%
|
|
Makefile/android-%: CMD = deps/run_gyp android/mapboxgl-app.gyp $(CONFIG_android-$*) $(LIBS_android) --generator-output=./build/android-$* -f make-android
|
|
Makefile/android-%: config/android-%.gypi styles/styles
|
|
@echo $(CMD)
|
|
@$(ENV_android-$*) $(CMD)
|
|
|
|
# Builds a particular android architecture.
|
|
android-lib-%: Makefile/android-%
|
|
@$(ENV_android-$*) ./scripts/flock.py -v build/Android.lock $(MAKE) -C build/android-$* BUILDTYPE=$(BUILDTYPE) androidapp
|
|
|
|
# Builds the selected/default Android library
|
|
android-lib: android-lib-$(ANDROID_ABI)
|
|
|
|
# Builds the selected/default Android library
|
|
android: android-lib-$(ANDROID_ABI)
|
|
cd android/java && ./gradlew --parallel-threads=$(JOBS) assemble$(BUILDTYPE)
|
|
|
|
# Builds all android architectures.
|
|
android-all: $(ANDROID_ABIS)
|
|
cd android/java && ./gradlew --parallel-threads=$(JOBS) assemble$(BUILDTYPE)
|
|
|
|
# Full build of GL Core for each architecture, build the Android Library, publish to Maven Central
|
|
android-deploy: $(ANDROID_ABIS)
|
|
cd android/java/MapboxGLAndroidSDK && chmod ugo+x deploy.sh && ./deploy.sh
|
|
|
|
android-project: android-lib
|
|
|
|
##### Render builds ############################################################
|
|
|
|
.PRECIOUS: Makefile/render
|
|
Makefile/render: bin/render.gyp config/$(HOST).gypi
|
|
deps/run_gyp bin/render.gyp $(CONFIG_$(HOST)) $(LIBS_$(HOST)) --generator-output=./build/$(HOST) -f make
|
|
|
|
render: Makefile/render
|
|
$(MAKE) -C build/$(HOST) BUILDTYPE=$(BUILDTYPE) mbgl-render
|
|
|
|
.PRECIOUS: Xcode/render
|
|
Xcode/render: bin/render.gyp config/osx.gypi styles/styles
|
|
deps/run_gyp bin/render.gyp $(CONFIG_osx) $(LIBS_osx) --generator-output=./build/osx -f xcode
|
|
|
|
.PHONY: xrender-proj
|
|
xrender-proj: Xcode/render
|
|
open ./build/osx/bin/render.xcodeproj
|
|
|
|
|
|
##### Maintenace operations ####################################################
|
|
|
|
.PHONY: clear_xcode_cache
|
|
clear_xcode_cache:
|
|
ifeq ($(PLATFORM), osx)
|
|
@CUSTOM_DD=`defaults read com.apple.dt.Xcode IDECustomDerivedDataLocation 2>/dev/null`; \
|
|
if [ $$CUSTOM_DD ]; then \
|
|
echo clearing files in $$CUSTOM_DD older than one day; \
|
|
find $$CUSTOM_DD/mapboxgl-app-* -mtime +1 | xargs rm -rf; \
|
|
fi; \
|
|
if [ -d ~/Library/Developer/Xcode/DerivedData/ ] && [ ! $$CUSTOM_DD ]; then \
|
|
echo 'clearing files in ~/Library/Developer/Xcode/DerivedData/mapboxgl-app-* older than one day'; \
|
|
find ~/Library/Developer/Xcode/DerivedData/mapboxgl-app-* -mtime +1 | xargs rm -rf; \
|
|
fi
|
|
endif
|
|
|
|
.PHONY: clear_sqlite_cache
|
|
clear_sqlite_cache:
|
|
ifeq ($(PLATFORM), osx)
|
|
rm -f ~/Library/Application\ Support/Mapbox\ GL/cache.db
|
|
else
|
|
rm -f /tmp/mbgl-cache.db
|
|
endif
|
|
|
|
clean: clear_sqlite_cache clear_xcode_cache
|
|
-find ./deps/gyp -name "*.pyc" -exec rm {} \;
|
|
-rm -rf ./build/
|
|
-rm -rf ./macosx/build
|
|
-rm -rf ./linux/build
|
|
-rm -rf ./ios/build
|
|
-rm -rf ./test/build
|
|
-rm -rf ./config/*.gypi
|
|
-rm -rf ./android/java/build ./android/java/MapboxGLAndroidSDKTestApp/build ./android/java/MapboxGLAndroidSDKTestApp/build
|
|
-rm -rf ./android/java/MapboxGLAndroidSDK/src/main/jniLibs ./android/java/MapboxGLAndroidSDK/src/main/assets
|
|
-rm -f ./android/test/features.zip
|
|
|
|
distclean: clean
|
|
-rm -rf ./mason_packages
|