diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,7 +30,7 @@ set(CMAKE_AUTORCC ON) pkg_check_modules(FLATPAK flatpak>=0.6.12) -find_package(LIBFWUPD 1.0.7) +find_package(LIBFWUPD 1.0.6) if(NOT CMAKE_VERSION VERSION_LESS "3.10.0") # CMake 3.9+ warns about automoc on files without Q_OBJECT, and doesn't know about other macros. diff --git a/cmake/FindLIBFWUPD.cmake b/cmake/FindLIBFWUPD.cmake --- a/cmake/FindLIBFWUPD.cmake +++ b/cmake/FindLIBFWUPD.cmake @@ -29,7 +29,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. -if(LIBFWUPD_INCLUDE_DIRS AND LIBFWUPD_LIBRARIES) +if(LIBFWUPD_INCLUDE_DIRS AND LIBFWUPD_LIBRARIES AND LIBFWUPD_CONFIG_INCLUDE_DIRS) set(LIBFWUPD_FOUND TRUE) else () @@ -43,9 +43,41 @@ PATH_SUFFIXES fwupd-1 HINTS fwupd-1/libfwupd ) + + find_path (LIBFWUPD_CONFIG_INCLUDE_DIRS + NAMES fwupd-version.h + PATH_SUFFIXES fwupd-1/libfwupd + HINTS fwupd-1/libfwupd + ) + + set(LIBFWUPD_FIND_VERSION "${LIBFWUPD_FIND_VERSION_MAJOR}.${LIBFWUPD_FIND_VERSION_MINOR}.${LIBFWUPD_FIND_VERSION_PATCH}") + unset(LIBFWUPD_FIND_VERSION_MAJOR) + unset(LIBFWUPD_FIND_VERSION_MINOR) + unset(LIBFWUPD_FIND_VERSION_PATCH) + + if(LIBFWUPD_CONFIG_INCLUDE_DIRS) + file(STRINGS "${LIBFWUPD_CONFIG_INCLUDE_DIRS}/fwupd-version.h" LIBFWUPD_MAJOR_VERSION REGEX "^#define FWUPD_MAJOR_VERSION[\t]*([0-9]*)") + string(REGEX REPLACE "^#define FWUPD_MAJOR_VERSION[\t]*([0-9]*)" "\\1" LIBFWUPD_MAJOR_VERSION "${LIBFWUPD_MAJOR_VERSION}") + string(REPLACE "(" "" LIBFWUPD_MAJOR_VERSION "${LIBFWUPD_MAJOR_VERSION}") + string(REPLACE ")" "" LIBFWUPD_MAJOR_VERSION "${LIBFWUPD_MAJOR_VERSION}") + file(STRINGS "${LIBFWUPD_CONFIG_INCLUDE_DIRS}/fwupd-version.h" LIBFWUPD_MINOR_VERSION REGEX "^#define FWUPD_MINOR_VERSION[\t]*([0-9]*)") + string(REGEX REPLACE "^#define FWUPD_MINOR_VERSION[\t]*([0-9]*)" "\\1" LIBFWUPD_MINOR_VERSION "${LIBFWUPD_MINOR_VERSION}") + string(REPLACE "(" "" LIBFWUPD_MINOR_VERSION "${LIBFWUPD_MINOR_VERSION}") + string(REPLACE ")" "" LIBFWUPD_MINOR_VERSION "${LIBFWUPD_MINOR_VERSION}") + file(STRINGS "${LIBFWUPD_CONFIG_INCLUDE_DIRS}/fwupd-version.h" LIBFWUPD_MICRO_VERSION REGEX "^#define FWUPD_MICRO_VERSION[\t]*([0-9]*)") + string(REGEX REPLACE "^#define FWUPD_MICRO_VERSION[\t]*([0-9]*)" "\\1" LIBFWUPD_MICRO_VERSION "${LIBFWUPD_MICRO_VERSION}") + string(REPLACE "(" "" LIBFWUPD_MICRO_VERSION "${LIBFWUPD_MICRO_VERSION}") + string(REPLACE ")" "" LIBFWUPD_MICRO_VERSION "${LIBFWUPD_MICRO_VERSION}") + set(LIBFWUPD_VERSION "${LIBFWUPD_MAJOR_VERSION}.${LIBFWUPD_MINOR_VERSION}.${LIBFWUPD_MICRO_VERSION}") + unset(LIBFWUPD_MAJOR_VERSION) + unset(LIBFWUPD_MINOR_VERSION) + unset(LIBFWUPD_MICRO_VERSION) + endif() if(LIBFWUPD_INCLUDE_DIRS AND LIBFWUPD_LIBRARIES) - set(LIBFWUPD_FOUND TRUE) + if(((LIBFWUPD_VERSION VERSION_GREATER LIBFWUPD_FIND_VERSION) OR (LIBFWUPD_VERSION VERSION_EQUAL LIBFWUPD_FIND_VERSION))) + set(LIBFWUPD_FOUND TRUE) + endif() endif() endif()