Fully statically linked for both x64 and arm64. Updated build.sh to always compile both versions

This commit is contained in:
2025-08-11 06:54:50 -04:00
parent ae4aa7cf80
commit d257ae49f1
12 changed files with 1526 additions and 59 deletions

117
build.sh
View File

@@ -146,23 +146,27 @@ show_usage() {
echo "NOSTR Core Library Build Script"
echo "==============================="
echo ""
echo "Usage: $0 [target]"
echo "Usage: $0 [target] [architecture]"
echo ""
echo "Available targets:"
echo " clean - Clean all build artifacts"
echo " lib - Build static library (default)"
echo " shared - Build shared library"
echo " all - Build both static and shared libraries"
echo " lib - Build static libraries for both x64 and ARM64 (default)"
echo " x64 - Build x64 static library only"
echo " arm64 - Build ARM64 static library only"
echo " all - Build both architectures and examples"
echo " examples - Build example programs"
echo " test - Run tests"
echo " install - Install library to system"
echo " uninstall - Remove library from system"
echo " help - Show this help message"
echo ""
echo "Library outputs:"
echo " libnostr_core.a - Static library"
echo " libnostr_core.so - Shared library"
echo "Library outputs (both self-contained with secp256k1):"
echo " libnostr_core.a - x86_64 static library"
echo " libnostr_core_arm64.a - ARM64 static library"
echo " examples/* - Example programs"
echo ""
echo "Both libraries include secp256k1 objects internally."
echo "Users only need to link with the library + -lm."
}
# Parse command line arguments
@@ -177,15 +181,63 @@ case "$TARGET" in
lib|library)
increment_version
print_status "Building static library..."
print_status "Building both x64 and ARM64 static libraries..."
make clean
make
# Check both libraries were built
SUCCESS=0
if [ -f "libnostr_core.a" ]; then
SIZE_X64=$(stat -c%s "libnostr_core.a")
print_success "x64 static library built successfully (${SIZE_X64} bytes)"
SUCCESS=$((SUCCESS + 1))
else
print_error "Failed to build x64 static library"
fi
if [ -f "libnostr_core_arm64.a" ]; then
SIZE_ARM64=$(stat -c%s "libnostr_core_arm64.a")
print_success "ARM64 static library built successfully (${SIZE_ARM64} bytes)"
SUCCESS=$((SUCCESS + 1))
else
print_error "Failed to build ARM64 static library"
fi
if [ $SUCCESS -eq 2 ]; then
print_success "Both architectures built successfully!"
ls -la libnostr_core*.a
else
print_error "Failed to build all libraries"
exit 1
fi
;;
x64|x64-only)
increment_version
print_status "Building x64 static library only..."
make clean
make x64
if [ -f "libnostr_core.a" ]; then
SIZE=$(stat -c%s "libnostr_core.a")
print_success "Static library built successfully (${SIZE} bytes)"
print_success "x64 static library built successfully (${SIZE} bytes)"
ls -la libnostr_core.a
else
print_error "Failed to build static library"
print_error "Failed to build x64 static library"
exit 1
fi
;;
arm64|arm64-only)
increment_version
print_status "Building ARM64 static library only..."
make clean
make arm64
if [ -f "libnostr_core_arm64.a" ]; then
SIZE=$(stat -c%s "libnostr_core_arm64.a")
print_success "ARM64 static library built successfully (${SIZE} bytes)"
ls -la libnostr_core_arm64.a
else
print_error "Failed to build ARM64 static library"
exit 1
fi
;;
@@ -207,21 +259,54 @@ case "$TARGET" in
all)
increment_version
print_status "Building all libraries..."
print_status "Building all libraries and examples..."
make clean
make all
print_success "All libraries built successfully"
ls -la libnostr_core.*
# Check both libraries and examples were built
SUCCESS=0
if [ -f "libnostr_core.a" ]; then
SIZE_X64=$(stat -c%s "libnostr_core.a")
print_success "x64 static library built successfully (${SIZE_X64} bytes)"
SUCCESS=$((SUCCESS + 1))
else
print_error "Failed to build x64 static library"
fi
if [ -f "libnostr_core_arm64.a" ]; then
SIZE_ARM64=$(stat -c%s "libnostr_core_arm64.a")
print_success "ARM64 static library built successfully (${SIZE_ARM64} bytes)"
SUCCESS=$((SUCCESS + 1))
else
print_error "Failed to build ARM64 static library"
fi
if [ $SUCCESS -eq 2 ]; then
print_success "All libraries and examples built successfully!"
ls -la libnostr_core*.a
ls -la examples/
else
print_error "Failed to build all components"
exit 1
fi
;;
examples)
increment_version
print_status "Building examples..."
print_status "Building both libraries and examples..."
make clean
make
make examples
print_success "Examples built successfully"
ls -la examples/
# Verify libraries were built
if [ -f "libnostr_core.a" ] && [ -f "libnostr_core_arm64.a" ]; then
print_success "Both libraries and examples built successfully"
ls -la libnostr_core*.a
ls -la examples/
else
print_error "Failed to build libraries for examples"
exit 1
fi
;;
test)