1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
block(SCOPE_FOR VARIABLES PROPAGATE ObjFW_CONFIG_EXECUTABLE)
set(prefix "@prefix@")
set(exec_prefix "@exec_prefix@")
set(ObjFW_CONFIG_EXECUTABLE "@bindir@/@BIN_PREFIX@objfw-config")
endblock()
foreach(package ObjFW ${ObjFW_FIND_COMPONENTS})
if(NOT package STREQUAL "ObjFW")
set(package_flags "--package;${package}")
execute_process(
COMMAND ${ObjFW_CONFIG_EXECUTABLE} ${package_flags}
RESULT_VARIABLE package_not_found
ERROR_QUIET
)
if(package_not_found)
if(NOT ObjFW_FIND_REQUIRED)
return()
endif()
message(FATAL_ERROR
"ObjFW package ${package} not found")
endif()
else()
set(package_flags "")
endif()
add_library(ObjFW::${package} IMPORTED INTERFACE)
execute_process(
COMMAND ${ObjFW_CONFIG_EXECUTABLE} --cppflags --objcflags
${package_flags}
OUTPUT_VARIABLE compile_options
OUTPUT_STRIP_TRAILING_WHITESPACE
COMMAND_ERROR_IS_FATAL ANY
)
if(APPLE)
execute_process(
COMMAND ${ObjFW_CONFIG_EXECUTABLE}
--framework-libs --ldflags ${package_flags}
OUTPUT_VARIABLE link_options
OUTPUT_STRIP_TRAILING_WHITESPACE
COMMAND_ERROR_IS_FATAL ANY
)
else()
execute_process(
COMMAND ${ObjFW_CONFIG_EXECUTABLE} --libs --ldflags
${package_flags}
OUTPUT_VARIABLE link_options
OUTPUT_STRIP_TRAILING_WHITESPACE
COMMAND_ERROR_IS_FATAL ANY
)
endif()
string(REPLACE " " ";" compile_options "${compile_options}")
string(REPLACE " " ";" link_options "${link_options}")
string(REPLACE "-framework;" "-framework "
link_options "${link_options}")
foreach(flag ${compile_options})
if(flag MATCHES "^-I")
string(REGEX REPLACE "^-I" "" dir ${flag})
target_include_directories(ObjFW::${package}
INTERFACE ${dir})
elseif(flag MATCHES "^-D")
target_compile_definitions(ObjFW::${package}
INTERFACE ${flag})
else()
target_compile_options(ObjFW::${package} INTERFACE
$<$<BOOL:$<OBJC_COMPILER_VERSION>>:${flag}>)
endif()
endforeach()
foreach(flag ${link_options})
if(flag MATCHES "^-l")
string(REGEX REPLACE "^-l" "" lib ${flag})
target_link_libraries(ObjFW::${package}
INTERFACE ${lib})
elseif(flag MATCHES "^-L")
string(REGEX REPLACE "^-L" "" dir ${flag})
target_link_directories(ObjFW::${package}
INTERFACE ${dir})
elseif(flag MATCHES "^-framework ")
target_link_libraries(ObjFW::${package}
INTERFACE ${flag})
else()
target_link_options(ObjFW::${package} INTERFACE ${flag})
endif()
endforeach()
endforeach()
add_library(ObjFW::ARC IMPORTED INTERFACE)
execute_process(
COMMAND ${ObjFW_CONFIG_EXECUTABLE} --arc
OUTPUT_VARIABLE _objfw_arc_options
OUTPUT_STRIP_TRAILING_WHITESPACE
COMMAND_ERROR_IS_FATAL ANY
)
string(REPLACE " " ";" _objfw_arc_options "${_objfw_arc_options}")
foreach(flag ${_objfw_arc_options})
target_compile_options(ObjFW::ARC INTERFACE ${flag})
endforeach()
|