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 try_run(GMX_CPUID_RUN_VENDOR GMX_CPUID_COMPILED
55 ${CMAKE_SOURCE_DIR}/src/gmxlib/gmx_cpuid.c
56 COMPILE_DEFINITIONS "@GCC_INLINE_ASM_DEFINE@ -I${CMAKE_SOURCE_DIR}/include -DGMX_CPUID_STANDALONE"
57 RUN_OUTPUT_VARIABLE OUTPUT_CPU_VENDOR ARGS "-vendor")
58 try_run(GMX_CPUID_RUN_BRAND GMX_CPUID_COMPILED
60 ${CMAKE_SOURCE_DIR}/src/gmxlib/gmx_cpuid.c
61 COMPILE_DEFINITIONS "@GCC_INLINE_ASM_DEFINE@ -I${CMAKE_SOURCE_DIR}/include -DGMX_CPUID_STANDALONE"
62 RUN_OUTPUT_VARIABLE OUTPUT_CPU_BRAND ARGS "-brand")
63 try_run(GMX_CPUID_RUN_FAMILY GMX_CPUID_COMPILED
65 ${CMAKE_SOURCE_DIR}/src/gmxlib/gmx_cpuid.c
66 COMPILE_DEFINITIONS "@GCC_INLINE_ASM_DEFINE@ -I${CMAKE_SOURCE_DIR}/include -DGMX_CPUID_STANDALONE"
67 RUN_OUTPUT_VARIABLE OUTPUT_CPU_FAMILY ARGS "-family")
68 try_run(GMX_CPUID_RUN_MODEL GMX_CPUID_COMPILED
70 ${CMAKE_SOURCE_DIR}/src/gmxlib/gmx_cpuid.c
71 COMPILE_DEFINITIONS "@GCC_INLINE_ASM_DEFINE@ -I${CMAKE_SOURCE_DIR}/include -DGMX_CPUID_STANDALONE"
72 RUN_OUTPUT_VARIABLE OUTPUT_CPU_MODEL ARGS "-model")
73 try_run(GMX_CPUID_RUN_STEPPING GMX_CPUID_COMPILED
75 ${CMAKE_SOURCE_DIR}/src/gmxlib/gmx_cpuid.c
76 COMPILE_DEFINITIONS "@GCC_INLINE_ASM_DEFINE@ -I${CMAKE_SOURCE_DIR}/include -DGMX_CPUID_STANDALONE"
77 RUN_OUTPUT_VARIABLE OUTPUT_CPU_STEPPING ARGS "-stepping")
78 try_run(GMX_CPUID_RUN_FEATURES GMX_CPUID_COMPILED
80 ${CMAKE_SOURCE_DIR}/src/gmxlib/gmx_cpuid.c
81 COMPILE_DEFINITIONS "@GCC_INLINE_ASM_DEFINE@ -I${CMAKE_SOURCE_DIR}/include -DGMX_CPUID_STANDALONE"
82 RUN_OUTPUT_VARIABLE OUTPUT_CPU_FEATURES ARGS "-features")
84 string(STRIP "@OUTPUT_CPU_VENDOR@" OUTPUT_CPU_VENDOR)
85 string(STRIP "@OUTPUT_CPU_BRAND@" OUTPUT_CPU_BRAND)
86 string(STRIP "@OUTPUT_CPU_FAMILY@" OUTPUT_CPU_FAMILY)
87 string(STRIP "@OUTPUT_CPU_MODEL@" OUTPUT_CPU_MODEL)
88 string(STRIP "@OUTPUT_CPU_STEPPING@" OUTPUT_CPU_STEPPING)
89 string(STRIP "@OUTPUT_CPU_FEATURES@" OUTPUT_CPU_FEATURES)
91 if(GMX_CPUID_RUN_VENDOR EQUAL 0)
92 set(BUILD_CPU_VENDOR "@OUTPUT_CPU_VENDOR@" CACHE INTERNAL "Build CPU vendor")
94 set(BUILD_CPU_VENDOR "Unknown, detect failed" CACHE INTERNAL "Build CPU vendor")
96 if(GMX_CPUID_RUN_BRAND EQUAL 0)
97 set(BUILD_CPU_BRAND "@OUTPUT_CPU_BRAND@" CACHE INTERNAL "Build CPU brand")
99 set(BUILD_CPU_BRAND "Unknown, detect failed" CACHE INTERNAL "Build CPU brand")
101 if(GMX_CPUID_RUN_FAMILY EQUAL 0)
102 set(BUILD_CPU_FAMILY "@OUTPUT_CPU_FAMILY@" CACHE INTERNAL "Build CPU family")
104 set(BUILD_CPU_FAMILY "0" CACHE INTERNAL "Build CPU family")
106 if(GMX_CPUID_RUN_MODEL EQUAL 0)
107 set(BUILD_CPU_MODEL "@OUTPUT_CPU_MODEL@" CACHE INTERNAL "Build CPU model")
109 set(BUILD_CPU_MODEL "0" CACHE INTERNAL "Build CPU model")
111 if(GMX_CPUID_RUN_STEPPING EQUAL 0)
112 set(BUILD_CPU_STEPPING "@OUTPUT_CPU_STEPPING@" CACHE INTERNAL "Build CPU stepping")
114 set(BUILD_CPU_STEPPING "0" CACHE INTERNAL "Build CPU stepping")
116 if(GMX_CPUID_RUN_FEATURES EQUAL 0)
117 set(BUILD_CPU_FEATURES "@OUTPUT_CPU_FEATURES@" CACHE INTERNAL "Build CPU features")
119 set(BUILD_CPU_FEATURES "" CACHE INTERNAL "Build CPU features")
122 else(NOT CMAKE_CROSSCOMPILING)
124 set(BUILD_CPU_VENDOR "Unknown, cross-compiled" CACHE INTERNAL "Build CPU vendor")
125 set(BUILD_CPU_BRAND "Unknown, cross-compiled" CACHE INTERNAL "Build CPU brand")
126 set(BUILD_CPU_FAMILY "0" CACHE INTERNAL "Build CPU family")
127 set(BUILD_CPU_MODEL "0" CACHE INTERNAL "Build CPU model")
128 set(BUILD_CPU_STEPPING "0" CACHE INTERNAL "Build CPU stepping")
129 set(BUILD_CPU_FEATURES "" CACHE INTERNAL "Build CPU features")
131 endif(NOT CMAKE_CROSSCOMPILING)
133 ENDIF(NOT DEFINED BUILD_USER)
134 endmacro(gmx_set_build_information)