File: ObjFWConfig.cmake.in

package info (click to toggle)
objfw 1.5.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 8,996 kB
  • sloc: objc: 106,830; asm: 5,083; sh: 4,094; makefile: 1,635; ansic: 709; xml: 368; pascal: 243
file content (103 lines) | stat: -rw-r--r-- 2,834 bytes parent folder | download
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()