-
Notifications
You must be signed in to change notification settings - Fork 83
Expand file tree
/
Copy path1_build_libcorefoundation.sh
More file actions
executable file
·145 lines (131 loc) · 4.85 KB
/
Copy path1_build_libcorefoundation.sh
File metadata and controls
executable file
·145 lines (131 loc) · 4.85 KB
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
#!/bin/sh
. ../environment.sh
#----------------------------------------
# Install package dependecies
#----------------------------------------
${ECHO} ">>> Installing ${OS_ID} packages for CoreFoundation library build"
if [ ${OS_ID} = "freebsd" ]; then
${ECHO} "FreeBSD: calling 'pkg install'..."
${PRIV_CMD} pkg install --yes --quiet ${CORE_SYSTEM_DEPS}
elif [ ${OS_ID} = "debian" ] || [ ${OS_ID} = "ubuntu" ]; then
${ECHO} "Debian-based Linux distribution: calling 'apt-get install'."
sudo apt-get install -y ${RUNTIME_DEPS} || exit 1
else
${ECHO} ">>> Installing ${OS_ID} packages for CoreFoundation build"
${ECHO} "RedHat-based Linux distribution: calling 'yum -y install'."
SPEC_FILE=${PROJECT_DIR}/Libraries/libcorefoundation/libcorefoundation.spec
DEPS=`rpmspec -q --buildrequires ${SPEC_FILE} | awk -c '{print $1}'`
sudo yum -y install ${DEPS} git || exit 1
fi
#----------------------------------------
# Download
#----------------------------------------
CF_PKG_NAME=apple-corefoundation-${libcorefoundation_version}
CFNET_PKG_NAME=apple-cfnetwork
if [ ! -d ${BUILD_ROOT}/${CF_PKG_NAME} ]; then
git clone --depth 1 https://github.com/trunkmaster/apple-corefoundation ${BUILD_ROOT}/${CF_PKG_NAME}
fi
if [ ! -d ${BUILD_ROOT}/${CFNET_PKG_NAME} ]; then
git clone --depth 1 https://github.com/trunkmaster/apple-cfnetwork ${BUILD_ROOT}/${CFNET_PKG_NAME}
fi
#----------------------------------------
# Build
#----------------------------------------
# CoreFoundation
cd ${BUILD_ROOT}/${CF_PKG_NAME} || exit 1
rm -rf .build 2>/dev/null
mkdir -p .build
cd .build
C_FLAGS="-I/usr/local/include -I${NEXTSPACE_ROOT}/include -Wno-switch -Wno-enum-conversion"
$CMAKE_CMD .. \
-DCMAKE_C_COMPILER=${C_COMPILER} \
-DCMAKE_C_FLAGS="${C_FLAGS}" \
-DCMAKE_SHARED_LINKER_FLAGS="-L/usr/local/lib -L${NEXTSPACE_ROOT}/lib -luuid" \
-DCF_DEPLOYMENT_SWIFT=NO \
-DBUILD_SHARED_LIBS=YES \
-DCMAKE_INSTALL_PREFIX=${NEXTSPACE_ROOT} \
-DCMAKE_INSTALL_LIBDIR=${NEXTSPACE_ROOT}/lib \
-DCMAKE_LIBRARY_PATH=${NEXTSPACE_ROOT}/lib \
\
-DCMAKE_SKIP_RPATH=ON \
-DCMAKE_BUILD_TYPE=Debug \
|| exit 1
$MAKE_CMD || exit 1
# CFNetwork
# No support for FreeBSD yet
if [ ${OS_ID} != "freebsd" ]; then
if [ -n "$libcfnetwork_version" ]; then
cd ${BUILD_ROOT}/${CFNET_PKG_NAME} || exit 1
rm -rf .build 2>/dev/null
mkdir -p .build
cd .build
CFN_CFLAGS="-F../../${CF_PKG_NAME}/.build -I/usr/local/include -I${NEXTSPACE_ROOT}/include"
CFN_LD_FLAGS="-L${NEXTSPACE_ROOT}/lib -L../../${CF_PKG_NAME}/.build/CoreFoundation.framework"
cmake .. \
-DCMAKE_C_COMPILER=${C_COMPILER} \
-DCMAKE_CXX_COMPILER=clang++ \
-DCFNETWORK_CFLAGS="${CFN_CFLAGS}" \
-DCFNETWORK_LDLAGS="${CFN_LD_FLAGS}" \
-DBUILD_SHARED_LIBS=YES \
-DCMAKE_INSTALL_PREFIX=${NEXTSPACE_ROOT} \
-DCMAKE_INSTALL_LIBDIR=${NEXTSPACE_ROOT}/lib \
\
-DCMAKE_SKIP_RPATH=ON \
-DCMAKE_BUILD_TYPE=Debug
$MAKE_CMD || exit 1
fi
fi
#----------------------------------------
# Install
#----------------------------------------
### CoreFoundation
cd ${BUILD_ROOT}/${CF_PKG_NAME}/.build || exit 1
$INSTALL_CMD
CF_DIR=${DEST_DIR}${NEXTSPACE_ROOT}/Frameworks/CoreFoundation.framework
$MKDIR_CMD ${CF_DIR}/Versions/${libcorefoundation_version}
cd $CF_DIR
# Headers
$MV_CMD Headers Versions/${libcorefoundation_version}
$LN_CMD Versions/Current/Headers Headers
cd Versions
$LN_CMD ${libcorefoundation_version} Current
cd ..
# Libraries
$MV_CMD libCoreFoundation.so* Versions/${libcorefoundation_version}
$LN_CMD Versions/Current/libCoreFoundation.so.${libcorefoundation_version} libCoreFoundation.so
$LN_CMD Versions/Current/libCoreFoundation.so.${libcorefoundation_version} CoreFoundation
cd ../../lib
$RM_CMD libCoreFoundation.so*
$LN_CMD ../Frameworks/CoreFoundation.framework/Versions/${libcorefoundation_version}/libCoreFoundation.so* ./
### CFNetwork
if [ ${OS_ID} != "freebsd" ]; then
if [ -n "$libcfnetwork_version" ]; then
cd ${BUILD_ROOT}/${CFNET_PKG_NAME}/.build || exit 1
$INSTALL_CMD
CFNET_DIR=${DEST_DIR}${NEXTSPACE_ROOT}/Frameworks/CFNetwork.framework
$MKDIR_CMD $CFNET_DIR/Versions/${libcfnetwork_version}
cd $CFNET_DIR
# Headers
$MV_CMD Headers Versions/${libcfnetwork_version}
$LN_CMD Versions/Current/Headers Headers
cd Versions
$LN_CMD ${libcfnetwork_version} Current
cd ..
# Libraries
$MV_CMD libCFNetwork.so* Versions/${libcfnetwork_version}
$LN_CMD Versions/Current/libCFNetwork.so.${libcfnetwork_version} libCFNetwork.so
$LN_CMD Versions/Current/libCFNetwork.so.${libcfnetwork_version} CFNetwork
cd ../../lib
$RM_CMD libCFNetwork.so*
$LN_CMD ../Frameworks/CFNetwork.framework/Versions/${libcfnetwork_version}/libCFNetwork.so* ./
fi
fi
if [ "$DEST_DIR" = "" ]; then
if [ ${OS_ID} = "freebsd" ]; then
${ECHO} "Configuring ldconfig for NextSpace libraries..."
echo "${NEXTSPACE_ROOT}/lib" | ${PRIV_CMD} tee /usr/local/libdata/ldconfig/nextspace > /dev/null
${PRIV_CMD} ldconfig -R
else
${PRIV_CMD} ldconfig
fi
fi