set(SOURCES
        ../GlslangToSpv.cpp
        ../InReadableOrder.cpp
        ../Logger.cpp
        ../SpvBuilder.cpp
        ../SpvPostProcess.cpp
        ../doc.cpp
        ../disassemble.cpp)

set(SPVREMAP_SOURCES
        ../SPVRemapper.cpp
        ../doc.cpp)

set(HEADERS
        ../bitutils.h
        ../spirv.hpp
        ../GLSL.std.450.h
        ../GLSL.ext.EXT.h
        ../GLSL.ext.KHR.h
        ../GlslangToSpv.h
        ../hex_float.h
        ../Logger.h
        ../SpvBuilder.h
        ../spvIR.h
        ../doc.h
        ../disassemble.h)

set(SPVREMAP_HEADERS
        ../SPVRemapper.h
        ../doc.h)

if(ENABLE_AMD_EXTENSIONS)
    list(APPEND
            HEADERS
            ../GLSL.ext.AMD.h)
endif(ENABLE_AMD_EXTENSIONS)

if(ENABLE_NV_EXTENSIONS)
    list(APPEND
            HEADERS
            ../GLSL.ext.NV.h)
endif(ENABLE_NV_EXTENSIONS)

add_library(SPIRV STATIC ${SOURCES} ${HEADERS})
target_include_directories(SPIRV PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/..)
target_include_directories(SPIRV PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../..)
set_property(TARGET SPIRV PROPERTY FOLDER glslang)
set_property(TARGET SPIRV PROPERTY POSITION_INDEPENDENT_CODE ON)

glslang_add_build_info_dependency(SPIRV)

add_library(SPVRemapper STATIC ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
set_property(TARGET SPVRemapper PROPERTY FOLDER glslang)
set_property(TARGET SPVRemapper PROPERTY POSITION_INDEPENDENT_CODE ON)

if(ENABLE_OPT)
    target_include_directories(SPIRV
            PRIVATE ${spirv-tools_SOURCE_DIR}/include
            PRIVATE ${spirv-tools_SOURCE_DIR}/source
            )
    target_link_libraries(SPIRV glslang SPIRV-Tools-opt SPVRemapper)
else()
    target_link_libraries(SPIRV glslang)
endif(ENABLE_OPT)

if(WIN32)
    source_group("Source" FILES ${SOURCES} ${HEADERS})
    source_group("Source" FILES ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
endif(WIN32)

if(ENABLE_GLSLANG_INSTALL)
    install(TARGETS SPIRV SPVRemapper
            ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})

    install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SPIRV/)
endif(ENABLE_GLSLANG_INSTALL)
