all repos — mgba @ 88212fc2deb72b3ab85313852b0b091edc88403b

mGBA Game Boy Advance Emulator

src/platform/cmake/FindFeature.cmake (view raw)

 1include(FindPkgConfig)
 2function(find_feature FEATURE_NAME FEATURE_REQUIRES)
 3	if (NOT ${FEATURE_NAME})
 4		return()
 5	endif()
 6	if (DISABLE_DEPS)
 7		set(${FEATURE_NAME} OFF PARENT_SCOPE)
 8		return()
 9	endif()
10	foreach(NAMES ${FEATURE_REQUIRES})
11		string(REPLACE "|" ";" NAMELIST "${NAMES}")
12		set(FOUND OFF)
13		foreach(REQUIRE ${NAMELIST})
14			if(NOT ${REQUIRE}_FOUND)
15				find_package(${REQUIRE} QUIET)
16				if(NOT ${REQUIRE}_FOUND)
17					pkg_search_module(${REQUIRE} ${REQUIRE})
18				endif()
19			endif()
20			if(${REQUIRE}_FOUND)
21				string(TOUPPER ${REQUIRE} UREQUIRE)
22				set(${UREQUIRE}_CFLAGS_OTHER ${${REQUIRE}_CFLAGS_OTHER} PARENT_SCOPE)
23				set(${UREQUIRE}_FOUND ${${REQUIRE}_FOUND} PARENT_SCOPE)
24				set(${UREQUIRE}_INCLUDE_DIRS ${${REQUIRE}_INCLUDE_DIRS} PARENT_SCOPE)
25				set(${UREQUIRE}_VERSION_STRING ${${REQUIRE}_VERSION_STRING} PARENT_SCOPE)
26				if (APPLE)
27					set(IS_FRAMEWORK OFF)
28					set(LIBS)
29					foreach(LIB IN LISTS ${REQUIRE}_LIBRARIES)
30						if(LIB STREQUAL "-framework")
31							set(IS_FRAMEWORK ON)
32						elseif(IS_FRAMEWORK)
33							list(APPEND LIBS "-framework ${LIB}")
34							set(IS_FRAMEWORK OFF)
35						else()
36							list(APPEND LIBS ${LIB})
37						endif()
38					endforeach()
39					set(${UREQUIRE}_LIBRARIES ${LIBS} PARENT_SCOPE)
40				else()
41					set(${UREQUIRE}_LIBRARIES ${${REQUIRE}_LIBRARIES} PARENT_SCOPE)
42				endif()
43				set(${UREQUIRE}_LIBRARY_DIRS ${${REQUIRE}_LIBRARY_DIRS} PARENT_SCOPE)
44				set(${UREQUIRE}_LDFLAGS_OTHER ${${REQUIRE}_LDFLAGS_OTHER} PARENT_SCOPE)
45				set(FOUND ON)
46				break()
47			endif()
48		endforeach()
49
50		if (NOT FOUND)
51			message(WARNING "Requested module ${NAMES} missing for feature ${FEATURE_NAME}. Feature disabled.")
52			set(${FEATURE_NAME} OFF PARENT_SCOPE)
53			return()
54		endif()
55	endforeach()
56endfunction()