From e6053aa5475e03568f39e4967dc49ef4aba3c5fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20K=C3=A4fer?= Date: Mon, 3 Aug 2015 17:04:31 +0200 Subject: [PATCH] Make build system architecture agnostic to remove Android special case --- .gitignore | 2 + .mason | 2 +- Makefile | 278 +++++------------- .../{mapboxgl-app.gyp => mapboxgl-app.gypi} | 20 +- bin/render.gypi | 14 +- config/defaults.mk | 67 ----- configure | 217 ++++---------- gyp/android.gyp | 5 + gyp/asset-fs.gypi | 6 +- gyp/asset-zip.gypi | 16 +- gyp/cache-sqlite.gypi | 12 +- gyp/core.gypi | 8 +- gyp/http-curl.gypi | 18 +- gyp/http-nsurl.gypi | 6 +- gyp/linux.gyp | 7 +- gyp/platform-android.gypi | 18 +- gyp/platform-ios.gypi | 4 +- gyp/platform-linux.gypi | 18 +- gyp/platform-osx.gypi | 4 +- linux/mapboxgl-app.gypi | 6 +- macosx/mapboxgl-app.gypi | 6 +- scripts/android/configure.sh | 14 + scripts/android/defaults.mk | 11 + scripts/ios/configure.sh | 6 + scripts/ios/defaults.mk | 12 + scripts/ios/package.sh | 4 +- scripts/linux/configure.sh | 18 ++ scripts/linux/defaults.mk | 5 + scripts/main.mk | 127 ++++++++ scripts/osx/configure.sh | 13 + scripts/osx/defaults.mk | 5 + test/test.gypi | 12 +- 32 files changed, 448 insertions(+), 513 deletions(-) rename android/{mapboxgl-app.gyp => mapboxgl-app.gypi} (84%) delete mode 100644 config/defaults.mk create mode 100644 gyp/android.gyp create mode 100644 scripts/android/configure.sh create mode 100644 scripts/android/defaults.mk create mode 100644 scripts/ios/configure.sh create mode 100644 scripts/ios/defaults.mk create mode 100644 scripts/linux/configure.sh create mode 100644 scripts/linux/defaults.mk create mode 100644 scripts/main.mk create mode 100644 scripts/osx/configure.sh create mode 100644 scripts/osx/defaults.mk diff --git a/.gitignore b/.gitignore index b253752e5..3e46c0a0a 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,8 @@ /ios/build /ios/app/build /test/build +/gyp/build +/gyp/java /test/node_modules /test/fixtures/*/*_actual.* /test/fixtures/api/1.png diff --git a/.mason b/.mason index abdc13127..1d5789dfa 160000 --- a/.mason +++ b/.mason @@ -1 +1 @@ -Subproject commit abdc131273c3e50e42f245b1166c27de4c34c582 +Subproject commit 1d5789dfadeffa5df8e58770e3326840d1e6d9c9 diff --git a/Makefile b/Makefile index 34af9b85e..59bd1dfef 100644 --- a/Makefile +++ b/Makefile @@ -1,225 +1,101 @@ -BUILDTYPE ?= Release -PYTHON ?= python -PREFIX ?= /usr/local -ANDROID_ABI ?= arm-v7 +export BUILDTYPE ?= Release +export BUILD_TEST ?= 1 +export BUILD_RENDER ?= 1 +# Determine build platform ifeq ($(shell uname -s), Darwin) -HOST = osx -HEADLESS = cgl -JOBS ?= $(shell sysctl -n hw.ncpu) -endif - -ifeq ($(shell uname -s), Linux) -HOST = linux -JOBS ?= $(shell grep --count processor /proc/cpuinfo) -BUILD_ROOT = $(shell pwd) -endif - -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 - -ifeq ($(shell uname -s), Darwin) -SMCalloutView: - git submodule update --init platform/ios/vendor/SMCalloutView +export BUILD = osx +export JOBS ?= $(shell sysctl -n hw.ncpu) +export XCPRETTY := $(shell ./scripts/xcpretty.sh) +else ifeq ($(shell uname -s), Linux) +export BUILD = linux +export JOBS ?= $(shell grep --count processor /proc/cpuinfo) else -SMCalloutView: +$(error Cannot determine build platform) +endif +export BUILD_VERSION = $(shell uname -m) + +RUN = @$(MAKE) -f scripts/main.mk + +default: ; @printf "You must specify a valid target\n" + +#### OS X targets ############################################################## + +ifeq ($(BUILD),osx) +.PHONY: osx xosx run-osx run-xosx +osx: ; $(RUN) HOST=osx HOST_VERSION=x86_64 Makefile/osxapp +xosx: ; $(RUN) HOST=osx HOST_VERSION=x86_64 Xcode/osxapp +run-osx: osx ; @"build/osx-x86_64/$(BUILDTYPE)/Mapbox GL.app/Contents/MacOS/Mapbox GL" +run-xosx: xosx ; @"gyp/build/$(BUILDTYPE)/Mapbox GL.app/Contents/MacOS/Mapbox GL" + +.PHONY: Xcode/osx Xcode/ios +Xcode/ios: ; $(RUN) HOST=ios Xcode/__project__ +Xcode/osx: ; $(RUN) HOST=osx HOST_VERSION=x86_64 Xcode/__project__ + +.PHONY: xproj iproj +xproj: Xcode/osx ; @open ./build/osx-x86_64/gyp/osx.xcodeproj +iproj: Xcode/ios ; @open ./build/ios-all/gyp/ios.xcodeproj + +.PHONY: ios ibench isim +ios ibench isim: export XCODEBUILD_ARGS += PROVISIONING_PROFILE="$$(PROVISIONING_PROFILE)" + +ios: export XCODEBUILD_ARGS += -sdk iphoneos ARCHS="arm64 armv7 armv7s" +ios: ; $(RUN) HOST=ios Xcode/iosapp + +isim: export XCODEBUILD_ARGS += -sdk iphonesimulator ARCHS="x86_64 i386" +isim: ; $(RUN) HOST=ios Xcode/iosapp + +ibench: export XCODEBUILD_ARGS += -sdk iphoneos ARCHS="arm64" +ibench: ; $(RUN) HOST=ios Xcode/ios-bench + +.PHONY: ipackage ipackage-strip ipackage-sim itest +ipackage: Xcode/ios ; @JOBS=$(JOBS) ./scripts/ios/package.sh +ipackage-strip: Xcode/ios ; @JOBS=$(JOBS) ./scripts/ios/package.sh strip +ipackage-sim: Xcode/ios ; @JOBS=$(JOBS) ./scripts/ios/package.sh sim +itest: ipackage-sim ; ./scripts/ios/test.sh endif -geojsonvt: - git submodule update --init src/mbgl/util/geojsonvt +#### All platforms targets ##################################################### -KIF: - git submodule update --init test/ios/KIF - - -#### Build files ############################################################### - -.PRECIOUS: Makefile/project -Makefile/project: config/$(HOST).gypi styles/styles SMCalloutView geojsonvt - deps/run_gyp gyp/$(HOST).gyp $(CONFIG_$(HOST)) $(LIBS_$(HOST)) --generator-output=./build/$(HOST) -f make - -.PRECIOUS: Xcode/project -Xcode/project: config/$(HOST).gypi styles/styles SMCalloutView geojsonvt - deps/run_gyp gyp/$(HOST).gyp $(CONFIG_$(HOST)) $(LIBS_$(HOST)) --generator-output=./build/$(HOST) -f xcode - - -#### Library builds ############################################################ - -mbgl: Makefile/project - $(MAKE) -C build/$(HOST) BUILDTYPE=$(BUILDTYPE) everything - -standalone: Makefile/project - LINK=`pwd`/gyp/link.py $(MAKE) -C build/$(HOST) BUILDTYPE=$(BUILDTYPE) standalone - -install: Makefile/project - LINK=`pwd`/gyp/link.py $(MAKE) -C build/$(HOST) BUILDTYPE=$(BUILDTYPE) install - - -##### Test builds ############################################################## - -.PHONY: test -test: Makefile/project - $(MAKE) -C build/$(HOST) BUILDTYPE=$(BUILDTYPE) test - -test-%: test - ./scripts/run_tests.sh "build/$(HOST)/$(BUILDTYPE)/test" --gtest_filter=$* - -.PHONY: xtest -xtest: XCPRETTY := $(shell ./scripts/xcpretty.sh) -xtest: Xcode/project - xcodebuild -project ./build/osx/gyp/osx.xcodeproj -configuration $(BUILDTYPE) -target test -jobs $(JOBS) $(XCPRETTY) - -xtest-%: xtest - ./scripts/run_tests.sh "build/osx/Build/Products/$(BUILDTYPE)/test" --gtest_filter=$* - - -#### Mac OS X application builds ############################################### - -.PHONY: osx run-osx -osx: Makefile/project - $(MAKE) -C build/osx BUILDTYPE=$(BUILDTYPE) osxapp - -run-osx: osx - "build/osx/$(BUILDTYPE)/Mapbox GL.app/Contents/MacOS/Mapbox GL" - -run-valgrind-osx: osx - (valgrind --leak-check=full --suppressions=scripts/valgrind.sup build/osx/$(BUILDTYPE)/Mapbox\ GL.app/Contents/MacOS/Mapbox\ GL) - -.PHONY: xosx-proj xosx run-xosx -xosx-proj: Xcode/project - open ./build/osx/gyp/osx.xcodeproj - -xosx: XCPRETTY := $(shell ./scripts/xcpretty.sh) -xosx: Xcode/project - xcodebuild -project ./build/osx/gyp/osx.xcodeproj -configuration $(BUILDTYPE) -target osxapp -jobs $(JOBS) $(XCPRETTY) - -run-xosx: xosx - "gyp/build/$(BUILDTYPE)/Mapbox GL.app/Contents/MacOS/Mapbox GL" - -# Legacy name -xproj: xosx-proj - - - -#### iOS application builds #################################################### - -.PRECIOUS: Xcode/ios -Xcode/ios: gyp/ios.gyp config/ios.gypi styles/styles SMCalloutView geojsonvt - deps/run_gyp gyp/ios.gyp $(CONFIG_ios) $(LIBS_ios) --generator-output=./build/ios -f xcode - -.PHONY: ios-proj ios isim ipackage -ios-proj: Xcode/ios - open ./build/ios/gyp/ios.xcodeproj - -ios: XCPRETTY := $(shell ./scripts/xcpretty.sh) -ios: Xcode/ios - xcodebuild -sdk iphoneos ARCHS="arm64 armv7 armv7s" PROVISIONING_PROFILE="19324a54-7455-4f0b-8e1c-e6957c718ebc" -project ./build/ios/gyp/ios.xcodeproj -configuration Release -target iosapp -jobs $(JOBS) $(XCPRETTY) - -ibench: XCPRETTY := $(shell ./scripts/xcpretty.sh) -ibench: Xcode/ios - xcodebuild -sdk iphoneos ARCHS="arm64" PROVISIONING_PROFILE="19324a54-7455-4f0b-8e1c-e6957c718ebc" -project ./build/ios/gyp/ios.xcodeproj -configuration Release -target ios-bench -jobs $(JOBS) $(XCPRETTY) - -isim: XCPRETTY := $(shell ./scripts/xcpretty.sh) -isim: Xcode/ios - xcodebuild -sdk iphonesimulator ARCHS="x86_64 i386" -project ./build/ios/gyp/ios.xcodeproj -configuration Debug -target iosapp -jobs $(JOBS) $(XCPRETTY) - -ipackage: Xcode/ios - JOBS=$(JOBS) ./scripts/ios/package.sh - -ipackage-strip: Xcode/ios - JOBS=$(JOBS) ./scripts/ios/package.sh strip - -ipackage-sim: Xcode/ios - JOBS=$(JOBS) ./scripts/ios/package.sh sim - -itest: ipackage-sim KIF - ./scripts/ios/test.sh - -# Legacy name -iproj: ios-proj - - -#### Linux application builds ################################################## - -.PHONY: linux run-linux -linux: Makefile/project - $(MAKE) -C build/$(HOST) BUILDTYPE=$(BUILDTYPE) linuxapp - -run-linux: linux - (cd build/$(HOST)/$(BUILDTYPE) && ./mapbox-gl) - -run-valgrind-linux: linux - (cd build/$(HOST)/$(BUILDTYPE) && valgrind --leak-check=full --suppressions=$(BUILD_ROOT)/scripts/valgrind.sup ./mapbox-gl) - -.PHONY: xlinux run-xlinux -xlinux: XCPRETTY := $(shell ./scripts/xcpretty.sh) -xlinux: Xcode/project - xcodebuild -project ./build/osx/gyp/osx.xcodeproj -configuration $(BUILDTYPE) -target linuxapp -jobs $(JOBS) $(XCPRETTY) - -run-xlinux: xlinux - "gyp/build/$(BUILDTYPE)/mapbox-gl" - - -#### 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 geojsonvt - @echo $(CMD) - @$(ENV_android-$*) $(CMD) +.PHONY: linux xlinux run-linux run-xlinux +linux: ; $(RUN) Makefile/linuxapp +.PHONY: android android-lib # 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 +android-lib-%: ; $(RUN) HOST=android HOST_VERSION=$* Makefile/androidapp + +# Builds the default Android library +android-lib: ; $(RUN) HOST=android Makefile/androidapp # Builds the selected/default Android library -android-lib: android-lib-$(ANDROID_ABI) - -# Builds the selected/default Android library -android: android-lib-$(ANDROID_ABI) +android: android-lib cd android/java && ./gradlew --parallel-threads=$(JOBS) assemble$(BUILDTYPE) # Builds all android architectures. -android-all: $(ANDROID_ABIS) +android-all: android-lib-arm-v5 android-lib-arm-v7 android-lib-arm-v8 +android-all: android-lib-x86 android-lib-x86-64 +android-all: android-lib-mips android-lib-mips-64 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 +.PHONY: test +test: ; $(RUN) Makefile/test +test-%: ; $(RUN) test-$* +ifeq ($(BUILD),osx) +xtest: ; $(RUN) HOST=osx HOST_VERSION=x86_64 Xcode/test +endif -android-project: android-lib - - -##### Render builds ############################################################ - -render: Makefile/project - $(MAKE) -C build/$(HOST) BUILDTYPE=$(BUILDTYPE) mbgl-render - -.PHONY: xrender -xrender: XCPRETTY := $(shell ./scripts/xcpretty.sh) -xrender: Xcode/project - xcodebuild -project ./build/osx/gyp/osx.xcodeproj -configuration $(BUILDTYPE) -target mbgl-render -jobs $(JOBS) $(XCPRETTY) +.PHONY: render xrender +render: ; $(RUN) Makefile/mbgl-render +ifeq ($(BUILD),osx) +xrender: ; $(RUN) HOST=osx HOST_VERSION=x86_64 Xcode/mbgl-render +endif ##### Maintenace operations #################################################### .PHONY: clear_xcode_cache clear_xcode_cache: -ifeq ($(PLATFORM), osx) +ifeq ($(BUILD), 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; \ @@ -233,7 +109,7 @@ endif .PHONY: clear_sqlite_cache clear_sqlite_cache: -ifeq ($(PLATFORM), osx) +ifeq ($(BUILD), osx) rm -f ~/Library/Application\ Support/Mapbox\ GL/cache.db else rm -f /tmp/mbgl-cache.db diff --git a/android/mapboxgl-app.gyp b/android/mapboxgl-app.gypi similarity index 84% rename from android/mapboxgl-app.gyp rename to android/mapboxgl-app.gypi index d16d1dd4a..107bbcbd5 100644 --- a/android/mapboxgl-app.gyp +++ b/android/mapboxgl-app.gypi @@ -26,13 +26,13 @@ ], 'libraries': [ '<@(openssl_static_libs)', - '<@(curl_static_libs)', - '<@(png_static_libs)', + '<@(libcurl_static_libs)', + '<@(libpng_static_libs)', '<@(jpeg_static_libs)', - '<@(sqlite3_static_libs)', - '<@(uv_static_libs)', - '<@(nu_static_libs)', - '<@(zip_static_libs)', + '<@(sqlite_static_libs)', + '<@(libuv_static_libs)', + '<@(nunicode_static_libs)', + '<@(libzip_static_libs)', ], 'variables': { 'ldflags': [ @@ -42,13 +42,13 @@ '-lGLESv2', '-lstdc++', '-latomic', - '<@(png_ldflags)', + '<@(libpng_ldflags)', '<@(jpeg_ldflags)', - '<@(sqlite3_ldflags)', + '<@(sqlite_ldflags)', '<@(openssl_ldflags)', - '<@(curl_ldflags)', + '<@(libcurl_ldflags)', '<@(zlib_ldflags)', - '<@(zip_ldflags)', + '<@(libzip_ldflags)', ], }, 'conditions': [ diff --git a/bin/render.gypi b/bin/render.gypi index 2e1dbd8f7..45c9ebb0e 100644 --- a/bin/render.gypi +++ b/bin/render.gypi @@ -27,18 +27,18 @@ 'variables' : { 'cflags_cc': [ - '<@(glfw3_cflags)', - '<@(uv_cflags)', + '<@(glfw_cflags)', + '<@(libuv_cflags)', '<@(boost_cflags)', ], 'ldflags': [ - '<@(glfw3_ldflags)', - '<@(uv_ldflags)', + '<@(glfw_ldflags)', + '<@(libuv_ldflags)', ], 'libraries': [ - '<@(glfw3_static_libs)', - '<@(uv_static_libs)', - '<@(boost_program_options_static_libs)' + '<@(glfw_static_libs)', + '<@(libuv_static_libs)', + '<@(boost_libprogram_options_static_libs)' ], }, diff --git a/config/defaults.mk b/config/defaults.mk deleted file mode 100644 index 1449bf8e1..000000000 --- a/config/defaults.mk +++ /dev/null @@ -1,67 +0,0 @@ - -#### Configuration defaults #################################################### - -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/toolchain.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/toolchain.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/toolchain.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/toolchain.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/toolchain.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/toolchain.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/toolchain.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=. diff --git a/configure b/configure index c1f7f6da1..6fbaa9f7f 100755 --- a/configure +++ b/configure @@ -1,76 +1,56 @@ #!/usr/bin/env bash -set -e -set -o pipefail +set -euo pipefail CONFIG_FILE=$1 -if [ `uname -s` = 'Darwin' ]; then - MASON_PLATFORM=${MASON_PLATFORM:-osx} -fi - -function finish { - >&2 echo -en "\033[0m"; -} -trap finish EXIT - -# Install mason -git submodule update --init .mason -export PATH="`pwd`/.mason:${PATH}" MASON_DIR="`pwd`/.mason" - -case ${MASON_PLATFORM} in - 'ios') - SQLITE_VERSION=system - LIBUV_VERSION=0.10.28 - ZLIB_VERSION=system - BOOST_VERSION=system - ;; - 'android') - SQLITE_VERSION=3.8.8.1 - LIBPNG_VERSION=1.6.16 - LIBJPEG_VERSION=v9a - OPENSSL_VERSION=1.0.1l - LIBCURL_VERSION=7.40.0 - LIBUV_VERSION=1.4.0 - ZLIB_VERSION=system - BOOST_VERSION=1.57.0 - NUNICODE_VERSION=1.5.1 - LIBZIP_VERSION=0.11.2 - ;; - *) - GLFW_VERSION=3.1 - SQLITE_VERSION=3.8.8.1 - LIBPNG_VERSION=1.6.16 - LIBJPEG_VERSION=v9a - LIBCURL_VERSION=system - LIBUV_VERSION=0.10.28 - ZLIB_VERSION=system - BOOST_VERSION=1.57.0 - BOOST_PROGRAM_OPTIONS_VERSION=1.57.0 - NUNICODE_VERSION=1.5.1 - LIBZIP_VERSION=0.11.2 - ;; -esac - -if [ ${MASON_PLATFORM} == 'linux' ] ; then - MESA_VERSION=10.4.3 - mason install mesa ${MESA_VERSION} - export PKG_CONFIG_PATH=`mason prefix mesa ${MESA_VERSION}`/lib/pkgconfig -fi - -function abort { >&2 echo -e "\033[1m\033[31m$1\033[0m"; exit 1; } - if [ -z ${CONFIG_FILE} ]; then abort 'You need to specify an output path for the configuration file' fi -if [[ ${MASON_PLATFORM} = 'android' && -z ${MASON_ANDROID_ABI} ]]; then - abort 'You need to specify an ABI for android platforms' -fi +# Make sure we clear all colors +trap '>&2 echo -en "\033[0m"' TERM INT -echo -n "MASON_PLATFORM=${MASON_PLATFORM} " -if [ ${MASON_PLATFORM} = 'android' ]; then echo -n "MASON_ANDROID_ABI=${MASON_ANDROID_ABI} " ; fi -echo $0 $@ +function abort { >&2 echo -e "\033[1m\033[31m$1\033[0m"; exit 1; } +function info { >&2 echo -e "\033[1m\033[33m$1\033[0m"; } +function warn { >&2 echo -e "\033[1m\033[33m$1\033[0m"; } + +# Install mason +export PATH="`pwd`/.mason:${PATH}" MASON_DIR="`pwd`/.mason" + +# You can override the function for a particular set of flags by defining a +# print_XXX_flags function in your dependencies.sh file +function print_flags { + local NAME=$1; shift + if [ "$(type -t print_${NAME}_flags)" = 'function' ]; then + print_${NAME}_flags + else + local VERSION=`echo "${NAME}_VERSION" | tr "[:lower:]" "[:upper:]"` + if [ ! -z ${!VERSION:-} ] ; then + mason install ${NAME} ${!VERSION} + for FLAGS in "$@" ; do + CONFIG+=" '${NAME}_${FLAGS}%': $(quote_flags $(mason ${FLAGS} ${NAME} ${!VERSION})),"$LN + done + else + warn "* Not using ${NAME}" + fi + fi +} + +function print_default_flags { + : +} + +function print_opengl_flags { + CONFIG+=" 'opengl_cflags%': [],"$LN + CONFIG+=" 'opengl_ldflags%': [],"$LN +} + +# Load dependencies +source scripts/${MASON_PLATFORM}/configure.sh +if [ -e scripts/${MASON_PLATFORM}/${MASON_PLATFORM_VERSION}/configure.sh ]; then + source scripts/${MASON_PLATFORM}/${MASON_PLATFORM_VERSION}/configure.sh +fi PYTHON=`which python || abort 'Cannot find python'` @@ -78,12 +58,6 @@ PYTHON=`which python || abort 'Cannot find python'` >&2 ${PYTHON} --version >&2 echo -en "\033[0m"; -PKG_CONFIG=`which pkg-config || abort 'Cannot find pkg-config'` - ->&2 echo -en "\033[1m\033[32m* Using pkg-config " ->&2 ${PKG_CONFIG} --version ->&2 echo -en "\033[0m"; - function quote_flags { ${PYTHON} -c "import sys, re; print filter(None, re.split('(? ${CONFIG_FILE} cat ${CONFIG_FILE} diff --git a/gyp/android.gyp b/gyp/android.gyp new file mode 100644 index 000000000..0a09edb6c --- /dev/null +++ b/gyp/android.gyp @@ -0,0 +1,5 @@ +{ + 'includes': [ + '../android/mapboxgl-app.gypi', + ], +} diff --git a/gyp/asset-fs.gypi b/gyp/asset-fs.gypi index f7fbea1c7..e84fabb62 100644 --- a/gyp/asset-fs.gypi +++ b/gyp/asset-fs.gypi @@ -17,14 +17,14 @@ 'variables': { 'cflags_cc': [ - '<@(uv_cflags)', + '<@(libuv_cflags)', '<@(boost_cflags)', ], 'ldflags': [ - '<@(uv_ldflags)', + '<@(libuv_ldflags)', ], 'libraries': [ - '<@(uv_static_libs)', + '<@(libuv_static_libs)', ], 'defines': [ '-DMBGL_ASSET_FS' diff --git a/gyp/asset-zip.gypi b/gyp/asset-zip.gypi index 8a195649f..e8854734e 100644 --- a/gyp/asset-zip.gypi +++ b/gyp/asset-zip.gypi @@ -18,21 +18,21 @@ 'variables': { 'cflags': [ - '<@(uv_cflags)', - '<@(zip_cflags)', + '<@(libuv_cflags)', + '<@(libzip_cflags)', ], 'cflags_cc': [ - '<@(uv_cflags)', - '<@(zip_cflags)', + '<@(libuv_cflags)', + '<@(libzip_cflags)', '<@(boost_cflags)', ], 'ldflags': [ - '<@(uv_ldflags)', - '<@(zip_ldflags)', + '<@(libuv_ldflags)', + '<@(libzip_ldflags)', ], 'libraries': [ - '<@(uv_static_libs)', - '<@(zip_static_libs)', + '<@(libuv_static_libs)', + '<@(libzip_static_libs)', ], 'defines': [ '-DMBGL_ASSET_ZIP' diff --git a/gyp/cache-sqlite.gypi b/gyp/cache-sqlite.gypi index a9d21924c..704dc490e 100644 --- a/gyp/cache-sqlite.gypi +++ b/gyp/cache-sqlite.gypi @@ -19,17 +19,17 @@ 'variables': { 'cflags_cc': [ - '<@(uv_cflags)', - '<@(sqlite3_cflags)', + '<@(libuv_cflags)', + '<@(sqlite_cflags)', ], 'ldflags': [ - '<@(uv_ldflags)', - '<@(sqlite3_ldflags)', + '<@(libuv_ldflags)', + '<@(sqlite_ldflags)', '<@(zlib_ldflags)', ], 'libraries': [ - '<@(uv_static_libs)', - '<@(sqlite3_static_libs)', + '<@(libuv_static_libs)', + '<@(sqlite_static_libs)', '<@(zlib_static_libs)', ], }, diff --git a/gyp/core.gypi b/gyp/core.gypi index 246419371..f9b361032 100644 --- a/gyp/core.gypi +++ b/gyp/core.gypi @@ -28,21 +28,21 @@ 'variables': { 'cflags_cc': [ - '<@(uv_cflags)', + '<@(libuv_cflags)', '<@(opengl_cflags)', '<@(boost_cflags)', ], 'cflags': [ - '<@(uv_cflags)', + '<@(libuv_cflags)', '<@(opengl_cflags)', '-fPIC' ], 'ldflags': [ - '<@(uv_ldflags)', + '<@(libuv_ldflags)', '<@(opengl_ldflags)', ], 'libraries': [ - '<@(uv_static_libs)', + '<@(libuv_static_libs)', ], }, diff --git a/gyp/http-curl.gypi b/gyp/http-curl.gypi index b7c583235..7ae5b1b75 100644 --- a/gyp/http-curl.gypi +++ b/gyp/http-curl.gypi @@ -17,17 +17,17 @@ 'variables': { 'cflags_cc': [ - '<@(uv_cflags)', - '<@(curl_cflags)', + '<@(libuv_cflags)', + '<@(libcurl_cflags)', '<@(boost_cflags)', ], 'ldflags': [ - '<@(uv_ldflags)', - '<@(curl_ldflags)', + '<@(libuv_ldflags)', + '<@(libcurl_ldflags)', ], 'libraries': [ - '<@(uv_static_libs)', - '<@(curl_static_libs)', + '<@(libuv_static_libs)', + '<@(libcurl_static_libs)', ], 'defines': [ '-DMBGL_HTTP_CURL' @@ -38,9 +38,9 @@ ['host == "android"', { 'variables': { # Android uses libzip and openssl to set CURL's CA bundle. - 'cflags_cc': [ '<@(zip_cflags)', '<@(openssl_cflags)' ], - 'ldflags': [ '<@(zip_ldflags)', ], - 'libraries': [ '<@(zip_static_libs)', ], + 'cflags_cc': [ '<@(libzip_cflags)', '<@(openssl_cflags)' ], + 'ldflags': [ '<@(libzip_ldflags)', ], + 'libraries': [ '<@(libzip_static_libs)', ], }, }], ['OS == "mac"', { diff --git a/gyp/http-nsurl.gypi b/gyp/http-nsurl.gypi index a64c8508e..efd2c18a7 100644 --- a/gyp/http-nsurl.gypi +++ b/gyp/http-nsurl.gypi @@ -17,14 +17,14 @@ 'variables': { 'cflags_cc': [ - '<@(uv_cflags)', + '<@(libuv_cflags)', ], 'ldflags': [ '-framework Foundation', # For NSURLRequest - '<@(uv_ldflags)', + '<@(libuv_ldflags)', ], 'libraries': [ - '<@(uv_static_libs)', + '<@(libuv_static_libs)', ], 'defines': [ '-DMBGL_HTTP_NSURL' diff --git a/gyp/linux.gyp b/gyp/linux.gyp index 0f7126934..6cc168ba8 100644 --- a/gyp/linux.gyp +++ b/gyp/linux.gyp @@ -1,7 +1,10 @@ { 'includes': [ '../linux/mapboxgl-app.gypi', - '../test/test.gypi', - '../bin/render.gypi', + ], + + 'conditions': [ + ['test', { 'includes': [ '../test/test.gypi' ] } ], + ['render', { 'includes': [ '../bin/render.gypi' ] } ], ], } diff --git a/gyp/platform-android.gypi b/gyp/platform-android.gypi index 7701393bb..41a5733ac 100644 --- a/gyp/platform-android.gypi +++ b/gyp/platform-android.gypi @@ -22,23 +22,23 @@ 'variables': { 'cflags_cc': [ - '<@(png_cflags)', + '<@(libpng_cflags)', '<@(jpeg_cflags)', - '<@(uv_cflags)', - '<@(nu_cflags)', + '<@(libuv_cflags)', + '<@(nunicode_cflags)', '<@(boost_cflags)', ], 'ldflags': [ - '<@(png_ldflags)', + '<@(libpng_ldflags)', '<@(jpeg_ldflags)', - '<@(uv_ldflags)', - '<@(nu_ldflags)', + '<@(libuv_ldflags)', + '<@(nunicode_ldflags)', ], 'libraries': [ - '<@(png_static_libs)', + '<@(libpng_static_libs)', '<@(jpeg_static_libs)', - '<@(uv_static_libs)', - '<@(nu_static_libs)', + '<@(libuv_static_libs)', + '<@(nunicode_static_libs)', ], }, diff --git a/gyp/platform-ios.gypi b/gyp/platform-ios.gypi index 7baba06e5..481e0b2bb 100644 --- a/gyp/platform-ios.gypi +++ b/gyp/platform-ios.gypi @@ -65,11 +65,11 @@ 'variables': { 'cflags_cc': [ - '<@(uv_cflags)', + '<@(libuv_cflags)', '<@(boost_cflags)', ], 'libraries': [ - '<@(uv_static_libs)', + '<@(libuv_static_libs)', ], 'ldflags': [ '-framework CoreLocation', diff --git a/gyp/platform-linux.gypi b/gyp/platform-linux.gypi index 394433870..f614b831e 100644 --- a/gyp/platform-linux.gypi +++ b/gyp/platform-linux.gypi @@ -23,23 +23,23 @@ 'variables': { 'cflags_cc': [ - '<@(png_cflags)', + '<@(libpng_cflags)', '<@(jpeg_cflags)', - '<@(uv_cflags)', - '<@(nu_cflags)', + '<@(libuv_cflags)', + '<@(nunicode_cflags)', '<@(boost_cflags)', ], 'ldflags': [ - '<@(png_ldflags)', + '<@(libpng_ldflags)', '<@(jpeg_ldflags)', - '<@(uv_ldflags)', - '<@(nu_ldflags)', + '<@(libuv_ldflags)', + '<@(nunicode_ldflags)', ], 'libraries': [ - '<@(png_static_libs)', + '<@(libpng_static_libs)', '<@(jpeg_static_libs)', - '<@(uv_static_libs)', - '<@(nu_static_libs)', + '<@(libuv_static_libs)', + '<@(nunicode_static_libs)', ], }, diff --git a/gyp/platform-osx.gypi b/gyp/platform-osx.gypi index ae5194761..af30019ee 100644 --- a/gyp/platform-osx.gypi +++ b/gyp/platform-osx.gypi @@ -20,11 +20,11 @@ 'variables': { 'cflags_cc': [ - '<@(uv_cflags)', + '<@(libuv_cflags)', '<@(boost_cflags)', ], 'libraries': [ - '<@(uv_static_libs)', + '<@(libuv_static_libs)', ], 'ldflags': [ '-framework Foundation', diff --git a/linux/mapboxgl-app.gypi b/linux/mapboxgl-app.gypi index 379bd4ad5..8457c2ce7 100644 --- a/linux/mapboxgl-app.gypi +++ b/linux/mapboxgl-app.gypi @@ -31,13 +31,13 @@ 'cflags_cc': [ '<@(opengl_cflags)', '<@(boost_cflags)', - '<@(glfw3_cflags)', + '<@(glfw_cflags)', ], 'ldflags': [ - '<@(glfw3_ldflags)', + '<@(glfw_ldflags)', ], 'libraries': [ - '<@(glfw3_static_libs)', + '<@(glfw_static_libs)', ], }, diff --git a/macosx/mapboxgl-app.gypi b/macosx/mapboxgl-app.gypi index 3b7d904a7..589ae29bd 100644 --- a/macosx/mapboxgl-app.gypi +++ b/macosx/mapboxgl-app.gypi @@ -35,14 +35,14 @@ 'variables' : { 'cflags_cc': [ '<@(boost_cflags)', - '<@(glfw3_cflags)', + '<@(glfw_cflags)', ], 'ldflags': [ '-framework SystemConfiguration', # For NSUserDefaults and Reachability - '<@(glfw3_ldflags)', + '<@(glfw_ldflags)', ], 'libraries': [ - '<@(glfw3_static_libs)', + '<@(glfw_static_libs)', ], }, diff --git a/scripts/android/configure.sh b/scripts/android/configure.sh new file mode 100644 index 000000000..667ea6891 --- /dev/null +++ b/scripts/android/configure.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +BOOST_VERSION=1.57.0 +LIBCURL_VERSION=7.40.0 +OPENSSL_VERSION=1.0.1l +LIBPNG_VERSION=1.6.16 +JPEG_VERSION=v9a +SQLITE_VERSION=3.8.8.1 +LIBUV_VERSION=1.4.0 +ZLIB_VERSION=system +NUNICODE_VERSION=1.5.1 +LIBZIP_VERSION=0.11.2 + +export MASON_ANDROID_ABI=${MASON_PLATFORM_VERSION} \ No newline at end of file diff --git a/scripts/android/defaults.mk b/scripts/android/defaults.mk new file mode 100644 index 000000000..436f9db71 --- /dev/null +++ b/scripts/android/defaults.mk @@ -0,0 +1,11 @@ +HEADLESS ?= none +PLATFORM ?= android +ASSET ?= zip +HTTP ?= curl +CACHE ?= sqlite + +GYP_FLAVOR_SUFFIX=-android + +HOST_VERSION ?= arm-v7 + +ENV = $(shell MASON_ANDROID_ABI=$(HOST_VERSION) ./scripts/android/toolchain.sh) diff --git a/scripts/ios/configure.sh b/scripts/ios/configure.sh new file mode 100644 index 000000000..0562e0e39 --- /dev/null +++ b/scripts/ios/configure.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +BOOST_VERSION=1.57.0 +SQLITE_VERSION=system +LIBUV_VERSION=0.10.28 +ZLIB_VERSION=system diff --git a/scripts/ios/defaults.mk b/scripts/ios/defaults.mk new file mode 100644 index 000000000..fafc33213 --- /dev/null +++ b/scripts/ios/defaults.mk @@ -0,0 +1,12 @@ +HEADLESS = none +PLATFORM ?= ios +ASSET ?= fs +HTTP ?= nsurl +CACHE ?= sqlite + +HOST_VERSION = all + +PROVISIONING_PROFILE ?= 19324a54-7455-4f0b-8e1c-e6957c718ebc + +export MASON_PLATFORM=$(HOST) +export MASON_PLATFORM_VERSION=$(HOST_VERSION) diff --git a/scripts/ios/package.sh b/scripts/ios/package.sh index b499f4a10..449cf5c25 100755 --- a/scripts/ios/package.sh +++ b/scripts/ios/package.sh @@ -50,7 +50,7 @@ if [[ "${BUILD_FOR_DEVICE}" == true ]]; then ARCHS="arm64 armv7 armv7s" \ ONLY_ACTIVE_ARCH=NO \ GCC_GENERATE_DEBUGGING_SYMBOLS=${GCC_GENERATE_DEBUGGING_SYMBOLS} \ - -project ./build/ios/mbgl.xcodeproj \ + -project ./build/ios-all/mbgl.xcodeproj \ -configuration ${BUILDTYPE} \ -target everything \ -jobs ${JOBS} | xcpretty -c @@ -61,7 +61,7 @@ xcodebuild -sdk iphonesimulator${IOS_SDK_VERSION} \ ARCHS="x86_64 i386" \ ONLY_ACTIVE_ARCH=NO \ GCC_GENERATE_DEBUGGING_SYMBOLS=${GCC_GENERATE_DEBUGGING_SYMBOLS} \ - -project ./build/ios/mbgl.xcodeproj \ + -project ./build/ios-all/mbgl.xcodeproj \ -configuration ${BUILDTYPE} \ -target everything \ -jobs ${JOBS} | xcpretty -c diff --git a/scripts/linux/configure.sh b/scripts/linux/configure.sh new file mode 100644 index 000000000..1099a6550 --- /dev/null +++ b/scripts/linux/configure.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +BOOST_VERSION=1.57.0 +BOOST_LIBPROGRAM_OPTIONS_VERSION=1.57.0 +LIBCURL_VERSION=system +GLFW_VERSION=3.1 +LIBPNG_VERSION=1.6.16 +JPEG_VERSION=v9a +SQLITE_VERSION=3.8.8.1 +LIBUV_VERSION=0.10.28 +ZLIB_VERSION=system +NUNICODE_VERSION=1.5.1 +LIBZIP_VERSION=0.11.2 + +function print_opengl_flags { + CONFIG+=" 'opengl_cflags%': $(quote_flags $(pkg-config gl x11 --cflags)),"$LN + CONFIG+=" 'opengl_ldflags%': $(quote_flags $(pkg-config gl x11 --libs)),"$LN +} diff --git a/scripts/linux/defaults.mk b/scripts/linux/defaults.mk new file mode 100644 index 000000000..126c8f99a --- /dev/null +++ b/scripts/linux/defaults.mk @@ -0,0 +1,5 @@ +HEADLESS ?= glx +PLATFORM ?= linux +ASSET ?= fs +HTTP ?= curl +CACHE ?= sqlite diff --git a/scripts/main.mk b/scripts/main.mk new file mode 100644 index 000000000..b641a6ffe --- /dev/null +++ b/scripts/main.mk @@ -0,0 +1,127 @@ +ifeq (,$(V)) + QUIET = @ +endif + +# Determine host platform +HOST ?= $(BUILD) + +# Defines host defaults +include scripts/$(HOST)/defaults.mk + +HOST_VERSION ?= $(BUILD_VERSION) + +# Optionally include version-specific host defaults +-include scripts/$(HOST)/$(HOST_VERSION)/defaults.mk + +export MASON_PLATFORM=$(HOST) +export MASON_PLATFORM_VERSION=$(HOST_VERSION) + +HOST_SLUG = $(HOST)-$(HOST_VERSION) +CONFIGURE_FILES = scripts/$(HOST)/configure.sh +ifneq (,$(wildcard scripts/$(HOST)/$(HOST_VERSION)/configure.sh)) + CONFIGURE_FILES += scripts/$(HOST)/$(HOST_VERSION)/configure.sh +endif + + +# Text formatting +TEXT_BOLD = \033[1m +COLOR_GREEN = \033[32m +COLOR_CYAN = \033[36m +COLOR_PINK = \033[35m +FORMAT_END = \033[0m + +default: ; + +#### Dependencies ############################################################## + +SUBMODULES += .mason/mason.sh +.mason/mason.sh: + ./scripts/flock.py .git/Submodule.lock git submodule update --init .mason + +SUBMODULES += styles/styles +styles/styles: + ./scripts/flock.py .git/Submodule.lock git submodule update --init styles + +SUBMODULES += src/mbgl/util/geojsonvt/geojsonvt.hpp +src/mbgl/util/geojsonvt/geojsonvt.hpp: + ./scripts/flock.py .git/Submodule.lock git submodule update --init src/mbgl/util/geojsonvt + +SUBMODULES += test/suite/package.json +test/suite/package.json: + ./scripts/flock.py .git/Submodule.lock git submodule update --init test/suite + +ifeq ($(HOST),ios) +SUBMODULES += platform/ios/vendor/SMCalloutView/SMCalloutView.h +platform/ios/vendor/SMCalloutView/SMCalloutView.h: + ./scripts/flock.py .git/Submodule.lock git submodule update --init platform/ios/vendor/SMCalloutView + +SUBMODULES += test/ios/KIF/KIF.xcodeproj +test/ios/KIF/KIF.xcodeproj: + ./scripts/flock.py .git/Submodule.lock git submodule update --init test/ios/KIF +endif + +# Wildcard targets get removed after build by default, but we want to preserve the config. +.PRECIOUS: config/%.gypi +config/%.gypi: $(SUBMODULES) configure $(CONFIGURE_FILES) + @printf "$(TEXT_BOLD)$(COLOR_GREEN)* Recreating project...$(FORMAT_END)\n" + $(QUIET)$(ENV) ./scripts/flock.py build/Configure.lock ./configure config/$*.gypi + + +#### Build files ############################################################### + +GYP_FLAGS += -Dhost=$(HOST) +GYP_FLAGS += -Iconfig/$(HOST_SLUG).gypi +GYP_FLAGS += -Dplatform_lib=$(PLATFORM) +GYP_FLAGS += -Dhttp_lib=$(HTTP) +GYP_FLAGS += -Dasset_lib=$(ASSET) +GYP_FLAGS += -Dcache_lib=$(CACHE) +GYP_FLAGS += -Dheadless_lib=$(HEADLESS) +GYP_FLAGS += -Dtest=$(BUILD_TEST) +GYP_FLAGS += -Drender=$(BUILD_RENDER) +GYP_FLAGS += --depth=. +GYP_FLAGS += -Goutput_dir=. +GYP_FLAGS += --generator-output=./build/$(HOST_SLUG) + +.PHONY: Makefile/__project__ +Makefile/__project__: print-env $(SUBMODULES) config/$(HOST_SLUG).gypi + @printf "$(TEXT_BOLD)$(COLOR_GREEN)* Recreating project...$(FORMAT_END)\n" + $(QUIET)$(ENV) deps/run_gyp gyp/$(HOST).gyp $(GYP_FLAGS) -f make$(GYP_FLAVOR_SUFFIX) + +.PHONY: Xcode/__project__ +Xcode/__project__: print-env $(SUBMODULES) config/$(HOST_SLUG).gypi + @printf "$(TEXT_BOLD)$(COLOR_GREEN)* Recreating project...$(FORMAT_END)\n" + $(QUIET)$(ENV) deps/run_gyp gyp/$(HOST).gyp $(GYP_FLAGS) -f xcode$(GYP_FLAVOR_SUFFIX) + +#### Build individual targets ################################################## + +Makefile/%: Makefile/__project__ + @printf "$(TEXT_BOLD)$(COLOR_GREEN)* Building target $*...$(FORMAT_END)\n" + $(QUIET)$(ENV) $(MAKE) -C build/$(HOST_SLUG) BUILDTYPE=$(BUILDTYPE) $* + +Xcode/%: Xcode/__project__ + @printf "$(TEXT_BOLD)$(COLOR_GREEN)* Building target $*...$(FORMAT_END)\n" + $(QUIET)$(ENV) xcodebuild \ + $(XCODEBUILD_ARGS) \ + -project ./build/$(HOST_SLUG)/gyp/$(HOST).xcodeproj \ + -configuration $(BUILDTYPE) \ + -target $* \ + -jobs $(JOBS) \ + $(XCPRETTY) + +#### Run tests ################################################################# + +test-%: Makefile/test + ./scripts/run_tests.sh "build/$(HOST_SLUG)/$(BUILDTYPE)/test" --gtest_filter=$* + +#### Helper targets ############################################################ + +.PHONY: print-env +print-env: $(SUBMODULES) + @printf "$(COLOR_PINK)build:$(FORMAT_END) $(BUILD)/$(BUILD_VERSION)\n" + @printf "$(COLOR_PINK)host:$(FORMAT_END) $(HOST)/$(HOST_VERSION)\n" + @printf "$(COLOR_PINK)libs:$(FORMAT_END) " + @printf "headless=$(COLOR_CYAN)%s$(FORMAT_END) " $(HEADLESS) + @printf "platform=$(COLOR_CYAN)%s$(FORMAT_END) " $(PLATFORM) + @printf "asset=$(COLOR_CYAN)%s$(FORMAT_END) " $(ASSET) + @printf "http=$(COLOR_CYAN)%s$(FORMAT_END) " $(HTTP) + @printf "cache=$(COLOR_CYAN)%s$(FORMAT_END)\n" $(CACHE) diff --git a/scripts/osx/configure.sh b/scripts/osx/configure.sh new file mode 100644 index 000000000..fc3c5f464 --- /dev/null +++ b/scripts/osx/configure.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +BOOST_VERSION=1.57.0 +BOOST_LIBPROGRAM_OPTIONS_VERSION=1.57.0 +LIBCURL_VERSION=system +GLFW_VERSION=3.1 +LIBPNG_VERSION=1.6.16 +JPEG_VERSION=v9a +SQLITE_VERSION=3.8.8.1 +LIBUV_VERSION=0.10.28 +ZLIB_VERSION=system +NUNICODE_VERSION=1.5.1 +LIBZIP_VERSION=0.11.2 diff --git a/scripts/osx/defaults.mk b/scripts/osx/defaults.mk new file mode 100644 index 000000000..f148f66d8 --- /dev/null +++ b/scripts/osx/defaults.mk @@ -0,0 +1,5 @@ +HEADLESS ?= cgl +PLATFORM ?= osx +ASSET ?= fs +HTTP ?= nsurl +CACHE ?= sqlite diff --git a/test/test.gypi b/test/test.gypi index 142445d98..4e669aee1 100644 --- a/test/test.gypi +++ b/test/test.gypi @@ -94,19 +94,19 @@ 'style/sprite.cpp', ], 'libraries': [ - '<@(uv_static_libs)', - '<@(sqlite3_static_libs)', + '<@(libuv_static_libs)', + '<@(sqlite_static_libs)', ], 'variables': { 'cflags_cc': [ - '<@(uv_cflags)', + '<@(libuv_cflags)', '<@(opengl_cflags)', '<@(boost_cflags)', - '<@(sqlite3_cflags)', + '<@(sqlite_cflags)', ], 'ldflags': [ - '<@(uv_ldflags)', - '<@(sqlite3_ldflags)', + '<@(libuv_ldflags)', + '<@(sqlite_ldflags)', ], }, 'conditions': [