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) SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
OUTPUT_DIR="$SCRIPT_DIR/output" OUTPUT_DIR="$SCRIPT_DIR/output"
BUILD_DIR="$SCRIPT_DIR/build"
PROJECT_NAME="dehydrate" PROJECT_NAME="dehydrate"
BUILD_DIR="$SCRIPT_DIR/build"
rm -rf "$BUILD_DIR" rm -rf "$BUILD_DIR"
mkdir -p "$BUILD_DIR" "$OUTPUT_DIR" mkdir -p "$BUILD_DIR" "$OUTPUT_DIR"
cd "$BUILD_DIR" cd "$BUILD_DIR"
cmake .. cmake ..
make -j$(nproc) 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" 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)" echo "Built $OUTPUT_DIR/$PROJECT_NAME.amd64 (x86_64, static if CMake is configured for musl/static)"
fi
cd "$SCRIPT_DIR" cd "$SCRIPT_DIR"
# Build for arm64 (musl static) if cross-compiler available # Build for arm64 (musl static) if cross-compiler available
if command -v aarch64-linux-musl-g++ &>/dev/null; then if command -v aarch64-linux-musl-g++ &>/dev/null; then
echo "Building for arm64 (musl static)..." echo "Building for arm64 (musl static) with CMake..."
aarch64-linux-musl-g++ -O2 -static -o "$OUTPUT_DIR/$PROJECT_NAME.arm64" src/*.cpp BUILD_DIR_ARM64="$SCRIPT_DIR/build_arm64"
echo "Built $PROJECT_NAME.arm64 (arm64, static)" 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 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 // Embed file data
cpp << "static const unsigned char filedata[] = {"; cpp << "static const unsigned char filedata[] = {";
for (size_t i = 0; i < filedata.size(); ++i) { 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]; cpp << "0x" << std::hex << std::setw(2) << std::setfill('0') << (int)(unsigned char)filedata[i];
if (i + 1 != filedata.size()) cpp << ", "; 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); std::string var = sanitize(rel);
cpp << "static const unsigned char data_" << var << "[] = {"; cpp << "static const unsigned char data_" << var << "[] = {";
for (size_t i = 0; i < filedata.size(); ++i) { 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]; cpp << "0x" << std::hex << std::setw(2) << std::setfill('0') << (int)(unsigned char)filedata[i];
if (i + 1 != filedata.size()) cpp << ", "; if (i + 1 != filedata.size()) cpp << ", ";
} }