CMakeLists.txt 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. # Find tool packages
  2. find_package(bison REQUIRED)
  3. find_package(flex REQUIRED)
  4. message(STATUS "Building BSL lexer/parser...")
  5. if(WIN32)
  6. set(BS_FLEX_OPTIONS --wincompat)
  7. endif()
  8. execute_process(
  9. COMMAND ${flex_EXECUTABLE} ${BS_FLEX_OPTIONS} ${PROJECT_SOURCE_DIR}/BansheeSL/BsLexerFX.l
  10. COMMAND ${bison_EXECUTABLE} ${PROJECT_SOURCE_DIR}/BansheeSL/BsParserFX.y
  11. WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/BansheeSL
  12. RESULT_VARIABLE rv
  13. )
  14. file(RENAME "${PROJECT_SOURCE_DIR}/BansheeSL/BsLexerFX.h" "${PROJECT_SOURCE_DIR}/BansheeSL/BsLexerFX.h")
  15. file(RENAME "${PROJECT_SOURCE_DIR}/BansheeSL/BsLexerFX.c" "${PROJECT_SOURCE_DIR}/BansheeSL/BsLexerFX.c")
  16. file(RENAME "${PROJECT_SOURCE_DIR}/BansheeSL/BsParserFX.h" "${PROJECT_SOURCE_DIR}/BansheeSL/BsParserFX.h")
  17. file(RENAME "${PROJECT_SOURCE_DIR}/BansheeSL/BsParserFX.c" "${PROJECT_SOURCE_DIR}/BansheeSL/BsParserFX.c")
  18. # Source files and their filters
  19. include(CMakeSources.cmake)
  20. # Find package
  21. find_package(XShaderCompiler)
  22. # Includes
  23. set(BansheeSL_INC
  24. "./"
  25. "../BansheeUtility"
  26. "../BansheeCore"
  27. "../BansheeEngine")
  28. include_directories(${BansheeSL_INC})
  29. # Target
  30. add_library(BansheeSL SHARED ${BS_BANSHEESL_SRC})
  31. # Defines
  32. target_compile_definitions(BansheeSL PRIVATE -DBS_SL_EXPORTS)
  33. # Pre-build step
  34. if(WIN32)
  35. add_custom_command(TARGET BansheeSL PRE_BUILD
  36. COMMAND ${flex_EXECUTABLE} ${BS_FLEX_OPTIONS} ${PROJECT_SOURCE_DIR}/BansheeSL/BsLexerFX.l
  37. COMMAND ${bison_EXECUTABLE} ${PROJECT_SOURCE_DIR}/BansheeSL/BsParserFX.y
  38. COMMAND xcopy /Y /I BsLexerFX.h \"${PROJECT_SOURCE_DIR}/BansheeSL\"
  39. COMMAND xcopy /Y /I BsLexerFX.c \"${PROJECT_SOURCE_DIR}/BansheeSL\"
  40. COMMAND xcopy /Y /I BsParserFX.h \"${PROJECT_SOURCE_DIR}/BansheeSL\"
  41. COMMAND xcopy /Y /I BsParserFX.c \"${PROJECT_SOURCE_DIR}/BansheeSL\"
  42. COMMAND del BsLexerFX.h BsLexerFX.c BsParserFX.h BsParserFX.c
  43. COMMENT "Building BSL lexer/parser...")
  44. endif()
  45. # Libraries
  46. ## External lib: XShaderCompiler
  47. target_link_libraries(BansheeSL PRIVATE ${XShaderCompiler_LIBRARIES})
  48. ## Local libs
  49. target_link_libraries(BansheeSL PRIVATE BansheeEngine BansheeUtility BansheeCore)
  50. # IDE specific
  51. set_property(TARGET BansheeSL PROPERTY FOLDER Plugins)