- Add macOS static and dynamic library linking support - Add cross-platform build scripts for Windows, macOS, and Linux - Add project creation script with metadata embedding - Add macOS app bundle creation with icon support - Update CMakeLists.txt for platform detection - Fix STB rect pack duplicate symbols - Remove test images and unused files - Consolidate documentation into MACOS.md
172 lines
4.4 KiB
Bash
Executable File
172 lines
4.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# ReiLua Development Build Script
|
|
# Works on Windows (w64devkit) and macOS
|
|
|
|
echo "================================"
|
|
echo "ReiLua - Development Build"
|
|
echo "================================"
|
|
echo ""
|
|
|
|
# Get the script directory and navigate to project root
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
cd "$SCRIPT_DIR/.." || exit 1
|
|
|
|
# Check for dependencies on macOS
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
echo "Checking macOS build configuration..."
|
|
|
|
# Check if static libraries exist
|
|
if [ -f "../lib/macos/libraylib.a" ] && [ -f "../lib/macos/liblua.a" ]; then
|
|
echo "✓ Static libraries found - building for distribution"
|
|
echo " (Single-file executable, no dependencies)"
|
|
echo ""
|
|
else
|
|
echo "⚠️ Static libraries not found - using Homebrew libraries"
|
|
echo ""
|
|
echo "This build will require raylib/lua at runtime."
|
|
echo ""
|
|
echo "For distribution builds (single executable), run:"
|
|
echo " ./scripts/macos/build_static_libs.sh"
|
|
echo ""
|
|
|
|
# Check for Homebrew dependencies
|
|
MISSING_DEPS=()
|
|
|
|
if ! brew list glfw &>/dev/null; then
|
|
MISSING_DEPS+=("glfw")
|
|
fi
|
|
|
|
if ! brew list raylib &>/dev/null; then
|
|
MISSING_DEPS+=("raylib")
|
|
fi
|
|
|
|
if ! brew list lua &>/dev/null; then
|
|
MISSING_DEPS+=("lua")
|
|
fi
|
|
|
|
if [ ${#MISSING_DEPS[@]} -gt 0 ]; then
|
|
echo "ERROR: Missing Homebrew packages: ${MISSING_DEPS[*]}"
|
|
echo ""
|
|
echo "Install with:"
|
|
echo " brew install ${MISSING_DEPS[*]} pkg-config"
|
|
echo ""
|
|
exit 1
|
|
fi
|
|
|
|
echo "✓ Homebrew dependencies found"
|
|
echo ""
|
|
fi
|
|
fi
|
|
|
|
# Create and navigate to build directory
|
|
mkdir -p build
|
|
cd build || exit 1
|
|
|
|
# Clean old embedded files (important for dev builds!)
|
|
echo "Cleaning old embedded files..."
|
|
rm -f embedded_main.h embedded_assets.h
|
|
|
|
# Warn about Lua files in build directory
|
|
LUA_COUNT=$(ls *.lua 2>/dev/null | wc -l)
|
|
if [ "$LUA_COUNT" -gt 0 ]; then
|
|
echo ""
|
|
echo "WARNING: Found Lua files in build directory!"
|
|
echo "Development builds should load from file system, not embed."
|
|
echo ""
|
|
ls -1 *.lua
|
|
echo ""
|
|
read -p "Remove these files from build directory? (Y/n): " -n 1 -r
|
|
echo ""
|
|
if [[ ! $REPLY =~ ^[Nn]$ ]]; then
|
|
rm -f *.lua
|
|
echo "Lua files removed."
|
|
fi
|
|
echo ""
|
|
fi
|
|
|
|
# Warn about assets folder in build directory
|
|
if [ -d "assets" ]; then
|
|
echo ""
|
|
echo "WARNING: Found assets folder in build directory!"
|
|
echo "Development builds should load from file system, not embed."
|
|
echo ""
|
|
read -p "Remove assets folder from build directory? (Y/n): " -n 1 -r
|
|
echo ""
|
|
if [[ ! $REPLY =~ ^[Nn]$ ]]; then
|
|
rm -rf assets
|
|
echo "Assets folder removed."
|
|
fi
|
|
echo ""
|
|
fi
|
|
|
|
# Clean old configuration if requested
|
|
if [ "$1" == "clean" ]; then
|
|
echo "Cleaning build directory..."
|
|
rm -rf CMakeCache.txt CMakeFiles/ *.o *.a
|
|
echo "Clean complete!"
|
|
echo ""
|
|
fi
|
|
|
|
# Detect platform and set appropriate generator
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
# macOS
|
|
CMAKE_GENERATOR="Unix Makefiles"
|
|
BUILD_CMD="make"
|
|
elif [[ "$OSTYPE" == "msys" || "$OSTYPE" == "mingw"* ]]; then
|
|
# Windows with MinGW
|
|
CMAKE_GENERATOR="MinGW Makefiles"
|
|
BUILD_CMD="make"
|
|
else
|
|
# Linux and others
|
|
CMAKE_GENERATOR="Unix Makefiles"
|
|
BUILD_CMD="make"
|
|
fi
|
|
|
|
# Configure
|
|
echo "Configuring CMake for development (${OSTYPE})..."
|
|
cmake -G "$CMAKE_GENERATOR" ..
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo ""
|
|
echo "ERROR: CMake configuration failed!"
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo "Building ReiLua..."
|
|
$BUILD_CMD
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo ""
|
|
echo "ERROR: Build failed!"
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo "================================"
|
|
echo "Build Complete!"
|
|
echo "================================"
|
|
echo ""
|
|
echo "Development build created successfully!"
|
|
echo ""
|
|
|
|
# Detect executable name based on platform
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
EXE_NAME="ReiLua"
|
|
else
|
|
EXE_NAME="ReiLua.exe"
|
|
fi
|
|
|
|
echo "To run your game:"
|
|
echo " cd /path/to/your/game"
|
|
echo " /path/to/ReiLua/build/$EXE_NAME"
|
|
echo ""
|
|
echo "To run with console logging:"
|
|
echo " /path/to/ReiLua/build/$EXE_NAME --log"
|
|
echo ""
|
|
echo "Features:"
|
|
echo " - Lua files load from file system"
|
|
echo " - Assets load from file system"
|
|
echo " - Fast iteration - edit and reload"
|
|
echo ""
|