1
1
#! /bin/bash
2
2
3
+ usage ()
4
+ {
5
+ echo " Usage: build.sh [clean] [arm64|x86_64|universal] [CUSTOM_CMAKE_CXX_FLAGS=x] [noroot] [release] [-h|-?] [-l (static|shared)] [-D CMAKE_OPTION] [-v]"
6
+ echo " "
7
+ echo " options: "
8
+ echo " "
9
+ echo " Positional options (1st three arguments): "
10
+ echo " [clean] - perform clean build "
11
+ echo " [arm64|x86_64|universal] - Apple platform build type. Not applicable to other OS. "
12
+ echo " [CUSTOM_CMAKE_CXX_FLAGS] - custom CXX compiler flags "
13
+ echo " [noroot] - custom CXX compiler flags "
14
+ echo " [release] - build for Release "
15
+ echo " "
16
+ echo " Additional parameters: "
17
+ echo " -h | -? - this help. "
18
+ echo " -l [static|shared] - build static (default) or shared library. "
19
+ echo " -D [CMAKE_OPTION] - additional options to pass to cmake. Could be multiple. "
20
+ echo " -v - increase build verbosity (reserved for future use) "
21
+ echo " "
22
+ echo " Environment variables: "
23
+ echo " CMAKE_OPTS - any additional cmake options. "
24
+ echo " GIT_PULL_TOKEN - authorization token for Microsoft-proprietary modules. "
25
+ echo " MACOSX_DEPLOYMENT_TARGET - optional parameter for setting macosx deployment target "
26
+ echo " Plus any other environment variables respected by CMake build system. "
27
+ exit 0
28
+ }
29
+
3
30
export PATH=/usr/local/bin:$PATH
4
31
5
32
DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " && pwd ) "
@@ -8,87 +35,91 @@ cd $DIR
8
35
9
36
export NOROOT=$NOROOT
10
37
11
- if [ " $1 " == " clean" ]; then
38
+ PARAM1=" $1 "
39
+ PARAM2=" $2 "
40
+ PARAM3=" $3 "
41
+
42
+ if [ " $PARAM1 " == " clean" ]; then
43
+ echo " Cleaning previous build artifacts"
12
44
rm -f CMakeCache.txt * .cmake
13
45
rm -rf out
14
46
rm -rf .buildtools
15
47
# make clean
48
+ shift
16
49
fi
17
50
18
- if [ " $1 " == " noroot" ] || [ " $2 " == " noroot" ] || [ " $3 " == " noroot" ]; then
51
+ if [ " $PARAM1 " == " noroot" ] || [ " $PARAM2 " == " noroot" ] || [ " $PARAM3 " == " noroot" ]; then
19
52
export NOROOT=true
53
+ echo " NOROOT = true"
54
+ shift
20
55
fi
21
56
22
- if [ " $1 " == " release" ] || [ " $2 " == " release" ] || [ " $3 " == " release" ]; then
57
+ if [ " $PARAM1 " == " release" ] || [ " $PARAM2 " == " release" ] || [ " $PARAM3 " == " release" ]; then
23
58
BUILD_TYPE=" Release"
59
+ echo " BUILD_TYPE = Release"
60
+ shift
61
+ elif [ " $PARAM1 " == " debug" ] || [ " $PARAM2 " == " debug" ] || [ " $PARAM3 " == " debug" ]; then
62
+ BUILD_TYPE=" Debug"
63
+ echo " BUILD_TYPE = Debug"
64
+ shift
24
65
else
25
66
BUILD_TYPE=" Debug"
67
+ echo " Assuming default BUILD_TYPE = Debug"
26
68
fi
27
69
28
- if [ " $1 " == " arm64" ] || [ " $2 " == " arm64" ] || [ " $3 " == " arm64" ]; then
70
+ if [ " $PARAM1 " == " arm64" ] || [ " $PARAM2 " == " arm64" ] || [ " $PARAM3 " == " arm64" ]; then
29
71
MAC_ARCH=" arm64"
30
- elif [ " $1 " == " universal" ] || [ " $2 " == " universal" ] || [ " $3 " == " universal" ]; then
72
+ echo " MAC_ARCH = arm64"
73
+ shift
74
+ elif [ " $PARAM1 " == " universal" ] || [ " $PARAM2 " == " universal" ] || [ " $PARAM3 " == " universal" ]; then
31
75
MAC_ARCH=" universal"
32
- else
76
+ echo " MAC_ARCH = universal"
77
+ shift
78
+ elif [ " $PARAM1 " == " x86_64" ] || [ " $PARAM2 " == " x86_64" ] || [ " $PARAM3 " == " x86_64" ]; then
33
79
MAC_ARCH=" x86_64"
80
+ echo " MAC_ARCH = x86_64"
81
+ shift
82
+ else
83
+ MAC_ARCH=$( /usr/bin/uname -m)
84
+ echo " Using current machine MAC_ARCH = $MAC_ARCH "
34
85
fi
35
86
36
87
CUSTOM_CMAKE_CXX_FLAG=" "
37
- if [[ $1 == CUSTOM_BUILD_FLAGS* ]] || [[ $2 == CUSTOM_BUILD_FLAGS* ]] || [[ $3 == CUSTOM_BUILD_FLAGS* ]]; then
38
- if [[ $1 == CUSTOM_BUILD_FLAGS* ]]; then
88
+ if [[ $PARAM1 == CUSTOM_BUILD_FLAGS* ]] || [[ $PARAM2 == CUSTOM_BUILD_FLAGS* ]] || [[ $PARAM3 == CUSTOM_BUILD_FLAGS* ]]; then
89
+ if [[ $PARAM1 == CUSTOM_BUILD_FLAGS* ]]; then
39
90
CUSTOM_CMAKE_CXX_FLAG=" \" ${1: 19: 999} \" "
40
- elif [[ $2 == CUSTOM_BUILD_FLAGS* ]]; then
91
+ elif [[ $PARAM2 == CUSTOM_BUILD_FLAGS* ]]; then
41
92
CUSTOM_CMAKE_CXX_FLAG=" \" ${2: 19: 999} \" "
42
- elif [[ $3 == CUSTOM_BUILD_FLAGS* ]]; then
93
+ elif [[ $PARAM3 == CUSTOM_BUILD_FLAGS* ]]; then
43
94
CUSTOM_CMAKE_CXX_FLAG=" \" ${3: 19: 999} \" "
44
95
fi
45
- echo " custom build flags=" $CUSTOM_CMAKE_CXX_FLAG
96
+ shift
97
+ echo " custom build flags = $CUSTOM_CMAKE_CXX_FLAG "
46
98
fi
47
99
48
100
LINK_TYPE=
49
101
CMAKE_OPTS=" ${CMAKE_OPTS:- -DBUILD_SHARED_LIBS=OFF} "
50
102
while getopts " h?vl:D:" opt; do
51
103
case " $opt " in
52
- h|\? )
53
- echo " Usage: build.sh [clean] [arm64|universal] [CUSTOM_CMAKE_CXX_FLAGS=x] [noroot] [release] [-h|-?] [-l (static|shared)] [-D CMAKE_OPTION] [-v]"
54
- echo " "
55
- echo " options: "
56
- echo " "
57
- echo " Positional options (1st three arguments): "
58
- echo " [clean] - perform clean build "
59
- echo " [arm64|universal] - Apple platform build type. Not applicable to other OS. "
60
- echo " [CUSTOM_CMAKE_CXX_FLAGS] - custom CXX compiler flags "
61
- echo " [noroot] - custom CXX compiler flags "
62
- echo " [release] - build for Release "
63
- echo " "
64
- echo " Additional parameters: "
65
- echo " -h | -? - this help. "
66
- echo " -l [static|shared] - build static (default) or shared library. "
67
- echo " -D [CMAKE_OPTION] - additional options to pass to cmake. Could be multiple. "
68
- echo " -v - increase build verbosity (reserved for future use) "
69
- echo " "
70
- echo " Environment variables: "
71
- echo " CMAKE_OPTS - any additional cmake options. "
72
- echo " GIT_PULL_TOKEN - authorization token for Microsoft-proprietary modules. "
73
- echo " MACOSX_DEPLOYMENT_TARGET - optional parameter for setting macosx deployment target "
74
- echo " Plus any other environment variables respected by CMake build system. "
75
- exit 0
104
+ h|\? ) usage
76
105
;;
77
106
:) echo " Invalid option: $OPTARG requires an argument" 1>&2
78
107
exit 0
79
108
;;
80
109
v) verbose=1
81
110
;;
82
- D) CMAKE_OPTS=" $CMAKE_OPTS -D$OPTARG "
111
+ D) CMAKE_OPTS=" ${ CMAKE_OPTS} -D${ OPTARG} "
83
112
;;
84
113
l) LINK_TYPE=$OPTARG
85
114
;;
86
115
esac
87
116
done
88
117
shift $(( OPTIND - 1 ))
89
118
119
+ echo " CMAKE_OPTS from caller: $CMAKE_OPTS "
120
+
90
121
if [ " $LINK_TYPE " == " shared" ]; then
91
- CMAKE_OPTS=" $CMAKE_OPTS -DBUILD_SHARED_LIBS=ON"
122
+ CMAKE_OPTS=" ${ CMAKE_OPTS} -DBUILD_SHARED_LIBS=ON"
92
123
fi
93
124
94
125
# Set target MacOS minver
0 commit comments