summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2018-08-23 12:15:09 +0200
committerKonstantin Käfer <mail@kkaefer.com>2018-09-11 11:43:54 +0200
commit2fccdecfb1ae720682276c0342e1c3902d8c9873 (patch)
tree7de62d938f0691b91681bca1c510a89f07eda067 /scripts
parentbc9b2249169276987af4ed91b29bf8a2fd65e15e (diff)
downloadqtlocation-mapboxgl-2fccdecfb1ae720682276c0342e1c3902d8c9873.tar.gz
[build] add script to generate a standalone version of Mapbox GL
Diffstat (limited to 'scripts')
-rw-r--r--scripts/standalone.cmake18
-rwxr-xr-xscripts/standalone.sh78
2 files changed, 96 insertions, 0 deletions
diff --git a/scripts/standalone.cmake b/scripts/standalone.cmake
new file mode 100644
index 0000000000..b8bcbfa03f
--- /dev/null
+++ b/scripts/standalone.cmake
@@ -0,0 +1,18 @@
+include(cmake/mason.cmake)
+
+# include once for every platform to get all dependency defines
+set(MBGL_PLATFORM "android")
+include(cmake/mason-dependencies.cmake)
+set(MBGL_PLATFORM "ios")
+include(cmake/mason-dependencies.cmake)
+
+get_cmake_property(_VARS VARIABLES)
+foreach (_VAR ${_VARS})
+ if (_VAR MATCHES "^MASON_PACKAGE_.+_NAME$")
+ set(_PACKAGE "${${_VAR}}")
+ if (MASON_PACKAGE_${_PACKAGE}_HEADER_ONLY)
+ file(RELATIVE_PATH _PREFIX "${CMAKE_CURRENT_LIST_DIR}/.." "${MASON_PACKAGE_${_PACKAGE}_PREFIX}")
+ message("${_PACKAGE} ${_PREFIX} ${MASON_PACKAGE_${_PACKAGE}_VERSION}")
+ endif()
+ endif()
+endforeach()
diff --git a/scripts/standalone.sh b/scripts/standalone.sh
new file mode 100755
index 0000000000..80b9ac6931
--- /dev/null
+++ b/scripts/standalone.sh
@@ -0,0 +1,78 @@
+#!/usr/bin/env bash
+
+set -e
+set -o pipefail
+
+cd "$(dirname "${BASH_SOURCE[0]}")/.."
+
+function usage {
+ echo "Usage: $0 <args> [target]"
+ echo ""
+ echo " -c, --clean-target Removes all files in the target directory instead of overwriting them"
+ echo " -s, --skip [name] Skips vendoring the given dependency"
+ exit 1
+}
+
+CLEAN_TARGET=false
+
+ARGS=()
+while [[ $# -gt 0 ]] ; do case "$1" in
+ -c|--clean-target) CLEAN_TARGET=true ; shift ;;
+ -s|--skip) shift ; DEP="$1" ; shift ; declare SKIP_$DEP=true ;;
+ *) ARGS+=("$1") ; shift ;;
+esac ; done
+set -- "${ARGS[@]}"
+
+if [ -z "$1" ]; then usage ; fi
+TARGET="$1"
+
+if [ "$CLEAN_TARGET" = true ] ; then
+ echo ">> Cleaning target directory..."
+ rm -rf "$TARGET"
+fi
+
+echo ">> Creating target directory..."
+mkdir -p "$TARGET"
+TARGET=$(cd "`pwd`/$TARGET"; pwd)
+
+echo ">> Creating file lists..."
+cat cmake/core-files.txt cmake/filesource-files.txt > "$TARGET/files.txt"
+mkdir -p "$TARGET/platform/android"
+cat platform/android/*-files.txt > "$TARGET/platform/android/files.txt"
+
+echo ">> Copying source files..."
+rsync -rR $(git ls-files \
+ "include" \
+ "src" \
+ "platform/default" \
+ "platform/android/mbgl" \
+ "platform/android/src" \
+ "platform/linux/src" \
+ "platform/android/MapboxGLAndroidSDK/src/main" \
+) "$TARGET"
+
+echo ">> Copying vendored files..."
+rsync -rR $(git ls-files \
+ "vendor/expected" \
+ "vendor/icu" \
+ "vendor/nunicode" \
+ "vendor/sqlite" \
+) "$TARGET"
+
+echo ">> Copying Mason dependencies..."
+cmake -P scripts/standalone.cmake 2>&1 | while read DEPENDENCY ; do
+ DEPENDENCY=($DEPENDENCY)
+ if [ "[Mason]" = "${DEPENDENCY[0]}" ]; then
+ echo "${DEPENDENCY[@]}"
+ continue
+ fi
+ SKIP=SKIP_${DEPENDENCY[0]}
+ if [ "${!SKIP:-false}" = true ]; then continue ; fi
+ DESTINATION="$TARGET/vendor/${DEPENDENCY[0]}"
+ mkdir -p "$DESTINATION"
+ echo " - ${DEPENDENCY[0]}"
+ cp -r "${DEPENDENCY[1]}/" "$DESTINATION"
+ rm "$DESTINATION/mason.ini"
+ (cd "${DEPENDENCY[1]}" && find include -type f -name "*.hpp" -o -name "*.h") > "$DESTINATION/files.txt"
+ echo "${DEPENDENCY[2]}" > "$DESTINATION/version.txt"
+done