| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- # Functions for generating external plugins
- set(EXTERNAL_PLUGIN_OUTPUT_DIR "${CMAKE_BINARY_DIR}/rundir")
- # Fix XCode includes to ignore warnings on system includes
- function(target_include_directories_system _target)
- if(XCODE)
- foreach(_arg ${ARGN})
- if("${_arg}" STREQUAL "PRIVATE" OR "${_arg}" STREQUAL "PUBLIC" OR "${_arg}" STREQUAL "INTERFACE")
- set(_scope ${_arg})
- else()
- target_compile_options(${_target} ${_scope} -isystem${_arg})
- endif()
- endforeach()
- else()
- target_include_directories(${_target} SYSTEM ${_scope} ${ARGN})
- endif()
- endfunction()
- function(install_external_plugin_data_internal target source_dir target_dir)
- install(DIRECTORY ${source_dir}/
- DESTINATION "${target}/${target_dir}"
- USE_SOURCE_PERMISSIONS)
- add_custom_command(TARGET ${target} POST_BUILD
- COMMAND "${CMAKE_COMMAND}" -E copy_directory
- "${CMAKE_CURRENT_SOURCE_DIR}/${source_dir}" "${EXTERNAL_PLUGIN_OUTPUT_DIR}/$<CONFIGURATION>/${target}/${target_dir}"
- VERBATIM)
- endfunction()
- # Installs data
- # 'target' is the destination target project being installed to
- # 'data_loc' specifies the directory of the data
- function(install_external_plugin_data target data_loc)
- install_external_plugin_data_internal(${target} ${data_loc} "data")
- endfunction()
- # Installs data in an architecture-specific data directory on windows/linux (data/32bit or data/64bit). Does not apply for mac.
- # 'target' is the destination target project being installed to
- # 'data_loc' specifies the directory of the data being installed
- function(install_external_plugin_arch_data target data_loc)
- if(APPLE)
- set(_bit_suffix "")
- elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
- set(_bit_suffix "/64bit")
- else()
- set(_bit_suffix "/32bit")
- endif()
- install_external_plugin_data_internal(${target} ${data_loc} "data${_bit_suffix}")
- endfunction()
- # Installs data in the target's bin directory
- # 'target' is the destination target project being installed to
- # 'data_loc' specifies the directory of the data being installed
- function(install_external_plugin_data_to_bin target data_loc)
- if(APPLE)
- set(_bit_suffix "")
- elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
- set(_bit_suffix "/64bit")
- else()
- set(_bit_suffix "/32bit")
- endif()
- install_external_plugin_data_internal(${target} ${data_loc} "bin${_bit_suffix}")
- endfunction()
- # Installs an additional binary to a target
- # 'target' is the destination target project being installed to
- # 'additional_target' specifies the additional binary
- function(install_external_plugin_additional target additional_target)
- if(APPLE)
- set(_bit_suffix "")
- elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
- set(_bit_suffix "64bit/")
- else()
- set(_bit_suffix "32bit/")
- endif()
- set_target_properties(${additional_target} PROPERTIES
- PREFIX "")
- install(TARGETS ${additional_target}
- LIBRARY DESTINATION "bin"
- RUNTIME DESTINATION "bin")
- add_custom_command(TARGET ${additional_target} POST_BUILD
- COMMAND "${CMAKE_COMMAND}" -E copy
- "$<TARGET_FILE:${additional_target}>"
- "${EXTERNAL_PLUGIN_OUTPUT_DIR}/$<CONFIGURATION>/${target}/bin/${_bit_suffix}$<TARGET_FILE_NAME:${additional_target}>"
- VERBATIM)
- endfunction()
- # Installs the binary of the target
- # 'target' is the target project being installed
- function(install_external_plugin target)
- install_external_plugin_additional(${target} ${target})
- endfunction()
- # Installs the binary and data of the target
- # 'target' is the destination target project being installed to
- function(install_external_plugin_with_data target data_loc)
- install_external_plugin(${target})
- install_external_plugin_data(${target} ${data_loc})
- endfunction()
- # Installs an additional binary to the data of a target
- # 'target' is the destination target project being installed to
- # 'additional_target' specifies the additional binary
- function(install_external_plugin_bin_to_data target additional_target)
- install(TARGETS ${additional_target}
- LIBRARY DESTINATION "data"
- RUNTIME DESTINATION "data")
- add_custom_command(TARGET ${additional_target} POST_BUILD
- COMMAND "${CMAKE_COMMAND}" -E copy
- "$<TARGET_FILE:${additional_target}>"
- "${EXTERNAL_PLUGIN_OUTPUT_DIR}/$<CONFIGURATION>/${target}/data/$<TARGET_FILE_NAME:${additional_target}>"
- VERBATIM)
- endfunction()
- # Installs an additional binary in an architecture-specific data directory on windows/linux (data/32bit or data/64bit). Does not apply for mac.
- # 'target' is the destination target project being installed to
- # 'additional_target' specifies the additional binary
- function(install_external_plugin_bin_to_arch_data target additional_target)
- if(APPLE)
- set(_bit_suffix "")
- elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
- set(_bit_suffix "/64bit")
- else()
- set(_bit_suffix "/32bit")
- endif()
- install(TARGETS ${additional_target}
- LIBRARY DESTINATION "data${_bit_suffix}"
- RUNTIME DESTINATION "data${_bit_suffix}")
- add_custom_command(TARGET ${additional_target} POST_BUILD
- COMMAND "${CMAKE_COMMAND}" -E copy
- "$<TARGET_FILE:${additional_target}>"
- "${EXTERNAL_PLUGIN_OUTPUT_DIR}/$<CONFIGURATION>/${target}/data${_bit_suffix}/$<TARGET_FILE_NAME:${additional_target}>"
- VERBATIM)
- endfunction()
|