[cmake-commits] alex committed CMakeLists.txt 1.14 1.15 CheckStructHasMember.cmake NONE 1.1

cmake-commits at cmake.org cmake-commits at cmake.org
Thu Jul 12 15:00:39 EDT 2007


Update of /cvsroot/CMake/CMake/Modules
In directory public:/mounts/ram/cvs-serv19767

Modified Files:
	CMakeLists.txt 
Added Files:
	CheckStructHasMember.cmake 
Log Message:

ENH: add macro to test if a member has specified struct, e.g.
check_struct_has_member("struct stat" st_rdev    "${CFG_HEADERS}" HAVE_STRUCT_STAT_ST_RDEV)

Alex


Index: CMakeLists.txt
===================================================================
RCS file: /cvsroot/CMake/CMake/Modules/CMakeLists.txt,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- CMakeLists.txt	11 Jul 2007 20:22:04 -0000	1.14
+++ CMakeLists.txt	12 Jul 2007 19:00:37 -0000	1.15
@@ -1,5 +1,5 @@
 # just install the modules
-# new file added, force rerunning cmake
+# new file added, force rerunning cmake #
 
 SUBDIRS(Platform)
 INSTALL_FILES(${CMAKE_DATA_DIR}/Modules .*\\.cmake$)

--- NEW FILE: CheckStructHasMember.cmake ---
# - Check if the given struct or class has the specified member variable
# CHECK_STRUCT_HAS_MEMBER (STRUCT MEMBER HEADER VARIABLE)
#
#  STRUCT - the name of the struct or class you are interested in
#  MEMBER - the member which existence you want to check
#  HEADER - the header(s) where the prototype should be declared
#  VARIABLE - variable to store the result
#
# The following variables may be set before calling this macro to
# modify the way the check is run:
#
#  CMAKE_REQUIRED_FLAGS = string of compile command line flags
#  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
#  CMAKE_REQUIRED_INCLUDES = list of include directories
#
# Example: CHECK_STRUCT_HAS_MEMBER("struct timeval" tv_sec sys/select.h HAVE_TIMEVAL_TV_SEC)


INCLUDE(CheckCSourceCompiles)

MACRO (CHECK_STRUCT_HAS_MEMBER _STRUCT _MEMBER _HEADER _RESULT)
   SET(_INCLUDE_FILES)
   FOREACH (it ${_HEADER})
      SET(_INCLUDE_FILES "${_INCLUDE_FILES}#include <${it}>\n")
   ENDFOREACH (it)

   SET(_CHECK_STRUCT_MEMBER_SOURCE_CODE "
${_INCLUDE_FILES}
int main()
{
   ${_STRUCT}* tmp;
   tmp->${_MEMBER};
  return 0;
}
")
   CHECK_C_SOURCE_COMPILES("${_CHECK_STRUCT_MEMBER_SOURCE_CODE}" ${_RESULT})

ENDMACRO (CHECK_STRUCT_HAS_MEMBER)




More information about the Cmake-commits mailing list