Skip to content

Commit b1711c1

Browse files
committed
Deduplicate code that assembles NSS object files for A-S build
1 parent 1db4410 commit b1711c1

File tree

3 files changed

+88
-85
lines changed

3 files changed

+88
-85
lines changed

libs/build-nss-desktop.sh

Lines changed: 11 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,6 @@ NSS_SRC_DIR=${1}
1515
# Whether to cross compile from Linux to a different target. Really
1616
# only intended for automation.
1717
CROSS_COMPILE_TARGET=${2-}
18-
# We only need this in a couple of places so we'll default to "unknown"
19-
# Othertimes, it'll match what CARGO_CFG_TARGET_ARCH is on the rust side
20-
TARGET_ARCH="unknown"
2118

2219
if [[ -n "${CROSS_COMPILE_TARGET}" ]] && [[ "$(uname -s)" != "Linux" ]]; then
2320
echo "Can only cross compile from 'Linux'; 'uname -s' is $(uname -s)"
@@ -27,6 +24,7 @@ fi
2724
if [[ "${CROSS_COMPILE_TARGET}" =~ "darwin" ]]; then
2825
DIST_DIR=$(abspath "desktop/darwin/nss")
2926
TARGET_OS="macos"
27+
TARGET_ARCH="x86_64"
3028
elif [[ -n "${CROSS_COMPILE_TARGET}" ]]; then
3129
echo "Cannot build NSS for unrecognized target OS ${CROSS_COMPILE_TARGET}"
3230
exit 1
@@ -44,6 +42,7 @@ elif [[ "$(uname -s)" == "Linux" ]]; then
4442
# This is a JNA weirdness: "x86-64" rather than "x86_64".
4543
DIST_DIR=$(abspath "desktop/linux-x86-64/nss")
4644
TARGET_OS="linux"
45+
TARGET_ARCH="x86_64"
4746
else
4847
echo "Cannot build NSS on unrecognized host OS $(uname -s)"
4948
exit 1
@@ -81,53 +80,14 @@ elif [[ "$(uname -s)" == "Darwin" ]] || [[ "$(uname -s)" == "Linux" ]]; then
8180
NSS_DIST_DIR="${NSS_SRC_DIR}/dist"
8281
fi
8382

84-
mkdir -p "${DIST_DIR}/include/nss"
85-
mkdir -p "${DIST_DIR}/lib"
86-
NSS_DIST_OBJ_DIR="${NSS_DIST_DIR}/Release"
87-
# NSPR
88-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libplc4.a" "${DIST_DIR}/lib"
89-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libplds4.a" "${DIST_DIR}/lib"
90-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libnspr4.a" "${DIST_DIR}/lib"
91-
# NSS
92-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libcertdb.a" "${DIST_DIR}/lib"
93-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libcerthi.a" "${DIST_DIR}/lib"
94-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libcryptohi.a" "${DIST_DIR}/lib"
95-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libfreebl_static.a" "${DIST_DIR}/lib"
96-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libnss_static.a" "${DIST_DIR}/lib"
97-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libmozpkix.a" "${DIST_DIR}/lib"
98-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libnssb.a" "${DIST_DIR}/lib"
99-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libnssdev.a" "${DIST_DIR}/lib"
100-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libnsspki.a" "${DIST_DIR}/lib"
101-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libnssutil.a" "${DIST_DIR}/lib"
102-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libpk11wrap_static.a" "${DIST_DIR}/lib"
103-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libpkcs12.a" "${DIST_DIR}/lib"
104-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libpkcs7.a" "${DIST_DIR}/lib"
105-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libsmime.a" "${DIST_DIR}/lib"
106-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libsoftokn_static.a" "${DIST_DIR}/lib"
107-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libssl.a" "${DIST_DIR}/lib"
108-
109-
# Apple M1 need HW specific libs copied over to successfully build
110-
if [[ "${TARGET_ARCH}" == "aarch64" ]]; then
111-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libarmv8_c_lib.a" "${DIST_DIR}/lib"
112-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libgcm-aes-aarch64_c_lib.a" "${DIST_DIR}/lib"
113-
else
114-
# HW specific.
115-
# https://searchfox.org/mozilla-central/rev/1eb05019f47069172ba81a6c108a584a409a24ea/security/nss/lib/freebl/freebl.gyp#159-163
116-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libhw-acc-crypto-avx.a" "${DIST_DIR}/lib"
117-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libhw-acc-crypto-avx2.a" "${DIST_DIR}/lib"
118-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libgcm-aes-x86_c_lib.a" "${DIST_DIR}/lib"
119-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libsha-x86_c_lib.a" "${DIST_DIR}/lib"
120-
fi
121-
# https://searchfox.org/mozilla-central/rev/1eb05019f47069172ba81a6c108a584a409a24ea/security/nss/lib/freebl/freebl.gyp#224-233
122-
if [[ "${TARGET_OS}" == "windows" ]] || [[ "${TARGET_OS}" == "linux" ]]; then
123-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libintel-gcm-wrap_c_lib.a" "${DIST_DIR}/lib"
124-
# https://searchfox.org/mozilla-central/rev/1eb05019f47069172ba81a6c108a584a409a24ea/security/nss/lib/freebl/freebl.gyp#43-47
125-
if [[ "${TARGET_OS}" == "linux" ]]; then
126-
cp -p -L "${NSS_DIST_OBJ_DIR}/lib/libintel-gcm-s_lib.a" "${DIST_DIR}/lib"
127-
fi
128-
fi
129-
130-
cp -p -L -R "${NSS_DIST_DIR}/public/nss/"* "${DIST_DIR}/include/nss"
131-
cp -p -L -R "${NSS_DIST_OBJ_DIR}/include/nspr/"* "${DIST_DIR}/include/nss"
83+
# Assemble the DIST_DIR with relevant libraries and headers
84+
./copy-nss-libs.sh \
85+
"${TARGET_OS}" \
86+
"${TARGET_ARCH}" \
87+
"${DIST_DIR}" \
88+
"${NSS_DIST_DIR}/Release/lib" \
89+
"${NSS_DIST_DIR}/Release/lib" \
90+
"${NSS_DIST_DIR}/public/nss" \
91+
"${NSS_DIST_DIR}/Release/include/nspr"
13292

13393
rm -rf "${NSS_DIST_DIR}"

libs/build-nss-ios.sh

Lines changed: 9 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -95,37 +95,12 @@ gyp -f ninja "${NSS_SRC_DIR}/nss/nss.gyp" \
9595
GENERATED_DIR="${NSS_SRC_DIR}/nss/out/Release-$(echo ${OS_COMPILER} | tr '[:upper:]' '[:lower:]')/"
9696
ninja -C "${GENERATED_DIR}"
9797

98-
mkdir -p "${DIST_DIR}/include/nss"
99-
mkdir -p "${DIST_DIR}/lib"
100-
cp -p -L "${BUILD_DIR}/lib/libcertdb.a" "${DIST_DIR}/lib"
101-
cp -p -L "${BUILD_DIR}/lib/libcerthi.a" "${DIST_DIR}/lib"
102-
cp -p -L "${BUILD_DIR}/lib/libcryptohi.a" "${DIST_DIR}/lib"
103-
cp -p -L "${BUILD_DIR}/lib/libfreebl_static.a" "${DIST_DIR}/lib"
104-
cp -p -L "${BUILD_DIR}/lib/libmozpkix.a" "${DIST_DIR}/lib"
105-
cp -p -L "${BUILD_DIR}/lib/libnss_static.a" "${DIST_DIR}/lib"
106-
cp -p -L "${BUILD_DIR}/lib/libnssb.a" "${DIST_DIR}/lib"
107-
cp -p -L "${BUILD_DIR}/lib/libnssdev.a" "${DIST_DIR}/lib"
108-
cp -p -L "${BUILD_DIR}/lib/libnsspki.a" "${DIST_DIR}/lib"
109-
cp -p -L "${BUILD_DIR}/lib/libnssutil.a" "${DIST_DIR}/lib"
110-
cp -p -L "${BUILD_DIR}/lib/libpk11wrap_static.a" "${DIST_DIR}/lib"
111-
cp -p -L "${BUILD_DIR}/lib/libpkcs12.a" "${DIST_DIR}/lib"
112-
cp -p -L "${BUILD_DIR}/lib/libpkcs7.a" "${DIST_DIR}/lib"
113-
cp -p -L "${BUILD_DIR}/lib/libsmime.a" "${DIST_DIR}/lib"
114-
cp -p -L "${BUILD_DIR}/lib/libsoftokn_static.a" "${DIST_DIR}/lib"
115-
cp -p -L "${BUILD_DIR}/lib/libssl.a" "${DIST_DIR}/lib"
116-
# HW specific.
117-
if [[ "${ARCH}" == "x86_64" ]]; then
118-
cp -p -L "${BUILD_DIR}/lib/libgcm-aes-x86_c_lib.a" "${DIST_DIR}/lib"
119-
cp -p -L "${BUILD_DIR}/lib/libhw-acc-crypto-avx.a" "${DIST_DIR}/lib"
120-
cp -p -L "${BUILD_DIR}/lib/libhw-acc-crypto-avx2.a" "${DIST_DIR}/lib"
121-
cp -p -L "${BUILD_DIR}/lib/libsha-x86_c_lib.a" "${DIST_DIR}/lib"
122-
elif [[ "${ARCH}" == "arm64" ]]; then
123-
cp -p -L "${BUILD_DIR}/lib/libgcm-aes-aarch64_c_lib.a" "${DIST_DIR}/lib"
124-
cp -p -L "${BUILD_DIR}/lib/libarmv8_c_lib.a" "${DIST_DIR}/lib"
125-
fi
126-
cp -p -L "${NSPR_BUILD_DIR}/dist/lib/libplc4.a" "${DIST_DIR}/lib"
127-
cp -p -L "${NSPR_BUILD_DIR}/dist/lib/libplds4.a" "${DIST_DIR}/lib"
128-
cp -p -L "${NSPR_BUILD_DIR}/dist/lib/libnspr4.a" "${DIST_DIR}/lib"
129-
130-
cp -p -L -R "${BUILD_DIR}/public/nss/"* "${DIST_DIR}/include/nss"
131-
cp -p -L -R "${NSPR_BUILD_DIR}/dist/include/nspr/"* "${DIST_DIR}/include/nss"
98+
# Assemble the DIST_DIR with relevant libraries and headers
99+
./copy-nss-libs.sh \
100+
"ios" \
101+
"${ARCH}" \
102+
"${DIST_DIR}" \
103+
"${BUILD_DIR}/lib" \
104+
"${NSPR_BUILD_DIR}/dist/lib" \
105+
"${BUILD_DIR}/public/nss" \
106+
"${NSPR_BUILD_DIR}/dist/include/nspr"

libs/copy-nss-libs.sh

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
#!/usr/bin/env bash
2+
3+
# Common script to copy NSS and NSPR libraries to a distribution directory
4+
# Usage: copy-nss-libs.sh <TARGET_OS> <ARCH> <DIST_DIR> <NSS_LIB_DIR> <NSPR_LIB_DIR> <NSS_INCLUDE_DIR> <NSPR_INCLUDE_DIR>
5+
6+
set -euvx
7+
8+
if [[ "${#}" -ne 7 ]]
9+
then
10+
echo "Usage:"
11+
echo "./copy-nss-libs.sh <TARGET_OS> <ARCH> <DIST_DIR> <NSS_LIB_DIR> <NSPR_LIB_DIR> <NSS_INCLUDE_DIR> <NSPR_INCLUDE_DIR>"
12+
exit 1
13+
fi
14+
15+
TARGET_OS=${1}
16+
ARCH=${2}
17+
DIST_DIR=${3}
18+
NSS_LIB_DIR=${4}
19+
NSPR_LIB_DIR=${5}
20+
NSS_INCLUDE_DIR=${6}
21+
NSPR_INCLUDE_DIR=${7}
22+
23+
mkdir -p "${DIST_DIR}/include/nss"
24+
mkdir -p "${DIST_DIR}/lib"
25+
26+
# NSPR libraries
27+
cp -p -L "${NSPR_LIB_DIR}/libplc4.a" "${DIST_DIR}/lib"
28+
cp -p -L "${NSPR_LIB_DIR}/libplds4.a" "${DIST_DIR}/lib"
29+
cp -p -L "${NSPR_LIB_DIR}/libnspr4.a" "${DIST_DIR}/lib"
30+
31+
# NSS libraries
32+
cp -p -L "${NSS_LIB_DIR}/libcertdb.a" "${DIST_DIR}/lib"
33+
cp -p -L "${NSS_LIB_DIR}/libcerthi.a" "${DIST_DIR}/lib"
34+
cp -p -L "${NSS_LIB_DIR}/libcryptohi.a" "${DIST_DIR}/lib"
35+
cp -p -L "${NSS_LIB_DIR}/libfreebl_static.a" "${DIST_DIR}/lib"
36+
cp -p -L "${NSS_LIB_DIR}/libnss_static.a" "${DIST_DIR}/lib"
37+
cp -p -L "${NSS_LIB_DIR}/libmozpkix.a" "${DIST_DIR}/lib"
38+
cp -p -L "${NSS_LIB_DIR}/libnssb.a" "${DIST_DIR}/lib"
39+
cp -p -L "${NSS_LIB_DIR}/libnssdev.a" "${DIST_DIR}/lib"
40+
cp -p -L "${NSS_LIB_DIR}/libnsspki.a" "${DIST_DIR}/lib"
41+
cp -p -L "${NSS_LIB_DIR}/libnssutil.a" "${DIST_DIR}/lib"
42+
cp -p -L "${NSS_LIB_DIR}/libpk11wrap_static.a" "${DIST_DIR}/lib"
43+
cp -p -L "${NSS_LIB_DIR}/libpkcs12.a" "${DIST_DIR}/lib"
44+
cp -p -L "${NSS_LIB_DIR}/libpkcs7.a" "${DIST_DIR}/lib"
45+
cp -p -L "${NSS_LIB_DIR}/libsmime.a" "${DIST_DIR}/lib"
46+
cp -p -L "${NSS_LIB_DIR}/libsoftokn_static.a" "${DIST_DIR}/lib"
47+
cp -p -L "${NSS_LIB_DIR}/libssl.a" "${DIST_DIR}/lib"
48+
49+
# Architecture or Platform specific libraries
50+
# https://searchfox.org/firefox-main/rev/7d8644b9d4470a675bf670c2dc7664cc01f14ece/security/nss/lib/freebl/freebl.gyp
51+
if [[ "${ARCH}" == "x86_64" ]]; then
52+
cp -p -L "${NSS_LIB_DIR}/libhw-acc-crypto-avx.a" "${DIST_DIR}/lib"
53+
cp -p -L "${NSS_LIB_DIR}/libhw-acc-crypto-avx2.a" "${DIST_DIR}/lib"
54+
cp -p -L "${NSS_LIB_DIR}/libgcm-aes-x86_c_lib.a" "${DIST_DIR}/lib"
55+
cp -p -L "${NSS_LIB_DIR}/libsha-x86_c_lib.a" "${DIST_DIR}/lib"
56+
fi
57+
if [[ "${ARCH}" == "aarch64" ]] || [[ "${ARCH}" == "arm64" ]]; then
58+
cp -p -L "${NSS_LIB_DIR}/libarmv8_c_lib.a" "${DIST_DIR}/lib"
59+
cp -p -L "${NSS_LIB_DIR}/libgcm-aes-aarch64_c_lib.a" "${DIST_DIR}/lib"
60+
fi
61+
if [[ "${TARGET_OS}" == "linux" ]]; then
62+
cp -p -L "${NSS_LIB_DIR}/libintel-gcm-wrap_c_lib.a" "${DIST_DIR}/lib"
63+
cp -p -L "${NSS_LIB_DIR}/libintel-gcm-s_lib.a" "${DIST_DIR}/lib"
64+
fi
65+
66+
# Copy headers
67+
cp -p -L -R "${NSS_INCLUDE_DIR}/"* "${DIST_DIR}/include/nss"
68+
cp -p -L -R "${NSPR_INCLUDE_DIR}/"* "${DIST_DIR}/include/nss"

0 commit comments

Comments
 (0)