diff --git a/fxsdk/cmake/FindSimpleLibrary.cmake b/fxsdk/cmake/FindSimpleLibrary.cmake new file mode 100644 index 0000000..ce526e9 --- /dev/null +++ b/fxsdk/cmake/FindSimpleLibrary.cmake @@ -0,0 +1,36 @@ +function(find_simple_library _library _version_header _version_macro) + cmake_parse_arguments(CLV "" "PATH_VAR;VERSION_VAR" "" ${ARGN}) + + # Find the library path + execute_process( + COMMAND ${CMAKE_C_COMPILER} "-print-file-name=${_library}" + OUTPUT_VARIABLE LIB_PATH OUTPUT_STRIP_TRAILING_WHITESPACE) + + if("${LIB_PATH}" STREQUAL "${_library}") + message("lib not found") + return() + endif() + + if(DEFINED CLV_PATH_VAR) + set("${CLV_PATH_VAR}" "${LIB_PATH}" PARENT_SCOPE) + endif() + + # Find the version header + execute_process( + COMMAND ${CMAKE_C_COMPILER} "-print-file-name=${_version_header}" + OUTPUT_VARIABLE HEADER_PATH OUTPUT_STRIP_TRAILING_WHITESPACE) + + if("${HEADER_PATH}" STREQUAL "${_version_header}") + return() + endif() + + # Extract the version from the header + set(SED "s/^\\s*#\\s*define\\s*${_version_macro}\\s*\"(\\S+)\"\\s*$/\\1/p; d") + execute_process( + COMMAND sed -E "${SED}" "${HEADER_PATH}" + OUTPUT_VARIABLE VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) + + if(DEFINED CLV_VERSION_VAR) + set("${CLV_VERSION_VAR}" "${VERSION}" PARENT_SCOPE) + endif() +endfunction()