From 0f4ef5b088aa4a10369c056f2441a964675550f6 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Fri, 8 May 2015 01:12:45 +0000 Subject: [PATCH] glslang build: Always run a custom command for Bison. The Cmake BISON_TARGET rule doesn't understand this use of --defines, and so the targets are always rebuilt even if no source files change. Contributor: Stefanus Du Toit (stefanus@google.com). git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31111 e7fa87d3-cd2b-0410-9028-fcbf551c1848 --- glslang/CMakeLists.txt | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) 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})