зеркало из https://github.com/stride3d/xkslang.git
98 строки
3.7 KiB
CMake
98 строки
3.7 KiB
CMake
cmake_minimum_required(VERSION 2.8)
|
|
|
|
include_directories(MachineIndependent ../OGLCompilersDLL ${CMAKE_CURRENT_BINARY_DIR})
|
|
if(WIN32)
|
|
add_subdirectory(OSDependent/Windows)
|
|
include_directories(${include_directories} OSDependent/Windows)
|
|
elseif(UNIX)
|
|
add_subdirectory(OSDependent/Linux)
|
|
include_directories(${include_directories} OSDependent/Linux)
|
|
else(WIN32)
|
|
message("unkown platform")
|
|
endif(WIN32)
|
|
|
|
set(SOURCES
|
|
MachineIndependent/glslang.y
|
|
MachineIndependent/Constant.cpp
|
|
MachineIndependent/InfoSink.cpp
|
|
MachineIndependent/Initialize.cpp
|
|
MachineIndependent/IntermTraverse.cpp
|
|
MachineIndependent/Intermediate.cpp
|
|
MachineIndependent/ParseHelper.cpp
|
|
MachineIndependent/PoolAlloc.cpp
|
|
MachineIndependent/RemoveTree.cpp
|
|
MachineIndependent/Scan.cpp
|
|
MachineIndependent/ShaderLang.cpp
|
|
MachineIndependent/SymbolTable.cpp
|
|
MachineIndependent/Versions.cpp
|
|
MachineIndependent/intermOut.cpp
|
|
MachineIndependent/limits.cpp
|
|
MachineIndependent/linkValidate.cpp
|
|
MachineIndependent/parseConst.cpp
|
|
MachineIndependent/reflection.cpp
|
|
MachineIndependent/preprocessor/Pp.cpp
|
|
MachineIndependent/preprocessor/PpAtom.cpp
|
|
MachineIndependent/preprocessor/PpContext.cpp
|
|
MachineIndependent/preprocessor/PpMemory.cpp
|
|
MachineIndependent/preprocessor/PpScanner.cpp
|
|
MachineIndependent/preprocessor/PpSymbols.cpp
|
|
MachineIndependent/preprocessor/PpTokens.cpp
|
|
GenericCodeGen/CodeGen.cpp
|
|
GenericCodeGen/Link.cpp)
|
|
|
|
set(HEADERS
|
|
Public/ShaderLang.h
|
|
Include/arrays.h
|
|
Include/BaseTypes.h
|
|
Include/Common.h
|
|
Include/ConstantUnion.h
|
|
Include/InfoSink.h
|
|
Include/InitializeGlobals.h
|
|
Include/intermediate.h
|
|
Include/PoolAlloc.h
|
|
Include/ResourceLimits.h
|
|
Include/revision.h
|
|
Include/ShHandle.h
|
|
Include/Types.h
|
|
MachineIndependent/gl_types.h
|
|
MachineIndependent/Initialize.h
|
|
MachineIndependent/localintermediate.h
|
|
MachineIndependent/ParseHelper.h
|
|
MachineIndependent/reflection.h
|
|
MachineIndependent/RemoveTree.h
|
|
MachineIndependent/Scan.h
|
|
MachineIndependent/ScanContext.h
|
|
MachineIndependent/SymbolTable.h
|
|
MachineIndependent/unistd.h
|
|
MachineIndependent/Versions.h
|
|
MachineIndependent/preprocessor/PpContext.h
|
|
MachineIndependent/preprocessor/PpTokens.h)
|
|
|
|
find_package(BISON)
|
|
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})
|
|
|
|
if(WIN32)
|
|
source_group("Public" REGULAR_EXPRESSION "Public/*")
|
|
source_group("MachineIndependent" REGULAR_EXPRESSION "MachineIndependent/[^/]*")
|
|
source_group("Generated Files" FILES ${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp ${CMAKE_CURRENT_BINARY_DIR}/glslang_tab.cpp.h)
|
|
source_group("Include" REGULAR_EXPRESSION "Include/[^/]*")
|
|
source_group("GenericCodeGen" REGULAR_EXPRESSION "GenericCodeGen/*")
|
|
source_group("MachineIndependent\\Preprocessor" REGULAR_EXPRESSION "MachineIndependent/preprocessor/*")
|
|
endif(WIN32)
|
|
|
|
install(TARGETS glslang
|
|
ARCHIVE DESTINATION lib)
|