Skip to content

Commit

Permalink
Fix up build script
Browse files Browse the repository at this point in the history
  • Loading branch information
RyeMutt committed Jun 18, 2024
1 parent 5b92f2d commit 4c0c2bd
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 133 deletions.
4 changes: 1 addition & 3 deletions autobuild.xml
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,6 @@
</map>
<key>manifest</key>
<array>
<string>lib/debug/*.a</string>
<string>lib/release/*.a</string>
</array>
<key>build_directory</key>
Expand Down Expand Up @@ -158,7 +157,6 @@
</map>
<key>manifest</key>
<array>
<string>lib/debug/*.a</string>
<string>lib/release/*.a</string>
</array>
<key>build_directory</key>
Expand Down Expand Up @@ -209,7 +207,7 @@
<key>name</key>
<string>libxml2</string>
<key>canonical_repo</key>
<string>https://git.alchemyviewer.org/alchemy/thirdparty/3p-libxml2</string>
<string>https://github.com/AlchemyViewer/3p-libxml2</string>
<key>description</key>
<string>Libxml2 is the XML C parser and toolkit developed for the Gnome project.</string>
</map>
Expand Down
170 changes: 40 additions & 130 deletions build-cmd.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,6 @@ else
fi

stage="$(pwd)"
[ -f "$stage"/packages/include/zlib/zlib.h ] || \
{ echo "You haven't installed packages yet." 1>&2; exit 1; }

# load autobuild provided shell functions and variables
source_environment_tempfile="$stage/source_environment.sh"
Expand All @@ -47,20 +45,20 @@ micro_version="$(sed -n -E 's/LIBXML_MICRO_VERSION=([0-9]+)/\1/p' "$configure")"
version="${major_version}.${minor_version}.${micro_version}"
echo "${version}" > "${stage}/VERSION.txt"

# Setup staging dirs
mkdir -p "$stage/include"
mkdir -p "$stage/lib/debug"
mkdir -p "$stage/lib/release"

pushd "$TOP/$SOURCE_DIR"
case "$AUTOBUILD_PLATFORM" in

windows*)
load_vsvars


# Setup staging dirs
mkdir -p "$stage/include"
mkdir -p "$stage/lib/debug"
mkdir -p "$stage/lib/release"

mkdir -p "build_debug"
pushd "build_debug"
cmake -G "$AUTOBUILD_WIN_CMAKE_GEN" -A "$AUTOBUILD_WIN_VSPLATFORM" .. \
cmake -G Ninja .. -DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_INSTALL_PREFIX="$(cygpath -m $stage)/debug" \
-DBUILD_SHARED_LIBS=OFF \
-DLIBXML2_WITH_ICONV=OFF \
Expand All @@ -71,7 +69,7 @@ case "$AUTOBUILD_PLATFORM" in
-DZLIB_LIBRARIES="$(cygpath -m $stage)/packages/lib/debug/zlibd.lib" \
-DZLIB_LIBRARY_DIRS="$(cygpath -m $stage)/packages/lib"

cmake --build . --config Debug --clean-first
cmake --build . --config Debug
cmake --install . --config Debug

# conditionally run unit tests
Expand All @@ -82,7 +80,7 @@ case "$AUTOBUILD_PLATFORM" in

mkdir -p "build_release"
pushd "build_release"
cmake -G "$AUTOBUILD_WIN_CMAKE_GEN" -A "$AUTOBUILD_WIN_VSPLATFORM" .. \
cmake -G Ninja .. -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="$(cygpath -m $stage)/release" \
-DBUILD_SHARED_LIBS=OFF \
-DLIBXML2_WITH_ICONV=OFF \
Expand All @@ -93,7 +91,7 @@ case "$AUTOBUILD_PLATFORM" in
-DZLIB_LIBRARIES="$(cygpath -m $stage)/packages/lib/release/zlib.lib" \
-DZLIB_LIBRARY_DIRS="$(cygpath -m $stage)/packages/lib"

cmake --build . --config Release --clean-first
cmake --build . --config Release
cmake --install . --config Release

# conditionally run unit tests
Expand Down Expand Up @@ -124,18 +122,11 @@ case "$AUTOBUILD_PLATFORM" in
# So, clear out bits that shouldn't affect our configure-directed build
# but which do nonetheless.
#
unset DISTCC_HOSTS CC CXX CFLAGS CPPFLAGS CXXFLAGS
unset DISTCC_HOSTS CFLAGS CPPFLAGS CXXFLAGS

# Default target per --address-size
opts="${TARGET_OPTS:--m$AUTOBUILD_ADDRSIZE}"
DEBUG_COMMON_FLAGS="$opts -Og -g -fPIC"
RELEASE_COMMON_FLAGS="$opts -O3 -g -fPIC -fstack-protector-strong"
DEBUG_CFLAGS="$DEBUG_COMMON_FLAGS"
RELEASE_CFLAGS="$RELEASE_COMMON_FLAGS"
DEBUG_CXXFLAGS="$DEBUG_COMMON_FLAGS -std=c++17"
RELEASE_CXXFLAGS="$RELEASE_COMMON_FLAGS -std=c++17"
DEBUG_CPPFLAGS="-DPIC"
RELEASE_CPPFLAGS="-DPIC -D_FORTIFY_SOURCE=2"
opts_c="${TARGET_OPTS:--m$AUTOBUILD_ADDRSIZE $LL_BUILD_RELEASE_CFLAGS}"
opts_cxx="${TARGET_OPTS:--m$AUTOBUILD_ADDRSIZE $LL_BUILD_RELEASE_CXXFLAGS}"

# Handle any deliberate platform targeting
if [ -z "${TARGET_CPPFLAGS:-}" ]; then
Expand All @@ -146,45 +137,23 @@ case "$AUTOBUILD_PLATFORM" in
export CPPFLAGS="$TARGET_CPPFLAGS"
fi

mkdir -p "build_debug"
pushd "build_debug"
CFLAGS="$DEBUG_CFLAGS" \
CPPFLAGS="$DEBUG_CPPFLAGS" \
cmake .. -GNinja -DBUILD_SHARED_LIBS:BOOL=OFF -DBUILD_TESTING=ON \
-DCMAKE_BUILD_TYPE="Debug" \
-DCMAKE_C_FLAGS="$DEBUG_CFLAGS" \
-DCMAKE_INSTALL_PREFIX="$stage/debug" \
-DLIBXML2_WITH_ICONV=OFF \
-DLIBXML2_WITH_LZMA=OFF \
-DLIBXML2_WITH_PYTHON=OFF \
-DLIBXML2_WITH_ZLIB=ON \
-DZLIB_INCLUDE_DIRS="$stage/packages/include/zlib/" \
-DZLIB_LIBRARIES="$stage/packages/lib/debug/libz.a" \
-DZLIB_LIBRARY_DIRS="$stage/packages/lib"

cmake --build . --config Debug
cmake --install . --config Debug

# conditionally run unit tests
if [ "${DISABLE_UNIT_TESTS:-0}" = "0" ]; then
ctest -C Debug
fi
popd
# Setup staging dirs
mkdir -p "$stage/include"
mkdir -p "$stage/lib"

mkdir -p "build_release"
pushd "build_release"
CFLAGS="$RELEASE_CFLAGS" \
CPPFLAGS="$RELEASE_CPPFLAGS" \
CFLAGS="$opts_c" \
cmake .. -GNinja -DBUILD_SHARED_LIBS:BOOL=OFF -DBUILD_TESTING=ON \
-DCMAKE_BUILD_TYPE="Release" \
-DCMAKE_C_FLAGS="$RELEASE_CFLAGS" \
-DCMAKE_INSTALL_PREFIX="$stage/release" \
-DCMAKE_C_FLAGS="$opts_c" \
-DCMAKE_INSTALL_PREFIX="$stage" \
-DLIBXML2_WITH_ICONV=OFF \
-DLIBXML2_WITH_LZMA=OFF \
-DLIBXML2_WITH_PYTHON=OFF \
-DLIBXML2_WITH_ZLIB=ON \
-DZLIB_INCLUDE_DIRS="$stage/packages/include/zlib/" \
-DZLIB_LIBRARIES="$stage/packages/lib/release/libz.a" \
-DZLIB_INCLUDE_DIRS="$stage/packages/include/" \
-DZLIB_LIBRARIES="$stage/packages/lib/libz.a" \
-DZLIB_LIBRARY_DIRS="$stage/packages/lib"

cmake --build . --config Release
Expand All @@ -195,68 +164,32 @@ case "$AUTOBUILD_PLATFORM" in
ctest -C Release
fi
popd

# Copy libraries
cp -a ${stage}/debug/lib/*.a ${stage}/lib/debug/
cp -a ${stage}/release/lib/*.a ${stage}/lib/release/

# copy headers
cp -a ${stage}/release/include/* ${stage}/include/
;;

darwin*)
# Setup osx sdk platform
SDKNAME="macosx"
export SDKROOT=$(xcodebuild -version -sdk ${SDKNAME} Path)
# Setup build flags
C_OPTS_X86="-arch x86_64 $LL_BUILD_RELEASE_CFLAGS"
C_OPTS_ARM64="-arch arm64 $LL_BUILD_RELEASE_CFLAGS"
CXX_OPTS_X86="-arch x86_64 $LL_BUILD_RELEASE_CXXFLAGS"
CXX_OPTS_ARM64="-arch arm64 $LL_BUILD_RELEASE_CXXFLAGS"
LINK_OPTS_X86="-arch x86_64 $LL_BUILD_RELEASE_LINKER"
LINK_OPTS_ARM64="-arch arm64 $LL_BUILD_RELEASE_LINKER"

# Deploy Targets
X86_DEPLOY=10.15
ARM64_DEPLOY=11.0
# deploy target
export MACOSX_DEPLOYMENT_TARGET=${LL_BUILD_DARWIN_BASE_DEPLOY_TARGET}

# Setup build flags
ARCH_FLAGS_X86="-arch x86_64 -mmacosx-version-min=${X86_DEPLOY} -isysroot ${SDKROOT} -msse4.2"
ARCH_FLAGS_ARM64="-arch arm64 -mmacosx-version-min=${ARM64_DEPLOY} -isysroot ${SDKROOT}"
DEBUG_COMMON_FLAGS="-O0 -g -fPIC -DPIC"
RELEASE_COMMON_FLAGS="-O3 -g -fPIC -DPIC -fstack-protector-strong"
DEBUG_CFLAGS="$DEBUG_COMMON_FLAGS"
RELEASE_CFLAGS="$RELEASE_COMMON_FLAGS"
DEBUG_CXXFLAGS="$DEBUG_COMMON_FLAGS -std=c++17"
RELEASE_CXXFLAGS="$RELEASE_COMMON_FLAGS -std=c++17"
DEBUG_CPPFLAGS="-DPIC"
RELEASE_CPPFLAGS="-DPIC"
DEBUG_LDFLAGS="-Wl,-headerpad_max_install_names"
RELEASE_LDFLAGS="-Wl,-headerpad_max_install_names"
# Setup staging dirs
mkdir -p "$stage/include"
mkdir -p "$stage/lib/release"

# force regenerate autoconf
autoreconf -fvi

# x86 Deploy Target
export MACOSX_DEPLOYMENT_TARGET=${X86_DEPLOY}

mkdir -p "build_debug_x86"
pushd "build_debug_x86"
CFLAGS="$ARCH_FLAGS_X86 $DEBUG_CFLAGS -I${stage}/packages/include/zlib -DALBUILD=1" \
CPPFLAGS="$ARCH_FLAGS_X86 $DEBUG_CPPFLAGS -I${stage}/packages/include/zlib -DALBUILD=1" \
CXXFLAGS="$ARCH_FLAGS_X86 $DEBUG_CXXFLAGS -I${stage}/packages/include/zlib -DALBUILD=1" \
LDFLAGS="$ARCH_FLAGS_X86 $DEBUG_LDFLAGS -L${stage}/packages/lib/debug" \
../configure --host=x86_64-apple-darwin --prefix="\${AUTOBUILD_PACKAGES_DIR}" --libdir="\${prefix}/lib/debug" \
--with-python=no --with-pic --with-zlib --without-lzma --disable-shared --enable-static

make -j$AUTOBUILD_CPU_COUNT
make install DESTDIR="$stage/debug_x86"

# conditionally run unit tests
if [ "${DISABLE_UNIT_TESTS:-0}" = "0" ]; then
make check || true
fi
popd

mkdir -p "build_release_x86"
pushd "build_release_x86"
CFLAGS="$ARCH_FLAGS_X86 $RELEASE_CFLAGS -I${stage}/packages/include/zlib -DALBUILD=1" \
CPPFLAGS="$ARCH_FLAGS_X86 $RELEASE_CPPFLAGS -I${stage}/packages/include/zlib -DALBUILD=1" \
CXXFLAGS="$ARCH_FLAGS_X86 $RELEASE_CXXFLAGS -I${stage}/packages/include/zlib -DALBUILD=1" \
LDFLAGS="$ARCH_FLAGS_X86 $RELEASE_LDFLAGS -L${stage}/packages/lib/release" \
CFLAGS="$C_OPTS_X86 -I${stage}/packages/include/zlib -DALBUILD=1" \
CXXFLAGS="$CXX_OPTS_X86 -I${stage}/packages/include/zlib -DALBUILD=1" \
LDFLAGS="$LINK_OPTS_X86 -L${stage}/packages/lib/release" \
../configure --host=x86_64-apple-darwin --prefix="\${AUTOBUILD_PACKAGES_DIR}" --libdir="\${prefix}/lib/release" \
--with-python=no --with-pic --with-zlib --without-lzma --disable-shared --enable-static

Expand All @@ -269,33 +202,11 @@ case "$AUTOBUILD_PLATFORM" in
fi
popd

# ARM64 Deploy Target
export MACOSX_DEPLOYMENT_TARGET=${ARM64_DEPLOY}

mkdir -p "build_debug_arm64"
pushd "build_debug_arm64"
CFLAGS="$ARCH_FLAGS_ARM64 $DEBUG_CFLAGS -I${stage}/packages/include/zlib -DALBUILD=1" \
CPPFLAGS="$ARCH_FLAGS_ARM64 $DEBUG_CPPFLAGS -I${stage}/packages/include/zlib -DALBUILD=1" \
CXXFLAGS="$ARCH_FLAGS_ARM64 $DEBUG_CXXFLAGS -I${stage}/packages/include/zlib -DALBUILD=1" \
LDFLAGS="$ARCH_FLAGS_ARM64 $DEBUG_LDFLAGS -L${stage}/packages/lib/debug" \
../configure --host=aarch64-apple-darwin --prefix="\${AUTOBUILD_PACKAGES_DIR}" --libdir="\${prefix}/lib/debug" \
--with-python=no --with-pic --with-zlib --without-lzma --disable-shared --enable-static

make -j$AUTOBUILD_CPU_COUNT
make install DESTDIR="$stage/debug_arm64"

# conditionally run unit tests
if [ "${DISABLE_UNIT_TESTS:-0}" = "0" ]; then
make check || true
fi
popd

mkdir -p "build_release_arm64"
pushd "build_release_arm64"
CFLAGS="$ARCH_FLAGS_ARM64 $RELEASE_CFLAGS -I${stage}/packages/include/zlib -DALBUILD=1" \
CPPFLAGS="$ARCH_FLAGS_ARM64 $RELEASE_CPPFLAGS -I${stage}/packages/include/zlib -DALBUILD=1" \
CXXFLAGS="$ARCH_FLAGS_ARM64 $RELEASE_CXXFLAGS -I${stage}/packages/include/zlib -DALBUILD=1" \
LDFLAGS="$ARCH_FLAGS_ARM64 $RELEASE_LDFLAGS -L${stage}/packages/lib/release" \
CFLAGS="$C_OPTS_ARM64 -I${stage}/packages/include/zlib -DALBUILD=1" \
CXXFLAGS="$CXX_OPTS_ARM64 -I${stage}/packages/include/zlib -DALBUILD=1" \
LDFLAGS="$LINK_OPTS_ARM64 -L${stage}/packages/lib/release" \
../configure --host=aarch64-apple-darwin --prefix="\${AUTOBUILD_PACKAGES_DIR}" --libdir="\${prefix}/lib/release" \
--with-python=no --with-pic --with-zlib --without-lzma --disable-shared --enable-static

Expand All @@ -309,7 +220,6 @@ case "$AUTOBUILD_PLATFORM" in
popd

# create fat libraries
lipo -create ${stage}/debug_x86/lib/debug/libxml2.a ${stage}/debug_arm64/lib/debug/libxml2.a -output ${stage}/lib/debug/libxml2.a
lipo -create ${stage}/release_x86/lib/release/libxml2.a ${stage}/release_arm64/lib/release/libxml2.a -output ${stage}/lib/release/libxml2.a

# copy headers
Expand Down

0 comments on commit 4c0c2bd

Please sign in to comment.