Subversion Repositories Games.Carmageddon

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #!/bin/sh
  2.  
  3. MY_PATH="$(dirname "$0")"
  4.  
  5. APP_NAME="Carmageddon"
  6. ICON_FILE="icon.png"
  7.  
  8. cd "${MY_PATH}" || exit 1
  9.  
  10. # cleanup
  11. rm -rf .build
  12. rm -rf "${APP_NAME}.$(uname)-$(uname -m)"
  13.  
  14. # compiler and linker flags to use
  15. CPPFLAGS="-DDETHRACE_FIX_BUGS=1 -Isrc/harness/include -Isrc/harness -Isrc/smackw32/include -Isrc/BRSRC13/include -Isrc/BRSRC13 -Isrc/S3/include -Isrc/S3 -Isrc/DETHRACE/common -Isrc/DETHRACE/pd -Isrc/DETHRACE -Ilib/glad/include -Ilib/libsmacker -Ilib/miniaudio/include -Ilib/miniaudio/include/miniaudio -Ilib/SDL2 -Ilib"
  16.  
  17. # read the source files list from the Visual Studio project file if it exists, else list all the .c files from "lib" and "src"
  18. if [ -f "${APP_NAME}.vcxproj" ]; then
  19.         SRCLIST="$(grep "<ClCompile " ${APP_NAME}.vcxproj|awk -F\" '{print $2}'|tr '\\' '/')"
  20. else
  21.         SRCLIST="$(find lib -name '*.c') $(find src -name '*.c')"
  22. fi
  23.  
  24. # generate the shader programs
  25. echo "Compacting GLSL shaders..."
  26. cd src/harness || exit 1
  27. for SHADER in resources/*.glsl; do
  28.         echo "${SHADER}"
  29.         SYMBOL_NAME="$(echo "${SHADER}"|tr '[:lower:]' '[:upper:]'|sed 's/[\.\/]/_/g')"
  30.         (
  31.                 echo "// Auto generated file."
  32.                 echo "static const char ${SYMBOL_NAME}[] ="
  33.                 echo "{"
  34.                 cat "${SHADER}"|hexdump -e '16/1 "%02x" "\n"' -v|sed 's/[0-9a-fA-F][0-9a-fA-F]/0x&, /g' || exit 1
  35.                 echo "};"
  36.         ) > "${SHADER}.h"
  37. done
  38. cd ../..
  39.  
  40. # target the current arch only
  41. for ARCH in $(uname -m); do
  42.         echo "Compiling for ${ARCH}..."
  43.         rm -rf ".build/${ARCH}"
  44.         mkdir -p ".build/${ARCH}" || exit 1
  45.  
  46.         # compile source files
  47.         for SRCFILE in ${SRCLIST}; do
  48.                 echo "${SRCFILE}"
  49.                 cc -o ".build/${ARCH}/$(basename "${SRCFILE}").o" ${CPPFLAGS} -c "${SRCFILE}" || exit 1
  50.         done
  51.  
  52.         # link them together
  53.         echo "Linking for ${ARCH}..."
  54.         cc -o ".build/${ARCH}/${APP_NAME}" ".build/${ARCH}/"*".o" /usr/local/lib/libSDL2.a /usr/local/lib/libinotify.a -lusbhid -lpthread -lm -lexecinfo || exit 1
  55. done
  56.  
  57. # retrieve the compiled executable
  58. cp ".build/${ARCH}/${APP_NAME}" "${APP_NAME}.$(uname)-$(uname -m)"
  59.  
  60. # finished
  61. echo "Carmageddon was built successfully"
  62. exit 0
  63.