cmake: move functions to EflMacros.cmake
authorGustavo Sverzut Barbieri <barbieri@profusion.mobi>
Mon, 23 Jan 2017 17:58:17 +0000 (15:58 -0200)
committerGustavo Sverzut Barbieri <barbieri@profusion.mobi>
Mon, 23 Jan 2017 18:09:50 +0000 (16:09 -0200)
cmake/helpers/CommonHeaderChecks.cmake
cmake/helpers/EflMacros.cmake

index c895f79..a106c9d 100644 (file)
@@ -1,120 +1,3 @@
-unset(HEADER_FILE_CONTENT CACHE)
-
-# HEADER_CHECK(header [NAME variable] [INCLUDE_FILES extra1.h .. extraN.h])
-#
-# Check if the header file exists, in such case define variable
-# in configuration file.
-#
-# Variable defaults to HAVE_${HEADER}, where HEADER is the uppercase
-# representation of the first parameter. It can be overridden using
-# NAME keyword.
-#
-# To include extra files, then use INCLUDE_FILES keyword.
-function(HEADER_CHECK header)
-  string(TOUPPER HAVE_${header} var)
-  string(REGEX REPLACE "[^a-zA-Z0-9]" "_" var "${var}")
-  string(REGEX REPLACE "_{2,}" "_" var "${var}")
-
-  cmake_parse_arguments(PARAMS "" "NAME" "INCLUDE_FILES" ${ARGN})
-
-  if(PARAMS_NAME)
-    set(var ${PARAMS_NAME})
-  endif()
-
-  set(CMAKE_EXTRA_INCLUDE_FILES "${PARAMS_INCLUDE_FILES}")
-
-  CHECK_INCLUDE_FILE(${header} ${var})
-
-  if(${${var}})
-    SET_GLOBAL(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#define ${var} 1\n")
-  else()
-    SET_GLOBAL(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#undef ${var}\n")
-  endif()
-endfunction()
-
-# FUNC_CHECK(func [NAME variable]
-#            [INCLUDE_FILES header1.h .. headerN.h]
-#            [LIBRARIES lib1 ... libN]
-#            [DEFINITIONS -DA=1 .. -DN=123]
-#            [FLAGS -cmdlineparam1 .. -cmdlineparamN]
-#            [CXX])
-#
-# Check if the function exists, in such case define variable in
-# configuration file.
-#
-# Variable defaults to HAVE_${FUNC}, where FUNC is the uppercase
-# representation of the first parameter. It can be overridden using
-# NAME keyword.
-#
-# To define include files use INCLUDE_FILES keyword.
-#
-# To use C++ compiler, use CXX keyword
-function(FUNC_CHECK func)
-  string(TOUPPER HAVE_${func} var)
-  string(REGEX REPLACE "_{2,}" "_" var "${var}")
-
-  cmake_parse_arguments(PARAMS "CXX" "NAME" "INCLUDE_FILES;LIBRARIES;DEFINITIONS;FLAGS" ${ARGN})
-
-  set(CMAKE_REQUIRED_LIBRARIES "${PARAMS_LIBRARIES}")
-  set(CMAKE_REQUIRED_DEFINITIONS "${PARAMS_DEFINITIONS}")
-  set(CMAKE_REQUIRED_FLAGS "${PARAMS_FLAGS}")
-
-  if(PARAMS_CXX)
-    check_cxx_symbol_exists(${func} "${PARAMS_INCLUDE_FILES}" ${var})
-  else()
-    check_symbol_exists(${func} "${PARAMS_INCLUDE_FILES}" ${var})
-  endif()
-
-  if(${${var}} )
-    SET_GLOBAL(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#define ${var} 1\n")
-  else()
-    SET_GLOBAL(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#undef ${var}\n")
-  endif()
-endfunction()
-
-# TYPE_CHECK(type [NAME variable]
-#           [INCLUDE_FILES file1.h ... fileN.h]
-#           [LIBRARIES lib1 ... libN]
-#           [DEFINITIONS -DA=1 .. -DN=123]
-#           [FLAGS -cmdlineparam1 .. -cmdlineparamN]
-#           [CXX])
-#
-# Check if the type exists and its size, in such case define variable
-# in configuration file.
-#
-# Variable defaults to HAVE_${TYPE}, where TYPE is the uppercase
-# representation of the first parameter. It can be overridden using
-# NAME keyword.
-#
-# To define include files use INCLUDE_FILES keyword.
-#
-# To use C++ compiler, use CXX keyword
-function(TYPE_CHECK type)
-  string(TOUPPER HAVE_${type} var)
-  string(REGEX REPLACE "_{2,}" "_" var "${var}")
-
-  cmake_parse_arguments(PARAMS "CXX" "NAME" "INCLUDE_FILES;LIBRARIES;DEFINITIONS;FLAGS" ${ARGN})
-
-  set(CMAKE_REQUIRED_LIBRARIES "${PARAMS_LIBRARIES}")
-  set(CMAKE_REQUIRED_DEFINITIONS "${PARAMS_DEFINITIONS}")
-  set(CMAKE_REQUIRED_FLAGS "${PARAMS_FLAGS}")
-  set(CMAKE_EXTRA_INCLUDE_FILES "${PARAMS_INCLUDE_FILES}")
-
-  if(PARAMS_CXX)
-    set(lang CXX)
-  else()
-    set(lang C)
-  endif()
-
-  CHECK_TYPE_SIZE(${type} ${var} LANGUAGE ${lang})
-
-  if(HAVE_${var})
-    SET_GLOBAL(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#define ${var} 1\n")
-  else()
-    SET_GLOBAL(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#undef ${var}\n")
-  endif()
-endfunction()
-
 
 FUNC_CHECK(geteuid INCLUDE_FILES unistd.h)
 FUNC_CHECK(getuid INCLUDE_FILES unistd.h)
@@ -151,25 +34,3 @@ HEADER_CHECK(sys/types.h)
 HEADER_CHECK(execinfo.h)
 HEADER_CHECK(libunwind.h NAME HAVE_UNWIND)
 
-# EFL_HEADER_CHECKS_FINALIZE(file)
-#
-# Write the configuration gathered with HEADER_CHECK(), TYPE_CHECK()
-# and FUNC_CHECK() to the given file.
-function(EFL_HEADER_CHECKS_FINALIZE file)
-  file(WRITE ${file}.new ${HEADER_FILE_CONTENT})
-  if (NOT EXISTS ${file})
-    file(RENAME ${file}.new ${file})
-    message(STATUS "${file} was generated.")
-  else()
-    file(MD5 ${file}.new _new_md5)
-    file(MD5 ${file} _old_md5)
-    if(_new_md5 STREQUAL _old_md5)
-      message(STATUS "${file} is unchanged.")
-    else()
-      file(REMOVE ${file})
-      file(RENAME ${file}.new ${file})
-      message(STATUS "${file} was updated.")
-    endif()
-  endif()
-  unset(HEADER_FILE_CONTENT CACHE) # allow to reuse with an empty contents
-endfunction()
index 516658f..dee0c56 100644 (file)
@@ -127,6 +127,146 @@ function(EFL_FINALIZE)
   add_custom_target(all-tests DEPENDS ${EFL_ALL_TESTS})
 endfunction()
 
+unset(HEADER_FILE_CONTENT CACHE)
+
+# HEADER_CHECK(header [NAME variable] [INCLUDE_FILES extra1.h .. extraN.h])
+#
+# Check if the header file exists, in such case define variable
+# in configuration file.
+#
+# Variable defaults to HAVE_${HEADER}, where HEADER is the uppercase
+# representation of the first parameter. It can be overridden using
+# NAME keyword.
+#
+# To include extra files, then use INCLUDE_FILES keyword.
+function(HEADER_CHECK header)
+  string(TOUPPER HAVE_${header} var)
+  string(REGEX REPLACE "[^a-zA-Z0-9]" "_" var "${var}")
+  string(REGEX REPLACE "_{2,}" "_" var "${var}")
+
+  cmake_parse_arguments(PARAMS "" "NAME" "INCLUDE_FILES" ${ARGN})
+
+  if(PARAMS_NAME)
+    set(var ${PARAMS_NAME})
+  endif()
+
+  set(CMAKE_EXTRA_INCLUDE_FILES "${PARAMS_INCLUDE_FILES}")
+
+  CHECK_INCLUDE_FILE(${header} ${var})
+
+  if(${${var}})
+    SET_GLOBAL(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#define ${var} 1\n")
+  else()
+    SET_GLOBAL(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#undef ${var}\n")
+  endif()
+endfunction()
+
+# FUNC_CHECK(func [NAME variable]
+#            [INCLUDE_FILES header1.h .. headerN.h]
+#            [LIBRARIES lib1 ... libN]
+#            [DEFINITIONS -DA=1 .. -DN=123]
+#            [FLAGS -cmdlineparam1 .. -cmdlineparamN]
+#            [CXX])
+#
+# Check if the function exists, in such case define variable in
+# configuration file.
+#
+# Variable defaults to HAVE_${FUNC}, where FUNC is the uppercase
+# representation of the first parameter. It can be overridden using
+# NAME keyword.
+#
+# To define include files use INCLUDE_FILES keyword.
+#
+# To use C++ compiler, use CXX keyword
+function(FUNC_CHECK func)
+  string(TOUPPER HAVE_${func} var)
+  string(REGEX REPLACE "_{2,}" "_" var "${var}")
+
+  cmake_parse_arguments(PARAMS "CXX" "NAME" "INCLUDE_FILES;LIBRARIES;DEFINITIONS;FLAGS" ${ARGN})
+
+  set(CMAKE_REQUIRED_LIBRARIES "${PARAMS_LIBRARIES}")
+  set(CMAKE_REQUIRED_DEFINITIONS "${PARAMS_DEFINITIONS}")
+  set(CMAKE_REQUIRED_FLAGS "${PARAMS_FLAGS}")
+
+  if(PARAMS_CXX)
+    check_cxx_symbol_exists(${func} "${PARAMS_INCLUDE_FILES}" ${var})
+  else()
+    check_symbol_exists(${func} "${PARAMS_INCLUDE_FILES}" ${var})
+  endif()
+
+  if(${${var}} )
+    SET_GLOBAL(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#define ${var} 1\n")
+  else()
+    SET_GLOBAL(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#undef ${var}\n")
+  endif()
+endfunction()
+
+# TYPE_CHECK(type [NAME variable]
+#           [INCLUDE_FILES file1.h ... fileN.h]
+#           [LIBRARIES lib1 ... libN]
+#           [DEFINITIONS -DA=1 .. -DN=123]
+#           [FLAGS -cmdlineparam1 .. -cmdlineparamN]
+#           [CXX])
+#
+# Check if the type exists and its size, in such case define variable
+# in configuration file.
+#
+# Variable defaults to HAVE_${TYPE}, where TYPE is the uppercase
+# representation of the first parameter. It can be overridden using
+# NAME keyword.
+#
+# To define include files use INCLUDE_FILES keyword.
+#
+# To use C++ compiler, use CXX keyword
+function(TYPE_CHECK type)
+  string(TOUPPER HAVE_${type} var)
+  string(REGEX REPLACE "_{2,}" "_" var "${var}")
+
+  cmake_parse_arguments(PARAMS "CXX" "NAME" "INCLUDE_FILES;LIBRARIES;DEFINITIONS;FLAGS" ${ARGN})
+
+  set(CMAKE_REQUIRED_LIBRARIES "${PARAMS_LIBRARIES}")
+  set(CMAKE_REQUIRED_DEFINITIONS "${PARAMS_DEFINITIONS}")
+  set(CMAKE_REQUIRED_FLAGS "${PARAMS_FLAGS}")
+  set(CMAKE_EXTRA_INCLUDE_FILES "${PARAMS_INCLUDE_FILES}")
+
+  if(PARAMS_CXX)
+    set(lang CXX)
+  else()
+    set(lang C)
+  endif()
+
+  CHECK_TYPE_SIZE(${type} ${var} LANGUAGE ${lang})
+
+  if(HAVE_${var})
+    SET_GLOBAL(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#define ${var} 1\n")
+  else()
+    SET_GLOBAL(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#undef ${var}\n")
+  endif()
+endfunction()
+
+# EFL_HEADER_CHECKS_FINALIZE(file)
+#
+# Write the configuration gathered with HEADER_CHECK(), TYPE_CHECK()
+# and FUNC_CHECK() to the given file.
+function(EFL_HEADER_CHECKS_FINALIZE file)
+  file(WRITE ${file}.new ${HEADER_FILE_CONTENT})
+  if (NOT EXISTS ${file})
+    file(RENAME ${file}.new ${file})
+    message(STATUS "${file} was generated.")
+  else()
+    file(MD5 ${file}.new _new_md5)
+    file(MD5 ${file} _old_md5)
+    if(_new_md5 STREQUAL _old_md5)
+      message(STATUS "${file} is unchanged.")
+    else()
+      file(REMOVE ${file})
+      file(RENAME ${file}.new ${file})
+      message(STATUS "${file} was updated.")
+    endif()
+  endif()
+  unset(HEADER_FILE_CONTENT CACHE) # allow to reuse with an empty contents
+endfunction()
+
 # EFL_FILES_TO_ABSOLUTE(Var Source_Dir Binary_Dir [file1 ... fileN])
 #
 # Convert list of files to absolute path. If not absolute, then