You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

59 lines
2.3 KiB

# copied from CARL
macro(add_imported_library_interface name include)
add_library(${name} INTERFACE IMPORTED)
set_target_properties(${name} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${include}")
endmacro(add_imported_library_interface)
macro(add_imported_library name type lib include)
# Workaround from https://cmake.org/Bug/view.php?id=15052
file(MAKE_DIRECTORY "${include}")
if("${lib}" STREQUAL "")
if("${type}" STREQUAL "SHARED")
add_library(${name} INTERFACE IMPORTED)
set_target_properties(${name} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${include}")
endif()
else()
add_library(${name}_${type} ${type} IMPORTED)
set_target_properties(${name}_${type} PROPERTIES IMPORTED_LOCATION "${lib}")
set_target_properties(${name}_${type} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${include}")
endif()
endmacro(add_imported_library)
macro(export_option name)
list(APPEND EXPORTED_OPTIONS "${name}")
endmacro(export_option)
macro(export_target output TARGET)
get_target_property(TYPE ${TARGET} TYPE)
if(TYPE STREQUAL "SHARED_LIBRARY")
get_target_property(LOCATION ${TARGET} IMPORTED_LOCATION)
get_target_property(INCLUDE ${TARGET} INTERFACE_INCLUDE_DIRECTORIES)
set(${output} "${${output}}
add_library(${TARGET} SHARED IMPORTED)
set_target_properties(${TARGET} PROPERTIES IMPORTED_LOCATION \"${LOCATION}\")
set_target_properties(${TARGET} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES \"${INCLUDE}\")
")
elseif(TYPE STREQUAL "STATIC_LIBRARY")
get_target_property(LOCATION ${TARGET} IMPORTED_LOCATION)
get_target_property(INCLUDE ${TARGET} INTERFACE_INCLUDE_DIRECTORIES)
set(${output} "${${output}}
add_library(${TARGET} STATIC IMPORTED)
set_target_properties(${TARGET} PROPERTIES IMPORTED_LOCATION \"${LOCATION}\")
set_target_properties(${TARGET} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES \"${INCLUDE}\")
")
if(NOT "${ARGN}" STREQUAL "")
set(${output} "${${output}}set_target_properties(${TARGET} PROPERTIES IMPORTED_LINK_INTERFACE_LIBRARIES \"${ARGN}\")
")
endif()
elseif(TYPE STREQUAL "INTERFACE_LIBRARY")
get_target_property(INCLUDE ${TARGET} INTERFACE_INCLUDE_DIRECTORIES)
set(${output} "${${output}}
add_library(${TARGET} INTERFACE IMPORTED)
set_target_properties(${TARGET} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES \"${INCLUDE}\")
")
else()
message(STATUS "Unknown type ${TYPE}")
endif()
endmacro(export_target)