From 4a087d1000fc460fca749baaa55b663b95b7b55f Mon Sep 17 00:00:00 2001 From: Max Wash Date: Sun, 31 May 2026 17:32:44 +0100 Subject: [PATCH] cmake: update FindFX module --- cmake/FindFX.cmake | 54 ++++++++++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/cmake/FindFX.cmake b/cmake/FindFX.cmake index a42535e..3e6564d 100644 --- a/cmake/FindFX.cmake +++ b/cmake/FindFX.cmake @@ -51,15 +51,7 @@ endif () set(assemblies ${FX_FIND_COMPONENTS}) set(required_vars) - -if (NOT FX_INCLUDE_DIR) - find_path(FX_INCLUDE_DIR - NAMES fx/misc.h ${FX_FIND_ARGS} - PATH_SUFFIXES include - PATHS ${FX_SEARCH_PATHS}) -endif () - -set(required_vars FX_INCLUDE_DIR) +set(in_tree FALSE) foreach (assembly ${assemblies}) string(TOLOWER ${assembly} header_name) @@ -69,10 +61,15 @@ foreach (assembly ${assemblies}) set(lib_name ${assembly}${_lib_suffix}) if (NOT ${macro_name}_LIBRARY) - find_library(${macro_name}_LIBRARY - NAMES ${lib_name} ${FX_FIND_ARGS} - PATH_SUFFIXES lib - PATHS ${FX_SEARCH_PATHS}) + if (TARGET ${assembly}) + set (${macro_name}_LIBRARY ${assembly}) + set(in_tree TRUE) + else () + find_library(${macro_name}_LIBRARY + NAMES ${lib_name} ${FX_FIND_ARGS} + PATH_SUFFIXES lib + PATHS ${FX_SEARCH_PATHS}) + endif () else () # on Windows, ensure paths are in canonical format (forward slahes): file(TO_CMAKE_PATH "${${macro_name}_LIBRARY}" ${macro_name}_LIBRARY) @@ -81,6 +78,14 @@ foreach (assembly ${assemblies}) list(APPEND required_vars ${macro_name}_LIBRARY) endforeach (assembly) +if (NOT FX_INCLUDE_DIR AND NOT in_tree) + list(APPEND required_vars FX_INCLUDE_DIR) + find_path(FX_INCLUDE_DIR + NAMES fx/misc.h ${FX_FIND_ARGS} + PATH_SUFFIXES include + PATHS ${FX_SEARCH_PATHS}) +endif () + unset(FX_FIND_ARGS) include(FindPackageHandleStandardArgs) @@ -106,18 +111,21 @@ if (FX_FOUND) set(lib_name ${assembly}${_lib_suffix}) if (NOT TARGET FX::${target_name}) - add_library(FX::${target_name} UNKNOWN IMPORTED) - set_target_properties(FX::${target_name} PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${FX_INCLUDE_DIR}") - target_compile_definitions(FX::${target_name} INTERFACE _CRT_SECURE_NO_WARNINGS=1) + if (TARGET ${assembly}) + add_library(FX::${target_name} ALIAS ${assembly}) + else () + add_library(FX::${target_name} UNKNOWN IMPORTED) + set_target_properties(FX::${target_name} PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${FX_INCLUDE_DIR}") + target_compile_definitions(FX::${target_name} INTERFACE _CRT_SECURE_NO_WARNINGS=1) - if (FX_STATIC) - target_compile_definitions(FX::${target_name} INTERFACE FX_STATIC=1) + if (FX_STATIC) + target_compile_definitions(FX::${target_name} INTERFACE FX_STATIC=1) + endif () + set_target_properties(FX::${target_name} PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "${${macro_name}_LIBRARY}") endif () - - set_target_properties(FX::${target_name} PROPERTIES - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - IMPORTED_LOCATION "${${macro_name}_LIBRARY}") set(created_targets ${created_targets} ${assembly}) endif () endforeach (assembly)