2 # - Check the username performing the build, as well as date and time
4 # gmx_set_build_information()
6 # The macro variables will be set to the user/host/cpu used for configuration,
7 # or anonymous/unknown if it cannot be detected (windows)
20 # we rely on inline asm support for GNU!
21 include(gmxTestInlineASM)
23 macro(gmx_set_build_information)
24 IF(NOT DEFINED BUILD_USER)
26 gmx_test_inline_asm_gcc_x86(GMX_X86_GCC_INLINE_ASM)
28 if(GMX_X86_GCC_INLINE_ASM)
29 set(GCC_INLINE_ASM_DEFINE "-DGMX_X86_GCC_INLINE_ASM")
30 else(GMX_X86_GCC_INLINE_ASM)
31 set(GCC_INLINE_ASM_DEFINE "")
32 endif(GMX_X86_GCC_INLINE_ASM)
34 message(STATUS "Setting build user/date/host/cpu information")
36 execute_process( COMMAND date OUTPUT_VARIABLE TMP_TIME OUTPUT_STRIP_TRAILING_WHITESPACE)
37 execute_process( COMMAND whoami OUTPUT_VARIABLE TMP_USER OUTPUT_STRIP_TRAILING_WHITESPACE)
38 execute_process( COMMAND hostname OUTPUT_VARIABLE TMP_HOSTNAME OUTPUT_STRIP_TRAILING_WHITESPACE)
39 set(BUILD_USER "@TMP_USER@\@@TMP_HOSTNAME@ [CMAKE]" CACHE INTERNAL "Build user")
40 set(BUILD_TIME "@TMP_TIME@" CACHE INTERNAL "Build date & time")
41 execute_process( COMMAND uname -srm OUTPUT_VARIABLE TMP_HOST OUTPUT_STRIP_TRAILING_WHITESPACE)
42 set(BUILD_HOST "@TMP_HOST@" CACHE INTERNAL "Build host & architecture")
43 message(STATUS "Setting build user & time - OK")
45 set(BUILD_USER "Anonymous@unknown [CMAKE]" CACHE INTERNAL "Build user")
46 set(BUILD_TIME "Unknown date" CACHE INTERNAL "Build date & time")
47 set(BUILD_HOST "@CMAKE_HOST_SYSTEM@ @CMAKE_HOST_SYSTEM_PROCESSOR@" CACHE INTERNAL "Build host & architecture")
48 message(STATUS "Setting build user & time - not on Unix, using anonymous")
49 endif(CMAKE_HOST_UNIX)
51 if(NOT CMAKE_CROSSCOMPILING)
52 # Get CPU acceleration information
53 set(_compile_definitions "@GCC_INLINE_ASM_DEFINE@ -I${CMAKE_SOURCE_DIR}/src/gromacs/legacyheaders -DGMX_CPUID_STANDALONE -DGMX_IS_X86")
54 try_run(GMX_CPUID_RUN_VENDOR GMX_CPUID_COMPILED
56 ${CMAKE_SOURCE_DIR}/src/gromacs/gmxlib/gmx_cpuid.c
57 COMPILE_DEFINITIONS ${_compile_definitions}
58 RUN_OUTPUT_VARIABLE OUTPUT_CPU_VENDOR ARGS "-vendor")
59 try_run(GMX_CPUID_RUN_BRAND GMX_CPUID_COMPILED
61 ${CMAKE_SOURCE_DIR}/src/gromacs/gmxlib/gmx_cpuid.c
62 COMPILE_DEFINITIONS ${_compile_definitions}
63 RUN_OUTPUT_VARIABLE OUTPUT_CPU_BRAND ARGS "-brand")
64 try_run(GMX_CPUID_RUN_FAMILY GMX_CPUID_COMPILED
66 ${CMAKE_SOURCE_DIR}/src/gromacs/gmxlib/gmx_cpuid.c
67 COMPILE_DEFINITIONS ${_compile_definitions}
68 RUN_OUTPUT_VARIABLE OUTPUT_CPU_FAMILY ARGS "-family")
69 try_run(GMX_CPUID_RUN_MODEL GMX_CPUID_COMPILED
71 ${CMAKE_SOURCE_DIR}/src/gromacs/gmxlib/gmx_cpuid.c
72 COMPILE_DEFINITIONS ${_compile_definitions}
73 RUN_OUTPUT_VARIABLE OUTPUT_CPU_MODEL ARGS "-model")
74 try_run(GMX_CPUID_RUN_STEPPING GMX_CPUID_COMPILED
76 ${CMAKE_SOURCE_DIR}/src/gromacs/gmxlib/gmx_cpuid.c
77 COMPILE_DEFINITIONS ${_compile_definitions}
78 RUN_OUTPUT_VARIABLE OUTPUT_CPU_STEPPING ARGS "-stepping")
79 try_run(GMX_CPUID_RUN_FEATURES GMX_CPUID_COMPILED
81 ${CMAKE_SOURCE_DIR}/src/gromacs/gmxlib/gmx_cpuid.c
82 COMPILE_DEFINITIONS ${_compile_definitions}
83 RUN_OUTPUT_VARIABLE OUTPUT_CPU_FEATURES ARGS "-features")
84 unset(_compile_definitions)
86 string(STRIP "@OUTPUT_CPU_VENDOR@" OUTPUT_CPU_VENDOR)
87 string(STRIP "@OUTPUT_CPU_BRAND@" OUTPUT_CPU_BRAND)
88 string(STRIP "@OUTPUT_CPU_FAMILY@" OUTPUT_CPU_FAMILY)
89 string(STRIP "@OUTPUT_CPU_MODEL@" OUTPUT_CPU_MODEL)
90 string(STRIP "@OUTPUT_CPU_STEPPING@" OUTPUT_CPU_STEPPING)
91 string(STRIP "@OUTPUT_CPU_FEATURES@" OUTPUT_CPU_FEATURES)
93 if(GMX_CPUID_RUN_VENDOR EQUAL 0)
94 set(BUILD_CPU_VENDOR "@OUTPUT_CPU_VENDOR@" CACHE INTERNAL "Build CPU vendor")
96 set(BUILD_CPU_VENDOR "Unknown, detect failed" CACHE INTERNAL "Build CPU vendor")
98 if(GMX_CPUID_RUN_BRAND EQUAL 0)
99 set(BUILD_CPU_BRAND "@OUTPUT_CPU_BRAND@" CACHE INTERNAL "Build CPU brand")
101 set(BUILD_CPU_BRAND "Unknown, detect failed" CACHE INTERNAL "Build CPU brand")
103 if(GMX_CPUID_RUN_FAMILY EQUAL 0)
104 set(BUILD_CPU_FAMILY "@OUTPUT_CPU_FAMILY@" CACHE INTERNAL "Build CPU family")
106 set(BUILD_CPU_FAMILY "0" CACHE INTERNAL "Build CPU family")
108 if(GMX_CPUID_RUN_MODEL EQUAL 0)
109 set(BUILD_CPU_MODEL "@OUTPUT_CPU_MODEL@" CACHE INTERNAL "Build CPU model")
111 set(BUILD_CPU_MODEL "0" CACHE INTERNAL "Build CPU model")
113 if(GMX_CPUID_RUN_STEPPING EQUAL 0)
114 set(BUILD_CPU_STEPPING "@OUTPUT_CPU_STEPPING@" CACHE INTERNAL "Build CPU stepping")
116 set(BUILD_CPU_STEPPING "0" CACHE INTERNAL "Build CPU stepping")
118 if(GMX_CPUID_RUN_FEATURES EQUAL 0)
119 set(BUILD_CPU_FEATURES "@OUTPUT_CPU_FEATURES@" CACHE INTERNAL "Build CPU features")
121 set(BUILD_CPU_FEATURES "" CACHE INTERNAL "Build CPU features")
124 else(NOT CMAKE_CROSSCOMPILING)
126 set(BUILD_CPU_VENDOR "Unknown, cross-compiled" CACHE INTERNAL "Build CPU vendor")
127 set(BUILD_CPU_BRAND "Unknown, cross-compiled" CACHE INTERNAL "Build CPU brand")
128 set(BUILD_CPU_FAMILY "0" CACHE INTERNAL "Build CPU family")
129 set(BUILD_CPU_MODEL "0" CACHE INTERNAL "Build CPU model")
130 set(BUILD_CPU_STEPPING "0" CACHE INTERNAL "Build CPU stepping")
131 set(BUILD_CPU_FEATURES "" CACHE INTERNAL "Build CPU features")
133 endif(NOT CMAKE_CROSSCOMPILING)
135 ENDIF(NOT DEFINED BUILD_USER)
136 endmacro(gmx_set_build_information)