From 4d8a27701ba8f278ea61f513218dac1af3b7e589 Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Thu, 5 Mar 2015 09:01:31 +0100 Subject: [PATCH] Add cmake macro autoheaderchecks(). This macro prints out any include file defined as HAVE_..._H in the config header template and not in the related cmake configure checks file. Bug: https://bugs.freedesktop.org/show_bug.cgi?id=85418 Reviewed-by: Simon McVittie --- cmake/CMakeLists.txt | 1 + cmake/modules/MacrosAutotools.cmake | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 607d9b1..8c006d0 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -17,6 +17,7 @@ endif(COMMAND cmake_policy) include(MacrosAutotools) autoinit(../configure.ac) autoversion(dbus) +autoheaderchecks(../config.h.in ConfigureChecks.cmake) # used by file version info set (DBUS_PATCH_VERSION "0") diff --git a/cmake/modules/MacrosAutotools.cmake b/cmake/modules/MacrosAutotools.cmake index a218db9..fac94a1 100644 --- a/cmake/modules/MacrosAutotools.cmake +++ b/cmake/modules/MacrosAutotools.cmake @@ -116,6 +116,34 @@ macro(autodefine name) endforeach() endmacro() +macro(autoheaderchecks config_h_in configure_checks_file) + file(READ ${configure_checks_file} configure_checks_file_raw) + file(READ ${config_h_in} _config_h_raw) + STRING(REGEX REPLACE ";" "\\\\;" _config_h "${_config_h_raw}") + STRING(REGEX REPLACE "\n" ";" _config_h "${_config_h}") + foreach(line ${_config_h}) + #message(STATUS ${line}) + if(line MATCHES ".*HAVE_.*_H.*") + string (REGEX REPLACE ".*HAVE_(.*)_H.*" "\\1" key ${line}) + if(key MATCHES ".*_.*") + string(REGEX MATCH "^[A-Z0-9]+" dir ${key}) + string(REGEX MATCH "[A-Z0-9]+$" file ${key}) + string(TOLOWER ${dir} dirname) + string(TOLOWER ${file} filename) + set(check "check_include_file(${dirname}/${filename}.h HAVE_${key}_H)") + else() + set(file ${key}) + string(TOLOWER ${file} filename) + set(check "check_include_file(${filename}.h HAVE_${key}_H)") + endif() + set(full_key "HAVE_${key}_H") + if(NOT configure_checks_file_raw MATCHES ".*${full_key}.*") + message("${check}") + endif() + endif() + endforeach() +endmacro(autoheaderchecks) + # # parses config.h template and create cmake equivalent # not implemented yet -- 2.7.4