build-all.sh 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. #!/bin/bash
  2. # Build script for cleaning and/or building everything
  3. PLATFORM="$1"
  4. ACTION="$2"
  5. TARGET="$3"
  6. set echo off
  7. txtgrn=$(echo -e '\e[0;32m')
  8. txtred=$(echo -e '\e[0;31m')
  9. txtrst=$(echo -e '\e[0m')
  10. if [ $ACTION = "all" ] || [ $ACTION = "build" ]
  11. then
  12. ACTION="all"
  13. ACTION_STR="Building"
  14. ACTION_STR_PAST="built"
  15. DO_VERSION="yes"
  16. elif [ $ACTION = "clean" ]
  17. then
  18. ACTION="clean"
  19. ACTION_STR="Cleaning"
  20. ACTION_STR_PAST="cleaned"
  21. DO_VERSION="no"
  22. else
  23. echo "Unknown action $ACTION. Aborting" && exit
  24. fi
  25. INC_CORE_RT="-I./kohi.core/src -I./kohi.runtime/src"
  26. LNK_CORE_RT="-lkohi.core -lkohi.runtime"
  27. echo "$ACTION_STR everything on $PLATFORM ($TARGET)..."
  28. # Version Generator - Build this first so it can be used later in the build process.
  29. make -f Makefile.executable.mak $ACTION TARGET=$TARGET ASSEMBLY=kohi.tools.versiongen
  30. ERRORLEVEL=$?
  31. if [ $ERRORLEVEL -ne 0 ]
  32. then
  33. echo "error:"$errorlevel | sed -e "s/error/${txtred}error${txtrst}/g" && exit
  34. fi
  35. # Kohi Core
  36. make -f Makefile.library.mak $ACTION TARGET=$TARGET ASSEMBLY=kohi.core DO_VERSION=$DO_VERSION
  37. ERRORLEVEL=$?
  38. if [ $ERRORLEVEL -ne 0 ]
  39. then
  40. echo "error:"$errorlevel | sed -e "s/error/${txtred}error${txtrst}/g" && exit
  41. fi
  42. # Tools NOTE: Building tools here since it's required below.
  43. make -f Makefile.executable.mak $ACTION TARGET=$TARGET ASSEMBLY=kohi.tools ADDL_INC_FLAGS="$INC_CORE_RT" ADDL_LINK_FLAGS="-lkohi.core"
  44. ERRORLEVEL=$?
  45. if [ $ERRORLEVEL -ne 0 ]
  46. then
  47. echo "Error:"$ERRORLEVEL | sed -e "s/Error/${txtred}Error${txtrst}/g" && exit
  48. fi
  49. # Kohi Runtime
  50. make -f Makefile.library.mak $ACTION TARGET=$TARGET ASSEMBLY=kohi.runtime DO_VERSION=$DO_VERSION ADDL_INC_FLAGS="$INC_CORE_RT" ADDL_LINK_FLAGS="-lkohi.core"
  51. ERRORLEVEL=$?
  52. if [ $ERRORLEVEL -ne 0 ]
  53. then
  54. echo "error:"$errorlevel | sed -e "s/error/${txtred}error${txtrst}/g" && exit
  55. fi
  56. # Kohi Utils plugin Lib
  57. make -f Makefile.library.mak $ACTION TARGET=$TARGET ASSEMBLY=kohi.plugin.utils DO_VERSION=$DO_VERSION ADDL_INC_FLAGS="$INC_CORE_RT" ADDL_LINK_FLAGS="$LNK_CORE_RT"
  58. ERRORLEVEL=$?
  59. if [ $ERRORLEVEL -ne 0 ]
  60. then
  61. echo "error:"$errorlevel | sed -e "s/error/${txtred}error${txtrst}/g" && exit
  62. fi
  63. # Vulkan Renderer Lib
  64. if [ $PLATFORM = 'macos' ]
  65. then
  66. # VULKAN_SDK=/usr/local/
  67. VULKAN_SDK=~/VulkanSDK/1.3.296.0/macOS/lib/
  68. fi
  69. make -f Makefile.library.mak $ACTION TARGET=$TARGET ASSEMBLY=kohi.plugin.renderer.vulkan DO_VERSION=$DO_VERSION ADDL_INC_FLAGS="$INC_CORE_RT -I$VULKAN_SDK/include" ADDL_LINK_FLAGS="$LNK_CORE_RT -lvulkan -lshaderc_shared -L$VULKAN_SDK/lib -Wl,-rpath,$VULKAN_SDK/lib "
  70. ERRORLEVEL=$?
  71. if [ $ERRORLEVEL -ne 0 ]
  72. then
  73. echo "error:"$errorlevel | sed -e "s/error/${txtred}error${txtrst}/g" && exit
  74. fi
  75. # Standard UI Lib
  76. make -f Makefile.library.mak $ACTION TARGET=$TARGET ASSEMBLY=kohi.plugin.ui.standard DO_VERSION=$DO_VERSION ADDL_INC_FLAGS="$INC_CORE_RT" ADDL_LINK_FLAGS="$LNK_CORE_RT"
  77. ERRORLEVEL=$?
  78. if [ $ERRORLEVEL -ne 0 ]
  79. then
  80. echo "error:"$errorlevel | sed -e "s/error/${txtred}error${txtrst}/g" && exit
  81. fi
  82. # OpenAL Audio Plugin lib
  83. if [ $PLATFORM = 'macos' ]
  84. then
  85. OPENAL_INC=-I/opt/homebrew/opt/openal-soft/include/
  86. OPENAL_LIB=-L/opt/homebrew/opt/openal-soft/lib/
  87. fi
  88. make -f Makefile.library.mak $ACTION TARGET=$TARGET ASSEMBLY=kohi.plugin.audio.openal DO_VERSION=$DO_VERSION ADDL_INC_FLAGS="$INC_CORE_RT $OPENAL_INC" ADDL_LINK_FLAGS="$LNK_CORE_RT -lopenal $OPENAL_LIB"
  89. ERRORLEVEL=$?
  90. if [ $ERRORLEVEL -ne 0 ]
  91. then
  92. echo "error:"$errorlevel | sed -e "s/error/${txtred}error${txtrst}/g" && exit
  93. fi
  94. # Testbed Lib
  95. make -f Makefile.library.mak $ACTION TARGET=$TARGET ASSEMBLY=testbed.klib DO_VERSION=$DO_VERSION ADDL_INC_FLAGS="$INC_CORE_RT -I./kohi.plugin.ui.standard/src -I./kohi.plugin.audio.openal/src" ADDL_LINK_FLAGS="$LNK_CORE_RT -lkohi.plugin.ui.standard -lkohi.plugin.audio.openal"
  96. ERRORLEVEL=$?
  97. if [ $ERRORLEVEL -ne 0 ]
  98. then
  99. echo "Error:"$ERRORLEVEL | sed -e "s/Error/${txtred}Error${txtrst}/g" && exit
  100. fi
  101. # ---------------------------------------------------
  102. # Executables
  103. # ---------------------------------------------------
  104. # Testbed
  105. make -f Makefile.executable.mak $ACTION TARGET=$TARGET ASSEMBLY=testbed.kapp ADDL_INC_FLAGS="$INC_CORE_RT" ADDL_LINK_FLAGS="$LNK_CORE_RT -lkohi.plugin.ui.standard -lkohi.plugin.audio.openal"
  106. ERRORLEVEL=$?
  107. if [ $ERRORLEVEL -ne 0 ]
  108. then
  109. echo "Error:"$ERRORLEVEL | sed -e "s/Error/${txtred}Error${txtrst}/g" && exit
  110. fi
  111. # Tests
  112. make -f Makefile.executable.mak $ACTION TARGET=$TARGET ASSEMBLY=kohi.core.tests ADDL_INC_FLAGS="$INC_CORE_RT" ADDL_LINK_FLAGS="$LNK_CORE_RT"
  113. ERRORLEVEL=$?
  114. if [ $ERRORLEVEL -ne 0 ]
  115. then
  116. echo "Error:"$ERRORLEVEL | sed -e "s/Error/${txtred}Error${txtrst}/g" && exit
  117. fi
  118. echo "All assemblies $ACTION_STR_PAST successfully on $PLATFORM ($TARGET)." | sed -e "s/successfully/${txtgrn}successfully${txtrst}/g"