From 30d9c0b6f331107d23639e7444abb42718fa3e4c Mon Sep 17 00:00:00 2001 From: "v.greshilov" Date: Tue, 5 Dec 2017 17:07:32 +0300 Subject: [cmake] Change build_omim.sh and remove old .sh scripts Fix description Fix gcc for linux Fix devtoolset-6 Fix error log Add custom target build Targets as positional arguments, default build dir: ../ Fix find_generator_tool.sh Fix designer and desktop tool names --- tools/unix/build_designer.sh | 70 ----------------- tools/unix/build_omim.sh | 156 +++++++++++++++----------------------- tools/unix/cmake_omim.sh | 109 -------------------------- tools/unix/find_generator_tool.sh | 6 +- 4 files changed, 64 insertions(+), 277 deletions(-) delete mode 100755 tools/unix/build_designer.sh delete mode 100755 tools/unix/cmake_omim.sh (limited to 'tools') diff --git a/tools/unix/build_designer.sh b/tools/unix/build_designer.sh deleted file mode 100755 index b19125002a..0000000000 --- a/tools/unix/build_designer.sh +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/bash -set -e -u - -# Prepare environment variables which specify app version and codebase sha -APP_VERSION=UNKNOWN -[ $# -gt 0 ] && APP_VERSION=$1 -DESIGNER_CODEBASE_SHA=$(git log -1 --format="%H") -OMIM_PATH="$(cd "${OMIM_PATH:-$(dirname "$0")/../..}"; pwd)" -DATA_PATH="$OMIM_PATH/data" -BUILD_PATH="$OMIM_PATH/out" -RELEASE_PATH="$BUILD_PATH/release" - -source "$OMIM_PATH/tools/autobuild/detect_qmake.sh" - -# Print designer_version.h file -cat > "$OMIM_PATH/designer_version.h" < "$TMP_FILE"; then - echo '--------------------' - cat "$TMP_FILE" - exit 1 - fi -) - -# Prepare app package by copying Qt, Kothic, Skin Generator, Style tests -for i in skin_generator style_tests generator_tool MAPS.ME.Designer; do - "$(dirname "$QMAKE")/macdeployqt" "$RELEASE_PATH/$i.app" - [ -z "${QTPATH-}" ] && QTPATH="$(otool -L "$RELEASE_PATH/$i.app/Contents/Frameworks/QtGui.framework/QtGui" | grep QtCore | sed -e 's/^[[:space:]]*\(.*\)lib\/QtCore.framework.*$/\1/')" - python "$OMIM_PATH/tools/macdeployqtfix/macdeployqtfix.py" -q -nl "$RELEASE_PATH/$i.app/Contents/MacOS/$i" "$QTPATH" -done - -MAC_RESOURCES="$RELEASE_PATH/MAPS.ME.Designer.app/Contents/Resources" -cp -r "$RELEASE_PATH/style_tests.app" "$MAC_RESOURCES/style_tests.app" -cp -r "$RELEASE_PATH/skin_generator.app" "$MAC_RESOURCES/skin_generator.app" -cp -r "$RELEASE_PATH/generator_tool.app" "$MAC_RESOURCES/generator_tool.app" -cp -r "$OMIM_PATH/tools/kothic" "$MAC_RESOURCES/kothic" -cp "$OMIM_PATH/tools/python/stylesheet/drules_info.py" "$MAC_RESOURCES/kothic/src/drules_info.py" -cp "$OMIM_PATH/3party/protobuf/protobuf-3.3.0-py2.7.egg" "$MAC_RESOURCES/kothic" -cp "$OMIM_PATH/tools/python/recalculate_geom_index.py" "$MAC_RESOURCES/recalculate_geom_index.py" -cp "$OMIM_PATH/tools/python/generate_styles_override.py" "$MAC_RESOURCES/generate_styles_override.py" - -# Copy all drules and resources (required for test environment) -rm -rf $MAC_RESOURCES/drules_proto* -rm -rf $MAC_RESOURCES/resources-* -for i in mdpi hdpi xhdpi xxhdpi 6plus; do - cp -r $OMIM_PATH/data/resources-${i}_design/ $MAC_RESOURCES/resources-${i}_design/ -done -cp $OMIM_PATH/data/drules_proto_design.bin $MAC_RESOURCES/drules_proto_design.bin -for i in resources-default countries-strings cuisine-strings WorldCoasts_obsolete.mwm countries.txt cuisines.txt countries_obsolete.txt packed_polygons.bin packed_polygons_obsolete.bin; do - cp -r $OMIM_PATH/data/$i $MAC_RESOURCES/ -done - -# Build DMG image -rm -rf "$BUILD_PATH/deploy" -mkdir "$BUILD_PATH/deploy" -cp -r "$RELEASE_PATH/MAPS.ME.Designer.app" "$BUILD_PATH/deploy/MAPS.ME.Designer.app" -cp -r "$DATA_PATH/styles" "$BUILD_PATH/deploy/styles" - -DMG_NAME=MAPS.ME.Designer.$APP_VERSION -hdiutil create -size 640m -volname $DMG_NAME -srcfolder "$BUILD_PATH/deploy" -ov -format UDZO "$BUILD_PATH/$DMG_NAME.dmg" diff --git a/tools/unix/build_omim.sh b/tools/unix/build_omim.sh index 6282a34a51..f5c020d021 100755 --- a/tools/unix/build_omim.sh +++ b/tools/unix/build_omim.sh @@ -3,9 +3,13 @@ set -u -e OPT_DEBUG= OPT_RELEASE= -OPT_OSRM= OPT_CLEAN= -while getopts ":cdro" opt; do +OPT_SKIP_DESKTOP= +OPT_DESIGNER= +OPT_TARGET= +OPT_PATH= + +while getopts ":cdrstp:" opt; do case $opt in d) OPT_DEBUG=1 @@ -13,29 +17,44 @@ while getopts ":cdro" opt; do r) OPT_RELEASE=1 ;; - o) - OPT_OSRM=1 - ;; c) OPT_CLEAN=1 ;; + s) + OPT_SKIP_DESKTOP=1 + CMAKE_CONFIG="${CMAKE_CONFIG:-} -DSKIP_DESKTOP=ON" + ;; + t) + OPT_DESIGNER=1 + ;; + p) + OPT_PATH="$OPTARG" + ;; *) - echo "This tool builds omim and osrm-backend." - echo "Usage: $0 [-d] [-r] [-o] [-c]" + echo "This tool builds omim" + echo "Usage: $0 [-d] [-r] [-c] [-s] [-g] [-p PATH] [target1 target2 ...]" echo echo -e "-d\tBuild omim-debug" echo -e "-r\tBuild omim-release" - echo -e "-o\tBuild osrm-backend" echo -e "-c\tClean before building" - echo - echo "By default release is built. Specify TARGET and OSRM_TARGET if needed." + echo -e "-s\tSkip desktop app building" + echo -e "-t\tBuild designer tool (only for MacOS X platform)" + echo -e "-p\tDirectory for built binaries" + echo "By default both configurations is built." exit 1 ;; esac done +[ -n "$OPT_DESIGNER" -a -n "$OPT_SKIP_DESKTOP" ] && +echo "Can't skip desktop and build designer tool simultaneously" && +exit 2 + +OPT_TARGET=${@:$OPTIND} + # By default build everything -if [ -z "$OPT_DEBUG$OPT_RELEASE$OPT_OSRM" ]; then +if [ -z "$OPT_DEBUG$OPT_RELEASE" ]; then + OPT_DEBUG=1 OPT_RELEASE=1 fi @@ -45,8 +64,7 @@ if ! grep "DEFAULT_URLS_JSON" "$OMIM_PATH/private.h" >/dev/null 2>/dev/null; the exit 2 fi -BOOST_PATH="${BOOST_PATH:-/usr/local/boost_1.54.0}" -DEVTOOLSET_PATH=/opt/rh/devtoolset-3 +DEVTOOLSET_PATH=/opt/rh/devtoolset-6 if [ -d "$DEVTOOLSET_PATH" ]; then export MANPATH= source "$DEVTOOLSET_PATH/enable" @@ -54,107 +72,57 @@ else DEVTOOLSET_PATH= fi -# Find qmake, prefer qmake-qt5 -source "$OMIM_PATH/tools/autobuild/detect_qmake.sh" - -# Find cmake, prefer cmake3 -if [ ! -x "${CMAKE-}" ]; then - CMAKE=cmake3 - if ! hash "$CMAKE" 2>/dev/null; then - CMAKE=cmake - fi -fi +# Find cmake +source "$OMIM_PATH/tools/autobuild/detect_cmake.sh" # OS-specific parameters if [ "$(uname -s)" == "Darwin" ]; then - SPEC=${SPEC:-macx-clang} + [ -n "$OPT_DESIGNER" -a "$(id -u)" != "0" ] \ + && echo "To build designer tool you have to run this script with sudo" \ + && exit 2 PROCESSES=$(sysctl -n hw.ncpu) else - SPEC=${SPEC-} + [ -n "$OPT_DESIGNER" ] \ + && echo "Designer tool supported only on MacOS X platform" && exit 2 PROCESSES=$(nproc) + # Let linux version be built with gcc + CMAKE_CONFIG="${CMAKE_CONFIG:-} -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++" fi -# Build one configuration into $TARGET or omim-build-{debug,release} -build_conf() +build() { CONF=$1 - DIRNAME="${TARGET:-$OMIM_PATH/../omim-build-$CONF}" + if [ -n "$OPT_PATH" ]; then + DIRNAME="$OPT_PATH/omim-build-$(echo "$CONF" | tr '[:upper:]' '[:lower:]')" + else + DIRNAME="$OMIM_PATH/../omim-build-$(echo "$CONF" | tr '[:upper:]' '[:lower:]')" + fi [ -d "$DIRNAME" -a -n "$OPT_CLEAN" ] && rm -r "$DIRNAME" - if [ ! -d "$DIRNAME" ]; then mkdir -p "$DIRNAME" ln -s "$OMIM_PATH/data" "$DIRNAME/data" fi - - ( - export BOOST_INCLUDEDIR="$BOOST_PATH/include" - cd "$DIRNAME" - "$QMAKE" "$OMIM_PATH/omim.pro" ${SPEC:+-spec $SPEC} CONFIG+=$CONF ${CONFIG+"CONFIG*=$CONFIG"} - TMP_FILE="build_error.log" - if ! make -j $PROCESSES 2> "$TMP_FILE"; then + cd "$DIRNAME" + TMP_FILE="build_error.log" + if [ -z "$OPT_DESIGNER" ]; then + "$CMAKE" "$OMIM_PATH" -DCMAKE_BUILD_TYPE="$CONF" ${CMAKE_CONFIG:-} + echo "" + if ! make $OPT_TARGET -j $PROCESSES 2> "$TMP_FILE"; then echo '--------------------' cat "$TMP_FILE" exit 1 fi - ) -} - -# Build some omim libraries for osrm backend -build_conf_osrm() -{ - CONF=$1 - DIRNAME="$2" - mkdir -p "$DIRNAME" - OSPEC="$SPEC" - # OSRM is built with linux-clang spec - [ "$OSPEC" == "linux-clang-libc++" ] && OSPEC=linux-clang - - ( - export BOOST_INCLUDEDIR="$BOOST_PATH/include" - cd "$DIRNAME" - - if [[ -n "${USE_CMAKE-}" ]]; then - DIRNAME="$DIRNAME/out/$CONF" - mkdir -p "$DIRNAME" - cd "$DIRNAME" - "$CMAKE" "$OMIM_PATH" - make routing routing_common indexer geometry coding base jansson -j $PROCESSES - else - "$QMAKE" "$OMIM_PATH/omim.pro" ${SPEC:+-spec $SPEC} "CONFIG+=$CONF osrm no-tests" ${CONFIG+"CONFIG*=$CONFIG"} - make -j $PROCESSES + else + "$CMAKE" "$OMIM_PATH" -DCMAKE_BUILD_TYPE="$CONF" \ + -DBUILD_DESIGNER:bool=True ${CMAKE_CONFIG:-} + if ! make package -j $PROCESSES 2> "$TMP_FILE"; then + echo '--------------------' + cat "$TMP_FILE" + exit 1 fi - ) -} - -# Build OSRM Backend -build_osrm() -{ - OSRM_OMIM_CONF=$1 - # Making the first letter uppercase for CMake - OSRM_CONF="$(echo ${OSRM_OMIM_CONF:0:1} | tr '[a-z]' '[A-Z]')${OSRM_OMIM_CONF:1}" - BACKEND="$OMIM_PATH/3party/osrm/osrm-backend" - OSRM_TARGET="${OSRM_TARGET:-${TARGET:-$OMIM_PATH/../osrm-backend-$OSRM_OMIM_CONF}}" - [ -d "$OSRM_TARGET" -a -n "$OPT_CLEAN" ] && rm -r "$OSRM_TARGET" - mkdir -p "$OSRM_TARGET" - # First, build omim libraries - build_conf_osrm $OSRM_OMIM_CONF "$OSRM_TARGET/omim-build" - OSRM_OMIM_LIBS="$(cd "$OSRM_TARGET/omim-build/out/$OSRM_OMIM_CONF"; pwd)" - ( - cd "$OSRM_TARGET" - "$CMAKE" "-DBOOST_ROOT=$BOOST_PATH" -DCMAKE_BUILD_TYPE=$OSRM_CONF "-DOMIM_BUILD_PATH=$OSRM_OMIM_LIBS" "$BACKEND" - make clean - make - ) -} - -build() -{ - build_conf $1 - [ -n "$OPT_OSRM" ] && build_osrm $1 - return 0 + fi } -[ -n "$OPT_DEBUG" ] && build debug -[ -n "$OPT_RELEASE" ] && build release -[ -n "$OPT_OSRM" -a -z "$OPT_DEBUG$OPT_RELEASE" ] && build_osrm release +[ -n "$OPT_DEBUG" ] && build Debug +[ -n "$OPT_RELEASE" ] && build Release exit 0 diff --git a/tools/unix/cmake_omim.sh b/tools/unix/cmake_omim.sh deleted file mode 100755 index 8010aa510d..0000000000 --- a/tools/unix/cmake_omim.sh +++ /dev/null @@ -1,109 +0,0 @@ -#!/usr/bin/env bash - -set -u -e -x - -OPT_DEBUG= -OPT_RELEASE=1 -OPT_OSRM= -OPT_CLEAN= -VERBOSE= -while getopts ":cdrov" opt; do - case $opt in - d) - OPT_DEBUG=1 - OPT_RELEASE= - ;; - r) - OPT_RELEASE=1 - ;; - o) -# OPT_OSRM=1 - echo "OSRM build is not supported yet, try again later" - exit 1 - ;; - c) - OPT_CLEAN=1 - ;; - v) - VERBOSE=1 - ;; - *) - echo "This tool builds omim and osrm-backend." - echo "Usage: $0 [-d] [-r] [-o] [-c]" - echo - echo -e "-d\tBuild omim-debug" - echo -e "-r\tBuild omim-release" - echo -e "-o\tBuild osrm-backend" - echo -e "-c\tClean before building" - echo - echo "By default release is built. Specify TARGET and OSRM_TARGET if needed." - exit 1 - ;; - - esac -done - -OMIM_PATH="$(cd "${OMIM_PATH:-$(dirname "$0")/../..}"; pwd)" - -check_private_h() -{ - if ! grep "DEFAULT_URLS_JSON" "$OMIM_PATH/private.h" >/dev/null 2>/dev/null; then - echo "Please run $OMIM_PATH/configure.sh" - exit 2 - fi -} - -set_platform_dependent_options() -{ - if [ "$(uname -s)" == "Darwin" ]; then - PROCESSES=$(sysctl -n hw.ncpu) - else - PROCESSES=$(nproc) - export CC=clang - export CXX=clang++ - fi -} - -build_conf() -{ - CONF=$1 - POSTFIX=$(echo "${CONF}" | tr '[:upper:]' '[:lower:]') - echo $POSTFIX - DIRNAME="${TARGET:-$OMIM_PATH/../omim-build-$POSTFIX}" - [ -d "$DIRNAME" -a -n "$OPT_CLEAN" ] && rm -r "$DIRNAME" - - if [ ! -d "$DIRNAME" ]; then - mkdir -p "$DIRNAME" - ln -s "$OMIM_PATH/data" "$DIRNAME/data" - fi - - TARGET="$DIRNAME/out/$POSTFIX" - mkdir -p $TARGET - - cd "$TARGET" - cmake "$OMIM_PATH" -DCMAKE_BUILD_TYPE=$CONF - if [ $VERBOSE ]; then - make -j $PROCESSES VERBOSE=1 - else - make -j $PROCESSES - fi -} - -get_os_dependent_option() #(for_mac_os, for_linux) -{ - if [ "$(uname -s)" == "Darwin" ]; then - return $($1) - else - return $($2) - fi - -} - -check_private_h -set_platform_dependent_options -echo $PROCESSES - -[ -n "$OPT_DEBUG" ] && build_conf Debug -[ -n "$OPT_RELEASE" ] && build_conf Release - -exit 0 diff --git a/tools/unix/find_generator_tool.sh b/tools/unix/find_generator_tool.sh index 3362603ed6..156ca53f12 100755 --- a/tools/unix/find_generator_tool.sh +++ b/tools/unix/find_generator_tool.sh @@ -11,9 +11,7 @@ OMIM_PATH="${OMIM_PATH:-$(cd "$(dirname "$0")/../.."; pwd)}" if [ -z "${GENERATOR_TOOL-}" -o ! -x "${GENERATOR_TOOL-}" ]; then IT_PATHS_ARRAY=() for i in "${BUILD_PATH-}" "$OMIM_PATH" "$OMIM_PATH/.."/*omim*elease* "$OMIM_PATH/.."/*omim*ebug; do - if [ -d "$i/out" ]; then - IT_PATHS_ARRAY+=("$i/out/release/generator_tool" "$i/out/debug/generator_tool") - fi + IT_PATHS_ARRAY+=("$i/generator_tool") done if [ -d "$OMIM_PATH/../omim-xcode-build" ]; then @@ -28,5 +26,5 @@ if [ -z "${GENERATOR_TOOL-}" -o ! -x "${GENERATOR_TOOL-}" ]; then done fi -[ -z ${GENERATOR_TOOL-} -o ! -x "${GENERATOR_TOOL-}" ] && fail "No generator_tool found in ${IT_PATHS_ARRAY[*]-${GENERATOR_TOOL-}}" +[ -z "${GENERATOR_TOOL-}" -o ! -x "${GENERATOR_TOOL-}" ] && fail "No generator_tool found in ${IT_PATHS_ARRAY[*]-${GENERATOR_TOOL-}}" echo "Using tool: $GENERATOR_TOOL" -- cgit v1.2.3