Blame view

3rdparty/jsoncpp-1.9.5/.travis_scripts/cmake_builder.sh 3.99 KB
09c2d08c   Hu Chunming   arm交付版
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
  #!/usr/bin/env sh
  # This script can be used on the command line directly to configure several
  # different build environments.
  # This is called by `.travis.yml` via Travis CI.
  # Travis supplies $TRAVIS_OS_NAME.
  #  http://docs.travis-ci.com/user/multi-os/
  # Our .travis.yml also defines:
  
  #   - BUILD_TYPE=Release/Debug
  #   - LIB_TYPE=static/shared
  #
  # Optional environmental variables
  #   - DESTDIR <- used for setting the install prefix
  #   - BUILD_TOOL=["Unix Makefile"|"Ninja"]
  #   - BUILDNAME <- how to identify this build on the dashboard
  #   - DO_MemCheck <- if set, try to use valgrind
  #   - DO_Coverage <- if set, try to do dashboard coverage testing
  #
  
  env_set=1
  if ${BUILD_TYPE+false}; then
    echo "BUILD_TYPE not set in environment."
    env_set=0
  fi
  if ${LIB_TYPE+false}; then
    echo "LIB_TYPE not set in environment."
    env_set=0
  fi
  if ${CXX+false}; then
    echo "CXX not set in environment."
    env_set=0
  fi
  
  
  if [ ${env_set} -eq 0 ]; then
    echo "USAGE:  CXX=$(which clang++)  BUILD_TYPE=[Release|Debug] LIB_TYPE=[static|shared] $0"
    echo ""
    echo "Examples:"
    echo "           CXX=$(which clang++) BUILD_TYPE=Release LIB_TYPE=shared DESTDIR=/tmp/cmake_json_cpp $0"
    echo "           CXX=$(which clang++) BUILD_TYPE=Debug   LIB_TYPE=shared DESTDIR=/tmp/cmake_json_cpp $0"
    echo "           CXX=$(which clang++) BUILD_TYPE=Release LIB_TYPE=static DESTDIR=/tmp/cmake_json_cpp $0"
    echo "           CXX=$(which clang++) BUILD_TYPE=Debug   LIB_TYPE=static DESTDIR=/tmp/cmake_json_cpp $0"
  
    echo "           CXX=$(which g++)     BUILD_TYPE=Release LIB_TYPE=shared DESTDIR=/tmp/cmake_json_cpp $0"
    echo "           CXX=$(which g++)     BUILD_TYPE=Debug   LIB_TYPE=shared DESTDIR=/tmp/cmake_json_cpp $0"
    echo "           CXX=$(which g++)     BUILD_TYPE=Release LIB_TYPE=static DESTDIR=/tmp/cmake_json_cpp $0"
    echo "           CXX=$(which g++)     BUILD_TYPE=Debug   LIB_TYPE=static DESTDIR=/tmp/cmake_json_cpp $0"
  
    exit -1
  fi
  
  if ${DESTDIR+false}; then
    DESTDIR="/usr/local"
  fi
  
  # -e: fail on error
  # -v: show commands
  # -x: show expanded commands
  set -vex
  
  env | sort
  
  which cmake
  cmake --version
  
  echo ${CXX}
  ${CXX} --version
  _COMPILER_NAME=`basename ${CXX}`
  if [ "${LIB_TYPE}" = "shared" ]; then
    _CMAKE_BUILD_SHARED_LIBS=ON
  else
    _CMAKE_BUILD_SHARED_LIBS=OFF
  fi
  
  CTEST_TESTING_OPTION="-D ExperimentalTest"
  #   - DO_MemCheck <- if set, try to use valgrind
  if ! ${DO_MemCheck+false}; then
     valgrind --version
     CTEST_TESTING_OPTION="-D ExperimentalMemCheck"
  else
  #   - DO_Coverage <- if set, try to do dashboard coverage testing
    if ! ${DO_Coverage+false}; then
       export CXXFLAGS="-fprofile-arcs -ftest-coverage"
       export LDFLAGS="-fprofile-arcs -ftest-coverage"
       CTEST_TESTING_OPTION="-D ExperimentalTest -D ExperimentalCoverage"
       #gcov --version
    fi
  fi
  
  #  Ninja                        = Generates build.ninja files.
  if ${BUILD_TOOL+false}; then
    BUILD_TOOL="Ninja"
    export _BUILD_EXE=ninja
    which ninja
    ninja --version
  else
  #  Unix Makefiles               = Generates standard UNIX makefiles.
    export _BUILD_EXE=make
  fi
  
  _BUILD_DIR_NAME="build-cmake_${BUILD_TYPE}_${LIB_TYPE}_${_COMPILER_NAME}_${_BUILD_EXE}"
  mkdir -p ${_BUILD_DIR_NAME}
  cd "${_BUILD_DIR_NAME}"
    if ${BUILDNAME+false}; then
       _HOSTNAME=`hostname -s`
       BUILDNAME="${_HOSTNAME}_${BUILD_TYPE}_${LIB_TYPE}_${_COMPILER_NAME}_${_BUILD_EXE}"
    fi
    cmake \
      -G "${BUILD_TOOL}" \
      -DBUILDNAME:STRING="${BUILDNAME}" \
      -DCMAKE_CXX_COMPILER:PATH=${CXX} \
      -DCMAKE_BUILD_TYPE:STRING=${BUILD_TYPE} \
      -DBUILD_SHARED_LIBS:BOOL=${_CMAKE_BUILD_SHARED_LIBS} \
      -DCMAKE_INSTALL_PREFIX:PATH=${DESTDIR} \
      ../
  
    ctest -C ${BUILD_TYPE} -D ExperimentalStart -D ExperimentalConfigure -D ExperimentalBuild ${CTEST_TESTING_OPTION} -D ExperimentalSubmit
    # Final step is to verify that installation succeeds
    cmake --build . --config ${BUILD_TYPE} --target install
  
    if [ "${DESTDIR}" != "/usr/local" ]; then
       ${_BUILD_EXE} install
    fi
  cd -
  
  if ${CLEANUP+false}; then
    echo "Skipping cleanup: build directory will persist."
  else
    rm -r "${_BUILD_DIR_NAME}"
  fi