summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2015-01-29 18:30:46 +0100
committerKonstantin Käfer <mail@kkaefer.com>2015-02-04 10:49:09 +0100
commit29baacf3a5bb773d94d08d16b81c3cda45a44eb6 (patch)
tree1dc3ca456151138ee5e8b7cf88b3afcecc3df1db /Makefile
parent3d51e116a84ee168975bcee8377e9156f77e2731 (diff)
downloadqtlocation-mapboxgl-29baacf3a5bb773d94d08d16b81c3cda45a44eb6.tar.gz
refactor makefile
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile161
1 files changed, 108 insertions, 53 deletions
diff --git a/Makefile b/Makefile
index ee4f587ee7..0b7d2b6da3 100644
--- a/Makefile
+++ b/Makefile
@@ -1,106 +1,161 @@
BUILDTYPE ?= Release
PYTHON ?= python
-V ?= 1
PREFIX ?= /usr/local
JOBS ?= 1
ifeq ($(shell uname -s), Darwin)
-PLATFORM ?= osx
+DEFAULT_HOST ?= osx
endif
-PLATFORM ?= linux
+DEFAULT_HOST ?= linux
.PHONY: all
all: mbgl
+
+#### Dependencies ##############################################################
+
config.gypi: configure
./configure
config-ios.gypi: configure
MASON_PLATFORM=ios ./configure config-ios.gypi
+config-android.gypi: configure __android__/configure
+__android__/configure:
+ $(ENV) ./configure config-android.gypi
+
+
+#### Configuration defaults ####################################################
+
+__osx__/%: HOST ?= osx
+__osx__/%: HEADLESS ?= cgl
+__osx__/%: PLATFORM ?= osx
+__osx__/%: ASSET ?= fs
+__osx__/%: HTTP ?= nsurl
+__osx__/%: CACHE ?= sqlite
+
+__ios__/%: HOST = ios
+__ios__/%: HEADLESS ?= none
+__ios__/%: PLATFORM ?= ios
+__ios__/%: ASSET ?= fs
+__ios__/%: HTTP ?= nsurl
+__ios__/%: CACHE ?= sqlite
+
+__linux__/%: HOST = linux
+__linux__/%: HEADLESS ?= glx
+__linux__/%: PLATFORM ?= linux
+__linux__/%: ASSET ?= fs
+__linux__/%: HTTP ?= curl
+__linux__/%: CACHE ?= sqlite
+
+__android__/%: ENV=$(shell ./scripts/android_env.sh)
+__android__/%: HOST = android
+__android__/%: HEADLESS ?= none
+__android__/%: PLATFORM ?= android
+__android__/%: ASSET ?= zip
+__android__/%: HTTP ?= curl
+__android__/%: CACHE ?= sqlite
+
+CONFIG_STRING += -Dhost=$(HOST)
+CONFIG_STRING += -Dheadless_lib=$(HEADLESS)
+CONFIG_STRING += -Dplatform_lib=$(PLATFORM)
+CONFIG_STRING += -Dasset_lib=$(ASSET)
+CONFIG_STRING += -Dhttp_lib=$(HTTP)
+CONFIG_STRING += -Dcache_lib=$(CACHE)
+CONFIG_STRING += --depth=.
+CONFIG_STRING += -Goutput_dir=..
+
+
#### Library builds ############################################################
.PHONY: mbgl
mbgl: build/mbgl/Makefile
- $(MAKE) -C build/mbgl BUILDTYPE=$(BUILDTYPE) V=$(V) mbgl-core mbgl-$(PLATFORM) mbgl-headless
+ $(MAKE) -C build/mbgl BUILDTYPE=$(BUILDTYPE) everything
.PHONY: install
install: build/mbgl/Makefile
- $(MAKE) -C build/mbgl BUILDTYPE=$(BUILDTYPE) V=$(V) install
+ $(MAKE) -C build/mbgl BUILDTYPE=$(BUILDTYPE) install
.PHONY: standalone
standalone: build/mbgl/Makefile
- LINK=`pwd`/gyp/link.py $(MAKE) -C build/mbgl BUILDTYPE=$(BUILDTYPE) V=$(V) standalone
+ LINK=`pwd`/gyp/link.py $(MAKE) -C build/mbgl BUILDTYPE=$(BUILDTYPE) standalone
+
-#### Build scripts #############################################################
+#### Application buidls ########################################################
.PHONY: build/mbgl/Makefile
-build/mbgl/Makefile: mbgl.gyp config.gypi
- deps/run_gyp mbgl.gyp -Iconfig.gypi -Dplatform=$(PLATFORM) --depth=. -Goutput_dir=.. --generator-output=./build/mbgl -f make
+build/mbgl/Makefile: mbgl.gyp config.gypi __$(DEFAULT_HOST)__/mbgl
+__%__/mbgl:
+ deps/run_gyp mbgl.gyp -Iconfig.gypi $(CONFIG_STRING) --generator-output=./build/mbgl -f make
.PHONY: build/test/Makefile
-build/test/Makefile: test/test.gyp config.gypi
- deps/run_gyp test/test.gyp -Iconfig.gypi -Dplatform=$(PLATFORM) --depth=. -Goutput_dir=.. --generator-output=./build/test -f make
+build/test/Makefile: test/test.gyp config.gypi __$(DEFAULT_HOST)__/test
+__%__/test:
+ deps/run_gyp test/test.gyp -Iconfig.gypi $(CONFIG_STRING) --generator-output=./build/test -f make
.PHONY: build/linux/Makefile
-build/linux/Makefile: linux/mapboxgl-app.gyp config.gypi
- deps/run_gyp linux/mapboxgl-app.gyp -Iconfig.gypi -Dplatform=linux --depth=. -Goutput_dir=.. --generator-output=./build/linux -f make
+build/linux/Makefile: linux/mapboxgl-app.gyp config.gypi __linux__/linux
+__linux__/linux:
+ deps/run_gyp linux/mapboxgl-app.gyp -Iconfig.gypi $(CONFIG_STRING) --generator-output=./build/linux -f make
.PHONY: build/macosx/Makefile
-build/macosx/Makefile: macosx/mapboxgl-app.gyp config.gypi
- deps/run_gyp macosx/mapboxgl-app.gyp -Iconfig.gypi -Dplatform=osx --depth=. -Goutput_dir=.. --generator-output=./build/macosx -f make
+build/macosx/Makefile: macosx/mapboxgl-app.gyp config.gypi __osx__/osx
+__osx__/osx:
+ deps/run_gyp macosx/mapboxgl-app.gyp -Iconfig.gypi $(CONFIG_STRING) --generator-output=./build/macosx -f make
.PHONY: build/render/Makefile
-build/render/Makefile: bin/render.gyp config.gypi
- deps/run_gyp bin/render.gyp -Iconfig.gypi -Dplatform=$(PLATFORM) --depth=. -Goutput_dir=.. --generator-output=./build/render -f make
+build/render/Makefile: bin/render.gyp config.gypi __$(DEFAULT_HOST)__/render
+__%__/render:
+ deps/run_gyp bin/render.gyp -Iconfig.gypi $(CONFIG_STRING) --generator-output=./build/render -f make
.PHONY: build/test/test.xcodeproj
-build/test/test.xcodeproj: test/test.gyp config.gypi
- deps/run_gyp test/test.gyp -Iconfig.gypi -Dplatform=$(PLATFORM) --depth=. -Goutput_dir=.. --generator-output=./build -f xcode
+build/test/test.xcodeproj: test/test.gyp config.gypi __osx__/test-xcode
+__osx__/test-xcode:
+ deps/run_gyp test/test.gyp -Iconfig.gypi $(CONFIG_STRING) --generator-output=./build -f xcode
.PHONY: build/macosx/mapboxgl-app.xcodeproj
-build/macosx/mapboxgl-app.xcodeproj: macosx/mapboxgl-app.gyp config.gypi
- deps/run_gyp macosx/mapboxgl-app.gyp -Iconfig.gypi -Dplatform=osx --depth=. --generator-output=./build -f xcode
+build/macosx/mapboxgl-app.xcodeproj: macosx/mapboxgl-app.gyp config.gypi __osx__/app-xcode
+__osx__/app-xcode:
+ deps/run_gyp macosx/mapboxgl-app.gyp -Iconfig.gypi $(CONFIG_STRING) --generator-output=./build -f xcode
.PHONY: build/ios/mapbox-gl-cocoa/app/mapboxgl-app.xcodeproj
-build/ios/mapbox-gl-cocoa/app/mapboxgl-app.xcodeproj: ios/mapbox-gl-cocoa/app/mapboxgl-app.gyp config-ios.gypi
- deps/run_gyp ios/mapbox-gl-cocoa/app/mapboxgl-app.gyp -Iconfig-ios.gypi -Dplatform=ios --depth=. --generator-output=./build -f xcode
+build/ios/mapbox-gl-cocoa/app/mapboxgl-app.xcodeproj: ios/mapbox-gl-cocoa/app/mapboxgl-app.gyp config-ios.gypi __ios__/app-xcode
+__ios__/app-xcode:
+ deps/run_gyp ios/mapbox-gl-cocoa/app/mapboxgl-app.gyp -Iconfig-ios.gypi $(CONFIG_STRING) --generator-output=./build -f xcode
.PHONY: build/linux/mapboxgl-app.xcodeproj
-build/linux/mapboxgl-app.xcodeproj: linux/mapboxgl-app.gyp config.gypi
- deps/run_gyp linux/mapboxgl-app.gyp -Iconfig.gypi -Dplatform=linux --depth=. --generator-output=./build -f xcode
+build/linux/mapboxgl-app.xcodeproj: linux/mapboxgl-app.gyp config.gypi __linux__/app-xcode
+__linux__/app-xcode:
+ deps/run_gyp linux/mapboxgl-app.gyp -Iconfig.gypi $(CONFIG_STRING) --generator-output=./build -f xcode
.PHONY: build/bin/render.xcodeproj
- build/bin/render.xcodeproj: bin/render.gyp config.gypi
- deps/run_gyp bin/render.gyp -Iconfig.gypi -Dplatform=$(PLATFORM) --depth=. --generator-output=./build -f xcode
+build/bin/render.xcodeproj: bin/render.gyp config.gypi __$(HOST)__/render-xcode
+__%__/render-xcode:
+ deps/run_gyp bin/render.gyp -Iconfig.gypi $(CONFIG_STRING) --generator-output=./build -f xcode
+
+.PHONY: build/android/Makefile
+build/android/Makefile: android/mapboxgl-app.gyp config.gypi __android__/android-make
+__android__/android-make:
+ @echo deps/run_gyp android/mapboxgl-app.gyp -Iconfig-android.gypi $(CONFIG_STRING) --generator-output=./build/android -f make-android
+ @$(ENV) deps/run_gyp android/mapboxgl-app.gyp -Iconfig-android.gypi $(CONFIG_STRING) --generator-output=./build/android -f make-android
.PHONY: android
-android:
- ./scripts/local_mason.sh && \
- MASON_DIR=./.mason MASON_PLATFORM=android MASON_ANDROID_ABI=$(MASON_ANDROID_ABI) ./.mason/mason env PATH && \
- export CXX="`MASON_DIR=./.mason MASON_PLATFORM=android MASON_ANDROID_ABI=${MASON_ANDROID_ABI} ./.mason/mason env CXX`" && \
- export CC="`MASON_DIR=./.mason MASON_PLATFORM=android MASON_ANDROID_ABI=${MASON_ANDROID_ABI} ./.mason/mason env CC`" && \
- export LD="`MASON_DIR=./.mason MASON_PLATFORM=android MASON_ANDROID_ABI=${MASON_ANDROID_ABI} ./.mason/mason env LD`" && \
- export LINK="`MASON_DIR=./.mason MASON_PLATFORM=android MASON_ANDROID_ABI=${MASON_ANDROID_ABI} ./.mason/mason env CXX`" && \
- export AR="`MASON_DIR=./.mason MASON_PLATFORM=android MASON_ANDROID_ABI=${MASON_ANDROID_ABI} ./.mason/mason env AR`" && \
- export RANLIB="`MASON_DIR=./.mason MASON_PLATFORM=android MASON_ANDROID_ABI=${MASON_ANDROID_ABI} ./.mason/mason env RANLIB`" && \
- export STRIP="`MASON_DIR=./.mason MASON_PLATFORM=android MASON_ANDROID_ABI=${MASON_ANDROID_ABI} ./.mason/mason env STRIP`" && \
- export LDFLAGS="`MASON_DIR=./.mason MASON_PLATFORM=android MASON_ANDROID_ABI=${MASON_ANDROID_ABI} ./.mason/mason env LDFLAGS` ${LDFLAGS}" && \
- export CFLAGS="`MASON_DIR=./.mason MASON_PLATFORM= MASON_ANDROID_ABI=${MASON_ANDROID_ABI} ./.mason/mason env CFLAGS` ${CFLAGS}" && \
- export CPPFLAGS="`MASON_DIR=./.mason MASON_PLATFORM=android MASON_ANDROID_ABI=${MASON_ANDROID_ABI} ./.mason/mason env CPPFLAGS` ${CPPFLAGS}" && \
- export PATH="`MASON_DIR=./.mason MASON_PLATFORM=android MASON_ANDROID_ABI=${MASON_ANDROID_ABI} ./.mason/mason env PATH`:${PATH}" && \
- export JNIDIR="`MASON_DIR=./.mason MASON_PLATFORM=android MASON_ANDROID_ABI=${MASON_ANDROID_ABI} ./.mason/mason env JNIDIR`" && \
- MASON_PLATFORM=android MASON_ANDROID_ABI=$(MASON_ANDROID_ABI) ./configure config-android.gypi && \
- deps/run_gyp android/mapboxgl-app.gyp -Iconfig-android.gypi -Dplatform=android --depth=. --generator-output=./build/android/$(MASON_ANDROID_ABI) -f make-android && \
- $(MAKE) -C build/android/$(MASON_ANDROID_ABI) -j$(JOBS) BUILDTYPE=$(BUILDTYPE) V=$(V) androidapp && \
- BUILDTYPE=$(BUILDTYPE) MASON_ANDROID_ABI=$(MASON_ANDROID_ABI) ./android/scripts/copy-files.sh && \
- cd android/java && \
- ./gradlew --parallel-threads=$(JOBS) build
+android: __android__/android
+__android__/android: build/android/Makefile
+ @echo $(MAKE) -C build/android BUILDTYPE=$(BUILDTYPE) androidapp
+ @$(ENV) $(MAKE) -C build/android BUILDTYPE=$(BUILDTYPE) androidapp
+ mkdir -p android/java/lib/src/main/jniLibs/armeabi-v7a
+ cp build/$(BUILDTYPE)/lib.target/libmapbox-gl.so android/java/lib/src/main/jniLibs/armeabi-v7a/libmapbox-gl.so
+ mkdir -p android/java/lib/src/main/assets
+ cp build/$(BUILDTYPE)/ca-bundle.crt android/java/lib/src/main/assets/ca-bundle.crt
+ cp -r build/$(BUILDTYPE)/styles android/java/lib/src/main/assets/styles
+ cd android/java && ./gradlew --parallel-threads=$(JOBS) build
+
##### Test cases ###############################################################
test: build/test/Makefile
- $(MAKE) -C build/test BUILDTYPE=$(BUILDTYPE) V=$(V) test
+ $(MAKE) -C build/test BUILDTYPE=$(BUILDTYPE) test
test-%: test
./scripts/run_tests.sh --gtest_filter=$*
@@ -109,12 +164,12 @@ test-%: test
xtest: build/test/test.xcodeproj
open ./build/test/test.xcodeproj
-##### Makefile builds ##########################################################
+##### Makefile builds ##########################################################
# Builds the linux app with make.
linux: build/linux/Makefile
- $(MAKE) -C build/linux BUILDTYPE=$(BUILDTYPE) V=$(V) linuxapp
+ $(MAKE) -C build/linux BUILDTYPE=$(BUILDTYPE) linuxapp
# Executes the Linux binary
run-linux: linux
@@ -122,7 +177,7 @@ run-linux: linux
# Builds the OS X app with make.
osx: build/macosx/Makefile
- $(MAKE) -C build/macosx BUILDTYPE=$(BUILDTYPE) V=$(V) osxapp
+ $(MAKE) -C build/macosx BUILDTYPE=$(BUILDTYPE) osxapp
# Executes the OS X binary
run-osx: osx
@@ -130,7 +185,7 @@ run-osx: osx
# Builds the CLI render app
render: build/render/Makefile
- $(MAKE) -C build/render BUILDTYPE=$(BUILDTYPE) V=$(V) mbgl-render
+ $(MAKE) -C build/render BUILDTYPE=$(BUILDTYPE) mbgl-render
##### Xcode projects ###########################################################