diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2015-02-03 16:18:37 +0100 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2015-02-04 11:54:01 +0100 |
commit | 73f7db9af2f76593856d64349a376412d292cd15 (patch) | |
tree | db311e489246d41e6386f4c8bcc14da17e634c66 /Makefile | |
parent | f007c420ed4e2eadaedbbdd1c29912c6c8142fa1 (diff) | |
download | qtlocation-mapboxgl-73f7db9af2f76593856d64349a376412d292cd15.tar.gz |
cleanup makefiles
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 363 |
1 files changed, 202 insertions, 161 deletions
@@ -1,204 +1,261 @@ BUILDTYPE ?= Release PYTHON ?= python PREFIX ?= /usr/local +ANDROID_ABI ?= arm-v7 JOBS ?= 1 ifeq ($(shell uname -s), Darwin) -DEFAULT_HOST ?= osx +HOST ?= osx endif -DEFAULT_HOST ?= linux - -ANDROID_ABI ?= arm-v7 +HOST ?= linux -.PHONY: all all: mbgl #### Configuration defaults #################################################### -__osx__/%: ENV = MASON_PLATFORM=osx -__osx__/%: HOST ?= osx -__osx__/%: HEADLESS ?= cgl -__osx__/%: PLATFORM ?= osx -__osx__/%: ASSET ?= fs -__osx__/%: HTTP ?= nsurl -__osx__/%: CACHE ?= sqlite - -__ios__/%: ENV = MASON_PLATFORM=ios -__ios__/%: HOST = ios -__ios__/%: HEADLESS ?= none -__ios__/%: PLATFORM ?= ios -__ios__/%: ASSET ?= fs -__ios__/%: HTTP ?= nsurl -__ios__/%: CACHE ?= sqlite - -__linux__/%: ENV = MASON_PLATFORM=linux -__linux__/%: HOST = linux -__linux__/%: HEADLESS ?= glx -__linux__/%: PLATFORM ?= linux -__linux__/%: ASSET ?= fs -__linux__/%: HTTP ?= curl -__linux__/%: CACHE ?= sqlite - -__android-%__/gyp: ENV = $(shell MASON_ANDROID_ABI=$* ./scripts/android_env.sh) -__android-%__/build: ENV = $(shell MASON_ANDROID_ABI=$* ./scripts/android_env.sh) - -__android-%__/gyp: HOST = android -__android-%__/gyp: HEADLESS ?= none -__android-%__/gyp: PLATFORM ?= android -__android-%__/gyp: ASSET ?= zip -__android-%__/gyp: HTTP ?= curl -__android-%__/gyp: 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 += -Dinstall_prefix=$(PREFIX) -CONFIG_STRING += --depth=. -CONFIG_STRING += -Goutput_dir=.. +ENV_osx = MASON_PLATFORM=osx +CONFIG_osx = -Dhost=osx -Iconfig-osx.gypi -Dinstall_prefix=$(PREFIX) +LIBS_osx = -Dheadless_lib=$(word 1,$(HEADLESS) cgl) +LIBS_osx += -Dplatform_lib=$(word 1,$(PLATFORM) osx) +LIBS_osx += -Dasset_lib=$(word 1,$(ASSET) fs) +LIBS_osx += -Dhttp_lib=$(word 1,$(HTTP) nsurl) +LIBS_osx += -Dcache_lib=$(word 1,$(CACHE) sqlite) +LIBS_osx += --depth=. -Goutput_dir=. + + +ENV_ios = MASON_PLATFORM=ios +CONFIG_ios = -Dhost=ios -Iconfig-ios.gypi -Dinstall_prefix=$(PREFIX) +LIBS_ios = -Dheadless_lib=none +LIBS_ios += -Dplatform_lib=$(word 1,$(PLATFORM) ios) +LIBS_ios += -Dasset_lib=$(word 1,$(ASSET) fs) +LIBS_ios += -Dhttp_lib=$(word 1,$(HTTP) nsurl) +LIBS_ios += -Dcache_lib=$(word 1,$(CACHE) sqlite) +LIBS_ios += --depth=. -Goutput_dir=. + + +ENV_linux = MASON_PLATFORM=linux +CONFIG_linux = -Dhost=linux -Iconfig-linux.gypi -Dinstall_prefix=$(PREFIX) +LIBS_linux = -Dheadless_lib=$(word 1,$(HEADLESS) glx) +LIBS_linux += -Dplatform_lib=$(word 1,$(PLATFORM) linux) +LIBS_linux += -Dasset_lib=$(word 1,$(ASSET) fs) +LIBS_linux += -Dhttp_lib=$(word 1,$(HTTP) curl) +LIBS_linux += -Dcache_lib=$(word 1,$(CACHE) sqlite) +LIBS_linux += --depth=. -Goutput_dir=. + +ANDROID_ABIS += android-lib-arm-v8 +ENV_android-arm-v8 = $(shell MASON_ANDROID_ABI=arm-v8 ./scripts/android_env.sh) +CONFIG_android-arm-v8 = -Dhost=android -Iconfig-android-arm-v8.gypi + +ANDROID_ABIS += android-lib-arm-v7 +ENV_android-arm-v7 = $(shell MASON_ANDROID_ABI=arm-v7 ./scripts/android_env.sh) +CONFIG_android-arm-v7 = -Dhost=android -Iconfig-android-arm-v7.gypi + +ANDROID_ABIS += android-lib-arm-v5 +ENV_android-arm-v5 = $(shell MASON_ANDROID_ABI=arm-v5 ./scripts/android_env.sh) +CONFIG_android-arm-v5 = -Dhost=android -Iconfig-android-arm-v5.gypi + +ANDROID_ABIS += android-lib-x86 +ENV_android-x86 = $(shell MASON_ANDROID_ABI=x86 ./scripts/android_env.sh) +CONFIG_android-x86 = -Dhost=android -Iconfig-android-x86.gypi + +# OpenSSL build is incomplete. +# ANDROID_ABIS += android-lib-x86-64 +# ENV_android-x86-64 = $(shell MASON_ANDROID_ABI=x86-64 ./scripts/android_env.sh) +# CONFIG_android-x86-64 = -Dhost=android -Iconfig-android-x86-64.gypi + +ANDROID_ABIS += android-lib-mips +ENV_android-mips = $(shell MASON_ANDROID_ABI=mips ./scripts/android_env.sh) +CONFIG_android-mips = -Dhost=android -Iconfig-android-mips.gypi + +ANDROID_ABIS += android-lib-mips-64 +ENV_android-mips-64 = $(shell MASON_ANDROID_ABI=mips-64 ./scripts/android_env.sh) +CONFIG_android-mips-64 = -Dhost=android -Iconfig-android-mips-64.gypi + +LIBS_android = -Dheadless_lib=none +LIBS_android += -Dplatform_lib=$(word 1,$(PLATFORM) android) +LIBS_android += -Dasset_lib=$(word 1,$(ASSET) zip) +LIBS_android += -Dhttp_lib=$(word 1,$(HTTP) curl) +LIBS_android += -Dcache_lib=$(word 1,$(CACHE) sqlite) +LIBS_android += --depth=. -Goutput_dir=. #### Dependencies ############################################################## -.PHONY: FORCE -FORCE: - +# Wildcard targets get removed after build by default, but we want to preserve the config. .PRECIOUS: config-%.gypi -config-%.gypi: configure __%__/configure +config-%.gypi: CMD = ./configure config-$*.gypi +config-%.gypi: configure + @echo $(CMD) + @$(ENV_$*) $(CMD) cat config-$*.gypi -__%__/configure: - $(ENV) ./configure config-$*.gypi - #### Library builds ############################################################ -.PHONY: mbgl -mbgl: build/mbgl/Makefile - $(MAKE) -C build/mbgl BUILDTYPE=$(BUILDTYPE) everything +.PRECOIUS: Makefile/mbgl +Makefile/mbgl: config-$(HOST).gypi + deps/run_gyp mbgl.gyp $(CONFIG_$(HOST)) $(LIBS_$(HOST)) --generator-output=./build/$(HOST) -f make -.PHONY: install -install: build/mbgl/Makefile - LINK=`pwd`/gyp/link.py $(MAKE) -C build/mbgl BUILDTYPE=$(BUILDTYPE) install +mbgl: Makefile/mbgl + $(MAKE) -C build/$(HOST) BUILDTYPE=$(BUILDTYPE) everything -.PHONY: standalone -standalone: build/mbgl/Makefile - LINK=`pwd`/gyp/link.py $(MAKE) -C build/mbgl BUILDTYPE=$(BUILDTYPE) standalone +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 -#### Application buidls ######################################################## -.PHONY: build/mbgl/Makefile -build/mbgl/Makefile: mbgl.gyp __$(DEFAULT_HOST)__/mbgl -__%__/mbgl: config-%.gypi - deps/run_gyp mbgl.gyp -Iconfig-$*.gypi $(CONFIG_STRING) --generator-output=./build/mbgl -f make +##### Test builds ############################################################## -.PHONY: build/test/Makefile -build/test/Makefile: test/test.gyp __$(DEFAULT_HOST)__/test -__%__/test: config-%.gypi - deps/run_gyp test/test.gyp -Iconfig-$*.gypi $(CONFIG_STRING) --generator-output=./build/test -f make +.PRECIOUS: Makefile/test +Makefile/test: test/test.gyp config-$(HOST).gypi + deps/run_gyp test/test.gyp $(CONFIG_$(HOST)) $(LIBS_$(HOST)) --generator-output=./build/$(HOST) -f make -.PHONY: build/linux/Makefile -build/linux/Makefile: linux/mapboxgl-app.gyp __linux__/linux -__linux__/linux: config-linux.gypi - deps/run_gyp linux/mapboxgl-app.gyp -Iconfig-linux.gypi $(CONFIG_STRING) --generator-output=./build/linux -f make +test: Makefile/test + $(MAKE) -C build/$(HOST) BUILDTYPE=$(BUILDTYPE) test -.PHONY: build/macosx/Makefile -build/macosx/Makefile: macosx/mapboxgl-app.gyp __osx__/osx -__osx__/osx: config-osx.gypi - deps/run_gyp macosx/mapboxgl-app.gyp -Iconfig-osx.gypi $(CONFIG_STRING) --generator-output=./build/macosx -f make +test-%: test + ./scripts/run_tests.sh "build/$(HOST)/$(BUILDTYPE)/test" --gtest_filter=$* -.PHONY: build/render/Makefile -build/render/Makefile: bin/render.gyp __$(DEFAULT_HOST)__/render -__%__/render: config-%.gypi - 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 __osx__/test-xcode -__osx__/test-xcode: config-osx.gypi - deps/run_gyp test/test.gyp -Iconfig-osx.gypi $(CONFIG_STRING) --generator-output=./build -f xcode +.PRECIOUS: Xcode/test +Xcode/test: test/test.gyp config-osx.gypi + deps/run_gyp test/test.gyp $(CONFIG_osx) $(LIBS_osx) --generator-output=./build/osx -f xcode -.PHONY: build/macosx/mapboxgl-app.xcodeproj -build/macosx/mapboxgl-app.xcodeproj: macosx/mapboxgl-app.gyp __osx__/app-xcode -__osx__/app-xcode: config-osx.gypi - deps/run_gyp macosx/mapboxgl-app.gyp -Iconfig-osx.gypi $(CONFIG_STRING) --generator-output=./build -f xcode +.PHONY: lproj lbuild run-xlinux +xtest-proj: Xcode/test + open ./build/osx/test/test.xcodeproj -.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 __ios__/app-xcode -__ios__/app-xcode: config-ios.gypi - deps/run_gyp ios/mapbox-gl-cocoa/app/mapboxgl-app.gyp -Iconfig-ios.gypi $(CONFIG_STRING) -Goutput_dir=. --generator-output=./build -f xcode +xtest: Xcode/test + xcodebuild -project ./build/osx/test/test.xcodeproj -configuration $(BUILDTYPE) -scheme test -derivedDataPath build/osx -jobs `sysctl -n hw.ncpu` -.PHONY: build/linux/mapboxgl-app.xcodeproj -build/linux/mapboxgl-app.xcodeproj: linux/mapboxgl-app.gyp __linux__/app-xcode -__linux__/app-xcode: config-osx.gypi - deps/run_gyp linux/mapboxgl-app.gyp -Iconfig-osx.gypi $(CONFIG_STRING) --generator-output=./build -f xcode +xtest-%: xtest + ./scripts/run_tests.sh "build/osx/Build/Products/$(BUILDTYPE)/test" --gtest_filter=$* -.PHONY: build/bin/render.xcodeproj -build/bin/render.xcodeproj: bin/render.gyp __osx__/render-xcode -__osx__/render-xcode:config-osx.gypi - deps/run_gyp bin/render.gyp -Iconfig-osx.gypi $(CONFIG_STRING) --generator-output=./build -f xcode -build/android-%/Makefile: android/mapboxgl-app.gyp __android-%__/gyp - @# leave this line here +#### Mac OS X application builds ############################################### -__android-%__/gyp: GYP_CMD = deps/run_gyp android/mapboxgl-app.gyp -Iconfig-android-$*.gypi $(CONFIG_STRING) -Goutput_dir=. --generator-output=./build/android-$* -f make-android -__android-%__/gyp: config-android-%.gypi - @echo $(GYP_CMD) ; $(ENV) $(GYP_CMD) +.PRECIOUS: Makefile/osx +Makefile/osx: macosx/mapboxgl-app.gyp config-osx.gypi + deps/run_gyp macosx/mapboxgl-app.gyp $(CONFIG_osx) $(LIBS_osx) --generator-output=./build/osx -f make -__android-%__/build: MAKE_CMD = $(MAKE) -C build/android-$* BUILDTYPE=$(BUILDTYPE) androidapp -__android-%__/build: build/android-%/Makefile - @echo $(MAKE_CMD) ; $(ENV) $(MAKE_CMD) +.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" -##### Test cases ############################################################### -test: build/test/Makefile - $(MAKE) -C build/test BUILDTYPE=$(BUILDTYPE) test +.PRECIOUS: Xcode/osx +Xcode/osx: macosx/mapboxgl-app.gyp config-osx.gypi + deps/run_gyp macosx/mapboxgl-app.gyp $(CONFIG_osx) $(LIBS_osx) --generator-output=./build/osx -f xcode -test-%: test - ./scripts/run_tests.sh --gtest_filter=$* +.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) -scheme osxapp -derivedDataPath build/osx -jobs `sysctl -n hw.ncpu` + +run-xosx: xosx + "build/osx/Build/Products/$(BUILDTYPE)/Mapbox GL.app/Contents/MacOS/Mapbox GL" -# build Mac OS X project for Xcode -xtest: build/test/test.xcodeproj - open ./build/test/test.xcodeproj +# Legacy name +xproj: xosx-proj -##### Makefile builds ########################################################## -# Builds the linux app with make. -linux: build/linux/Makefile - $(MAKE) -C build/linux BUILDTYPE=$(BUILDTYPE) linuxapp +#### iOS application builds #################################################### + +.PRECIOUS: Xcode/ios +Xcode/ios: ios/mapbox-gl-cocoa/app/mapboxgl-app.gyp config-ios.gypi + deps/run_gyp ios/mapbox-gl-cocoa/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/mapbox-gl-cocoa/app/mapboxgl-app.xcodeproj + +ios: Xcode/ios + xcodebuild -sdk iphonesimulator ONLY_ACTIVE_ARCH=YES -project ./build/ios/ios/mapbox-gl-cocoa/app/mapboxgl-app.xcodeproj -configuration $(BUILDTYPE) -scheme iosapp -derivedDataPath build/ios -jobs `sysctl -n hw.ncpu` + +# Legacy name +iproj: ios-proj + + +#### Linux application builds ################################################## + +.PRECIOUS: Makefile/linux +Makefile/linux: linux/mapboxgl-app.gyp config-$(HOST).gypi + 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 -# Executes the Linux binary run-linux: linux - (cd build/$(BUILDTYPE) && ./mapbox-gl) + (cd build/$(HOST)/$(BUILDTYPE) && ./mapbox-gl) -# Builds the OS X app with make. -osx: build/macosx/Makefile - $(MAKE) -C build/macosx BUILDTYPE=$(BUILDTYPE) osxapp -# Executes the OS X binary -run-osx: osx - build/$(BUILDTYPE)/Mapbox\ GL.app/Contents/MacOS/MAPBOX\ GL +.PRECIOUS: Xcode/linux +Xcode/linux: linux/mapboxgl-app.gyp config-osx.gypi + 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 -# Builds the iOS app with Xcode. -ios: build/ios/mapbox-gl-cocoa/app/mapboxgl-app.xcodeproj - xcodebuild -project ./build/ios/mapbox-gl-cocoa/app/mapboxgl-app.xcodeproj -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO -jobs $JOBS +xlinux: Xcode/linux + xcodebuild -project ./build/osx/linux/mapboxgl-app.xcodeproj -configuration $(BUILDTYPE) -scheme linuxapp -derivedDataPath build/osx + +run-xlinux: xlinux + "build/osx/Build/Products/$(BUILDTYPE)/mapbox-gl" + +# Legacy name +lproj: xlinux-proj + + +##### Render application ####################################################### +# .PHONY: build/render/Makefile +# build/render/Makefile: bin/render.gyp __$(HOST)__/render +# __%__/render: config-%.gypi +# deps/run_gyp bin/render.gyp -Iconfig-$*.gypi $(CONFIG_STRING) --generator-output=./build/render -f make + +# .PHONY: build/bin/render.xcodeproj +# build/bin/render.xcodeproj: bin/render.gyp __osx__/render-xcode +# __osx__/render-xcode:config-osx.gypi +# deps/run_gyp bin/render.gyp -Iconfig-osx.gypi $(CONFIG_STRING) --generator-output=./build -f xcode + +# # Builds the CLI render app +# render: build/render/Makefile +# $(MAKE) -C build/render BUILDTYPE=$(BUILDTYPE) mbgl-render + +#### 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 + @echo $(CMD) + @$(ENV_android-$*) $(CMD) + +# Builds all android architectures. +android-all: $(ANDROID_ABIS) +android-all: android + +# Builds a particular android architecture. +android-lib-%: CMD = $(MAKE) -C build/android-$* BUILDTYPE=$(BUILDTYPE) androidapp +android-lib-%: Makefile/android-% + @echo $(CMD) + @$(ENV_android-$*) $(CMD) # Builds the selected/default Android library -android: __android-$(ANDROID_ABI)__/build +android: android-lib-$(ANDROID_ABI) cd android/java && ./gradlew --parallel-threads=$(JOBS) build -# Builds all android architectures. As new architectures appear, add them to this list. -android-all: __android-arm-v7__/build -android-all: __android-arm-v8__/build -android-all: android +# rproj: build/bin/render.xcodeproj +# open ./build/bin/render.xcodeproj -# Builds the CLI render app -render: build/render/Makefile - $(MAKE) -C build/render BUILDTYPE=$(BUILDTYPE) mbgl-render -##### Xcode projects ########################################################### +##### Maintenace operations #################################################### .PHONY: clear_xcode_cache clear_xcode_cache: @@ -214,22 +271,6 @@ ifeq ($(PLATFORM), osx) fi endif -xproj: build/macosx/mapboxgl-app.xcodeproj - open ./build/macosx/mapboxgl-app.xcodeproj - -iproj: build/ios/mapbox-gl-cocoa/app/mapboxgl-app.xcodeproj - open ./build/ios/mapbox-gl-cocoa/app/mapboxgl-app.xcodeproj - -rproj: build/bin/render.xcodeproj - open ./build/bin/render.xcodeproj - -# build Linux project for Xcode (Runs on Mac OS X too, but without platform-specific code) -lproj: build/linux/mapboxgl-app.xcodeproj - open ./build/linux/mapboxgl-app.xcodeproj - - -##### Maintenace operations #################################################### - .PHONY: clear_sqlite_cache clear_sqlite_cache: ifeq ($(PLATFORM), osx) |