Files
chronara/build-all.sh
T
2026-01-21 17:49:25 -08:00

89 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo -e "${BLUE}🚀 Building Chronara for all platforms...${NC}"
# Function to run a build and check its status
run_build() {
local target=$1
local desc=$2
echo -e "\n${YELLOW}Building: ${desc}${NC}"
if pnpm tauri build --target "$target"; then
echo -e "${GREEN}${desc} build succeeded${NC}"
return 0
else
echo -e "${RED}${desc} build failed${NC}"
return 1
fi
}
# Ensure we're using the correct Node version
source /home/naomi/.nvm/nvm.sh
nvm use 24.11.1
# Install dependencies if needed
echo -e "${YELLOW}Installing dependencies...${NC}"
pnpm install
# Build frontend first
echo -e "${YELLOW}Building frontend...${NC}"
pnpm build
# Track if any builds fail
failed=0
# Linux builds (native in WSL)
echo -e "\n${BLUE}Building Linux targets...${NC}"
run_build "x86_64-unknown-linux-gnu" "Linux AppImage/Deb/RPM" || failed=1
# Windows build (cross-compile from WSL)
echo -e "\n${BLUE}Building Windows target...${NC}"
# Check if Windows target is installed
if ! rustup target list --installed | grep -q "x86_64-pc-windows-gnu"; then
echo -e "${YELLOW}Installing Windows target...${NC}"
rustup target add x86_64-pc-windows-gnu
fi
# Check if full mingw-w64 toolchain is installed
if ! command -v x86_64-w64-mingw32-gcc &> /dev/null || ! command -v x86_64-w64-mingw32-dlltool &> /dev/null; then
echo -e "${RED}Windows cross-compilation tools are missing!${NC}"
echo -e "${YELLOW}Please install the full mingw-w64 toolchain:${NC}"
echo -e "${YELLOW} sudo apt-get update${NC}"
echo -e "${YELLOW} sudo apt-get install -y gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 mingw-w64-tools${NC}"
echo -e "${RED}Skipping Windows build...${NC}"
SKIP_WINDOWS=1
fi
# Set up environment for Windows cross-compilation
export CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER="x86_64-w64-mingw32-gcc"
export CC_x86_64_pc_windows_gnu="x86_64-w64-mingw32-gcc"
export CXX_x86_64_pc_windows_gnu="x86_64-w64-mingw32-g++"
export AR_x86_64_pc_windows_gnu="x86_64-w64-mingw32-ar"
if [ -z "$SKIP_WINDOWS" ]; then
run_build "x86_64-pc-windows-gnu" "Windows NSIS" || failed=1
fi
# Summary
echo -e "\n${YELLOW}========================================${NC}"
if [ $failed -eq 0 ]; then
echo -e "${GREEN}✨ All builds completed successfully!${NC}"
echo -e "${GREEN}Build outputs:${NC}"
echo -e "${GREEN} Linux: src-tauri/target/release/bundle/appimage/chronara_*.AppImage${NC}"
echo -e "${GREEN} Linux: src-tauri/target/release/bundle/deb/chronara_*.deb${NC}"
echo -e "${GREEN} Linux: src-tauri/target/release/bundle/rpm/chronara-*.rpm${NC}"
echo -e "${GREEN} Windows: src-tauri/target/x86_64-pc-windows-gnu/release/bundle/nsis/Chronara_*.exe${NC}"
exit 0
else
echo -e "${RED}❌ Some builds failed. Check the output above for details.${NC}"
exit 1
fi