diff --git a/platforms/android/arm64-v8a/build.sh b/platforms/android/arm64-v8a/build.sh new file mode 100755 index 0000000..4dea8cc --- /dev/null +++ b/platforms/android/arm64-v8a/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +./platforms/build-common.sh android arm64-v8a diff --git a/platforms/android/arm64-v8a/external.sh b/platforms/android/arm64-v8a/external.sh index 2047256..e922d4a 100755 --- a/platforms/android/arm64-v8a/external.sh +++ b/platforms/android/arm64-v8a/external.sh @@ -6,9 +6,12 @@ source ./platforms/config.sh echo "Building libraries..." echo " LIBZEDMD_SHA: ${LIBZEDMD_SHA}" +print_dependency_source LIBZEDMD "${LIBZEDMD_SHA}" LIBZEDMD_SOURCE_DIR echo " LIBSERUM_SHA: ${LIBSERUM_SHA}" +print_dependency_source LIBSERUM "${LIBSERUM_SHA}" LIBSERUM_SOURCE_DIR echo " LIBPUPDMD_SHA: ${LIBPUPDMD_SHA}" echo " LIBVNI_SHA: ${LIBVNI_SHA}" +print_dependency_source LIBVNI "${LIBVNI_SHA}" LIBVNI_SOURCE_DIR echo "" if [[ $(uname) == "Linux" ]]; then @@ -19,17 +22,20 @@ else NUM_PROCS=1 fi + rm -rf external -mkdir external +mkdir -p \ + external \ + third-party/include \ + third-party/build-libs/android/arm64-v8a \ + third-party/runtime-libs/android/arm64-v8a cd external # # build libzedmd and copy to external # -curl -sL https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz -o libzedmd-${LIBZEDMD_SHA}.tar.gz -tar xzf libzedmd-${LIBZEDMD_SHA}.tar.gz -mv libzedmd-${LIBZEDMD_SHA} libzedmd +prepare_dependency_source libzedmd "${LIBZEDMD_SHA}" "https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz" tar LIBZEDMD_SOURCE_DIR cd libzedmd BUILD_TYPE=${BUILD_TYPE} platforms/android/arm64-v8a/external.sh cmake \ @@ -40,12 +46,12 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/ZeDMD.h ../../third-party/include/ -cp -r third-party/include/komihash ../../third-party/include/ -cp -r third-party/include/sockpp ../../third-party/include/ -cp third-party/include/FrameUtil.h ../../third-party/include/ -cp third-party/runtime-libs/android/arm64-v8a/libsockpp.so ../../third-party/runtime-libs/android/arm64-v8a/ -cp build/libzedmd.so ../../third-party/runtime-libs/android/arm64-v8a/ +cp src/ZeDMD.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/komihash ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/sockpp ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/FrameUtil.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/runtime-libs/android/arm64-v8a/libsockpp.so ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/android/arm64-v8a/ +cp build/libzedmd.so ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/android/arm64-v8a/ cp -r test ../../ cd .. @@ -53,9 +59,7 @@ cd .. # build libserum and copy to external # -curl -sL https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz -o libserum-${LIBSERUM_SHA}.tar.gz -tar xzf libserum-${LIBSERUM_SHA}.tar.gz -mv libserum-${LIBSERUM_SHA} libserum +prepare_dependency_source libserum "${LIBSERUM_SHA}" "https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz" tar LIBSERUM_SOURCE_DIR cd libserum cmake \ -DPLATFORM=android \ @@ -65,13 +69,13 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp -r third-party/include/lz4 ../../third-party/include/ -cp src/LZ4Stream.h ../../third-party/include/ -cp src/SceneGenerator.h ../../third-party/include/ -cp src/serum.h ../../third-party/include/ -cp src/TimeUtils.h ../../third-party/include/ -cp src/serum-decode.h ../../third-party/include/ -cp build/libserum.so ../../third-party/runtime-libs/android/arm64-v8a/ +cp -r third-party/include/lz4 ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/LZ4Stream.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/SceneGenerator.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/TimeUtils.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum-decode.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp build/libserum.so ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/android/arm64-v8a/ cd .. # @@ -89,17 +93,15 @@ cmake -DPLATFORM=android \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/pupdmd.h ../../third-party/include/ -cp build/libpupdmd.so ../../third-party/runtime-libs/android/arm64-v8a/ +cp src/pupdmd.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp build/libpupdmd.so ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/android/arm64-v8a/ cd .. # # build libvni and copy to external # -curl -sL https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz -o libvni-${LIBVNI_SHA}.tar.gz -tar xzf libvni-${LIBVNI_SHA}.tar.gz -mv libvni-${LIBVNI_SHA} libvni +prepare_dependency_source libvni "${LIBVNI_SHA}" "https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz" tar LIBVNI_SOURCE_DIR cd libvni platforms/android/arm64-v8a/external.sh cmake \ @@ -110,6 +112,6 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/vni.h ../../third-party/include/ -cp build/libvni.so ../../third-party/runtime-libs/android/arm64-v8a/ +cp src/vni.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp build/libvni.so ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/android/arm64-v8a/ cd .. diff --git a/platforms/build-common.sh b/platforms/build-common.sh new file mode 100755 index 0000000..7276eeb --- /dev/null +++ b/platforms/build-common.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +set -e + +if [ "$#" -lt 2 ]; then + echo "Usage: $0 [extra-cmake-args...]" + exit 1 +fi + +PLATFORM_NAME="$1" +ARCH_NAME="$2" +shift 2 + +if [ -z "${BUILD_TYPE}" ]; then + BUILD_TYPE="Release" +fi + +EXTERNAL_SCRIPT="./platforms/${PLATFORM_NAME}/${ARCH_NAME}/external.sh" +if [ -f "${EXTERNAL_SCRIPT}" ]; then + BUILD_TYPE=${BUILD_TYPE} "${EXTERNAL_SCRIPT}" +fi + +if [ "${PLATFORM_NAME}" = "win" ]; then + if [ "${ARCH_NAME}" = "x86" ]; then + cmake -G "Visual Studio 17 2022" -A Win32 -DPLATFORM=${PLATFORM_NAME} -DARCH=${ARCH_NAME} "$@" -B build + else + cmake -G "Visual Studio 17 2022" -DPLATFORM=${PLATFORM_NAME} -DARCH=${ARCH_NAME} "$@" -B build + fi + cmake --build build --config ${BUILD_TYPE} +elif [ "${PLATFORM_NAME}" = "win-mingw" ]; then + cmake -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DPLATFORM=${PLATFORM_NAME} -DARCH=${ARCH_NAME} "$@" -B build + cmake --build build -- -j$(nproc) +else + cmake -DPLATFORM=${PLATFORM_NAME} -DARCH=${ARCH_NAME} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} "$@" -B build + cmake --build build +fi diff --git a/platforms/config.sh b/platforms/config.sh index 98bba73..6873bee 100755 --- a/platforms/config.sh +++ b/platforms/config.sh @@ -8,6 +8,58 @@ LIBPUPDMD_SHA=4a1123220e6dce73c87cc584494df2ac82cb6f4c LIBVNI_SHA=7258e2fa0d086e1224d6510d44a61879e6b344b1 LIBUSB_SHA=15a7ebb4d426c5ce196684347d2b7cafad862626 +PROJECT_SOURCE_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)" + +dependency_source_dir() { + local var_name="$1" + local source_dir="${!var_name:-}" + + if [ -z "${source_dir}" ]; then + return 0 + fi + + (cd "${PROJECT_SOURCE_ROOT}" && cd "${source_dir}" && pwd -P) +} + +print_dependency_source() { + local label="$1" + local sha="$2" + local source_var="$3" + local source_dir + + source_dir="$(dependency_source_dir "${source_var}")" + if [ -n "${source_dir}" ]; then + echo " ${label}_SOURCE_DIR: ${source_dir}" + else + echo " ${label}_SOURCE: archive ${sha}" + fi +} + +prepare_dependency_source() { + local name="$1" + local sha="$2" + local url="$3" + local archive_type="${4:-tar}" + local source_var="$5" + local source_dir + + source_dir="$(dependency_source_dir "${source_var}")" + if [ -n "${source_dir}" ]; then + echo "Using ${source_var}: ${source_dir}" + ln -s "${source_dir}" "${name}" + elif [ "${archive_type}" = "zip" ]; then + curl -sL "${url}" -o "${name}.zip" + unzip "${name}.zip" + mv "${name}-${sha}" "${name}" + else + curl -sL "${url}" -o "${name}-${sha}.tar.gz" + tar xzf "${name}-${sha}.tar.gz" + mv "${name}-${sha}" "${name}" + fi +} + + + if [ -z "${BUILD_TYPE}" ]; then BUILD_TYPE="Release" fi diff --git a/platforms/ios-simulator/arm64/build.sh b/platforms/ios-simulator/arm64/build.sh new file mode 100755 index 0000000..d863d57 --- /dev/null +++ b/platforms/ios-simulator/arm64/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +./platforms/build-common.sh ios-simulator arm64 diff --git a/platforms/ios-simulator/arm64/external.sh b/platforms/ios-simulator/arm64/external.sh index 0953bc1..6593a50 100755 --- a/platforms/ios-simulator/arm64/external.sh +++ b/platforms/ios-simulator/arm64/external.sh @@ -6,24 +6,30 @@ source ./platforms/config.sh echo "Building libraries..." echo " LIBZEDMD_SHA: ${LIBZEDMD_SHA}" +print_dependency_source LIBZEDMD "${LIBZEDMD_SHA}" LIBZEDMD_SOURCE_DIR echo " LIBSERUM_SHA: ${LIBSERUM_SHA}" +print_dependency_source LIBSERUM "${LIBSERUM_SHA}" LIBSERUM_SOURCE_DIR echo " LIBPUPDMD_SHA: ${LIBPUPDMD_SHA}" echo " LIBVNI_SHA: ${LIBVNI_SHA}" +print_dependency_source LIBVNI "${LIBVNI_SHA}" LIBVNI_SOURCE_DIR echo "" NUM_PROCS=$(sysctl -n hw.ncpu) + rm -rf external -mkdir external +mkdir -p \ + external \ + third-party/include \ + third-party/build-libs/ios-simulator/arm64 \ + third-party/runtime-libs/ios-simulator/arm64 cd external # # build libzedmd and copy to external # -curl -sL https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz -o libzedmd-${LIBZEDMD_SHA}.tar.gz -tar xzf libzedmd-${LIBZEDMD_SHA}.tar.gz -mv libzedmd-${LIBZEDMD_SHA} libzedmd +prepare_dependency_source libzedmd "${LIBZEDMD_SHA}" "https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz" tar LIBZEDMD_SOURCE_DIR cd libzedmd BUILD_TYPE=${BUILD_TYPE} platforms/ios-simulator/arm64/external.sh cmake \ @@ -34,12 +40,12 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/ZeDMD.h ../../third-party/include/ -cp -r third-party/include/komihash ../../third-party/include/ -cp -r third-party/include/sockpp ../../third-party/include/ -cp third-party/include/FrameUtil.h ../../third-party/include/ -cp -a third-party/build-libs/ios-simulator/arm64/libsockpp.a ../../third-party/build-libs/ios-simulator/arm64/ -cp build/libzedmd.a ../../third-party/build-libs/ios-simulator/arm64/ +cp src/ZeDMD.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/komihash ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/sockpp ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/FrameUtil.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -a third-party/build-libs/ios-simulator/arm64/libsockpp.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/ios-simulator/arm64/ +cp build/libzedmd.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/ios-simulator/arm64/ cp -r test ../../ cd .. @@ -47,9 +53,7 @@ cd .. # build libserum and copy to external # -curl -sL https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz -o libserum-${LIBSERUM_SHA}.tar.gz -tar xzf libserum-${LIBSERUM_SHA}.tar.gz -mv libserum-${LIBSERUM_SHA} libserum +prepare_dependency_source libserum "${LIBSERUM_SHA}" "https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz" tar LIBSERUM_SOURCE_DIR cd libserum cmake \ -DPLATFORM=ios-simulator \ @@ -59,13 +63,13 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp -r third-party/include/lz4 ../../third-party/include/ -cp src/LZ4Stream.h ../../third-party/include/ -cp src/SceneGenerator.h ../../third-party/include/ -cp src/serum.h ../../third-party/include/ -cp src/TimeUtils.h ../../third-party/include/ -cp src/serum-decode.h ../../third-party/include/ -cp build/libserum.a ../../third-party/build-libs/ios-simulator/arm64/ +cp -r third-party/include/lz4 ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/LZ4Stream.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/SceneGenerator.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/TimeUtils.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum-decode.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp build/libserum.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/ios-simulator/arm64/ cd .. # @@ -84,17 +88,15 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/pupdmd.h ../../third-party/include/ -cp build/libpupdmd.a ../../third-party/build-libs/ios-simulator/arm64/ +cp src/pupdmd.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp build/libpupdmd.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/ios-simulator/arm64/ cd .. # # build libvni and copy to external # -curl -sL https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz -o libvni-${LIBVNI_SHA}.tar.gz -tar xzf libvni-${LIBVNI_SHA}.tar.gz -mv libvni-${LIBVNI_SHA} libvni +prepare_dependency_source libvni "${LIBVNI_SHA}" "https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz" tar LIBVNI_SOURCE_DIR cd libvni platforms/ios-simulator/arm64/external.sh cmake \ @@ -105,6 +107,6 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/vni.h ../../third-party/include/ -cp build/libvni.a ../../third-party/build-libs/ios-simulator/arm64/ +cp src/vni.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp build/libvni.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/ios-simulator/arm64/ cd .. diff --git a/platforms/ios/arm64/build.sh b/platforms/ios/arm64/build.sh new file mode 100755 index 0000000..4a261a9 --- /dev/null +++ b/platforms/ios/arm64/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +./platforms/build-common.sh ios arm64 diff --git a/platforms/ios/arm64/external.sh b/platforms/ios/arm64/external.sh index 06a7855..15eed99 100755 --- a/platforms/ios/arm64/external.sh +++ b/platforms/ios/arm64/external.sh @@ -6,24 +6,30 @@ source ./platforms/config.sh echo "Building libraries..." echo " LIBZEDMD_SHA: ${LIBZEDMD_SHA}" +print_dependency_source LIBZEDMD "${LIBZEDMD_SHA}" LIBZEDMD_SOURCE_DIR echo " LIBSERUM_SHA: ${LIBSERUM_SHA}" +print_dependency_source LIBSERUM "${LIBSERUM_SHA}" LIBSERUM_SOURCE_DIR echo " LIBPUPDMD_SHA: ${LIBPUPDMD_SHA}" echo " LIBVNI_SHA: ${LIBVNI_SHA}" +print_dependency_source LIBVNI "${LIBVNI_SHA}" LIBVNI_SOURCE_DIR echo "" NUM_PROCS=$(sysctl -n hw.ncpu) + rm -rf external -mkdir external +mkdir -p \ + external \ + third-party/include \ + third-party/build-libs/ios/arm64 \ + third-party/runtime-libs/ios/arm64 cd external # # build libzedmd and copy to external # -curl -sL https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz -o libzedmd-${LIBZEDMD_SHA}.tar.gz -tar xzf libzedmd-${LIBZEDMD_SHA}.tar.gz -mv libzedmd-${LIBZEDMD_SHA} libzedmd +prepare_dependency_source libzedmd "${LIBZEDMD_SHA}" "https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz" tar LIBZEDMD_SOURCE_DIR cd libzedmd BUILD_TYPE=${BUILD_TYPE} platforms/ios/arm64/external.sh cmake \ @@ -34,12 +40,12 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/ZeDMD.h ../../third-party/include/ -cp -r third-party/include/komihash ../../third-party/include/ -cp -r third-party/include/sockpp ../../third-party/include/ -cp third-party/include/FrameUtil.h ../../third-party/include/ -cp -a third-party/build-libs/ios/arm64/libsockpp.a ../../third-party/build-libs/ios/arm64/ -cp build/libzedmd.a ../../third-party/build-libs/ios/arm64/ +cp src/ZeDMD.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/komihash ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/sockpp ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/FrameUtil.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -a third-party/build-libs/ios/arm64/libsockpp.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/ios/arm64/ +cp build/libzedmd.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/ios/arm64/ cp -r test ../../ cd .. @@ -47,9 +53,7 @@ cd .. # build libserum and copy to external # -curl -sL https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz -o libserum-${LIBSERUM_SHA}.tar.gz -tar xzf libserum-${LIBSERUM_SHA}.tar.gz -mv libserum-${LIBSERUM_SHA} libserum +prepare_dependency_source libserum "${LIBSERUM_SHA}" "https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz" tar LIBSERUM_SOURCE_DIR cd libserum cmake \ -DPLATFORM=ios \ @@ -59,13 +63,13 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp -r third-party/include/lz4 ../../third-party/include/ -cp src/LZ4Stream.h ../../third-party/include/ -cp src/SceneGenerator.h ../../third-party/include/ -cp src/serum.h ../../third-party/include/ -cp src/TimeUtils.h ../../third-party/include/ -cp src/serum-decode.h ../../third-party/include/ -cp build/libserum.a ../../third-party/build-libs/ios/arm64/ +cp -r third-party/include/lz4 ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/LZ4Stream.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/SceneGenerator.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/TimeUtils.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum-decode.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp build/libserum.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/ios/arm64/ cd .. # @@ -84,17 +88,15 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/pupdmd.h ../../third-party/include/ -cp build/libpupdmd.a ../../third-party/build-libs/ios/arm64/ +cp src/pupdmd.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp build/libpupdmd.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/ios/arm64/ cd .. # # build libvni and copy to external # -curl -sL https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz -o libvni-${LIBVNI_SHA}.tar.gz -tar xzf libvni-${LIBVNI_SHA}.tar.gz -mv libvni-${LIBVNI_SHA} libvni +prepare_dependency_source libvni "${LIBVNI_SHA}" "https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz" tar LIBVNI_SOURCE_DIR cd libvni platforms/ios/arm64/external.sh cmake \ @@ -105,6 +107,6 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/vni.h ../../third-party/include/ -cp build/libvni.a ../../third-party/build-libs/ios/arm64/ +cp src/vni.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp build/libvni.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/ios/arm64/ cd .. diff --git a/platforms/linux/aarch64/build.sh b/platforms/linux/aarch64/build.sh new file mode 100755 index 0000000..3e71c09 --- /dev/null +++ b/platforms/linux/aarch64/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +./platforms/build-common.sh linux aarch64 diff --git a/platforms/linux/aarch64/external.sh b/platforms/linux/aarch64/external.sh index e9214b6..973241d 100755 --- a/platforms/linux/aarch64/external.sh +++ b/platforms/linux/aarch64/external.sh @@ -7,15 +7,23 @@ source ./platforms/config.sh echo "Building libraries..." echo " LIBUSB_SHA: ${LIBUSB_SHA}" echo " LIBZEDMD_SHA: ${LIBZEDMD_SHA}" +print_dependency_source LIBZEDMD "${LIBZEDMD_SHA}" LIBZEDMD_SOURCE_DIR echo " LIBSERUM_SHA: ${LIBSERUM_SHA}" +print_dependency_source LIBSERUM "${LIBSERUM_SHA}" LIBSERUM_SOURCE_DIR echo " LIBPUPDMD_SHA: ${LIBPUPDMD_SHA}" echo " LIBVNI_SHA: ${LIBVNI_SHA}" +print_dependency_source LIBVNI "${LIBVNI_SHA}" LIBVNI_SOURCE_DIR echo "" NUM_PROCS=$(nproc) + rm -rf external -mkdir external +mkdir -p \ + external \ + third-party/include \ + third-party/build-libs/linux/aarch64 \ + third-party/runtime-libs/linux/aarch64 cd external # @@ -30,18 +38,16 @@ cd libusb ./configure \ --enable-shared make -j${NUM_PROCS} -mkdir -p ../../third-party/include/libusb-1.0 -cp libusb/libusb.h ../../third-party/include/libusb-1.0 -cp -a libusb/.libs/libusb-1.0.{so,so.*} ../../third-party/runtime-libs/linux/aarch64/ +mkdir -p ${PROJECT_SOURCE_ROOT}/third-party/include/libusb-1.0 +cp libusb/libusb.h ${PROJECT_SOURCE_ROOT}/third-party/include/libusb-1.0 +cp -a libusb/.libs/libusb-1.0.{so,so.*} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/linux/aarch64/ cd .. # # build libzedmd and copy to external # -curl -sL https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz -o libzedmd-${LIBZEDMD_SHA}.tar.gz -tar xzf libzedmd-${LIBZEDMD_SHA}.tar.gz -mv libzedmd-${LIBZEDMD_SHA} libzedmd +prepare_dependency_source libzedmd "${LIBZEDMD_SHA}" "https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz" tar LIBZEDMD_SOURCE_DIR cd libzedmd BUILD_TYPE=${BUILD_TYPE} platforms/linux/aarch64/external.sh cmake \ @@ -53,16 +59,16 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/ZeDMD.h ../../third-party/include/ -cp third-party/include/libserialport.h ../../third-party/include/ -cp third-party/include/cargs.h ../../third-party/include/ -cp -r third-party/include/komihash ../../third-party/include/ -cp -r third-party/include/sockpp ../../third-party/include/ -cp third-party/include/FrameUtil.h ../../third-party/include/ -cp third-party/runtime-libs/linux/aarch64/libcargs.so ../../third-party/runtime-libs/linux/aarch64/ -cp -a third-party/runtime-libs/linux/aarch64/libserialport.{so,so.*} ../../third-party/runtime-libs/linux/aarch64/ -cp -a third-party/runtime-libs/linux/aarch64/libsockpp.{so,so.*} ../../third-party/runtime-libs/linux/aarch64/ -cp -a build/libzedmd.{so,so.*} ../../third-party/runtime-libs/linux/aarch64/ +cp src/ZeDMD.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/libserialport.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/cargs.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/komihash ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/sockpp ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/FrameUtil.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/runtime-libs/linux/aarch64/libcargs.so ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/linux/aarch64/ +cp -a third-party/runtime-libs/linux/aarch64/libserialport.{so,so.*} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/linux/aarch64/ +cp -a third-party/runtime-libs/linux/aarch64/libsockpp.{so,so.*} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/linux/aarch64/ +cp -a build/libzedmd.{so,so.*} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/linux/aarch64/ cp -r test ../../ cd .. @@ -70,9 +76,7 @@ cd .. # build libserum and copy to external # -curl -sL https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz -o libserum-${LIBSERUM_SHA}.tar.gz -tar xzf libserum-${LIBSERUM_SHA}.tar.gz -mv libserum-${LIBSERUM_SHA} libserum +prepare_dependency_source libserum "${LIBSERUM_SHA}" "https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz" tar LIBSERUM_SOURCE_DIR cd libserum cmake \ -DPLATFORM=linux \ @@ -82,13 +86,13 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp -r third-party/include/lz4 ../../third-party/include/ -cp src/LZ4Stream.h ../../third-party/include/ -cp src/SceneGenerator.h ../../third-party/include/ -cp src/serum.h ../../third-party/include/ -cp src/TimeUtils.h ../../third-party/include/ -cp src/serum-decode.h ../../third-party/include/ -cp -a build/libserum.{so,so.*} ../../third-party/runtime-libs/linux/aarch64/ +cp -r third-party/include/lz4 ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/LZ4Stream.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/SceneGenerator.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/TimeUtils.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum-decode.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -a build/libserum.{so,so.*} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/linux/aarch64/ cd .. # @@ -107,17 +111,15 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/pupdmd.h ../../third-party/include/ -cp -a build/libpupdmd.{so,so.*} ../../third-party/runtime-libs/linux/aarch64/ +cp src/pupdmd.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -a build/libpupdmd.{so,so.*} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/linux/aarch64/ cd .. # # build libvni and copy to external # -curl -sL https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz -o libvni-${LIBVNI_SHA}.tar.gz -tar xzf libvni-${LIBVNI_SHA}.tar.gz -mv libvni-${LIBVNI_SHA} libvni +prepare_dependency_source libvni "${LIBVNI_SHA}" "https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz" tar LIBVNI_SOURCE_DIR cd libvni platforms/linux/aarch64/external.sh cmake \ @@ -128,6 +130,6 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/vni.h ../../third-party/include/ -cp -a build/libvni.{so,so.*} ../../third-party/runtime-libs/linux/aarch64/ +cp src/vni.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -a build/libvni.{so,so.*} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/linux/aarch64/ cd .. diff --git a/platforms/linux/x64/build.sh b/platforms/linux/x64/build.sh new file mode 100755 index 0000000..be4359d --- /dev/null +++ b/platforms/linux/x64/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +./platforms/build-common.sh linux x64 diff --git a/platforms/linux/x64/external.sh b/platforms/linux/x64/external.sh index 2661ed1..6d770bf 100755 --- a/platforms/linux/x64/external.sh +++ b/platforms/linux/x64/external.sh @@ -7,15 +7,23 @@ source ./platforms/config.sh echo "Building libraries..." echo " LIBUSB_SHA: ${LIBUSB_SHA}" echo " LIBZEDMD_SHA: ${LIBZEDMD_SHA}" +print_dependency_source LIBZEDMD "${LIBZEDMD_SHA}" LIBZEDMD_SOURCE_DIR echo " LIBSERUM_SHA: ${LIBSERUM_SHA}" +print_dependency_source LIBSERUM "${LIBSERUM_SHA}" LIBSERUM_SOURCE_DIR echo " LIBPUPDMD_SHA: ${LIBPUPDMD_SHA}" echo " LIBVNI_SHA: ${LIBVNI_SHA}" +print_dependency_source LIBVNI "${LIBVNI_SHA}" LIBVNI_SOURCE_DIR echo "" NUM_PROCS=$(nproc) + rm -rf external -mkdir external +mkdir -p \ + external \ + third-party/include \ + third-party/build-libs/linux/x64 \ + third-party/runtime-libs/linux/x64 cd external # @@ -30,18 +38,16 @@ cd libusb ./configure \ --enable-shared make -j${NUM_PROCS} -mkdir -p ../../third-party/include/libusb-1.0 -cp libusb/libusb.h ../../third-party/include/libusb-1.0 -cp -a libusb/.libs/libusb-1.0.{so,so.*} ../../third-party/runtime-libs/linux/x64/ +mkdir -p ${PROJECT_SOURCE_ROOT}/third-party/include/libusb-1.0 +cp libusb/libusb.h ${PROJECT_SOURCE_ROOT}/third-party/include/libusb-1.0 +cp -a libusb/.libs/libusb-1.0.{so,so.*} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/linux/x64/ cd .. # # build libzedmd and copy to external # -curl -sL https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz -o libzedmd-${LIBZEDMD_SHA}.tar.gz -tar xzf libzedmd-${LIBZEDMD_SHA}.tar.gz -mv libzedmd-${LIBZEDMD_SHA} libzedmd +prepare_dependency_source libzedmd "${LIBZEDMD_SHA}" "https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz" tar LIBZEDMD_SOURCE_DIR cd libzedmd BUILD_TYPE=${BUILD_TYPE} platforms/linux/x64/external.sh cmake \ @@ -52,16 +58,16 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/ZeDMD.h ../../third-party/include/ -cp third-party/include/libserialport.h ../../third-party/include/ -cp third-party/include/cargs.h ../../third-party/include/ -cp -r third-party/include/komihash ../../third-party/include/ -cp -r third-party/include/sockpp ../../third-party/include/ -cp third-party/include/FrameUtil.h ../../third-party/include/ -cp third-party/runtime-libs/linux/x64/libcargs.so ../../third-party/runtime-libs/linux/x64/ -cp -a third-party/runtime-libs/linux/x64/libserialport.{so,so.*} ../../third-party/runtime-libs/linux/x64/ -cp -a third-party/runtime-libs/linux/x64/libsockpp.{so,so.*} ../../third-party/runtime-libs/linux/x64/ -cp -a build/libzedmd.{so,so.*} ../../third-party/runtime-libs/linux/x64/ +cp src/ZeDMD.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/libserialport.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/cargs.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/komihash ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/sockpp ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/FrameUtil.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/runtime-libs/linux/x64/libcargs.so ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/linux/x64/ +cp -a third-party/runtime-libs/linux/x64/libserialport.{so,so.*} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/linux/x64/ +cp -a third-party/runtime-libs/linux/x64/libsockpp.{so,so.*} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/linux/x64/ +cp -a build/libzedmd.{so,so.*} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/linux/x64/ cp -r test ../../ cd .. @@ -69,9 +75,7 @@ cd .. # build libserum and copy to external # -curl -sL https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz -o libserum-${LIBSERUM_SHA}.tar.gz -tar xzf libserum-${LIBSERUM_SHA}.tar.gz -mv libserum-${LIBSERUM_SHA} libserum +prepare_dependency_source libserum "${LIBSERUM_SHA}" "https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz" tar LIBSERUM_SOURCE_DIR cd libserum cmake \ -DPLATFORM=linux \ @@ -81,13 +85,13 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp -r third-party/include/lz4 ../../third-party/include/ -cp src/LZ4Stream.h ../../third-party/include/ -cp src/SceneGenerator.h ../../third-party/include/ -cp src/serum.h ../../third-party/include/ -cp src/TimeUtils.h ../../third-party/include/ -cp src/serum-decode.h ../../third-party/include/ -cp -a build/libserum.{so,so.*} ../../third-party/runtime-libs/linux/x64/ +cp -r third-party/include/lz4 ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/LZ4Stream.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/SceneGenerator.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/TimeUtils.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum-decode.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -a build/libserum.{so,so.*} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/linux/x64/ cd .. # @@ -106,17 +110,15 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/pupdmd.h ../../third-party/include/ -cp -a build/libpupdmd.{so,so.*} ../../third-party/runtime-libs/linux/x64/ +cp src/pupdmd.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -a build/libpupdmd.{so,so.*} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/linux/x64/ cd .. # # build libvni and copy to external # -curl -sL https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz -o libvni-${LIBVNI_SHA}.tar.gz -tar xzf libvni-${LIBVNI_SHA}.tar.gz -mv libvni-${LIBVNI_SHA} libvni +prepare_dependency_source libvni "${LIBVNI_SHA}" "https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz" tar LIBVNI_SOURCE_DIR cd libvni platforms/linux/x64/external.sh cmake \ @@ -127,6 +129,6 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/vni.h ../../third-party/include/ -cp -a build/libvni.{so,so.*} ../../third-party/runtime-libs/linux/x64/ +cp src/vni.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -a build/libvni.{so,so.*} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/linux/x64/ cd .. diff --git a/platforms/macos/arm64/build.sh b/platforms/macos/arm64/build.sh new file mode 100755 index 0000000..9743dfb --- /dev/null +++ b/platforms/macos/arm64/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +./platforms/build-common.sh macos arm64 diff --git a/platforms/macos/arm64/external.sh b/platforms/macos/arm64/external.sh index e50850a..7130bf4 100755 --- a/platforms/macos/arm64/external.sh +++ b/platforms/macos/arm64/external.sh @@ -4,18 +4,27 @@ set -e source ./platforms/config.sh +export MACOSX_DEPLOYMENT_TARGET="${MACOSX_DEPLOYMENT_TARGET:-${PPUC_MACOS_DEPLOYMENT_TARGET:-$(xcrun --sdk macosx --show-sdk-version 2>/dev/null || echo 14.0)}}" echo "Building libraries..." echo " LIBUSB_SHA: ${LIBUSB_SHA}" echo " LIBZEDMD_SHA: ${LIBZEDMD_SHA}" +print_dependency_source LIBZEDMD "${LIBZEDMD_SHA}" LIBZEDMD_SOURCE_DIR echo " LIBSERUM_SHA: ${LIBSERUM_SHA}" +print_dependency_source LIBSERUM "${LIBSERUM_SHA}" LIBSERUM_SOURCE_DIR echo " LIBPUPDMD_SHA: ${LIBPUPDMD_SHA}" echo " LIBVNI_SHA: ${LIBVNI_SHA}" +print_dependency_source LIBVNI "${LIBVNI_SHA}" LIBVNI_SOURCE_DIR echo "" NUM_PROCS=$(sysctl -n hw.ncpu) + rm -rf external -mkdir external +mkdir -p \ + external \ + third-party/include \ + third-party/build-libs/macos/arm64 \ + third-party/runtime-libs/macos/arm64 cd external # @@ -29,21 +38,19 @@ cd libusb ./autogen.sh ./configure \ --host=arm-apple-darwin \ - CFLAGS="-arch arm64" \ - LDFLAGS="-Wl,-install_name,@rpath/libusb-1.0.dylib" + CFLAGS="-arch arm64 -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" \ + LDFLAGS="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET} -Wl,-install_name,@rpath/libusb-1.0.dylib" make -j${NUM_PROCS} -mkdir -p ../../third-party/include/libusb-1.0 -cp libusb/libusb.h ../../third-party/include/libusb-1.0 -cp -a libusb/.libs/libusb*.dylib ../../third-party/runtime-libs/macos/arm64/ +mkdir -p ${PROJECT_SOURCE_ROOT}/third-party/include/libusb-1.0 +cp libusb/libusb.h ${PROJECT_SOURCE_ROOT}/third-party/include/libusb-1.0 +cp -a libusb/.libs/libusb*.dylib ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/macos/arm64/ cd .. # # build libzedmd and copy to external # -curl -sL https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz -o libzedmd-${LIBZEDMD_SHA}.tar.gz -tar xzf libzedmd-${LIBZEDMD_SHA}.tar.gz -mv libzedmd-${LIBZEDMD_SHA} libzedmd +prepare_dependency_source libzedmd "${LIBZEDMD_SHA}" "https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz" tar LIBZEDMD_SOURCE_DIR cd libzedmd BUILD_TYPE=${BUILD_TYPE} platforms/macos/arm64/external.sh cmake \ @@ -53,19 +60,21 @@ cmake \ -DBUILD_STATIC=OFF \ -DCMAKE_C_VISIBILITY_PRESET=default \ -DCMAKE_CXX_VISIBILITY_PRESET=default \ + -DCMAKE_OSX_ARCHITECTURES=arm64 \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/ZeDMD.h ../../third-party/include/ -cp third-party/include/libserialport.h ../../third-party/include/ -cp third-party/include/cargs.h ../../third-party/include/ -cp -r third-party/include/komihash ../../third-party/include/ -cp -r third-party/include/sockpp ../../third-party/include/ -cp third-party/include/FrameUtil.h ../../third-party/include/ -cp third-party/runtime-libs/macos/arm64/libcargs.dylib ../../third-party/runtime-libs/macos/arm64/ -cp -a third-party/runtime-libs/macos/arm64/libserialport.{dylib,*.dylib} ../../third-party/runtime-libs/macos/arm64/ -cp -a third-party/runtime-libs/macos/arm64/libsockpp.{dylib,*.dylib} ../../third-party/runtime-libs/macos/arm64/ -cp -a build/libzedmd.{dylib,*.dylib} ../../third-party/runtime-libs/macos/arm64/ +cp src/ZeDMD.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/libserialport.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/cargs.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/komihash ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/sockpp ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/FrameUtil.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/runtime-libs/macos/arm64/libcargs.dylib ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/macos/arm64/ +cp -a third-party/runtime-libs/macos/arm64/libserialport.{dylib,*.dylib} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/macos/arm64/ +cp -a third-party/runtime-libs/macos/arm64/libsockpp.{dylib,*.dylib} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/macos/arm64/ +cp -a build/libzedmd.{dylib,*.dylib} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/macos/arm64/ cp -r test ../../ cd .. @@ -73,25 +82,25 @@ cd .. # build libserum and copy to external # -curl -sL https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz -o libserum-${LIBSERUM_SHA}.tar.gz -tar xzf libserum-${LIBSERUM_SHA}.tar.gz -mv libserum-${LIBSERUM_SHA} libserum +prepare_dependency_source libserum "${LIBSERUM_SHA}" "https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz" tar LIBSERUM_SOURCE_DIR cd libserum cmake \ -DPLATFORM=macos \ -DARCH=arm64 \ -DBUILD_SHARED=ON \ -DBUILD_STATIC=OFF \ + -DCMAKE_OSX_ARCHITECTURES=arm64 \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp -r third-party/include/lz4 ../../third-party/include/ -cp src/LZ4Stream.h ../../third-party/include/ -cp src/SceneGenerator.h ../../third-party/include/ -cp src/serum.h ../../third-party/include/ -cp src/TimeUtils.h ../../third-party/include/ -cp src/serum-decode.h ../../third-party/include/ -cp -a build/libserum.{dylib,*.dylib} ../../third-party/runtime-libs/macos/arm64/ +cp -r third-party/include/lz4 ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/LZ4Stream.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/SceneGenerator.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/TimeUtils.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum-decode.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -a build/libserum.{dylib,*.dylib} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/macos/arm64/ cd .. # @@ -107,20 +116,20 @@ cmake \ -DARCH=arm64 \ -DBUILD_SHARED=ON \ -DBUILD_STATIC=OFF \ + -DCMAKE_OSX_ARCHITECTURES=arm64 \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/pupdmd.h ../../third-party/include/ -cp -a build/libpupdmd.{dylib,*.dylib} ../../third-party/runtime-libs/macos/arm64/ +cp src/pupdmd.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -a build/libpupdmd.{dylib,*.dylib} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/macos/arm64/ cd .. # # build libvni and copy to external # -curl -sL https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz -o libvni-${LIBVNI_SHA}.tar.gz -tar xzf libvni-${LIBVNI_SHA}.tar.gz -mv libvni-${LIBVNI_SHA} libvni +prepare_dependency_source libvni "${LIBVNI_SHA}" "https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz" tar LIBVNI_SOURCE_DIR cd libvni platforms/macos/arm64/external.sh cmake \ @@ -128,9 +137,11 @@ cmake \ -DARCH=arm64 \ -DBUILD_SHARED=ON \ -DBUILD_STATIC=OFF \ + -DCMAKE_OSX_ARCHITECTURES=arm64 \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/vni.h ../../third-party/include/ -cp -a build/libvni.{dylib,*.dylib} ../../third-party/runtime-libs/macos/arm64/ +cp src/vni.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -a build/libvni.{dylib,*.dylib} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/macos/arm64/ cd .. diff --git a/platforms/macos/x64/build.sh b/platforms/macos/x64/build.sh new file mode 100755 index 0000000..3f0546e --- /dev/null +++ b/platforms/macos/x64/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +./platforms/build-common.sh macos x64 diff --git a/platforms/macos/x64/external.sh b/platforms/macos/x64/external.sh index 980f5e4..e2a2501 100755 --- a/platforms/macos/x64/external.sh +++ b/platforms/macos/x64/external.sh @@ -4,18 +4,27 @@ set -e source ./platforms/config.sh +export MACOSX_DEPLOYMENT_TARGET="${MACOSX_DEPLOYMENT_TARGET:-${PPUC_MACOS_DEPLOYMENT_TARGET:-$(xcrun --sdk macosx --show-sdk-version 2>/dev/null || echo 14.0)}}" echo "Building libraries..." echo " LIBUSB_SHA: ${LIBUSB_SHA}" echo " LIBZEDMD_SHA: ${LIBZEDMD_SHA}" +print_dependency_source LIBZEDMD "${LIBZEDMD_SHA}" LIBZEDMD_SOURCE_DIR echo " LIBSERUM_SHA: ${LIBSERUM_SHA}" +print_dependency_source LIBSERUM "${LIBSERUM_SHA}" LIBSERUM_SOURCE_DIR echo " LIBPUPDMD_SHA: ${LIBPUPDMD_SHA}" echo " LIBVNI_SHA: ${LIBVNI_SHA}" +print_dependency_source LIBVNI "${LIBVNI_SHA}" LIBVNI_SOURCE_DIR echo "" NUM_PROCS=$(sysctl -n hw.ncpu) + rm -rf external -mkdir external +mkdir -p \ + external \ + third-party/include \ + third-party/build-libs/macos/x64 \ + third-party/runtime-libs/macos/x64 cd external # @@ -29,21 +38,19 @@ cd libusb ./autogen.sh ./configure \ --host=x86_64-apple-darwin \ - CFLAGS="-arch x86_64" \ - LDFLAGS="-Wl,-install_name,@rpath/libusb-1.0.dylib" + CFLAGS="-arch x86_64 -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" \ + LDFLAGS="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET} -Wl,-install_name,@rpath/libusb-1.0.dylib" make -j${NUM_PROCS} -mkdir -p ../../third-party/include/libusb-1.0 -cp libusb/libusb.h ../../third-party/include/libusb-1.0 -cp -a libusb/.libs/libusb*.dylib ../../third-party/runtime-libs/macos/x64/ +mkdir -p ${PROJECT_SOURCE_ROOT}/third-party/include/libusb-1.0 +cp libusb/libusb.h ${PROJECT_SOURCE_ROOT}/third-party/include/libusb-1.0 +cp -a libusb/.libs/libusb*.dylib ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/macos/x64/ cd .. # # build libzedmd and copy to external # -curl -sL https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz -o libzedmd-${LIBZEDMD_SHA}.tar.gz -tar xzf libzedmd-${LIBZEDMD_SHA}.tar.gz -mv libzedmd-${LIBZEDMD_SHA} libzedmd +prepare_dependency_source libzedmd "${LIBZEDMD_SHA}" "https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz" tar LIBZEDMD_SOURCE_DIR cd libzedmd BUILD_TYPE=${BUILD_TYPE} platforms/macos/x64/external.sh cmake \ @@ -51,19 +58,21 @@ cmake \ -DARCH=x64 \ -DBUILD_SHARED=ON \ -DBUILD_STATIC=OFF \ + -DCMAKE_OSX_ARCHITECTURES=x86_64 \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/ZeDMD.h ../../third-party/include/ -cp third-party/include/libserialport.h ../../third-party/include/ -cp third-party/include/cargs.h ../../third-party/include/ -cp -r third-party/include/komihash ../../third-party/include/ -cp -r third-party/include/sockpp ../../third-party/include/ -cp third-party/include/FrameUtil.h ../../third-party/include/ -cp third-party/runtime-libs/macos/x64/libcargs.dylib ../../third-party/runtime-libs/macos/x64/ -cp -a third-party/runtime-libs/macos/x64/libserialport.{dylib,*.dylib} ../../third-party/runtime-libs/macos/x64/ -cp -a third-party/runtime-libs/macos/x64/libsockpp.{dylib,*.dylib} ../../third-party/runtime-libs/macos/x64/ -cp -a build/libzedmd.{dylib,*.dylib} ../../third-party/runtime-libs/macos/x64/ +cp src/ZeDMD.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/libserialport.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/cargs.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/komihash ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/sockpp ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/FrameUtil.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/runtime-libs/macos/x64/libcargs.dylib ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/macos/x64/ +cp -a third-party/runtime-libs/macos/x64/libserialport.{dylib,*.dylib} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/macos/x64/ +cp -a third-party/runtime-libs/macos/x64/libsockpp.{dylib,*.dylib} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/macos/x64/ +cp -a build/libzedmd.{dylib,*.dylib} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/macos/x64/ cp -r test ../../ cd .. @@ -71,25 +80,25 @@ cd .. # build libserum and copy to external # -curl -sL https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz -o libserum-${LIBSERUM_SHA}.tar.gz -tar xzf libserum-${LIBSERUM_SHA}.tar.gz -mv libserum-${LIBSERUM_SHA} libserum +prepare_dependency_source libserum "${LIBSERUM_SHA}" "https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz" tar LIBSERUM_SOURCE_DIR cd libserum cmake \ -DPLATFORM=macos \ -DARCH=x64 \ -DBUILD_SHARED=ON \ -DBUILD_STATIC=OFF \ + -DCMAKE_OSX_ARCHITECTURES=x86_64 \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp -r third-party/include/lz4 ../../third-party/include/ -cp src/LZ4Stream.h ../../third-party/include/ -cp src/SceneGenerator.h ../../third-party/include/ -cp src/serum.h ../../third-party/include/ -cp src/TimeUtils.h ../../third-party/include/ -cp src/serum-decode.h ../../third-party/include/ -cp -a build/libserum.{dylib,*.dylib} ../../third-party/runtime-libs/macos/x64/ +cp -r third-party/include/lz4 ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/LZ4Stream.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/SceneGenerator.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/TimeUtils.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum-decode.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -a build/libserum.{dylib,*.dylib} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/macos/x64/ cd .. # @@ -105,20 +114,20 @@ cmake \ -DARCH=x64 \ -DBUILD_SHARED=ON \ -DBUILD_STATIC=OFF \ + -DCMAKE_OSX_ARCHITECTURES=x86_64 \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/pupdmd.h ../../third-party/include/ -cp -a build/libpupdmd.{dylib,*.dylib} ../../third-party/runtime-libs/macos/x64/ +cp src/pupdmd.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -a build/libpupdmd.{dylib,*.dylib} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/macos/x64/ cd .. # # build libvni and copy to external # -curl -sL https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz -o libvni-${LIBVNI_SHA}.tar.gz -tar xzf libvni-${LIBVNI_SHA}.tar.gz -mv libvni-${LIBVNI_SHA} libvni +prepare_dependency_source libvni "${LIBVNI_SHA}" "https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz" tar LIBVNI_SOURCE_DIR cd libvni platforms/macos/x64/external.sh cmake \ @@ -126,9 +135,11 @@ cmake \ -DARCH=x64 \ -DBUILD_SHARED=ON \ -DBUILD_STATIC=OFF \ + -DCMAKE_OSX_ARCHITECTURES=x86_64 \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/vni.h ../../third-party/include/ -cp -a build/libvni.{dylib,*.dylib} ../../third-party/runtime-libs/macos/x64/ +cp src/vni.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -a build/libvni.{dylib,*.dylib} ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/macos/x64/ cd .. diff --git a/platforms/tvos/arm64/build.sh b/platforms/tvos/arm64/build.sh new file mode 100755 index 0000000..24aec36 --- /dev/null +++ b/platforms/tvos/arm64/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +./platforms/build-common.sh tvos arm64 diff --git a/platforms/tvos/arm64/external.sh b/platforms/tvos/arm64/external.sh index 0f6dfeb..09f8d60 100755 --- a/platforms/tvos/arm64/external.sh +++ b/platforms/tvos/arm64/external.sh @@ -6,24 +6,30 @@ source ./platforms/config.sh echo "Building libraries..." echo " LIBZEDMD_SHA: ${LIBZEDMD_SHA}" +print_dependency_source LIBZEDMD "${LIBZEDMD_SHA}" LIBZEDMD_SOURCE_DIR echo " LIBSERUM_SHA: ${LIBSERUM_SHA}" +print_dependency_source LIBSERUM "${LIBSERUM_SHA}" LIBSERUM_SOURCE_DIR echo " LIBPUPDMD_SHA: ${LIBPUPDMD_SHA}" echo " LIBVNI_SHA: ${LIBVNI_SHA}" +print_dependency_source LIBVNI "${LIBVNI_SHA}" LIBVNI_SOURCE_DIR echo "" NUM_PROCS=$(sysctl -n hw.ncpu) + rm -rf external -mkdir external +mkdir -p \ + external \ + third-party/include \ + third-party/build-libs/tvos/arm64 \ + third-party/runtime-libs/tvos/arm64 cd external # # build libzedmd and copy to external # -curl -sL https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz -o libzedmd-${LIBZEDMD_SHA}.tar.gz -tar xzf libzedmd-${LIBZEDMD_SHA}.tar.gz -mv libzedmd-${LIBZEDMD_SHA} libzedmd +prepare_dependency_source libzedmd "${LIBZEDMD_SHA}" "https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz" tar LIBZEDMD_SOURCE_DIR cd libzedmd BUILD_TYPE=${BUILD_TYPE} platforms/tvos/arm64/external.sh cmake \ @@ -34,12 +40,12 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/ZeDMD.h ../../third-party/include/ -cp -r third-party/include/komihash ../../third-party/include/ -cp -r third-party/include/sockpp ../../third-party/include/ -cp third-party/include/FrameUtil.h ../../third-party/include/ -cp -a third-party/build-libs/tvos/arm64/libsockpp.a ../../third-party/build-libs/tvos/arm64/ -cp build/libzedmd.a ../../third-party/build-libs/tvos/arm64/ +cp src/ZeDMD.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/komihash ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/sockpp ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/FrameUtil.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -a third-party/build-libs/tvos/arm64/libsockpp.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/tvos/arm64/ +cp build/libzedmd.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/tvos/arm64/ cp -r test ../../ cd .. @@ -47,9 +53,7 @@ cd .. # build libserum and copy to external # -curl -sL https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz -o libserum-${LIBSERUM_SHA}.tar.gz -tar xzf libserum-${LIBSERUM_SHA}.tar.gz -mv libserum-${LIBSERUM_SHA} libserum +prepare_dependency_source libserum "${LIBSERUM_SHA}" "https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz" tar LIBSERUM_SOURCE_DIR cd libserum cmake \ -DPLATFORM=tvos \ @@ -59,13 +63,13 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp -r third-party/include/lz4 ../../third-party/include/ -cp src/LZ4Stream.h ../../third-party/include/ -cp src/SceneGenerator.h ../../third-party/include/ -cp src/serum.h ../../third-party/include/ -cp src/TimeUtils.h ../../third-party/include/ -cp src/serum-decode.h ../../third-party/include/ -cp build/libserum.a ../../third-party/build-libs/tvos/arm64/ +cp -r third-party/include/lz4 ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/LZ4Stream.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/SceneGenerator.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/TimeUtils.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum-decode.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp build/libserum.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/tvos/arm64/ cd .. # @@ -84,17 +88,15 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/pupdmd.h ../../third-party/include/ -cp build/libpupdmd.a ../../third-party/build-libs/tvos/arm64/ +cp src/pupdmd.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp build/libpupdmd.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/tvos/arm64/ cd .. # # build libvni and copy to external # -curl -sL https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz -o libvni-${LIBVNI_SHA}.tar.gz -tar xzf libvni-${LIBVNI_SHA}.tar.gz -mv libvni-${LIBVNI_SHA} libvni +prepare_dependency_source libvni "${LIBVNI_SHA}" "https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz" tar LIBVNI_SOURCE_DIR cd libvni platforms/tvos/arm64/external.sh cmake \ @@ -105,6 +107,6 @@ cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/vni.h ../../third-party/include/ -cp build/libvni.a ../../third-party/build-libs/tvos/arm64/ +cp src/vni.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp build/libvni.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/tvos/arm64/ cd .. diff --git a/platforms/win-mingw/x64/build.sh b/platforms/win-mingw/x64/build.sh new file mode 100755 index 0000000..195abc5 --- /dev/null +++ b/platforms/win-mingw/x64/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +./platforms/build-common.sh win-mingw x64 diff --git a/platforms/win-mingw/x64/external.sh b/platforms/win-mingw/x64/external.sh index 449db16..89ab0c8 100755 --- a/platforms/win-mingw/x64/external.sh +++ b/platforms/win-mingw/x64/external.sh @@ -7,15 +7,23 @@ source ./platforms/config.sh echo "Building libraries..." echo " LIBUSB_SHA: ${LIBUSB_SHA}" echo " LIBZEDMD_SHA: ${LIBZEDMD_SHA}" +print_dependency_source LIBZEDMD "${LIBZEDMD_SHA}" LIBZEDMD_SOURCE_DIR echo " LIBSERUM_SHA: ${LIBSERUM_SHA}" +print_dependency_source LIBSERUM "${LIBSERUM_SHA}" LIBSERUM_SOURCE_DIR echo " LIBPUPDMD_SHA: ${LIBPUPDMD_SHA}" echo " LIBVNI_SHA: ${LIBVNI_SHA}" +print_dependency_source LIBVNI "${LIBVNI_SHA}" LIBVNI_SOURCE_DIR echo "" NUM_PROCS=$(nproc) + rm -rf external -mkdir external +mkdir -p \ + external \ + third-party/include \ + third-party/build-libs/win-mingw/x64 \ + third-party/runtime-libs/win-mingw/x64 cd external # @@ -36,19 +44,17 @@ sed -i.bak 's/libusb-1\.0/libusb64-1.0/g' libusb/libusb64-1.0.rc ./configure \ --enable-shared make -j${NUM_PROCS} -mkdir -p ../../third-party/include/libusb-1.0 -cp libusb/libusb.h ../../third-party/include/libusb-1.0 -cp libusb/.libs/libusb64-1.0.dll.a ../../third-party/build-libs/win-mingw/x64/ -cp libusb/.libs/libusb64-1.0.dll ../../third-party/runtime-libs/win-mingw/x64/ +mkdir -p ${PROJECT_SOURCE_ROOT}/third-party/include/libusb-1.0 +cp libusb/libusb.h ${PROJECT_SOURCE_ROOT}/third-party/include/libusb-1.0 +cp libusb/.libs/libusb64-1.0.dll.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win-mingw/x64/ +cp libusb/.libs/libusb64-1.0.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win-mingw/x64/ cd .. # # build libzedmd and copy to external # -curl -sL https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz -o libzedmd-${LIBZEDMD_SHA}.tar.gz -tar xzf libzedmd-${LIBZEDMD_SHA}.tar.gz -mv libzedmd-${LIBZEDMD_SHA} libzedmd +prepare_dependency_source libzedmd "${LIBZEDMD_SHA}" "https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz" tar LIBZEDMD_SOURCE_DIR cd libzedmd BUILD_TYPE=${BUILD_TYPE} platforms/win-mingw/x64/external.sh cmake \ @@ -59,20 +65,20 @@ cmake \ -DBUILD_STATIC=OFF \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/ZeDMD.h ../../third-party/include/ -cp third-party/include/cargs.h ../../third-party/include/ -cp -r third-party/include/komihash ../../third-party/include/ -cp -r third-party/include/sockpp ../../third-party/include/ -cp third-party/include/FrameUtil.h ../../third-party/include/ -cp third-party/include/libserialport.h ../../third-party/include/ -cp third-party/build-libs/win-mingw/x64/libcargs64.dll.a ../../third-party/build-libs/win-mingw/x64/ -cp third-party/runtime-libs/win-mingw/x64/libcargs64.dll ../../third-party/runtime-libs/win-mingw/x64/ -cp third-party/build-libs/win-mingw/x64/libserialport64.dll.a ../../third-party/build-libs/win-mingw/x64/ -cp third-party/runtime-libs/win-mingw/x64/libserialport64-0.dll ../../third-party/runtime-libs/win-mingw/x64/ -cp third-party/build-libs/win-mingw/x64/libsockpp64.dll.a ../../third-party/build-libs/win-mingw/x64/ -cp third-party/runtime-libs/win-mingw/x64/libsockpp64.dll ../../third-party/runtime-libs/win-mingw/x64/ -cp build/zedmd64.dll.a ../../third-party/build-libs/win-mingw/x64/ -cp build/zedmd64.dll ../../third-party/runtime-libs/win-mingw/x64/ +cp src/ZeDMD.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/cargs.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/komihash ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/sockpp ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/FrameUtil.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/libserialport.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/build-libs/win-mingw/x64/libcargs64.dll.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win-mingw/x64/ +cp third-party/runtime-libs/win-mingw/x64/libcargs64.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win-mingw/x64/ +cp third-party/build-libs/win-mingw/x64/libserialport64.dll.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win-mingw/x64/ +cp third-party/runtime-libs/win-mingw/x64/libserialport64-0.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win-mingw/x64/ +cp third-party/build-libs/win-mingw/x64/libsockpp64.dll.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win-mingw/x64/ +cp third-party/runtime-libs/win-mingw/x64/libsockpp64.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win-mingw/x64/ +cp build/zedmd64.dll.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win-mingw/x64/ +cp build/zedmd64.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win-mingw/x64/ cp -r test ../../ cd .. @@ -80,9 +86,7 @@ cd .. # build libserum and copy to external # -curl -sL https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz -o libserum-${LIBSERUM_SHA}.tar.gz -tar xzf libserum-${LIBSERUM_SHA}.tar.gz -mv libserum-${LIBSERUM_SHA} libserum +prepare_dependency_source libserum "${LIBSERUM_SHA}" "https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz" tar LIBSERUM_SOURCE_DIR cd libserum cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ @@ -92,14 +96,14 @@ cmake \ -DBUILD_STATIC=OFF \ -B build cmake --build build -- -j${NUM_PROCS} -cp -r third-party/include/lz4 ../../third-party/include/ -cp src/LZ4Stream.h ../../third-party/include/ -cp src/SceneGenerator.h ../../third-party/include/ -cp src/serum.h ../../third-party/include/ -cp src/TimeUtils.h ../../third-party/include/ -cp src/serum-decode.h ../../third-party/include/ -cp build/serum64.dll.a ../../third-party/build-libs/win-mingw/x64/ -cp build/serum64.dll ../../third-party/runtime-libs/win-mingw/x64/ +cp -r third-party/include/lz4 ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/LZ4Stream.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/SceneGenerator.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/TimeUtils.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum-decode.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp build/serum64.dll.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win-mingw/x64/ +cp build/serum64.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win-mingw/x64/ cd .. # @@ -118,18 +122,16 @@ cmake \ -DBUILD_STATIC=OFF \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/pupdmd.h ../../third-party/include/ -cp build/pupdmd64.dll.a ../../third-party/build-libs/win-mingw/x64/ -cp build/pupdmd64.dll ../../third-party/runtime-libs/win-mingw/x64/ +cp src/pupdmd.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp build/pupdmd64.dll.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win-mingw/x64/ +cp build/pupdmd64.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win-mingw/x64/ cd .. # # build libvni and copy to external # -curl -sL https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz -o libvni-${LIBVNI_SHA}.tar.gz -tar xzf libvni-${LIBVNI_SHA}.tar.gz -mv libvni-${LIBVNI_SHA} libvni +prepare_dependency_source libvni "${LIBVNI_SHA}" "https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz" tar LIBVNI_SOURCE_DIR cd libvni platforms/win-mingw/x64/external.sh cmake \ @@ -140,9 +142,9 @@ cmake \ -DBUILD_STATIC=OFF \ -B build cmake --build build -- -j${NUM_PROCS} -cp src/vni.h ../../third-party/include/ -cp build/vni64.dll.a ../../third-party/build-libs/win-mingw/x64/ -cp build/vni64.dll ../../third-party/runtime-libs/win-mingw/x64/ +cp src/vni.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp build/vni64.dll.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win-mingw/x64/ +cp build/vni64.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win-mingw/x64/ cd .. # @@ -151,6 +153,6 @@ cd .. UCRT64_BIN="${MINGW_PREFIX}/bin" -cp "${UCRT64_BIN}/libgcc_s_seh-1.dll" ../third-party/runtime-libs/win-mingw/x64/ -cp "${UCRT64_BIN}/libstdc++-6.dll" ../third-party/runtime-libs/win-mingw/x64/ -cp "${UCRT64_BIN}/libwinpthread-1.dll" ../third-party/runtime-libs/win-mingw/x64/ +cp "${UCRT64_BIN}/libgcc_s_seh-1.dll" ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win-mingw/x64/ +cp "${UCRT64_BIN}/libstdc++-6.dll" ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win-mingw/x64/ +cp "${UCRT64_BIN}/libwinpthread-1.dll" ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win-mingw/x64/ diff --git a/platforms/win/x64/build.sh b/platforms/win/x64/build.sh new file mode 100755 index 0000000..a259ccd --- /dev/null +++ b/platforms/win/x64/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +./platforms/build-common.sh win x64 diff --git a/platforms/win/x64/external.sh b/platforms/win/x64/external.sh index a206e7e..af124ba 100755 --- a/platforms/win/x64/external.sh +++ b/platforms/win/x64/external.sh @@ -14,13 +14,21 @@ source ./platforms/config.sh echo "Building libraries..." echo " LIBUSB_SHA: ${LIBUSB_SHA}" echo " LIBZEDMD_SHA: ${LIBZEDMD_SHA}" +print_dependency_source LIBZEDMD "${LIBZEDMD_SHA}" LIBZEDMD_SOURCE_DIR echo " LIBSERUM_SHA: ${LIBSERUM_SHA}" +print_dependency_source LIBSERUM "${LIBSERUM_SHA}" LIBSERUM_SOURCE_DIR echo " LIBPUPDMD_SHA: ${LIBPUPDMD_SHA}" echo " LIBVNI_SHA: ${LIBVNI_SHA}" +print_dependency_source LIBVNI "${LIBVNI_SHA}" LIBVNI_SOURCE_DIR echo "" + rm -rf external -mkdir external +mkdir -p \ + external \ + third-party/include \ + third-party/build-libs/win/x64 \ + third-party/runtime-libs/win/x64 cd external # @@ -44,19 +52,17 @@ MSYSTEM=UCRT64 "${MSYS2_PATH}/usr/bin/bash.exe" -l -c " ./configure --enable-shared && make -j\$(nproc) " -mkdir -p ../../third-party/include/libusb-1.0 -cp libusb/libusb.h ../../third-party/include/libusb-1.0 -cp libusb/.libs/libusb64-1.0.dll.a ../../third-party/build-libs/win/x64/libusb64-1.0.lib -cp libusb/.libs/libusb64-1.0.dll ../../third-party/runtime-libs/win/x64/ +mkdir -p ${PROJECT_SOURCE_ROOT}/third-party/include/libusb-1.0 +cp libusb/libusb.h ${PROJECT_SOURCE_ROOT}/third-party/include/libusb-1.0 +cp libusb/.libs/libusb64-1.0.dll.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win/x64/libusb64-1.0.lib +cp libusb/.libs/libusb64-1.0.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x64/ cd .. # # build libzedmd and copy to external # -curl -sL https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz -o libzedmd-${LIBZEDMD_SHA}.tar.gz -tar xzf libzedmd-${LIBZEDMD_SHA}.tar.gz -mv libzedmd-${LIBZEDMD_SHA} libzedmd +prepare_dependency_source libzedmd "${LIBZEDMD_SHA}" "https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz" tar LIBZEDMD_SOURCE_DIR cd libzedmd BUILD_TYPE=${BUILD_TYPE} platforms/win/x64/external.sh cmake \ @@ -67,23 +73,23 @@ cmake \ -DBUILD_STATIC=OFF \ -B build cmake --build build --config ${BUILD_TYPE} -cp src/ZeDMD.h ../../third-party/include/ -cp third-party/include/cargs.h ../../third-party/include/ -cp -r third-party/include/komihash ../../third-party/include/ -cp -r third-party/include/sockpp ../../third-party/include/ -cp third-party/include/FrameUtil.h ../../third-party/include/ -cp third-party/include/libserialport.h ../../third-party/include/ -cp third-party/build-libs/win/x64/cargs64.lib ../../third-party/build-libs/win/x64/ -cp third-party/runtime-libs/win/x64/cargs64.dll ../../third-party/runtime-libs/win/x64/ -cp third-party/build-libs/win/x64/libserialport64.lib ../../third-party/build-libs/win/x64/ -cp third-party/runtime-libs/win/x64/libserialport64-0.dll ../../third-party/runtime-libs/win/x64/ -cp third-party/build-libs/win/x64/sockpp64.lib ../../third-party/build-libs/win/x64/ -cp third-party/runtime-libs/win/x64/sockpp64.dll ../../third-party/runtime-libs/win/x64/ -cp third-party/runtime-libs/win/x64/libgcc_s_seh-1.dll ../../third-party/runtime-libs/win/x64/ -cp third-party/runtime-libs/win/x64/libstdc++-6.dll ../../third-party/runtime-libs/win/x64/ -cp third-party/runtime-libs/win/x64/libwinpthread-1.dll ../../third-party/runtime-libs/win/x64/ -cp build/${BUILD_TYPE}/zedmd64.lib ../../third-party/build-libs/win/x64/ -cp build/${BUILD_TYPE}/zedmd64.dll ../../third-party/runtime-libs/win/x64/ +cp src/ZeDMD.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/cargs.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/komihash ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/sockpp ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/FrameUtil.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/libserialport.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/build-libs/win/x64/cargs64.lib ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win/x64/ +cp third-party/runtime-libs/win/x64/cargs64.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x64/ +cp third-party/build-libs/win/x64/libserialport64.lib ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win/x64/ +cp third-party/runtime-libs/win/x64/libserialport64-0.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x64/ +cp third-party/build-libs/win/x64/sockpp64.lib ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win/x64/ +cp third-party/runtime-libs/win/x64/sockpp64.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x64/ +cp third-party/runtime-libs/win/x64/libgcc_s_seh-1.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x64/ +cp third-party/runtime-libs/win/x64/libstdc++-6.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x64/ +cp third-party/runtime-libs/win/x64/libwinpthread-1.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x64/ +cp build/${BUILD_TYPE}/zedmd64.lib ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win/x64/ +cp build/${BUILD_TYPE}/zedmd64.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x64/ cp -r test ../../ cd .. @@ -91,9 +97,7 @@ cd .. # build libserum and copy to external # -curl -sL https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz -o libserum-${LIBSERUM_SHA}.tar.gz -tar xzf libserum-${LIBSERUM_SHA}.tar.gz -mv libserum-${LIBSERUM_SHA} libserum +prepare_dependency_source libserum "${LIBSERUM_SHA}" "https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz" tar LIBSERUM_SOURCE_DIR cd libserum cmake \ -G "Visual Studio 18 2026" \ @@ -103,14 +107,14 @@ cmake \ -DBUILD_STATIC=OFF \ -B build cmake --build build --config ${BUILD_TYPE} -cp -r third-party/include/lz4 ../../third-party/include/ -cp src/LZ4Stream.h ../../third-party/include/ -cp src/SceneGenerator.h ../../third-party/include/ -cp src/serum.h ../../third-party/include/ -cp src/TimeUtils.h ../../third-party/include/ -cp src/serum-decode.h ../../third-party/include/ -cp build/${BUILD_TYPE}/serum64.lib ../../third-party/build-libs/win/x64/ -cp build/${BUILD_TYPE}/serum64.dll ../../third-party/runtime-libs/win/x64/ +cp -r third-party/include/lz4 ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/LZ4Stream.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/SceneGenerator.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/TimeUtils.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum-decode.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp build/${BUILD_TYPE}/serum64.lib ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win/x64/ +cp build/${BUILD_TYPE}/serum64.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x64/ cd .. # @@ -129,18 +133,16 @@ cmake \ -DBUILD_STATIC=OFF \ -B build cmake --build build --config ${BUILD_TYPE} -cp src/pupdmd.h ../../third-party/include/ -cp build/${BUILD_TYPE}/pupdmd64.lib ../../third-party/build-libs/win/x64/ -cp build/${BUILD_TYPE}/pupdmd64.dll ../../third-party/runtime-libs/win/x64/ +cp src/pupdmd.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp build/${BUILD_TYPE}/pupdmd64.lib ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win/x64/ +cp build/${BUILD_TYPE}/pupdmd64.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x64/ cd .. # # build libvni and copy to external # -curl -sL https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz -o libvni-${LIBVNI_SHA}.tar.gz -tar xzf libvni-${LIBVNI_SHA}.tar.gz -mv libvni-${LIBVNI_SHA} libvni +prepare_dependency_source libvni "${LIBVNI_SHA}" "https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz" tar LIBVNI_SOURCE_DIR cd libvni platforms/win/x64/external.sh cmake \ @@ -151,7 +153,7 @@ cmake \ -DBUILD_STATIC=OFF \ -B build cmake --build build --config ${BUILD_TYPE} -cp src/vni.h ../../third-party/include/ -cp build/${BUILD_TYPE}/vni64.lib ../../third-party/build-libs/win/x64/ -cp build/${BUILD_TYPE}/vni64.dll ../../third-party/runtime-libs/win/x64/ +cp src/vni.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp build/${BUILD_TYPE}/vni64.lib ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win/x64/ +cp build/${BUILD_TYPE}/vni64.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x64/ cd .. diff --git a/platforms/win/x86/build.sh b/platforms/win/x86/build.sh new file mode 100755 index 0000000..46d0bdd --- /dev/null +++ b/platforms/win/x86/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +./platforms/build-common.sh win x86 diff --git a/platforms/win/x86/external.sh b/platforms/win/x86/external.sh index 593addb..e6c33d6 100755 --- a/platforms/win/x86/external.sh +++ b/platforms/win/x86/external.sh @@ -14,13 +14,21 @@ source ./platforms/config.sh echo "Building libraries..." echo " LIBUSB_SHA: ${LIBUSB_SHA}" echo " LIBZEDMD_SHA: ${LIBZEDMD_SHA}" +print_dependency_source LIBZEDMD "${LIBZEDMD_SHA}" LIBZEDMD_SOURCE_DIR echo " LIBSERUM_SHA: ${LIBSERUM_SHA}" +print_dependency_source LIBSERUM "${LIBSERUM_SHA}" LIBSERUM_SOURCE_DIR echo " LIBPUPDMD_SHA: ${LIBPUPDMD_SHA}" echo " LIBVNI_SHA: ${LIBVNI_SHA}" +print_dependency_source LIBVNI "${LIBVNI_SHA}" LIBVNI_SOURCE_DIR echo "" + rm -rf external -mkdir external +mkdir -p \ + external \ + third-party/include \ + third-party/build-libs/win/x86 \ + third-party/runtime-libs/win/x86 cd external # @@ -38,19 +46,17 @@ MSYSTEM=MINGW32 "${MSYS2_PATH}/usr/bin/bash.exe" -l -c " ./configure --enable-shared && make -j\$(nproc) " -mkdir -p ../../third-party/include/libusb-1.0 -cp libusb/libusb.h ../../third-party/include/libusb-1.0 -cp libusb/.libs/libusb-1.0.dll.a ../../third-party/build-libs/win/x86/libusb-1.0.lib -cp libusb/.libs/libusb-1.0.dll ../../third-party/runtime-libs/win/x86/ +mkdir -p ${PROJECT_SOURCE_ROOT}/third-party/include/libusb-1.0 +cp libusb/libusb.h ${PROJECT_SOURCE_ROOT}/third-party/include/libusb-1.0 +cp libusb/.libs/libusb-1.0.dll.a ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win/x86/libusb-1.0.lib +cp libusb/.libs/libusb-1.0.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x86/ cd .. # # build libzedmd and copy to external # -curl -sL https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz -o libzedmd-${LIBZEDMD_SHA}.tar.gz -tar xzf libzedmd-${LIBZEDMD_SHA}.tar.gz -mv libzedmd-${LIBZEDMD_SHA} libzedmd +prepare_dependency_source libzedmd "${LIBZEDMD_SHA}" "https://github.com/PPUC/libzedmd/archive/${LIBZEDMD_SHA}.tar.gz" tar LIBZEDMD_SOURCE_DIR cd libzedmd BUILD_TYPE=${BUILD_TYPE} platforms/win/x86/external.sh cmake \ @@ -62,23 +68,23 @@ cmake \ -DBUILD_STATIC=OFF \ -B build cmake --build build --config ${BUILD_TYPE} -cp src/ZeDMD.h ../../third-party/include/ -cp third-party/include/libserialport.h ../../third-party/include/ -cp third-party/include/cargs.h ../../third-party/include/ -cp -r third-party/include/komihash ../../third-party/include/ -cp -r third-party/include/sockpp ../../third-party/include/ -cp third-party/include/FrameUtil.h ../../third-party/include/ -cp third-party/build-libs/win/x86/cargs.lib ../../third-party/build-libs/win/x86/ -cp third-party/runtime-libs/win/x86/cargs.dll ../../third-party/runtime-libs/win/x86/ -cp third-party/build-libs/win/x86/libserialport.lib ../../third-party/build-libs/win/x86/ -cp third-party/runtime-libs/win/x86/libserialport-0.dll ../../third-party/runtime-libs/win/x86/ -cp third-party/build-libs/win/x86/sockpp.lib ../../third-party/build-libs/win/x86/ -cp third-party/runtime-libs/win/x86/sockpp.dll ../../third-party/runtime-libs/win/x86/ -cp third-party/runtime-libs/win/x86/libgcc_s_dw2-1.dll ../../third-party/runtime-libs/win/x86/ -cp third-party/runtime-libs/win/x86/libstdc++-6.dll ../../third-party/runtime-libs/win/x86/ -cp third-party/runtime-libs/win/x86/libwinpthread-1.dll ../../third-party/runtime-libs/win/x86/ -cp build/${BUILD_TYPE}/zedmd.lib ../../third-party/build-libs/win/x86/ -cp build/${BUILD_TYPE}/zedmd.dll ../../third-party/runtime-libs/win/x86/ +cp src/ZeDMD.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/libserialport.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/cargs.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/komihash ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp -r third-party/include/sockpp ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/include/FrameUtil.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp third-party/build-libs/win/x86/cargs.lib ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win/x86/ +cp third-party/runtime-libs/win/x86/cargs.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x86/ +cp third-party/build-libs/win/x86/libserialport.lib ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win/x86/ +cp third-party/runtime-libs/win/x86/libserialport-0.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x86/ +cp third-party/build-libs/win/x86/sockpp.lib ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win/x86/ +cp third-party/runtime-libs/win/x86/sockpp.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x86/ +cp third-party/runtime-libs/win/x86/libgcc_s_dw2-1.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x86/ +cp third-party/runtime-libs/win/x86/libstdc++-6.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x86/ +cp third-party/runtime-libs/win/x86/libwinpthread-1.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x86/ +cp build/${BUILD_TYPE}/zedmd.lib ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win/x86/ +cp build/${BUILD_TYPE}/zedmd.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x86/ cp -r test ../../ cd .. @@ -86,9 +92,7 @@ cd .. # build libserum and copy to external # -curl -sL https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz -o libserum-${LIBSERUM_SHA}.tar.gz -tar xzf libserum-${LIBSERUM_SHA}.tar.gz -mv libserum-${LIBSERUM_SHA} libserum +prepare_dependency_source libserum "${LIBSERUM_SHA}" "https://github.com/PPUC/libserum/archive/${LIBSERUM_SHA}.tar.gz" tar LIBSERUM_SOURCE_DIR cd libserum cmake \ -G "Visual Studio 18 2026" \ @@ -99,14 +103,14 @@ cmake \ -DBUILD_STATIC=OFF \ -B build cmake --build build --config ${BUILD_TYPE} -cp -r third-party/include/lz4 ../../third-party/include/ -cp src/LZ4Stream.h ../../third-party/include/ -cp src/SceneGenerator.h ../../third-party/include/ -cp src/serum.h ../../third-party/include/ -cp src/TimeUtils.h ../../third-party/include/ -cp src/serum-decode.h ../../third-party/include/ -cp build/${BUILD_TYPE}/serum.lib ../../third-party/build-libs/win/x86/ -cp build/${BUILD_TYPE}/serum.dll ../../third-party/runtime-libs/win/x86/ +cp -r third-party/include/lz4 ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/LZ4Stream.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/SceneGenerator.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/TimeUtils.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp src/serum-decode.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp build/${BUILD_TYPE}/serum.lib ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win/x86/ +cp build/${BUILD_TYPE}/serum.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x86/ cd .. # @@ -126,18 +130,16 @@ cmake \ -DBUILD_STATIC=OFF \ -B build cmake --build build --config ${BUILD_TYPE} -cp src/pupdmd.h ../../third-party/include/ -cp build/${BUILD_TYPE}/pupdmd.lib ../../third-party/build-libs/win/x86/ -cp build/${BUILD_TYPE}/pupdmd.dll ../../third-party/runtime-libs/win/x86/ +cp src/pupdmd.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp build/${BUILD_TYPE}/pupdmd.lib ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win/x86/ +cp build/${BUILD_TYPE}/pupdmd.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x86/ cd .. # # build libvni and copy to external # -curl -sL https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz -o libvni-${LIBVNI_SHA}.tar.gz -tar xzf libvni-${LIBVNI_SHA}.tar.gz -mv libvni-${LIBVNI_SHA} libvni +prepare_dependency_source libvni "${LIBVNI_SHA}" "https://github.com/PPUC/libvni/archive/${LIBVNI_SHA}.tar.gz" tar LIBVNI_SOURCE_DIR cd libvni platforms/win/x86/external.sh cmake \ @@ -149,7 +151,7 @@ cmake \ -DBUILD_STATIC=OFF \ -B build cmake --build build --config ${BUILD_TYPE} -cp src/vni.h ../../third-party/include/ -cp build/${BUILD_TYPE}/vni.lib ../../third-party/build-libs/win/x86/ -cp build/${BUILD_TYPE}/vni.dll ../../third-party/runtime-libs/win/x86/ +cp src/vni.h ${PROJECT_SOURCE_ROOT}/third-party/include/ +cp build/${BUILD_TYPE}/vni.lib ${PROJECT_SOURCE_ROOT}/third-party/build-libs/win/x86/ +cp build/${BUILD_TYPE}/vni.dll ${PROJECT_SOURCE_ROOT}/third-party/runtime-libs/win/x86/ cd .. diff --git a/src/DMD.cpp b/src/DMD.cpp index 694676b..524061d 100644 --- a/src/DMD.cpp +++ b/src/DMD.cpp @@ -325,7 +325,11 @@ DMD::DMD() m_pDmdFrameThread = new std::thread(&DMD::DmdFrameThread, this); m_pPupDMDThread = new std::thread(&DMD::PupDMDThread, this); m_pSerumThread = new std::thread(&DMD::SerumThread, this); +#ifdef DMDUTIL_ENABLE_VNI m_pVniThread = new std::thread(&DMD::VniThread, this); +#else + m_pVniThread = nullptr; +#endif m_pDMDServerConnector = nullptr; }