diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 38b0a983..7fa55660 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -68,19 +68,18 @@ set(HEADERS MachineIndependent/preprocessor/PpTokens.h) find_package(BISON) -if(BISON_FOUND) - message("bison found") - BISON_TARGET(GLSLParser MachineIndependent/glslang.y ${CMAKE_CURRENT_BINARY_DIR}/gen_glslang_tab.cpp - COMPILE_FLAGS - "--defines=${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp.h") -else(BISON_FOUND) - message("using custom command for bison on glslang.y") - add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp ${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp.h - COMMAND ../tools/bison.exe --defines=${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp.h -t MachineIndependent/glslang.y -o ${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp - MAIN_DEPENDENCY MachineIndependent/glslang.y - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) - set(BISON_GLSLParser_OUTPUT_SOURCE ${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp) -endif(BISON_FOUND) +if(NOT BISON_FOUND) + set(BISON_EXECUTABLE ../tools/bison.exe) + message("bison not found. Assuming it is at ${BISON_EXECUTABLE}") +endif() + +# Always use a custom command since our use of --defines isn't assumed by CMake's BISON_TARGET, +# which ends up causing the target to always be rebuilt. +add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp ${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp.h + COMMAND ${BISON_EXECUTABLE} --defines=${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp.h -t MachineIndependent/glslang.y -o ${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp + MAIN_DEPENDENCY MachineIndependent/glslang.y + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) +set(BISON_GLSLParser_OUTPUT_SOURCE ${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp) add_library(glslang STATIC ${BISON_GLSLParser_OUTPUT_SOURCE} ${SOURCES} ${HEADERS})