Skip to content

Commit fb31a7e

Browse files
committed
A bit more generic CMake setup
Also build with Xcode generator on CI on OS X for testing purposes.
1 parent ed1eb76 commit fb31a7e

File tree

2 files changed

+54
-26
lines changed

2 files changed

+54
-26
lines changed

commands/setup

Lines changed: 47 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -43,33 +43,51 @@ cmake-help-contains() {
4343

4444
# Generate ---------------------------------------------------------------------
4545

46+
GENERATE_CMD=(cmake "-Werror=dev" "-Werror=deprecated")
4647
BUILD_DIR=".build"
4748

48-
CMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE:-Debug}"
49+
# Compiler
4950

50-
GENERATE_CMD=(cmake "-Werror=dev" "-Werror=deprecated")
51-
if ! cmake-help-contains "Visual Studio" || [ -n "$CXX" ]; then
52-
COVERAGE="${COVERAGE:-0}"
53-
if [ "$COVERAGE" = 1 ]; then
54-
BUILD_DIR="$BUILD_DIR.coverage"
55-
GENERATE_CMD+=("-DCOVERAGE=ON")
56-
fi
51+
if [ -n "$CXX" ]; then
52+
BUILD_DIR="$BUILD_DIR.$CXX"
53+
fi
5754

58-
BUILD_DIR="$BUILD_DIR.$CMAKE_BUILD_TYPE${CXX:+.}$CXX"
59-
GENERATE_CMD+=("-DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE")
55+
# Generator
6056

61-
if cmake-help-contains "MSYS Makefiles" && [ -z "$CMAKE_GENERATOR" ] ; then
62-
export CMAKE_GENERATOR="MSYS Makefiles"
63-
fi
57+
if [ -n "$CXX" ] && [ -z "$CMAKE_GENERATOR" ] \
58+
&& cmake-help-contains "MSYS Makefiles"; then
59+
export CMAKE_GENERATOR="MSYS Makefiles"
6460
fi
61+
62+
if [ "$CMAKE_GENERATOR" = "MSYS Makefiles" ]; then
63+
export CMAKE_MAKE_PROGRAM="make"
64+
fi
65+
6566
if [ -n "$CMAKE_GENERATOR" ]; then
6667
BUILD_DIR="$BUILD_DIR.${CMAKE_GENERATOR// /_}"
6768
GENERATE_CMD+=("-G" "$CMAKE_GENERATOR")
69+
fi
6870

69-
if [ "$CMAKE_GENERATOR" = "MSYS Makefiles" ]; then
70-
export CMAKE_MAKE_PROGRAM="make"
71-
fi
71+
# Build type
72+
73+
CMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE:-Debug}"
74+
75+
if [[ "$CMAKE_GENERATOR" =~ Makefiles|Ninja ]] || \
76+
([ -z "$CMAKE_GENERATOR" ] && ! cmake-help-contains 'Visual Studio'); then
77+
BUILD_DIR="$BUILD_DIR.$CMAKE_BUILD_TYPE"
78+
GENERATE_CMD+=("-DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE")
7279
fi
80+
81+
# Coverage
82+
83+
COVERAGE="${COVERAGE:-0}"
84+
if [ "$COVERAGE" = 1 ]; then
85+
BUILD_DIR="$BUILD_DIR.coverage"
86+
GENERATE_CMD+=("-DCOVERAGE=ON")
87+
fi
88+
89+
# Finish
90+
7391
GENERATE_CMD+=(..)
7492

7593
# Clean
@@ -100,7 +118,10 @@ fi
100118
BUILD_CMD+=(cmake --build . --config "$CMAKE_BUILD_TYPE" --parallel "$N_PARALLEL_BUILD" --)
101119
TEST_CMD+=(ctest --build-config "$CMAKE_BUILD_TYPE" --parallel "$N_PARALLEL_TEST")
102120

103-
if cmake-help-contains "Visual Studio" && [ -z "$CXX" ]; then
121+
# Quiet
122+
123+
if [[ "$CMAKE_GENERATOR" =~ 'Visual Studio' ]] || \
124+
([ -z "$CMAKE_GENERATOR" ] && cmake-help-contains "Visual Studio"); then
104125
if [ "$QUIET" != 0 ]; then
105126
MSBUILD_VERBOSITY="${MSBUILD_VERBOSITY:-QUIET}"
106127
fi
@@ -109,6 +130,15 @@ if cmake-help-contains "Visual Studio" && [ -z "$CXX" ]; then
109130
fi
110131
fi
111132

133+
if [[ "$CMAKE_GENERATOR" =~ Xcode ]]; then
134+
if [ "$QUIET" != 0 ]; then
135+
XCODE_VERBOSITY="${XCODE_VERBOSITY:-quiet}"
136+
fi
137+
if [ -n "$XCODE_VERBOSITY" ]; then
138+
BUILD_CMD+=("-$XCODE_VERBOSITY")
139+
fi
140+
fi
141+
112142
# Watch ------------------------------------------------------------------------
113143

114144
export WATCH_CMD=(fswatch --one-per-batch --recursive)

travis-ci

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -82,19 +82,18 @@ fi
8282
folded ... finish GIT_UPDATE_PID
8383

8484
for CONFIG in Debug Release; do
85-
export CMAKE_BUILD_TYPE=$CONFIG
8685
if [ "$TRAVIS_OS_NAME" = linux ]; then
8786
folded ... finish LIBSTD_INSTALL_PID
88-
CC=clang CXX=clang++ folded "Clang $CONFIG" cppsm test
87+
CMAKE_BUILD_TYPE=$CONFIG CC=clang CXX=clang++ folded "Clang $CONFIG" cppsm test
8988
folded ... finish GCC_INSTALL_PID
90-
CC=gcc-8 CXX=g++-8 folded "GCC $CONFIG" cppsm test
89+
CMAKE_BUILD_TYPE=$CONFIG CC=gcc-8 CXX=g++-8 folded "GCC $CONFIG" cppsm test
9190
elif [ "$TRAVIS_OS_NAME" = windows ]; then
92-
CC='' CXX='' folded "VC2017 $CONFIG" cppsm test
91+
CMAKE_BUILD_TYPE=$CONFIG CC='' CXX='' folded "VC2017 $CONFIG" cppsm test
9392
folded ... finish MAKE_INSTALL_PID
94-
CC="gcc" CXX="g++" folded "GCC $CONFIG" cppsm test
93+
CMAKE_BUILD_TYPE=$CONFIG CC="gcc" CXX="g++" folded "GCC $CONFIG" cppsm test
9594
elif [ "$TRAVIS_OS_NAME" = osx ]; then
96-
CC=clang CXX=clang++ folded "Clang $CONFIG" cppsm test
97-
CC=gcc-8 CXX=g++-8 folded "GCC $CONFIG" cppsm test
95+
CMAKE_BUILD_TYPE=$CONFIG CC='' CXX='' CMAKE_GENERATOR=Xcode folded "Clang $CONFIG" cppsm test
96+
CMAKE_BUILD_TYPE=$CONFIG CC=gcc-8 CXX=g++-8 folded "GCC $CONFIG" cppsm test
9897
else
9998
echo "Unsupported OS: $TRAVIS_OS_NAME"
10099
exit 1
@@ -106,8 +105,7 @@ if [ "$TRAVIS_OS_NAME" = windows ]; then
106105
folded ... choco upgrade -y cmake.install
107106

108107
for CONFIG in Debug Release; do
109-
export CMAKE_BUILD_TYPE=$CONFIG
110-
CC='' CXX='' CMAKE_GENERATOR="Visual Studio 16 2019" folded "VC2019 $CONFIG" cppsm test
108+
CMAKE_BUILD_TYPE=$CONFIG CC='' CXX='' CMAKE_GENERATOR="Visual Studio 16 2019" folded "VC2019 $CONFIG" cppsm test
111109
done
112110
fi
113111

0 commit comments

Comments
 (0)