if(WIN32) add_subdirectory(OSDependent/Windows) elseif(UNIX) add_subdirectory(OSDependent/Unix) else(WIN32) message("unknown platform") endif(WIN32) if(EMSCRIPTEN OR ENABLE_GLSLANG_JS) # May be enabled on non-Emscripten builds for binary-size testing. add_subdirectory(OSDependent/Web) endif(EMSCRIPTEN OR ENABLE_GLSLANG_JS) set(SOURCES MachineIndependent/glslang.m4 MachineIndependent/glslang.y MachineIndependent/glslang_tab.cpp MachineIndependent/attribute.cpp MachineIndependent/Constant.cpp MachineIndependent/iomapper.cpp MachineIndependent/InfoSink.cpp MachineIndependent/Initialize.cpp MachineIndependent/IntermTraverse.cpp MachineIndependent/Intermediate.cpp MachineIndependent/ParseContextBase.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/PpScanner.cpp MachineIndependent/preprocessor/PpTokens.cpp MachineIndependent/propagateNoContraction.cpp GenericCodeGen/CodeGen.cpp GenericCodeGen/Link.cpp CInterface/glslang_c_interface.cpp) set(HEADERS Public/ShaderLang.h Include/arrays.h Include/BaseTypes.h Include/Common.h Include/ConstantUnion.h Include/glslang_c_interface.h Include/glslang_c_shader_types.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/attribute.h MachineIndependent/glslang_tab.cpp.h MachineIndependent/gl_types.h MachineIndependent/Initialize.h MachineIndependent/iomapper.h MachineIndependent/LiveTraverser.h MachineIndependent/localintermediate.h MachineIndependent/ParseHelper.h MachineIndependent/reflection.h MachineIndependent/RemoveTree.h MachineIndependent/Scan.h MachineIndependent/ScanContext.h MachineIndependent/SymbolTable.h MachineIndependent/Versions.h MachineIndependent/parseVersions.h MachineIndependent/propagateNoContraction.h MachineIndependent/preprocessor/PpContext.h MachineIndependent/preprocessor/PpTokens.h) glslang_pch(SOURCES MachineIndependent/pch.cpp) add_library(glslang ${LIB_TYPE} ${BISON_GLSLParser_OUTPUT_SOURCE} ${SOURCES} ${HEADERS}) set_property(TARGET glslang PROPERTY FOLDER glslang) set_property(TARGET glslang PROPERTY POSITION_INDEPENDENT_CODE ON) target_link_libraries(glslang OGLCompiler OSDependent) target_include_directories(glslang PUBLIC $ $) if(WIN32 AND BUILD_SHARED_LIBS) set_target_properties(glslang PROPERTIES PREFIX "") endif() if(ENABLE_HLSL) target_link_libraries(glslang HLSL) endif() if(WIN32) source_group("Public" REGULAR_EXPRESSION "Public/*") source_group("MachineIndependent" REGULAR_EXPRESSION "MachineIndependent/[^/]*") source_group("Include" REGULAR_EXPRESSION "Include/[^/]*") source_group("GenericCodeGen" REGULAR_EXPRESSION "GenericCodeGen/*") source_group("MachineIndependent\\Preprocessor" REGULAR_EXPRESSION "MachineIndependent/preprocessor/*") endif(WIN32) if(ENABLE_GLSLANG_INSTALL) if(BUILD_SHARED_LIBS) install(TARGETS glslang EXPORT glslangTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) else() install(TARGETS glslang EXPORT glslangTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() install(EXPORT glslangTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif(ENABLE_GLSLANG_INSTALL) if(ENABLE_GLSLANG_INSTALL) foreach(file ${HEADERS}) get_filename_component(dir ${file} DIRECTORY) install(FILES ${file} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/${dir}) endforeach() endif(ENABLE_GLSLANG_INSTALL)