This commit is contained in:
Your Name 2025-05-17 09:01:33 +12:00
parent 8fe443d929
commit 5746dcf1fd
3 changed files with 17 additions and 14 deletions

View File

@ -3,27 +3,30 @@ set -e
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
OUTPUT_DIR="$SCRIPT_DIR/output"
BUILD_DIR="$SCRIPT_DIR/build"
PROJECT_NAME="dehydrate"
BUILD_DIR="$SCRIPT_DIR/build"
rm -rf "$BUILD_DIR"
mkdir -p "$BUILD_DIR" "$OUTPUT_DIR"
cd "$BUILD_DIR"
cmake ..
make -j$(nproc)
# Copy the binary to output directory with .amd64 suffix if x86_64
if [[ $(uname -m) == "x86_64" ]]; then
cp "$PROJECT_NAME" "$OUTPUT_DIR/$PROJECT_NAME.amd64"
echo "Built $OUTPUT_DIR/$PROJECT_NAME.amd64 (x86_64, static if CMake is configured for musl/static)"
fi
cp "$PROJECT_NAME" "$OUTPUT_DIR/$PROJECT_NAME.amd64"
echo "Built $OUTPUT_DIR/$PROJECT_NAME.amd64 (x86_64, static if CMake is configured for musl/static)"
cd "$SCRIPT_DIR"
# Build for arm64 (musl static) if cross-compiler available
if command -v aarch64-linux-musl-g++ &>/dev/null; then
echo "Building for arm64 (musl static)..."
aarch64-linux-musl-g++ -O2 -static -o "$OUTPUT_DIR/$PROJECT_NAME.arm64" src/*.cpp
echo "Built $PROJECT_NAME.arm64 (arm64, static)"
echo "Building for arm64 (musl static) with CMake..."
BUILD_DIR_ARM64="$SCRIPT_DIR/build_arm64"
rm -rf "$BUILD_DIR_ARM64"
mkdir -p "$BUILD_DIR_ARM64"
cd "$BUILD_DIR_ARM64"
cmake -DCMAKE_CXX_COMPILER=aarch64-linux-musl-g++ ..
make -j$(nproc)
cp "$PROJECT_NAME" "$OUTPUT_DIR/$PROJECT_NAME.arm64"
echo "Built $OUTPUT_DIR/$PROJECT_NAME.arm64 (arm64, static)"
cd "$SCRIPT_DIR"
fi

BIN
build_arm64/dehydrate Executable file

Binary file not shown.

View File

@ -52,7 +52,7 @@ static uint64_t fnv1a_64(const void* data, size_t len) {
// Embed file data
cpp << "static const unsigned char filedata[] = {";
for (size_t i = 0; i < filedata.size(); ++i) {
if (i % 16 == 0) cpp << "\\n ";
if (i % 16 == 0) cpp << "\n ";
cpp << "0x" << std::hex << std::setw(2) << std::setfill('0') << (int)(unsigned char)filedata[i];
if (i + 1 != filedata.size()) cpp << ", ";
}
@ -139,7 +139,7 @@ void generate_folder_code(const std::string& source, const std::string& destfold
std::string var = sanitize(rel);
cpp << "static const unsigned char data_" << var << "[] = {";
for (size_t i = 0; i < filedata.size(); ++i) {
if (i % 16 == 0) cpp << "\\n ";
if (i % 16 == 0) cpp << "\n ";
cpp << "0x" << std::hex << std::setw(2) << std::setfill('0') << (int)(unsigned char)filedata[i];
if (i + 1 != filedata.size()) cpp << ", ";
}