CMakeLists.txt 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. if(WIN32)
  2. execute_process(
  3. COMMAND ${PROJECT_SOURCE_DIR}/../Dependencies/tools/flex/flex.exe --wincompat ${PROJECT_SOURCE_DIR}/BansheeSL/BsLexerFX.l
  4. COMMAND ${PROJECT_SOURCE_DIR}/../Dependencies/tools/bison/bison.exe ${PROJECT_SOURCE_DIR}/BansheeSL/BsParserFX.y
  5. WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/BansheeSL
  6. RESULT_VARIABLE rv
  7. )
  8. file(RENAME "${PROJECT_SOURCE_DIR}/BansheeSL/BsLexerFX.h" "${PROJECT_SOURCE_DIR}/BansheeSL/Include/BsLexerFX.h")
  9. file(RENAME "${PROJECT_SOURCE_DIR}/BansheeSL/BsLexerFX.c" "${PROJECT_SOURCE_DIR}/BansheeSL/Source/BsLexerFX.c")
  10. file(RENAME "${PROJECT_SOURCE_DIR}/BansheeSL/BsParserFX.h" "${PROJECT_SOURCE_DIR}/BansheeSL/Include/BsParserFX.h")
  11. file(RENAME "${PROJECT_SOURCE_DIR}/BansheeSL/BsParserFX.c" "${PROJECT_SOURCE_DIR}/BansheeSL/Source/BsParserFX.c")
  12. else()
  13. find_package(BISON REQUIRED)
  14. find_package(FLEX REQUIRED)
  15. message("Building lexer/parser...")
  16. execute_process(
  17. COMMAND ${FLEX_EXECUTABLE} ${BS_FLEX_OPTIONS} ${PROJECT_SOURCE_DIR}/BansheeSL/BsLexerFX.l
  18. COMMAND ${BISON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/BansheeSL/BsParserFX.y)
  19. execute_process(
  20. COMMAND mv BsLexerFX.h ${PROJECT_SOURCE_DIR}/BansheeSL/Include
  21. COMMAND mv BsLexerFX.c ${PROJECT_SOURCE_DIR}/BansheeSL/Source
  22. COMMAND mv BsParserFX.h ${PROJECT_SOURCE_DIR}/BansheeSL/Include
  23. COMMAND mv BsParserFX.c ${PROJECT_SOURCE_DIR}/BansheeSL/Source)
  24. endif()
  25. set(DEPENDENCY_BUILD_DIR "${CMAKE_SOURCE_DIR}/../Dependencies/Build/${DEPENDENCY_NAME}")
  26. set(DEPENDENCY_PARAMS -DXSC_BUILD_SHELL=OFF -DXSC_ENABLE_LANGUAGE_EXT=ON)
  27. find_package_or_build(XShaderCompiler inc/Xsc/Xsc.h "${DEPENDENCY_PARAMS}")
  28. # Source files and their filters
  29. include(CMakeSources.cmake)
  30. # Includes
  31. set(BansheeSL_INC
  32. "Include"
  33. "../BansheeUtility/Include"
  34. "../BansheeCore/Include"
  35. "../BansheeEngine/Include"
  36. ${XShaderCompiler_INCLUDE_DIR})
  37. include_directories(${BansheeSL_INC})
  38. # Target
  39. add_library(BansheeSL SHARED ${BS_BANSHEESL_SRC})
  40. # Defines
  41. target_compile_definitions(BansheeSL PRIVATE -DBS_SL_EXPORTS)
  42. # Pre-build step
  43. if(WIN32)
  44. add_custom_command(TARGET BansheeSL PRE_BUILD
  45. COMMAND ${PROJECT_SOURCE_DIR}/../Dependencies/tools/flex/flex.exe --wincompat ${PROJECT_SOURCE_DIR}/BansheeSL/BsLexerFX.l
  46. COMMAND ${PROJECT_SOURCE_DIR}/../Dependencies/tools/bison/bison.exe ${PROJECT_SOURCE_DIR}/BansheeSL/BsParserFX.y
  47. COMMAND xcopy /Y /I BsLexerFX.h \"${PROJECT_SOURCE_DIR}/BansheeSL/Include\"
  48. COMMAND xcopy /Y /I BsLexerFX.c \"${PROJECT_SOURCE_DIR}/BansheeSL/Source\"
  49. COMMAND xcopy /Y /I BsParserFX.h \"${PROJECT_SOURCE_DIR}/BansheeSL/Include\"
  50. COMMAND xcopy /Y /I BsParserFX.c \"${PROJECT_SOURCE_DIR}/BansheeSL/Source\"
  51. COMMAND del BsLexerFX.h BsLexerFX.c BsParserFX.h BsParserFX.c
  52. COMMENT "Building lexer/parser...")
  53. endif()
  54. # Libraries
  55. ## External lib: XShaderCompiler
  56. target_link_libraries(BansheeSL PRIVATE ${XShaderCompiler_LIBRARIES})
  57. ## Local libs
  58. target_link_libraries(BansheeSL PRIVATE BansheeEngine BansheeUtility BansheeCore)
  59. # IDE specific
  60. set_property(TARGET BansheeSL PROPERTY FOLDER Plugins)