| # cmake file for glslang |
| |
| if (NOT DE_DEFS) |
| message(FATAL_ERROR "Include Defs.cmake") |
| endif () |
| |
| if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/SPIRV/GlslangToSpv.cpp") |
| set(DEFAULT_GLSLANG_SRC_PATH ${CMAKE_CURRENT_SOURCE_DIR}/src) |
| else () |
| set(DEFAULT_GLSLANG_SRC_PATH "../glslang") |
| endif () |
| |
| set(GLSLANG_SRC_PATH ${DEFAULT_GLSLANG_SRC_PATH} CACHE STRING "Path to glslang source tree") |
| |
| if (IS_ABSOLUTE ${GLSLANG_SRC_PATH}) |
| set(GLSLANG_ABS_PATH ${GLSLANG_SRC_PATH}) |
| else () |
| set(GLSLANG_ABS_PATH "${CMAKE_SOURCE_DIR}/${GLSLANG_SRC_PATH}") |
| endif () |
| |
| find_package(BISON) |
| |
| # \todo [2015-06-24 pyry] Full C++11 support on Android requires using CLang + libc++ |
| if (NOT BISON_FOUND AND DE_OS_IS_WIN32 AND EXISTS ${GLSLANG_ABS_PATH}/tools/bison.exe) |
| message(STATUS "Using pre-built bison executable") |
| set(BISON_EXECUTABLE ${GLSLANG_ABS_PATH}/tools/bison.exe) |
| set(BISON_FOUND ON) |
| endif () |
| |
| if (BISON_FOUND AND EXISTS ${GLSLANG_ABS_PATH}/glslang/GenericCodeGen/CodeGen.cpp AND NOT DE_OS_IS_ANDROID) |
| message(STATUS "glslang found; building with DEQP_SUPPORT_GLSLANG") |
| |
| include_directories( |
| ${GLSLANG_ABS_PATH} |
| ${GLSLANG_ABS_PATH}/glslang |
| ${GLSLANG_ABS_PATH}/glslang/Include |
| ${GLSLANG_ABS_PATH}/glslang/Public |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent |
| ${GLSLANG_ABS_PATH}/glslang/GenericCodeGen |
| ${GLSLANG_ABS_PATH}/glslang/OSDependent |
| ${GLSLANG_ABS_PATH}/OGLCompilersDLL |
| ${GLSLANG_ABS_PATH}/SPIRV |
| ${CMAKE_CURRENT_BINARY_DIR} |
| ) |
| |
| set(GLSLANG_SRCS |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/Constant.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/InfoSink.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/Initialize.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/IntermTraverse.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/Intermediate.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/ParseHelper.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/PoolAlloc.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/RemoveTree.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/Scan.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/ShaderLang.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/SymbolTable.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/Versions.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/intermOut.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/limits.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/linkValidate.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/parseConst.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/reflection.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/preprocessor/Pp.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/preprocessor/PpAtom.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/preprocessor/PpContext.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/preprocessor/PpMemory.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/preprocessor/PpScanner.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/preprocessor/PpSymbols.cpp |
| ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/preprocessor/PpTokens.cpp |
| ${GLSLANG_ABS_PATH}/glslang/GenericCodeGen/CodeGen.cpp |
| ${GLSLANG_ABS_PATH}/glslang/GenericCodeGen/Link.cpp |
| ${GLSLANG_ABS_PATH}/OGLCompilersDLL/InitializeDll.cpp |
| |
| ${GLSLANG_ABS_PATH}/SPIRV/GlslangToSpv.cpp |
| ${GLSLANG_ABS_PATH}/SPIRV/InReadableOrder.cpp |
| ${GLSLANG_ABS_PATH}/SPIRV/SpvBuilder.cpp |
| ${GLSLANG_ABS_PATH}/SPIRV/SPVRemapper.cpp |
| ${GLSLANG_ABS_PATH}/SPIRV/doc.cpp |
| ${GLSLANG_ABS_PATH}/SPIRV/disassemble.cpp |
| |
| ${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp |
| ${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp.h |
| |
| osinclude.cpp |
| ) |
| |
| set(CMAKE_C_FLAGS ${DE_3RD_PARTY_C_FLAGS}) |
| set(CMAKE_CXX_FLAGS ${DE_3RD_PARTY_CXX_FLAGS}) |
| |
| if (DE_COMPILER_IS_GCC OR DE_COMPILER_IS_CLANG) |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") |
| endif () |
| |
| 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 ${GLSLANG_ABS_PATH}/glslang/MachineIndependent/glslang.y |
| WORKING_DIRECTORY ${GLSLANG_ABS_PATH}/glslang) |
| |
| add_library(glslang STATIC ${GLSLANG_SRCS}) |
| target_link_libraries(glslang dethread ${ZLIB_LIBRARY}) |
| |
| set(GLSLANG_INCLUDE_PATH ${GLSLANG_ABS_PATH} PARENT_SCOPE) |
| set(GLSLANG_LIBRARY glslang PARENT_SCOPE) |
| set(DEQP_HAVE_GLSLANG ON PARENT_SCOPE) |
| |
| else () |
| message(STATUS "glslang not found; GLSL to SPIR-V compilation not available") |
| |
| set(DEQP_HAVE_GLSLANG OFF PARENT_SCOPE) |
| |
| endif () |