cmake_minimum_required(VERSION 2.6)
project(Gromacs)
-set(PROJECT_VERSION "4.0.99_development_20090221"
+set(PROJECT_VERSION "4.0.99_development_20090307"
CACHE STRING "Gromacs version string")
# Cmake modules/macros are in a subdirectory to keep this file cleaner
set(off_t 0)
endif(NOT off_t)
-
include(TestBigEndian)
test_big_endian(GMX_INTEGER_BIG_ENDIAN)
# Process FFT library settings
string(TOUPPER ${GMX_FFT_LIBRARY} ${GMX_FFT_LIBRARY})
if(${GMX_FFT_LIBRARY} STREQUAL "FFTW3")
- MESSAGE(STATUS "Using external FFT library - fftw3")
+# MESSAGE(STATUS "Using external FFT library - fftw3")
if(GMX_DOUBLE)
find_package(FFTW3 REQUIRED)
else(GMX_DOUBLE)
set(GMX_EXTRA_LIBRARIES ${GMX_EXTRA_LIBRARIES} ${FFTW3_LIBRARIES})
elseif(${GMX_FFT_LIBRARY} STREQUAL "FFTW2")
- MESSAGE(STATUS "Using external FFT library - fftw2")
+# MESSAGE(STATUS "Using external FFT library - fftw2")
if(GMX_DOUBLE)
find_package(FFTW2 REQUIRED)
else(GMX_DOUBLE)
set(GMX_FFT_FFTW2 1)
elseif(${GMX_FFT_LIBRARY} STREQUAL "MKL")
- MESSAGE(STATUS "Using external FFT library - Intel MKL")
+# MESSAGE(STATUS "Using external FFT library - Intel MKL")
find_package(MKL REQUIRED)
include_directories(${MKL_INCLUDE_DIR})
set(GMX_EXTRA_LIBRARIES ${GMX_EXTRA_LIBRARIES} ${MKL_LIBRARIES})
# - Find FFTW2
# Find the native FFTW2 includes and library, double precision
#
-# FFTW2_INCLUDES - where to find [d]fftw.h
+# FFTW2_INCLUDE_DIR - where to find [d]fftw.h
# FFTW2_LIBRARIES - List of libraries when using FFTW.
# FFTW2_FOUND - True if FFTW found.
-if (FFTW2_INCLUDES)
+if (FFTW2_INCLUDE_DIR)
# Already in cache, be silent
set (FFTW2_FIND_QUIETLY TRUE)
-endif (FFTW2_INCLUDES)
+endif (FFTW2_INCLUDE_DIR)
set(FFTW2_FOUND 0)
string(TOUPPER ${fftw2_name} fftw2_uname)
string(REPLACE "fftw" "rfftw" rfftw2_name ${fftw2_name})
if(NOT FFTW2_FOUND)
- find_path (FFTW2_INCLUDES ${fftw2_name}.h)
+ find_path (FFTW2_INCLUDE_DIR ${fftw2_name}.h)
find_library (CFFTW2_LIBRARIES ${fftw2_name})
find_library (RFFTW2_LIBRARIES ${rfftw2_name})
TRY_COMPILE(FFTW2_FOUND "${CMAKE_BINARY_DIR}"
"${CMAKE_SOURCE_DIR}/cmake/TestFFTW2.c"
- COMPILE_DEFINITIONS "-I${FFTW2_INCLUDES} -DDOUBLE -D${fftw2_uname}" )
+ COMPILE_DEFINITIONS "-I${FFTW2_INCLUDE_DIR} -DDOUBLE -D${fftw2_uname}" )
endif(NOT FFTW2_FOUND)
endforeach(fftw2_name dfftw fftw)
if(FFTW2_FOUND)
set(FFTW2_LIBRARIES "${RFFTW2_LIBRARIES} ${CFFTW2_LIBRARIES}" CACHE STRING "Result of FFTW2 library check" FORCE)
else(FFTW2_FOUND)
- set(FFTW2_INCLUDES 0)
+ set(FFTW2_INCLUDE_DIR 0)
set(FFTW2_LIBRARIES 0)
endif(FFTW2_FOUND)
# handle the QUIETLY and REQUIRED arguments and set FFTW_FOUND to TRUE if
# all listed variables are TRUE
include (FindPackageHandleStandardArgs)
-find_package_handle_standard_args (FFTW2 DEFAULT_MSG FFTW2_LIBRARIES FFTW2_INCLUDES)
+find_package_handle_standard_args (FFTW2 DEFAULT_MSG FFTW2_LIBRARIES FFTW2_INCLUDE_DIR)
-mark_as_advanced (RFFTW2_LIBRARIES CFFTW2_LIBRARIES FFTW2_LIBRARIES FFTW2_INCLUDES)
+mark_as_advanced (RFFTW2_LIBRARIES CFFTW2_LIBRARIES FFTW2_LIBRARIES FFTW2_INCLUDE_DIR)
# - Find FFTW2
# Find the native FFTW2 includes and library, double precision
#
-# FFTW2_INCLUDES - where to find [d]fftw.h
+# FFTW2_INCLUDE_DIR - where to find [d]fftw.h
# FFTW2_LIBRARIES - List of libraries when using FFTW.
# FFTW2_FOUND - True if FFTW found.
-if (FFTW2_INCLUDES)
+if (FFTW2_INCLUDE_DIR)
# Already in cache, be silent
set (FFTW2_FIND_QUIETLY TRUE)
-endif (FFTW2_INCLUDES)
+endif (FFTW2_INCLUDE_DIR)
set(FFTW2_FOUND 0)
string(TOUPPER ${fftw2_name} fftw2_uname)
string(REPLACE "fftw" "rfftw" rfftw2_name ${fftw2_name})
if(NOT FFTW2_FOUND)
- find_path (FFTW2_INCLUDES ${fftw2_name}.h)
+ find_path (FFTW2_INCLUDE_DIR ${fftw2_name}.h)
find_library (CFFTW2_LIBRARIES ${fftw2_name})
find_library (RFFTW2_LIBRARIES ${rfftw2_name})
TRY_COMPILE(FFTW2_FOUND "${CMAKE_BINARY_DIR}"
"${CMAKE_SOURCE_DIR}/cmake/TestFFTW2.c"
- COMPILE_DEFINITIONS "-I${FFTW2_INCLUDES} -D${fftw2_uname}" )
+ COMPILE_DEFINITIONS "-I${FFTW2_INCLUDE_DIR} -D${fftw2_uname}" )
endif(NOT FFTW2_FOUND)
endforeach(fftw2_name sfftw fftw)
if(FFTW2_FOUND)
set(FFTW2_LIBRARIES "${RFFTW2_LIBRARIES} ${CFFTW2_LIBRARIES}" CACHE STRING "Result of FFTW2 library check" FORCE)
else(FFTW2_FOUND)
- set(FFTW2_INCLUDES 0)
+ set(FFTW2_INCLUDE_DIR 0)
set(FFTW2_LIBRARIES 0)
endif(FFTW2_FOUND)
# handle the QUIETLY and REQUIRED arguments and set FFTW_FOUND to TRUE if
# all listed variables are TRUE
include (FindPackageHandleStandardArgs)
-find_package_handle_standard_args (FFTW2 DEFAULT_MSG FFTW2_LIBRARIES FFTW2_INCLUDES)
+find_package_handle_standard_args (FFTW2 DEFAULT_MSG FFTW2_LIBRARIES FFTW2_INCLUDE_DIR)
-mark_as_advanced (RFFTW2_LIBRARIES CFFTW2_LIBRARIES FFTW2_LIBRARIES FFTW2_INCLUDES)
+mark_as_advanced (RFFTW2_LIBRARIES CFFTW2_LIBRARIES FFTW2_LIBRARIES FFTW2_INCLUDE_DIR)
# - Find FFTW3
# Find the native FFTW3 includes and library, double precision
#
-# FFTW3_INCLUDES - where to find fftw3.h
+# FFTW3_INCLUDE_DIR - where to find fftw3.h
# FFTW3_LIBRARIES - List of libraries when using FFTW.
# FFTW3_FOUND - True if FFTW found.
-if (FFTW3_INCLUDES)
+if (FFTW3_INCLUDE_DIR)
# Already in cache, be silent
set (FFTW3_FIND_QUIETLY TRUE)
-endif (FFTW3_INCLUDES)
+endif (FFTW3_INCLUDE_DIR)
-find_path (FFTW3_INCLUDES fftw3.h)
+find_path (FFTW3_INCLUDE_DIR fftw3.h)
find_library (FFTW3_LIBRARIES NAMES fftw3)
# handle the QUIETLY and REQUIRED arguments and set FFTW_FOUND to TRUE if
# all listed variables are TRUE
include (FindPackageHandleStandardArgs)
-find_package_handle_standard_args (FFTW3 DEFAULT_MSG FFTW3_LIBRARIES FFTW3_INCLUDES)
+find_package_handle_standard_args (FFTW3 DEFAULT_MSG FFTW3_LIBRARIES FFTW3_INCLUDE_DIR)
-mark_as_advanced (FFTW3_LIBRARIES FFTW3_INCLUDES)
+mark_as_advanced (FFTW3_LIBRARIES FFTW3_INCLUDE_DIR)
# - Find FFTW3
# Find the native FFTW3 includes and library, single precision
#
-# FFTW3_INCLUDES - where to find fftw3.h
+# FFTW3_INCLUDE_DIR - where to find fftw3.h
# FFTW3_LIBRARIES - List of libraries when using FFTW.
# FFTW3_FOUND - True if FFTW found.
-if (FFTW3_INCLUDES)
+if (FFTW3_INCLUDE_DIR)
# Already in cache, be silent
set (FFTW3_FIND_QUIETLY TRUE)
-endif (FFTW3_INCLUDES)
+endif (FFTW3_INCLUDE_DIR)
-find_path (FFTW3_INCLUDES fftw3.h)
+find_path (FFTW3_INCLUDE_DIR fftw3.h)
find_library (FFTW3_LIBRARIES NAMES fftw3f)
# handle the QUIETLY and REQUIRED arguments and set FFTW_FOUND to TRUE if
# all listed variables are TRUE
include (FindPackageHandleStandardArgs)
-find_package_handle_standard_args (FFTW3 DEFAULT_MSG FFTW3_LIBRARIES FFTW3_INCLUDES)
+find_package_handle_standard_args (FFTW3 DEFAULT_MSG FFTW3_LIBRARIES FFTW3_INCLUDE_DIR)
-mark_as_advanced (FFTW3_LIBRARIES FFTW3_INCLUDES)
+mark_as_advanced (FFTW3_LIBRARIES FFTW3_INCLUDE_DIR)
# - Find Intel MKL
# Find the Intel Math Kernel Library, version 6.0 or later
#
-# MKL_INCLUDES - where to find mkl_dfti.h
+# MKL_INCLUDE_DIR - where to find mkl_dfti.h
# MKL_LIBRARIES - List of libraries when using MKL
# MKL_FOUND - True if MKL was found
-if (MKL_INCLUDES)
+if (MKL_INCLUDE_DIR)
# Already in cache, be silent
set (MKL_FIND_QUIETLY TRUE)
-endif (MKL_INCLUDES)
+endif (MKL_INCLUDE_DIR)
-find_path (MKL_INCLUDES mkl_dfti.h)
+find_path (MKL_INCLUDE_DIR mkl_dfti.h)
find_library (MKL_LIBRARIES mkl_core)
# handle the QUIETLY and REQUIRED arguments and set MKL_FOUND to TRUE if
# all listed variables are TRUE
include (FindPackageHandleStandardArgs)
-find_package_handle_standard_args (MKL DEFAULT_MSG MKL_LIBRARIES MKL_INCLUDES)
+find_package_handle_standard_args (MKL DEFAULT_MSG MKL_LIBRARIES MKL_INCLUDE_DIR)
# MKL Libraries change name ALL the time, so the user will have to set these...
-# mark_as_advanced (MKL_LIBRARIES MKL_INCLUDES)
+# mark_as_advanced (MKL_LIBRARIES MKL_INCLUDE_DIR)
# Define a default exception scheme to link against\r
# and validate user choice.\r
#\r
+IF(PTHREADS_INCLUDE_DIR)\r
+ # Already in cache, be silent\r
+ SET(PTHREADS_FIND_QUIETLY TRUE)\r
+ENDIF(PTHREADS_INCLUDE_DIR)\r
+\r
+\r
IF(NOT DEFINED PTHREADS_EXCEPTION_SCHEME)\r
# Assign default if needed\r
SET(PTHREADS_EXCEPTION_SCHEME "C")\r
-/* Test source lifted from /usr/share/autoconf/autoconf/c.m4 */
typedef int foo_t;
-static inline foo_t static_foo(){return 0;}
+static TESTINLINEDEF foo_t static_foo(){return 0;}
foo_t foo(){return 0;}
int main(int argc, char *argv[]){return 0;}
# BUILD_MACHINE
#
macro(gmx_check_build_user_time BUILD_TIME BUILD_USER BUILD_MACHINE)
- IF(NOT DEFINED ${BUILD_MACHINE})
+ IF(NOT DEFINED ${BUILD_USER})
message(STATUS "Setting build user & time")
if(CMAKE_HOST_UNIX)
- execute_process( COMMAND date OUTPUT_VARIABLE ${BUILD_TIME} OUTPUT_STRIP_TRAILING_WHITESPACE)
+ execute_process( COMMAND date OUTPUT_VARIABLE ${TMP_TIME} OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process( COMMAND whoami OUTPUT_VARIABLE TMP_USER OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process( COMMAND hostname OUTPUT_VARIABLE TMP_HOSTNAME OUTPUT_STRIP_TRAILING_WHITESPACE)
- set(${BUILD_USER} "@TMP_USER@\@@TMP_HOSTNAME@ [CMAKE]")
- execute_process( COMMAND uname -srm OUTPUT_VARIABLE ${BUILD_MACHINE} OUTPUT_STRIP_TRAILING_WHITESPACE)
+ set(${BUILD_USER} "@TMP_USER@\@@TMP_HOSTNAME@ [CMAKE]" CACHE INTERNAL "Build user")
+ set(${BUILD_TIME} "@TMP_TIME@" CACHE INTERNAL "Build date & time")
+ execute_process( COMMAND uname -srm OUTPUT_VARIABLE ${TMP_MACHINE} OUTPUT_STRIP_TRAILING_WHITESPACE)
+ set(${BUILD_MACHINE} "@TMP_MACHINE@" CACHE INTERNAL "Build host & architecture")
message(STATUS "Setting build user & time - OK")
else(CMAKE_HOST_UNIX)
- set(${BUILD_TIME} "Unknown date")
- set(${BUILD_USER} "Anonymous@unknown [CMAKE]")
- set(${BUILD_MACHINE} "@CMAKE_HOST_SYSTEM@ @CMAKE_HOST_SYSTEM_PROCESSOR@")
+ set(${BUILD_USER} "Anonymous@unknown [CMAKE]" CACHE INTERNAL "Build user")
+ set(${BUILD_TIME} "Unknown date" CACHE INTERNAL "Build date & time")
+ set(${BUILD_MACHINE} "@CMAKE_HOST_SYSTEM@ @CMAKE_HOST_SYSTEM_PROCESSOR@" CACHE INTERNAL "Build host & architecture")
message(STATUS "Setting build user & time - not on Unix, using anonymous")
endif(CMAKE_HOST_UNIX)
- ENDIF(NOT DEFINED ${BUILD_MACHINE})
+ ENDIF(NOT DEFINED ${BUILD_USER})
endmacro(gmx_check_build_user_time BUILD_TIME BUILD_USER BUILD_MACHINE)
# Remember to have a cmakedefine for it too...
MACRO(GMX_TEST_INLINE VARIABLE)
- IF(NOT DEFINED ${VARIABLE})
-
+ IF(NOT DEFINED TEST_${VARIABLE})
+
MESSAGE(STATUS "Checking for inline keyword")
FOREACH(KEYWORD "inline" "__inline__" "__inline")
- IF(NOT DEFINED C_INLINE)
- TRY_COMPILE(C_HAS_${KEYWORD} "${CMAKE_BINARY_DIR}"
- "${CMAKE_SOURCE_DIR}/cmake/TestInline.c")
- IF(C_HAS_${KEYWORD})
- SET(C_INLINE TRUE)
- SET(${VARIABLE} ${KEYWORD})
- MESSAGE(STATUS "Checking for inline keyword - ${KEYWORD}")
- ENDIF(C_HAS_${KEYWORD})
- ENDIF(NOT DEFINED C_INLINE)
+ IF(NOT TEST_${VARIABLE})
+ TRY_COMPILE(TEST_${VARIABLE} "${CMAKE_BINARY_DIR}"
+ "${CMAKE_SOURCE_DIR}/cmake/TestInline.c"
+ COMPILE_DEFINITIONS "-DTESTINLINEDEF=${KEYWORD}" )
+ SET(CHK_INLINE_KEYWORD ${KEYWORD})
+ ENDIF(NOT TEST_${VARIABLE})
ENDFOREACH(KEYWORD)
-
- IF(NOT DEFINED C_INLINE)
- SET(${VARIABLE} " ")
+
+ IF(TEST_${VARIABLE})
+ SET(${VARIABLE} ${KEYWORD})
+ MESSAGE(STATUS "Checking for inline keyword - ${CHK_INLINE_KEYWORD}")
+ ELSE(TEST_${VARIABLE})
+ SET(${VARIABLE} " ")
MESSAGE(STATUS "Checking for inline keyword - not found")
- ENDIF(NOT DEFINED C_INLINE)
-
- ENDIF(NOT DEFINED ${VARIABLE})
+ ENDIF(TEST_${VARIABLE})
+
+ ENDIF(NOT DEFINED TEST_${VARIABLE})
ENDMACRO(GMX_TEST_INLINE VARIABLE)
# end up in a config.h file that is included in your source if necessary!
MACRO(GMX_TEST_LARGE_FILES VARIABLE)
- IF("HAVE_${VARIABLE}" MATCHES "^HAVE_${VARIABLE}$")
+ IF(NOT DEFINED ${VARIABLE})
# On most platforms it is probably overkill to first test the flags for 64-bit off_t,
# and then separately fseeko. However, in the future we might have 128-bit filesystems
MESSAGE(STATUS "Checking for fseeko/ftello")
# Test if ftello/fseeko are available
- TRY_COMPILE(HAVE_${VARIABLE} "${CMAKE_BINARY_DIR}"
+ TRY_COMPILE(FSEEKO_COMPILE_OK "${CMAKE_BINARY_DIR}"
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/TestLargeFiles.c")
- if(HAVE_${VARIABLE})
+ if(FSEEKO_COMPILE_OK)
MESSAGE(STATUS "Checking for fseeko/ftello - present")
- endif(HAVE_${VARIABLE})
+ endif(FSEEKO_COMPILE_OK)
- if(NOT HAVE_${VARIABLE})
+ if(NOT FSEEKO_COMPILE_OK)
# glibc 2.2 neds _LARGEFILE_SOURCE for fseeko (but not 64-bit off_t...)
- TRY_COMPILE(HAVE_${VARIABLE} "${CMAKE_BINARY_DIR}"
+ TRY_COMPILE(FSEEKO_COMPILE_OK "${CMAKE_BINARY_DIR}"
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/TestLargeFiles.c"
COMPILE_DEFINITIONS "-D_LARGEFILE_SOURCE" )
- if(HAVE_${VARIABLE})
+ if(FSEEKO_COMPILE_OK)
MESSAGE(STATUS "Checking for fseeko/ftello - present with _LARGEFILE_SOURCE")
set(_LARGEFILE_SOURCE 1)
- endif(HAVE_${VARIABLE})
- endif(NOT HAVE_${VARIABLE})
+ endif(FSEEKO_COMPILE_OK)
+ endif(NOT FSEEKO_COMPILE_OK)
- if(HAVE_${VARIABLE})
+ endif(NOT FILE64_OK)
+
+ if(FSEEKO_COMPILE_OK)
SET(${VARIABLE} 1 CACHE INTERNAL "Result of test for large file support" FORCE)
set(HAVE_FSEEKO 1)
- else(HAVE_${VARIABLE})
+ else(FSEEKO_COMPILE_OK)
MESSAGE(STATUS "Checking for fseeko/ftello - not found")
SET(${VARIABLE} 0 CACHE INTERNAL "Result of test for large file support" FORCE)
- endif(HAVE_${VARIABLE})
+ endif(FSEEKO_COMPILE_OK)
- endif(NOT FILE64_OK)
-
- ENDIF("HAVE_${VARIABLE}" MATCHES "^HAVE_${VARIABLE}$")
+ ENDIF(NOT DEFINED ${VARIABLE})
ENDMACRO(GMX_TEST_LARGE_FILES VARIABLE)
#######################################################################
AC_PREREQ(2.50)
-AC_INIT(gromacs, 4.0.99_development_20090209, [gmx-users@gromacs.org])
+AC_INIT(gromacs, 4.0.99_development_20090307, [gmx-users@gromacs.org])
AC_CONFIG_SRCDIR(src/gmxlib/3dview.c)
AC_CONFIG_AUX_DIR(config)
AC_CANONICAL_HOST