#!/usr/bin/env bash # # Configuration script to build the 2D_Engine for different platforms. # # Creates makefile configuration to build for target host. # # # Project settings no matter current and target hosts # CONFIG_FILE="config.mk" #LUA_VERSION="5.5.1" #LUA_CHECKSUM="1c4b4068d67061f2a2231ad2b5422e77acea1487ea9890f6320af614f4373dce" # # Main # print_error() { echo -e "\033[31merror\033[m: $1" exit 0 } ## Parse args TARGET_HOST="guess" for i in "$@"; do case $i in --target-host=*) TARGET_HOST="${i#*=}" shift # past argument=value ;; --clean) CLEAN=1 EXIT_AFTER_CLEAN=1 shift # past argument=value ;; --reconfigure) CLEAN=1 shift # past argument=value ;; -h|--help) echo "Usage : ./configure [OPTION]..." echo "Add submodules depending on target host platform and" echo "create makefile configuration to build for target host" echo echo -e "\033[1m --target-host=\033[mHOST" echo -e "\tselect target host platform, default is \"guess\" and" echo -e "\twill try to configure for your current OS" echo -e "\033[1m --clean\033[m" echo -e "\tclean build, config, cache, etc, and exit" echo -e "\033[1m --reconfigure\033[m" echo -e "\tcall clean, and configure" echo -e "\033[1m -h, --help\033[m" echo -e "\tshow help and exit" exit 0 ;; -*) print_error "Unknown option $i" ;; *) ;; esac done ## Clean if [ -n "${CLEAN}" ]; then make clean-all rm -rf ${CONFIG_FILE} fi if [ -n "${EXIT_AFTER_CLEAN}" ]; then exit 0 fi ## Deduce current and target hosts case "${OSTYPE}" in linux*) CURRENT_HOST="linux" ;; # msys*|cygwin*) # CURRENT_HOST="windows" # ;; # darwin*) # CURRENT_HOST="macos" # ;; *) print_error "Current detected os is unsuppoted to build from: ${OSTYPE}\nUse --help for more informations." ;; esac echo "Configuring for current host: ${CURRENT_HOST}" if [ "${TARGET_HOST}" = "guess" ]; then TARGET_HOST=${CURRENT_HOST} fi case "${CURRENT_HOST}" in linux) ASSET_BUILDER_CC="gcc" ASSET_BUILDER_AR="ar" ASSET_BUILDER_CFLAGS="--std=c17 -O2 \$(shell pkg-config --cflags libpng json-c)" ASSET_BUILDER_LDFLAGS="\$(shell pkg-config --libs libpng json-c)" ;; *) print_error "Compiling from ${CURRENT_HOST} is not supported yet." ;; esac case "${TARGET_HOST}" in linux) echo "Configuring for target: ${TARGET_HOST}" case "${CURRENT_HOST}" in linux) ;; *) print_error "Cross compiling from ${CURRENT_HOST} to ${TARGET_HOST} is not supported yet." ;; esac TARGET_CC="gcc" TARGET_AR="ar" TARGET_CFLAGS="--std=c17 -Os -DASSET_FILE_NAME=\\\"\$(notdir \$(ASSET_OUTPUT))\\\" -D_GNU_SOURCE=1 \$(shell pkg-config --cflags sdl3)" TARGET_LDFLAGS="\$(shell pkg-config --libs sdl3) -lm" TARGET_LIBCORE="libcore.a" ;; fxcg50) echo "Configuring for target: ${TARGET_HOST}" case "${CURRENT_HOST}" in linux) ;; *) print_error "Cross compiling from ${CURRENT_HOST} to ${TARGET_HOST} is not supported yet." ;; esac TARGET_CC="sh-elf-gcc" TARGET_AR="sh-elf-ar" TARGET_CFLAGS="--std=c17 -O3" TARGET_LDFLAGS="" TARGET_LIBCORE="libcore.a" ;; *) print_error "Unsupported target host: ${TARGET_HOST}" esac echo "Writing config file." echo echo "${CONFIG_FILE}:" echo "\`\`\`" tee ${CONFIG_FILE} <