@@ -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.
1717CROSS_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
2219if [[ -n " ${CROSS_COMPILE_TARGET} " ]] && [[ " $( uname -s) " != " Linux" ]]; then
2320 echo " Can only cross compile from 'Linux'; 'uname -s' is $( uname -s) "
2724if [[ " ${CROSS_COMPILE_TARGET} " =~ " darwin" ]]; then
2825 DIST_DIR=$( abspath " desktop/darwin/nss" )
2926 TARGET_OS=" macos"
27+ TARGET_ARCH=" x86_64"
3028elif [[ -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"
4746else
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"
8281fi
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
13393rm -rf " ${NSS_DIST_DIR} "
0 commit comments