| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #!/bin/bash
- # Load arguments into named variables in order
- PROJECT_FOLDER=$1 # Where your code is
- TARGET_FILE=$2 # Your executable to build
- ROOT_PATH=$3 # The parent folder of DFPSR, SDK and tools
- TEMP_ROOT=$4 # Where your temporary objects should be
- WINDOW_MANAGER=$5 # Which library to use for creating a window
- MODE=$6 # Use -DDEBUG for debug mode or -DNDEBUG for release mode
- CPP_VERSION=$7 # Default is -std=c++14
- O_LEVEL=$8 # Default is -O2
- LINKER_FLAGS=$9 # Additional linker flags for libraries and such
- TEMP_SUB="${MODE}_${CPP_VERSION}_${O_LEVEL}"
- TEMP_SUB=$(echo $TEMP_SUB | tr "+" "p")
- TEMP_SUB=$(echo $TEMP_SUB | tr -d " =-")
- TEMP_DIR=${TEMP_ROOT}/${TEMP_SUB}
- echo "Building version ${TEMP_SUB}"
- # Create a temporary folder
- mkdir -p ${TEMP_DIR}
- # Remove objects, but keep libraries
- rm -f ${TEMP_DIR}/*.o
- # Allow calling the build script
- chmod +x ${ROOT_PATH}/tools/buildLibrary.sh
- echo "Compiling renderer framework."
- ${ROOT_PATH}/tools/buildLibrary.sh g++ ${ROOT_PATH}/DFPSR ${TEMP_DIR} "dfpsr" ${CPP_VERSION} ${O_LEVEL} ${MODE} LAZY
- if [ $? -ne 0 ]
- then
- exit 1
- fi
- # Abort if the project folder is replaced with the NONE keyword
- if [ ${PROJECT_FOLDER} = "NONE" ]
- then
- exit 0
- fi
- echo "Compiling application."
- ${ROOT_PATH}/tools/buildLibrary.sh g++ ${PROJECT_FOLDER} ${TEMP_DIR} "application" ${CPP_VERSION} ${O_LEVEL} ${MODE} CLEAN
- if [ $? -ne 0 ]
- then
- exit 1
- fi
- # Select the base libraries needed by the framework itself
- BASELIBS="-lm -pthread"
- # Select window manager to compile and libraries to link
- if [ ${WINDOW_MANAGER} = "NONE" ]
- then
- # Embedded/terminal mode
- WINDOW_SOURCE=${ROOT_PATH}/windowManagers/NoWindow.cpp
- LIBS="${BASELIBS} ${LINKER_FLAGS}"
- else
- # Desktop GUI mode
- WINDOW_SOURCE=${ROOT_PATH}/windowManagers/${WINDOW_MANAGER}Window.cpp
- LIBS="${BASELIBS} ${LINKER_FLAGS} -l${WINDOW_MANAGER}"
- fi
- echo "Compiling window manager (${WINDOW_SOURCE})"
- g++ ${CPP_VERSION} ${O_LEVEL} ${MODE} -Wall -c ${WINDOW_SOURCE} -o ${TEMP_DIR}/NativeWindow.o
- if [ $? -ne 0 ]
- then
- exit 1
- fi
- echo "Linking application with libraries (${LIBS})"
- # Main must exist in the first library when linking
- g++ ${TEMP_DIR}/application.a ${TEMP_DIR}/dfpsr.a ${TEMP_DIR}/NativeWindow.o ${LIBS} -o ${TARGET_FILE}
- if [ $? -ne 0 ]
- then
- exit 1
- fi
- echo "Starting application at ${TARGET_FILE}"
- ${TARGET_FILE}
|