Browse Source

build: add pkg-config to prevent contamination

pull/2715/head
osy 4 years ago
parent
commit
c86ff0a27b
  1. 3
      patches/sources
  2. 36
      scripts/build_dependencies.sh

3
patches/sources

@ -1,5 +1,8 @@
#!/bin/sh
# pkg-config
PKG_CONFIG_SRC="https://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz"
# Source files for qemu
FFI_SRC="https://sourceware.org/ftp/libffi/libffi-3.3.tar.gz"
ICONV_SRC="https://ftp.gnu.org/gnu/libiconv/libiconv-1.16.tar.gz"

36
scripts/build_dependencies.sh

@ -48,7 +48,7 @@ usage () {
echo " SDKVERSION Target a specific SDK version."
echo " CHOST Configure host, set if not deducable by ARCH."
echo ""
echo " CFLAGS CPPFLAGS CXXFLAGS LDFLAGS PKG_CONFIG_PATH"
echo " CFLAGS CPPFLAGS CXXFLAGS LDFLAGS"
echo ""
exit 1
}
@ -56,7 +56,6 @@ usage () {
check_env () {
command -v gmake >/dev/null 2>&1 || { echo >&2 "${RED}You must install GNU make on your host machine (and link it to 'gmake').${NC}"; exit 1; }
command -v meson >/dev/null 2>&1 || { echo >&2 "${RED}You must install 'meson' on your host machine.${NC}"; exit 1; }
command -v pkg-config >/dev/null 2>&1 || { echo >&2 "${RED}You must install 'pkg-config' on your host machine.${NC}"; exit 1; }
command -v msgfmt >/dev/null 2>&1 || { echo >&2 "${RED}You must install 'gettext' on your host machine.\n\t'msgfmt' needs to be in your \$PATH as well.${NC}"; exit 1; }
command -v glib-mkenums >/dev/null 2>&1 || { echo >&2 "${RED}You must install 'glib' on your host machine.\n\t'glib-mkenums' needs to be in your \$PATH as well.${NC}"; exit 1; }
command -v gpg-error-config >/dev/null 2>&1 || { echo >&2 "${RED}You must install 'libgpg-error' on your host machine.\n\t'gpg-error-config' needs to be in your \$PATH as well.${NC}"; exit 1; }
@ -118,6 +117,7 @@ clone () {
download_all () {
[ -d "$BUILD_DIR" ] || mkdir -p "$BUILD_DIR"
download $PKG_CONFIG_SRC
download $FFI_SRC
download $ICONV_SRC
download $GETTEXT_SRC
@ -194,7 +194,7 @@ generate_meson_cross() {
echo "objc = [$(meson_quote $OBJCC)]" >> $cross
echo "ar = [$(meson_quote $AR)]" >> $cross
echo "nm = [$(meson_quote $NM)]" >> $cross
echo "pkgconfig = ['pkg-config']" >> $cross
echo "pkgconfig = ['$PREFIX/host/bin/pkg-config']" >> $cross
echo "ranlib = [$(meson_quote $RANLIB)]" >> $cross
echo "strip = [$(meson_quote $STRIP), '-x']" >> $cross
echo "[host_machine]" >> $cross
@ -220,6 +220,27 @@ generate_meson_cross() {
echo "endian = 'little'" >> $cross
}
# Prevent contamination from host pkg-config files by building our own
build_pkg_config() {
FILE="$(basename $PKG_CONFIG_SRC)"
NAME="${FILE%.tar.*}"
DIR="$BUILD_DIR/$NAME"
pwd="$(pwd)"
cd "$DIR"
if [ -z "$REBUILD" ]; then
echo "${GREEN}Configuring ${NAME}...${NC}"
env -i ./configure --prefix="$PREFIX" --bindir="$PREFIX/host/bin" $@
fi
echo "${GREEN}Building ${NAME}...${NC}"
make "$MAKEFLAGS"
echo "${GREEN}Installing ${NAME}...${NC}"
make "$MAKEFLAGS" install
cd "$pwd"
export PATH="$PREFIX/host/bin:$PATH"
}
build_openssl() {
URL=$1
shift 1
@ -607,7 +628,7 @@ ios* )
PLATFORM_FAMILY_NAME="$PLATFORM_FAMILY_PREFIX"
;;
esac
QEMU_PLATFORM_BUILD_FLAGS="--disable-debug-info --enable-shared-lib --disable-hvf --disable-cocoa --disable-curl --disable-slirp-smbd --with-coroutine=libucontext $TCI_BUILD_FLAGS"
QEMU_PLATFORM_BUILD_FLAGS="--disable-debug-info --enable-shared-lib --disable-hvf --disable-cocoa --disable-slirp-smbd --with-coroutine=libucontext $TCI_BUILD_FLAGS"
;;
macos )
if [ -z "$SDKMINVER" ]; then
@ -617,7 +638,7 @@ macos )
CFLAGS_MINVER="-mmacos-version-min=$SDKMINVER"
CFLAGS_TARGET="-target $ARCH-apple-macos"
PLATFORM_FAMILY_NAME="macOS"
QEMU_PLATFORM_BUILD_FLAGS="--disable-debug-info --enable-shared-lib --disable-cocoa --disable-curl --cpu=$CPU"
QEMU_PLATFORM_BUILD_FLAGS="--disable-debug-info --enable-shared-lib --disable-cocoa --cpu=$CPU"
;;
* )
usage
@ -686,15 +707,11 @@ CPPFLAGS="$CPPFLAGS -arch $ARCH -isysroot $SDKROOT -I$PREFIX/include $CFLAGS_MIN
CXXFLAGS="$CXXFLAGS -arch $ARCH -isysroot $SDKROOT -I$PREFIX/include $CFLAGS_MINVER $CFLAGS_TARGET"
LDFLAGS="$LDFLAGS -arch $ARCH -isysroot $SDKROOT -L$PREFIX/lib $CFLAGS_MINVER $CFLAGS_TARGET"
MAKEFLAGS="-j$NCPU"
PKG_CONFIG_PATH="$PKG_CONFIG_PATH":"$SDKROOT/usr/lib/pkgconfig":"$PREFIX/lib/pkgconfig":"$PREFIX/share/pkgconfig"
PKG_CONFIG_LIBDIR=""
export CFLAGS
export CPPFLAGS
export CXXFLAGS
export LDFLAGS
export MAKEFLAGS
export PKG_CONFIG_PATH
export PKG_CONFIG_LIBDIR
check_env
@ -712,6 +729,7 @@ echo "${GREEN}Deleting old sysroot!${NC}"
rm -rf "$PREFIX/"*
rm -f "$BUILD_DIR/BUILD_SUCCESS"
copy_private_headers
build_pkg_config
build_qemu_dependencies
build_qemu $QEMU_PLATFORM_BUILD_FLAGS
build_spice_client

Loading…
Cancel
Save