#!/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 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 "Detected current host: ${CURRENT_HOST}" if [ "${TARGET_HOST}" = "guess" ]; then TARGET_HOST=${CURRENT_HOST} fi case "${TARGET_HOST}" in linux|fxcg50) echo "Configuring for target: ${TARGET_HOST}" ;; *) print_error "Unsupported target host: ${TARGET_HOST}" ;; esac echo if [ "${CURRENT_HOST}" != "${TARGET_HOST}" ]; then CROSS_COMPILE=TRUE fi if [ -n "${CROSS_COMPILE}" ]; then case "${TARGET_HOST}" in fxcg50) case "${CURRENT_HOST}" in linux) ;; *) print_error "Cross compiling from ${CURRENT_HOST} for ${TARGET_HOST} is not supported yet." ;; esac CC="sh-elf-gcc" AR="sh-elf-ar" LIBCORE="libcore.a" ;; esac else case "${TARGET_HOST}" in linux) CC="gcc" AR="ar" CFLAGS="--std=c17 -Os -DASSET_FILE_NAME=\\\"\$(notdir \$(ASSET_OUTPUT))\\\" -D_GNU_SOURCE=1 \$(shell pkg-config --cflags sdl3)" LDFLAGS="\$(shell pkg-config --libs sdl3) -lm" LIBCORE="libcore.a" ;; *) ;; esac fi echo "Writing config file." echo echo "${CONFIG_FILE}:" echo "\`\`\`" echo "HOST = ${TARGET_HOST}" | tee ${CONFIG_FILE} echo | tee -a ${CONFIG_FILE} echo "CC = ${CC}" | tee -a ${CONFIG_FILE} echo "AR = ${AR}" | tee -a ${CONFIG_FILE} echo "CFLAGS = ${CFLAGS}" | tee -a ${CONFIG_FILE} echo "LDFLAGS = ${LDFLAGS}" | tee -a ${CONFIG_FILE} echo | tee -a ${CONFIG_FILE} echo "LIBCORE = ${LIBCORE}" | tee -a ${CONFIG_FILE} echo "\`\`\`" # ### Download libs #echo "===== downloading lua =====" # #LUA_TAR_GZ="${CACHE_DIR}/lua-${LUA_VERSION}.tar.gz" #if [ ! -e "${LUA_TAR_GZ}" ]; then # echo "Downloading lua source..." # if ! curl --output "${LUA_TAR_GZ}" "https://www.lua.org/ftp/lua-${LUA_VERSION}.tar.gz"; then # print_error "Failed to download lua source." # fi #fi # #echo "Checking lua source sum..." #if ! echo "${LUA_CHECKSUM} ${LUA_TAR_GZ}" | sha256sum -c; then # CHECKSUM="$(sha256sum "${LUA_TAR_GZ}" | cut -d " " -f 1)" # rm "${LUA_TAR_GZ}" # print_error "Lua zip checksum not valid.\nExpected: \"${LUA_CHECKSUM}\"\nGot: \"${CHECKSUM}\"\nPlease rerun command to retry downloading." #fi # #echo "Extracting lua source" #if ! tar -xzf "${LUA_TAR_GZ}" --directory "${LIB_DIR}"; then # print_error "Failed to extract lua source." #fi #