-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild-cmd.sh
executable file
·145 lines (115 loc) · 4.86 KB
/
build-cmd.sh
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#!/usr/bin/env bash
cd "$(dirname "$0")"
# turn on verbose debugging output for parabuild logs.
exec 4>&1; export BASH_XTRACEFD=4; set -x
# make errors fatal
set -e
# bleat on references to undefined shell variables
set -u
URIPARSER_SOURCE_DIR="uriparser"
VERSION_HEADER_FILE="${URIPARSER_SOURCE_DIR}/include/uriparser/UriBase.h"
VERSION_MACRO="URI_VER_ANSI"
if [ -z "$AUTOBUILD" ] ; then
exit 1
fi
if [ "$OSTYPE" = "cygwin" ] ; then
export AUTOBUILD="$(cygpath -u $AUTOBUILD)"
fi
top="$(pwd)"
stage="$top"/stage
# load autobuild provided shell functions and variables
source_environment_tempfile="$stage/source_environment.sh"
"$AUTOBUILD" source_environment > "$source_environment_tempfile"
. "$source_environment_tempfile"
# remove_cxxstd
source "$(dirname "$AUTOBUILD_VARIABLES_FILE")/functions"
pushd "$URIPARSER_SOURCE_DIR"
case "$AUTOBUILD_PLATFORM" in
windows*)
load_vsvars
# populate version_file
cl /DVERSION_HEADER_FILE="\"$VERSION_HEADER_FILE\"" \
/DVERSION_MACRO="$VERSION_MACRO" \
/Fo"$(cygpath -w "$stage/version.obj")" \
/Fe"$(cygpath -w "$stage/version.exe")" \
"$(cygpath -w "$top/version.c")"
"$stage/version.exe" > "$stage/VERSION.txt"
rm "$stage"/version.{obj,exe}
cmake . -G "$AUTOBUILD_WIN_CMAKE_GEN" \
-A $AUTOBUILD_WIN_VSPLATFORM \
-DCMAKE_INSTALL_PREFIX:STRING="$(cygpath -w ${stage})" \
-DCMAKE_CXX_FLAGS="$LL_BUILD_RELEASE" \
-DCMAKE_C_FLAGS="$LL_BUILD_RELEASE" \
-DURIPARSER_BUILD_TESTS=OFF \
-DURIPARSER_BUILD_DOCS=OFF
msbuild.exe \
"uriparser.sln" \
-t:uriparser \
-p:Configuration=Release \
-p:Platform=$AUTOBUILD_WIN_VSPLATFORM \
-p:PlatformToolset=v143
mkdir -p "$stage/lib/release"
cp -a "Release/uriparser.lib" "$stage/lib/release/uriparser.lib"
cp -a "Release/uriparser.dll" "$stage/lib/release/uriparser.dll"
mkdir -p "$stage/include/uriparser"
cp -a include/uriparser/*.h "$stage/include/uriparser"
;;
darwin*)
# populate version_file
cc -DVERSION_HEADER_FILE="\"$VERSION_HEADER_FILE\"" \
-DVERSION_MACRO="$VERSION_MACRO" \
-o "$stage/version" "$top/version.c"
"$stage/version" > "$stage/VERSION.txt"
rm "$stage/version"
cmake . -DCMAKE_INSTALL_PREFIX:STRING="${stage}" \
-DCMAKE_CXX_FLAGS="$LL_BUILD_RELEASE" \
-DCMAKE_C_FLAGS="$(remove_cxxstd $LL_BUILD_RELEASE)" \
-DURIPARSER_BUILD_TESTS=OFF \
-DURIPARSER_BUILD_DOCS=OFF
make -j$(nproc)
make install
stage_lib="${stage}"/lib
stage_release="${stage_lib}"/release
# Move the libs to release folder
mv "${stage}"/lib "${stage}"/release
mkdir "${stage_lib}"
mv "${stage}"/release "${stage_release}"
# Make sure libs are stamped with the -id
# fix_dylib_id doesn't really handle symlinks
pushd "$stage_release"
fix_dylib_id "liburiparser.1.0.27.dylib" || echo "fix_dylib_id liburiparser.dylib failed, proceeding"
fix_dylib_id "liburiparser.1.dylib" || echo "fix_dylib_id liburiparser.dylib failed, proceeding"
;;
linux*)
# populate version_file
cc -DVERSION_HEADER_FILE="\"$VERSION_HEADER_FILE\"" \
-DVERSION_MACRO="$VERSION_MACRO" \
-o "$stage/version" "$top/version.c"
"$stage/version" > "$stage/VERSION.txt"
rm "$stage/version"
opts="${TARGET_OPTS:--m$AUTOBUILD_ADDRSIZE $LL_BUILD_RELEASE}"
# Handle any deliberate platform targeting
if [ -z "${TARGET_CPPFLAGS:-}" ]; then
# Remove sysroot contamination from build environment
unset CPPFLAGS
else
# Incorporate special pre-processing flags
export CPPFLAGS="$TARGET_CPPFLAGS"
fi
rm -rf build && mkdir build && pushd build
cmake .. -DCMAKE_INSTALL_PREFIX:STRING="${stage}" \
-DCMAKE_CXX_FLAGS="$LL_BUILD_RELEASE" \
-DCMAKE_C_FLAGS="$(remove_cxxstd $LL_BUILD_RELEASE)" \
-DURIPARSER_BUILD_TESTS=OFF \
-DURIPARSER_BUILD_DOCS=OFF -DBUILD_SHARED_LIBS=OFF
make -j$(nproc)
make install
popd
mkdir -p "${stage}/lib/release"
mv ${stage}/lib/*.a "${stage}/lib/release"
;;
esac
mkdir -p "$stage/LICENSES"
pwd
cp -a "${top}/uriparser/COPYING" "$stage/LICENSES/uriparser.txt"
popd