#
#  Lightmetrica - A modern, research-oriented renderer
# 
#  Copyright (c) 2015 Hisanari Otsu
#  
#  Permission is hereby granted, free of charge, to any person obtaining a copy
#  of this software and associated documentation files (the "Software"), to deal
#  in the Software without restriction, including without limitation the rights
#  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
#  copies of the Software, and to permit persons to whom the Software is
#  furnished to do so, subject to the following conditions:
#  
#  The above copyright notice and this permission notice shall be included in
#  all copies or substantial portions of the Software.
#  
#  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
#  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
#  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
#  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
#  THE SOFTWARE.
#

include(CMakeParseArguments)

function(add_plugin)
    cmake_parse_arguments(_ARG "NO_INSTALL" "NAME" "SOURCE" ${ARGN})

    # Create a library 
    add_library(${_ARG_NAME} SHARED ${_ARG_SOURCE})
    add_dependencies(${_ARG_NAME} liblightmetrica)

    # Output directory
    set(_OUTPUT_ROOT "${CMAKE_SOURCE_DIR}/${LM_DIST_DIR_NAME}")
    set_target_properties(${_ARG_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${_OUTPUT_ROOT}/bin/plugin")
    set_target_properties(${_ARG_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${_OUTPUT_ROOT}/bin/plugin")
    set_target_properties(${_ARG_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${_OUTPUT_ROOT}/bin/plugin")
    set_target_properties(${_ARG_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY_DEBUG "${_OUTPUT_ROOT}/bin/Debug/plugin")
    set_target_properties(${_ARG_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${_OUTPUT_ROOT}/bin/Debug/plugin")
    set_target_properties(${_ARG_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG "${_OUTPUT_ROOT}/bin/Debug/plugin")
    set_target_properties(${_ARG_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY_RELEASE "${_OUTPUT_ROOT}/bin/Release/plugin")
    set_target_properties(${_ARG_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${_OUTPUT_ROOT}/bin/Release/plugin")
    set_target_properties(${_ARG_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE "${_OUTPUT_ROOT}/bin/Release/plugin")
    set_target_properties(${_ARG_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO "${_OUTPUT_ROOT}/bin/RelWithDebInfo/plugin")
    set_target_properties(${_ARG_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO "${_OUTPUT_ROOT}/bin/RelWithDebInfo/plugin")
    set_target_properties(${_ARG_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${_OUTPUT_ROOT}/bin/RelWithDebInfo/plugin")
    
    # Remove automatic lib- prefix
    set_target_properties(${_ARG_NAME} PROPERTIES PREFIX "")

    # Solution directory
    set_target_properties(${_ARG_NAME} PROPERTIES FOLDER "plugin")

    # Install
    if (NOT _ARG_NO_INSTALL)
        install(TARGETS ${_ARG_NAME}
            RUNTIME DESTINATION "lightmetrica/bin/plugin"
            LIBRARY DESTINATION "lightmetrica/bin/plugin")
    endif()
endfunction()
