summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLucas Wojciechowski <lucas@mapbox.com>2015-09-02 13:38:37 -0700
committerLucas Wojciechowski <lucas@mapbox.com>2015-09-15 11:17:53 -0700
commit4e1ead344bfb1f9ddb207924465fabae3d218d67 (patch)
treeaf358c06302f77ad30cd641bb2d915325d72d535
parentc1d229280942778e43cce014f3c761db09d191d1 (diff)
downloadqtlocation-mapboxgl-4e1ead344bfb1f9ddb207924465fabae3d218d67.tar.gz
[node] Enable npm to build mapbox-gl-native package from source
- Allow node bindings to be built if git submodules cannot be checked out - Made geojsonvt a mason package instead of a git submodule - Use globally installed mason if it cannot be checked out via git submodules
-rw-r--r--.gitmodules3
-rwxr-xr-xconfigure30
-rw-r--r--gyp/core.gypi5
-rw-r--r--gyp/version.gypi2
-rw-r--r--scripts/android/configure.sh2
-rwxr-xr-xscripts/build-version.py45
-rw-r--r--scripts/ios/configure.sh2
-rwxr-xr-xscripts/ios/package.sh6
-rw-r--r--scripts/linux/configure.sh2
-rw-r--r--scripts/main.mk10
-rw-r--r--scripts/osx/configure.sh2
-rwxr-xr-xscripts/osx/run.sh3
-rw-r--r--src/mbgl/map/annotation.cpp3
-rw-r--r--src/mbgl/map/annotation.hpp3
m---------src/mbgl/util/geojsonvt0
-rw-r--r--test/test.gypi3
16 files changed, 90 insertions, 31 deletions
diff --git a/.gitmodules b/.gitmodules
index 2aa6d52be9..0152ed56bb 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -14,6 +14,3 @@
path = platform/ios/vendor/SMCalloutView
url = https://github.com/nfarina/calloutview.git
-[submodule "src/mbgl/util/geojsonvt"]
- path = src/mbgl/util/geojsonvt
- url = https://github.com/mapbox/geojson-vt-cpp
diff --git a/configure b/configure
index 6fbaa9f7f8..6d0ac780c3 100755
--- a/configure
+++ b/configure
@@ -15,8 +15,15 @@ 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"
+if [ -d "`pwd`/.git" ]; then
+ info "This build is within a git repository"
+ export MASON_DIR="`pwd`/.mason"
+ export PATH="${MASON_DIR}:${PATH}"
+else
+ info "This build is NOT within a git repository"
+ which mason || abort "You must install mason to build mapbox-gl-native (https://github.com/mapbox/mason)"
+ export MASON_DIR="$(dirname $(readlink $(which mason)))"
+fi
# You can override the function for a particular set of flags by defining a
# print_XXX_flags function in your dependencies.sh file
@@ -37,6 +44,23 @@ function print_flags {
fi
}
+function print_build_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 build ${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 {
:
}
@@ -93,6 +117,8 @@ print_flags libuv static_libs cflags ldflags
print_flags zlib static_libs cflags ldflags
print_flags nunicode static_libs cflags ldflags
print_flags libzip static_libs cflags ldflags
+print_build_flags geojsonvt static_libs cflags ldflags
+print_flags variant static_libs cflags ldflags
CONFIG+=" }
}
diff --git a/gyp/core.gypi b/gyp/core.gypi
index f9b361032e..51009be698 100644
--- a/gyp/core.gypi
+++ b/gyp/core.gypi
@@ -31,10 +31,14 @@
'<@(libuv_cflags)',
'<@(opengl_cflags)',
'<@(boost_cflags)',
+ '<@(geojsonvt_cflags)',
+ '<@(variant_cflags)',
],
'cflags': [
'<@(libuv_cflags)',
'<@(opengl_cflags)',
+ '<@(geojsonvt_cflags)',
+ '<@(variant_cflags)',
'-fPIC'
],
'ldflags': [
@@ -43,6 +47,7 @@
],
'libraries': [
'<@(libuv_static_libs)',
+ '<@(geojsonvt_static_libs)',
],
},
diff --git a/gyp/version.gypi b/gyp/version.gypi
index 1cc2eb351f..4efdd079a8 100644
--- a/gyp/version.gypi
+++ b/gyp/version.gypi
@@ -13,7 +13,7 @@
'outputs': [
'<(SHARED_INTERMEDIATE_DIR)/include/mbgl/util/version.hpp',
],
- 'action': ['<@(_inputs)', '<(SHARED_INTERMEDIATE_DIR)', '<!@(git describe --tags --always --abbrev=0)', '<!@(git rev-parse HEAD)'],
+ 'action': ['<@(_inputs)', '<(SHARED_INTERMEDIATE_DIR)'],
}
],
'direct_dependent_settings': {
diff --git a/scripts/android/configure.sh b/scripts/android/configure.sh
index 70c8973a8b..a849d48d18 100644
--- a/scripts/android/configure.sh
+++ b/scripts/android/configure.sh
@@ -8,5 +8,7 @@ LIBUV_VERSION=1.4.0
ZLIB_VERSION=system
NUNICODE_VERSION=1.5.1
LIBZIP_VERSION=0.11.2
+GEOJSONVT_VERSION=1.1.0
+VARIANT_VERSION=1.0
export MASON_ANDROID_ABI=${MASON_PLATFORM_VERSION}
diff --git a/scripts/build-version.py b/scripts/build-version.py
index 0110e6a2e1..1d58998c9b 100755
--- a/scripts/build-version.py
+++ b/scripts/build-version.py
@@ -1,22 +1,22 @@
#!/usr/bin/env python
-import sys, os, errno, re
+import sys, os, errno, re, subprocess
+DEFAULT_TAG = [0, 0, 0]
+DEFAULT_REV = 'unknown'
-output_dir = sys.argv[1]
+def is_git_repo():
+ try:
+ subprocess.check_output("git rev-parse", shell=True)
+ return True
+ except subprocess.CalledProcessError as exc:
+ return False
-if len(sys.argv) <= 3:
- tag = [0, 0, 0]
- rev = sys.argv[2][0:8]
-else:
- # When they're identical, the git describe can't find a tag and reports the rev instead.
- if sys.argv[2] == sys.argv[3]:
- tag = [0, 0, 0]
- else:
- ver = re.sub("[^0-9.]", "", sys.argv[2])
- tag = map(int, ver.split('.'))
- rev = sys.argv[3][0:8]
+def parse_tag(raw_tag):
+ return map(int, re.sub("[^0-9.]", "", raw_tag).split('.'))
+def parse_rev(raw_rev):
+ return raw_rev[0:8]
def mkdir_p(path):
try:
@@ -27,6 +27,24 @@ def mkdir_p(path):
else: raise
+output_dir = sys.argv[1]
+
+if is_git_repo():
+ raw_tag = subprocess.check_output("git describe --tags --always --abbrev=0", shell=True)
+ raw_rev = subprocess.check_output("git rev-parse HEAD", shell=True)
+
+ # When they're identical, the "git describe" can't find a tag and reports the rev instead.
+ if raw_tag == raw_rev:
+ tag = DEFAULT_TAG
+ rev = parse_rev(raw_rev)
+ else:
+ tag = parse_tag(raw_tag)
+ rev = parse_rev(raw_rev)
+else:
+ tag = DEFAULT_TAG
+ rev = DEFAULT_REV
+
+
header = """// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
#ifndef MBGL_UTIL_VERSION
#define MBGL_UTIL_VERSION
@@ -60,4 +78,3 @@ extern const unsigned int number;
header_path = os.path.join(output_dir, 'include/mbgl/util/version.hpp')
mkdir_p(os.path.dirname(header_path))
with open(header_path, 'w') as f: f.write(header)
-
diff --git a/scripts/ios/configure.sh b/scripts/ios/configure.sh
index 0562e0e39a..954ba34b1b 100644
--- a/scripts/ios/configure.sh
+++ b/scripts/ios/configure.sh
@@ -4,3 +4,5 @@ BOOST_VERSION=1.57.0
SQLITE_VERSION=system
LIBUV_VERSION=0.10.28
ZLIB_VERSION=system
+GEOJSONVT_VERSION=1.1.0
+VARIANT_VERSION=1.0
diff --git a/scripts/ios/package.sh b/scripts/ios/package.sh
index 2b1e97c304..3d21bacb5a 100755
--- a/scripts/ios/package.sh
+++ b/scripts/ios/package.sh
@@ -74,12 +74,14 @@ if [[ "${BUILD_FOR_DEVICE}" == true ]]; then
-o ${OUTPUT}/static/lib${NAME}.a \
${LIBS[@]/#/build/${BUILDTYPE}-iphoneos/libmbgl-} \
${LIBS[@]/#/build/${BUILDTYPE}-iphonesimulator/libmbgl-} \
- `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libuv.a`
+ `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libuv.a` \
+ `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libgeojsonvt.a`
else
libtool -static -no_warning_for_no_symbols \
-o ${OUTPUT}/static/lib${NAME}.a \
${LIBS[@]/#/build/${BUILDTYPE}-iphonesimulator/libmbgl-} \
- `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libuv.a`
+ `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libuv.a` \
+ `find mason_packages/ios-${IOS_SDK_VERSION} -type f -name libgeojsonvt.a`
fi
echo "Created ${OUTPUT}/static/lib${NAME}.a"
diff --git a/scripts/linux/configure.sh b/scripts/linux/configure.sh
index 1099a65504..c4c307eb78 100644
--- a/scripts/linux/configure.sh
+++ b/scripts/linux/configure.sh
@@ -11,6 +11,8 @@ LIBUV_VERSION=0.10.28
ZLIB_VERSION=system
NUNICODE_VERSION=1.5.1
LIBZIP_VERSION=0.11.2
+GEOJSONVT_VERSION=1.1.0
+VARIANT_VERSION=1.0
function print_opengl_flags {
CONFIG+=" 'opengl_cflags%': $(quote_flags $(pkg-config gl x11 --cflags)),"$LN
diff --git a/scripts/main.mk b/scripts/main.mk
index 3639a780a7..dae3782a68 100644
--- a/scripts/main.mk
+++ b/scripts/main.mk
@@ -16,6 +16,10 @@ HOST_VERSION ?= $(BUILD_VERSION)
export MASON_PLATFORM=$(HOST)
export MASON_PLATFORM_VERSION=$(HOST_VERSION)
+ifneq (,$(wildcard scripts/$(HOST)/$(HOST_VERSION)/configure.sh))
+ CONFIGURE_FILES += scripts/$(HOST)/$(HOST_VERSION)/configure.sh
+endif
+
HOST_SLUG = $(HOST)-$(HOST_VERSION)
CONFIGURE_FILES = scripts/$(HOST)/configure.sh
ifneq (,$(wildcard scripts/$(HOST)/$(HOST_VERSION)/configure.sh))
@@ -34,6 +38,7 @@ default: ;
#### Dependencies ##############################################################
+ifneq (,$(wildcard .git/.))
SUBMODULES += .mason/mason.sh
.mason/mason.sh:
./scripts/flock.py .git/Submodule.lock git submodule update --init .mason
@@ -42,10 +47,6 @@ 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
-
ifeq ($(HOST),ios)
SUBMODULES += platform/ios/vendor/SMCalloutView/SMCalloutView.h
platform/ios/vendor/SMCalloutView/SMCalloutView.h:
@@ -55,6 +56,7 @@ 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
+endif
# Wildcard targets get removed after build by default, but we want to preserve the config.
.PRECIOUS: config/%.gypi
diff --git a/scripts/osx/configure.sh b/scripts/osx/configure.sh
index fc3c5f464f..4280bdf0a1 100644
--- a/scripts/osx/configure.sh
+++ b/scripts/osx/configure.sh
@@ -11,3 +11,5 @@ LIBUV_VERSION=0.10.28
ZLIB_VERSION=system
NUNICODE_VERSION=1.5.1
LIBZIP_VERSION=0.11.2
+GEOJSONVT_VERSION=1.1.0
+VARIANT_VERSION=1.0
diff --git a/scripts/osx/run.sh b/scripts/osx/run.sh
index 86a7291522..70d54c5ce9 100755
--- a/scripts/osx/run.sh
+++ b/scripts/osx/run.sh
@@ -14,9 +14,6 @@ BUILDTYPE=${BUILDTYPE:-Release}
mapbox_time "checkout_styles" \
git submodule update --init styles
-mapbox_time "checkout_geojsonvt" \
-git submodule update --init src/mbgl/util/geojsonvt
-
mapbox_time "compile_program" \
make xosx -j${JOBS} BUILDTYPE=${BUILDTYPE}
diff --git a/src/mbgl/map/annotation.cpp b/src/mbgl/map/annotation.cpp
index 8744597975..4bc01871b6 100644
--- a/src/mbgl/map/annotation.cpp
+++ b/src/mbgl/map/annotation.cpp
@@ -1,10 +1,11 @@
+#include <mapbox/geojsonvt/geojsonvt_convert.hpp>
+
#include <mbgl/map/annotation.hpp>
#include <mbgl/annotation/point_annotation.hpp>
#include <mbgl/annotation/shape_annotation.hpp>
#include <mbgl/map/tile_id.hpp>
#include <mbgl/map/live_tile.hpp>
#include <mbgl/util/constants.hpp>
-#include <mbgl/util/geojsonvt/geojsonvt_convert.hpp>
#include <mbgl/util/ptr.hpp>
#include <mbgl/util/string.hpp>
diff --git a/src/mbgl/map/annotation.hpp b/src/mbgl/map/annotation.hpp
index 5adec162f7..6b80d9f6c5 100644
--- a/src/mbgl/map/annotation.hpp
+++ b/src/mbgl/map/annotation.hpp
@@ -1,13 +1,14 @@
#ifndef MBGL_MAP_ANNOTATIONS
#define MBGL_MAP_ANNOTATIONS
+#include <mapbox/geojsonvt/geojsonvt.hpp>
+
#include <mbgl/map/map.hpp>
#include <mbgl/map/geometry_tile.hpp>
#include <mbgl/map/tile_id.hpp>
#include <mbgl/style/style_properties.hpp>
#include <mbgl/style/types.hpp>
#include <mbgl/util/geo.hpp>
-#include <mbgl/util/geojsonvt/geojsonvt.hpp>
#include <mbgl/util/noncopyable.hpp>
#include <mbgl/util/vec.hpp>
diff --git a/src/mbgl/util/geojsonvt b/src/mbgl/util/geojsonvt
deleted file mode 160000
-Subproject 995ffc72c556da4b4880a6036fbcf7159fc5ecc
diff --git a/test/test.gypi b/test/test.gypi
index a35b00133b..c53263bd5c 100644
--- a/test/test.gypi
+++ b/test/test.gypi
@@ -95,6 +95,7 @@
'libraries': [
'<@(libuv_static_libs)',
'<@(sqlite_static_libs)',
+ '<@(geojsonvt_static_libs)',
],
'variables': {
'cflags_cc': [
@@ -102,6 +103,8 @@
'<@(opengl_cflags)',
'<@(boost_cflags)',
'<@(sqlite_cflags)',
+ '<@(geojsonvt_cflags)',
+ '<@(variant_cflags)',
],
'ldflags': [
'<@(libuv_ldflags)',