148148if [ -n " $build_debian " ]; then
149149 set -e
150150
151+ DEB_OUTPUT_DIR=$( realpath ' ..' )
152+
151153 echo " Building Debian package..."
152154 WOLFSSL_OPTS=
153155 WOLFPROV_OPTS=
@@ -161,12 +163,42 @@ if [ -n "$build_debian" ]; then
161163 WOLFSSL_OPTS+=" --fips"
162164 WOLFPROV_OPTS+=" --fips"
163165 fi
166+ if [ " $WOLFPROV_REPLACE_DEFAULT " = " 1" ]; then
167+ OPENSSL_OPTS+=" --replace-default"
168+ fi
169+
170+ # wolfSSL and OpenSSL are independent and must be built first
171+ debian/install-wolfssl.sh $WOLFSSL_OPTS --no-install -r $DEB_OUTPUT_DIR
172+ debian/install-openssl.sh $OPENSSL_OPTS --no-install $DEB_OUTPUT_DIR
173+
174+ # wolfProvider depends on wolfSSL and OpenSSL headers and libraries.
175+ # We don't want to install them locally, so we unpack them to
176+ # temp dirs and reference those in the build.
177+
178+ # Unpack the wolfssl packages to a temporary directory
179+ wolfssl_dev_dir=$( mktemp -d)
180+ dpkg -x $DEB_OUTPUT_DIR /libwolfssl_* .deb $wolfssl_dev_dir
181+ dpkg -x $DEB_OUTPUT_DIR /libwolfssl-dev_* .deb $wolfssl_dev_dir
182+ # Unpack the libssl-dev package to a temporary directory
183+ openssl_dev_dir=$( mktemp -d)
184+ dpkg -x $DEB_OUTPUT_DIR /openssl_* .deb $openssl_dev_dir
185+ dpkg -x $DEB_OUTPUT_DIR /libssl-dev_* .deb $openssl_dev_dir
186+
187+ export DEB_HOST_MULTIARCH=$( dpkg-architecture -qDEB_HOST_MULTIARCH)
188+
189+ printf " wolfssl_dev_dir: %s\n" $wolfssl_dev_dir
190+ printf " wolfssl_dev_dir libs: %s\n" $( ls $wolfssl_dev_dir /usr/lib/$DEB_HOST_MULTIARCH )
191+ printf " openssl_dev_dir: %s\n" $openssl_dev_dir
192+ printf " openssl_dev_dir libs: %s\n" $( ls $openssl_dev_dir /usr/lib/$DEB_HOST_MULTIARCH )
193+
194+ export DEB_CFLAGS_APPEND=" -I$wolfssl_dev_dir /usr/include -I$openssl_dev_dir /usr/include"
195+ export DEB_CPPFLAGS_APPEND=" -I$wolfssl_dev_dir /usr/include -I$openssl_dev_dir /usr/include"
196+ export DEB_CXXFLAGS_APPEND=" -I$wolfssl_dev_dir /usr/include -I$openssl_dev_dir /usr/include"
197+ export DEB_LDFLAGS_APPEND=" -L$wolfssl_dev_dir /usr/lib/$DEB_HOST_MULTIARCH -L$openssl_dev_dir /usr/lib/$DEB_HOST_MULTIARCH "
198+ export PKG_CONFIG_LIBDIR=$wolfssl_dev_dir /usr/lib/$DEB_HOST_MULTIARCH /pkgconfig:$openssl_dev_dir /usr/lib/$DEB_HOST_MULTIARCH /pkgconfig
199+ debian/install-wolfprov.sh $WOLFPROV_OPTS --no-install $DEB_OUTPUT_DIR
164200
165- # Must install wolfSSL locally since it is needed to build wolfProvider
166- debian/install-wolfssl.sh $WOLFSSL_OPTS -r ..
167- # Always build replace-default mode for openssl. Use the standard one from apt.
168- debian/install-openssl.sh $OPENSSL_OPTS --replace-default ..
169- debian/install-wolfprov.sh $WOLFPROV_OPTS --no-install
201+ printf " Debian packages built in: %s\n" $DEB_OUTPUT_DIR
170202
171203 exit 0
172204fi
0 commit comments