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")
55 set(_compile_definitions "${_compile_definitions} -DGMX_TARGET_X86")
57 try_run(GMX_CPUID_RUN_VENDOR GMX_CPUID_COMPILED
59 ${CMAKE_SOURCE_DIR}/src/gromacs/gmxlib/gmx_cpuid.c
60 COMPILE_DEFINITIONS ${_compile_definitions}
61 RUN_OUTPUT_VARIABLE OUTPUT_CPU_VENDOR ARGS "-vendor")
62 try_run(GMX_CPUID_RUN_BRAND GMX_CPUID_COMPILED
64 ${CMAKE_SOURCE_DIR}/src/gromacs/gmxlib/gmx_cpuid.c
65 COMPILE_DEFINITIONS ${_compile_definitions}
66 RUN_OUTPUT_VARIABLE OUTPUT_CPU_BRAND ARGS "-brand")
67 try_run(GMX_CPUID_RUN_FAMILY GMX_CPUID_COMPILED
69 ${CMAKE_SOURCE_DIR}/src/gromacs/gmxlib/gmx_cpuid.c
70 COMPILE_DEFINITIONS ${_compile_definitions}
71 RUN_OUTPUT_VARIABLE OUTPUT_CPU_FAMILY ARGS "-family")
72 try_run(GMX_CPUID_RUN_MODEL GMX_CPUID_COMPILED
74 ${CMAKE_SOURCE_DIR}/src/gromacs/gmxlib/gmx_cpuid.c
75 COMPILE_DEFINITIONS ${_compile_definitions}
76 RUN_OUTPUT_VARIABLE OUTPUT_CPU_MODEL ARGS "-model")
77 try_run(GMX_CPUID_RUN_STEPPING GMX_CPUID_COMPILED
79 ${CMAKE_SOURCE_DIR}/src/gromacs/gmxlib/gmx_cpuid.c
80 COMPILE_DEFINITIONS ${_compile_definitions}
81 RUN_OUTPUT_VARIABLE OUTPUT_CPU_STEPPING ARGS "-stepping")
82 try_run(GMX_CPUID_RUN_FEATURES GMX_CPUID_COMPILED
84 ${CMAKE_SOURCE_DIR}/src/gromacs/gmxlib/gmx_cpuid.c
85 COMPILE_DEFINITIONS ${_compile_definitions}
86 RUN_OUTPUT_VARIABLE OUTPUT_CPU_FEATURES ARGS "-features")
87 unset(_compile_definitions)
89 string(STRIP "@OUTPUT_CPU_VENDOR@" OUTPUT_CPU_VENDOR)
90 string(STRIP "@OUTPUT_CPU_BRAND@" OUTPUT_CPU_BRAND)
91 string(STRIP "@OUTPUT_CPU_FAMILY@" OUTPUT_CPU_FAMILY)
92 string(STRIP "@OUTPUT_CPU_MODEL@" OUTPUT_CPU_MODEL)
93 string(STRIP "@OUTPUT_CPU_STEPPING@" OUTPUT_CPU_STEPPING)
94 string(STRIP "@OUTPUT_CPU_FEATURES@" OUTPUT_CPU_FEATURES)
96 if(GMX_CPUID_RUN_VENDOR EQUAL 0)
97 set(BUILD_CPU_VENDOR "@OUTPUT_CPU_VENDOR@" CACHE INTERNAL "Build CPU vendor")
99 set(BUILD_CPU_VENDOR "Unknown, detect failed" CACHE INTERNAL "Build CPU vendor")
101 if(GMX_CPUID_RUN_BRAND EQUAL 0)
102 set(BUILD_CPU_BRAND "@OUTPUT_CPU_BRAND@" CACHE INTERNAL "Build CPU brand")
104 set(BUILD_CPU_BRAND "Unknown, detect failed" CACHE INTERNAL "Build CPU brand")
106 if(GMX_CPUID_RUN_FAMILY EQUAL 0)
107 set(BUILD_CPU_FAMILY "@OUTPUT_CPU_FAMILY@" CACHE INTERNAL "Build CPU family")
109 set(BUILD_CPU_FAMILY "0" CACHE INTERNAL "Build CPU family")
111 if(GMX_CPUID_RUN_MODEL EQUAL 0)
112 set(BUILD_CPU_MODEL "@OUTPUT_CPU_MODEL@" CACHE INTERNAL "Build CPU model")
114 set(BUILD_CPU_MODEL "0" CACHE INTERNAL "Build CPU model")
116 if(GMX_CPUID_RUN_STEPPING EQUAL 0)
117 set(BUILD_CPU_STEPPING "@OUTPUT_CPU_STEPPING@" CACHE INTERNAL "Build CPU stepping")
119 set(BUILD_CPU_STEPPING "0" CACHE INTERNAL "Build CPU stepping")
121 if(GMX_CPUID_RUN_FEATURES EQUAL 0)
122 set(BUILD_CPU_FEATURES "@OUTPUT_CPU_FEATURES@" CACHE INTERNAL "Build CPU features")
124 set(BUILD_CPU_FEATURES "" CACHE INTERNAL "Build CPU features")
127 else(NOT CMAKE_CROSSCOMPILING)
129 set(BUILD_CPU_VENDOR "Unknown, cross-compiled" CACHE INTERNAL "Build CPU vendor")
130 set(BUILD_CPU_BRAND "Unknown, cross-compiled" CACHE INTERNAL "Build CPU brand")
131 set(BUILD_CPU_FAMILY "0" CACHE INTERNAL "Build CPU family")
132 set(BUILD_CPU_MODEL "0" CACHE INTERNAL "Build CPU model")
133 set(BUILD_CPU_STEPPING "0" CACHE INTERNAL "Build CPU stepping")
134 set(BUILD_CPU_FEATURES "" CACHE INTERNAL "Build CPU features")
136 endif(NOT CMAKE_CROSSCOMPILING)
138 ENDIF(NOT DEFINED BUILD_USER)
139 endmacro(gmx_set_build_information)