Skip to content

Commit b53cfef

Browse files
committed
examples : add compiler version and target to build info
1 parent ea45611 commit b53cfef

File tree

6 files changed

+61
-7
lines changed

6 files changed

+61
-7
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,7 @@ metal: examples/metal/metal.cpp ggml.o $(OBJS)
487487
endif
488488

489489
build-info.h: $(wildcard .git/index) scripts/build-info.sh
490-
@sh scripts/build-info.sh > $@.tmp
490+
@sh scripts/build-info.sh $(CC) > $@.tmp
491491
@if ! cmp -s $@.tmp $@; then \
492492
mv $@.tmp $@; \
493493
else \

common/common.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@
2020
#define DIRECTORY_SEPARATOR '/'
2121
#endif // _WIN32
2222

23-
#define print_build_info() do {
24-
fprintf(stderr, "%s: build = %d (%s)\n", __func__, BUILD_NUMBER, BUILD_COMMIT); \
25-
} while (0)
23+
#define print_build_info() do { \
24+
fprintf(stderr, "%s: build = %d (%s)\n", __func__, BUILD_NUMBER, BUILD_COMMIT); \
25+
fprintf(stderr, "%s: built with %s for %s\n", __func__, BUILD_COMPILER, BUILD_TARGET); \
26+
} while(0)
2627

2728
//
2829
// CLI argument parsing

examples/main/main.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ int main(int argc, char ** argv) {
160160
}
161161

162162
LOG_TEE("%s: build = %d (%s)\n", __func__, BUILD_NUMBER, BUILD_COMMIT);
163+
LOG_TEE("%s: built with %s for %s\n", __func__, BUILD_COMPILER, BUILD_TARGET);
163164

164165
if (params.seed == LLAMA_DEFAULT_SEED) {
165166
params.seed = time(NULL);

scripts/build-info.cmake

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ set(TEMPLATE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/scripts/build-info.h.in")
22
set(HEADER_FILE "${CMAKE_CURRENT_SOURCE_DIR}/build-info.h")
33
set(BUILD_NUMBER 0)
44
set(BUILD_COMMIT "unknown")
5+
set(BUILD_COMPILER "unknown")
6+
set(BUILD_TARGET "unknown")
57

68
# Look for git
79
find_package(Git)
@@ -41,11 +43,45 @@ if(Git_FOUND)
4143
endif()
4244
endif()
4345

46+
if(GIT_HEAD_RESULT EQUAL 0 AND GIT_COUNT_RESULT EQUAL 0)
47+
set(BUILD_COMMIT ${HEAD})
48+
set(BUILD_NUMBER ${COUNT})
49+
endif()
50+
51+
execute_process(
52+
COMMAND sh -c "${CMAKE_C_COMPILER} --version | head -1"
53+
OUTPUT_VARIABLE OUT
54+
OUTPUT_STRIP_TRAILING_WHITESPACE
55+
RESULT_VARIABLE RES
56+
)
57+
if (RES EQUAL 0)
58+
set(BUILD_COMPILER ${OUT})
59+
endif()
60+
61+
execute_process(
62+
COMMAND ${CMAKE_C_COMPILER} -dumpmachine
63+
OUTPUT_VARIABLE OUT
64+
OUTPUT_STRIP_TRAILING_WHITESPACE
65+
RESULT_VARIABLE RES
66+
)
67+
if (RES EQUAL 0)
68+
set(BUILD_TARGET ${OUT})
69+
endif()
70+
4471
# Only write the header if it's changed to prevent unnecessary recompilation
4572
if(EXISTS ${HEADER_FILE})
46-
file(STRINGS ${HEADER_FILE} CONTENTS REGEX "BUILD_COMMIT \"([^\"]*)\"")
47-
list(GET CONTENTS 0 EXISTING)
48-
if(NOT EXISTING STREQUAL "#define BUILD_COMMIT \"${BUILD_COMMIT}\"")
73+
file(READ ${HEADER_FILE} CONTENTS)
74+
string(REGEX MATCH "BUILD_COMMIT \"([^\"]*)\"" _ ${CONTENTS})
75+
set(OLD_COMMIT ${CMAKE_MATCH_1})
76+
string(REGEX MATCH "BUILD_COMPILER \"([^\"]*)\"" _ ${CONTENTS})
77+
set(OLD_COMPILER ${CMAKE_MATCH_1})
78+
string(REGEX MATCH "BUILD_TARGET \"([^\"]*)\"" _ ${CONTENTS})
79+
set(OLD_TARGET ${CMAKE_MATCH_1})
80+
if (
81+
NOT OLD_COMMIT STREQUAL ${BUILD_COMMIT} OR
82+
NOT OLD_COMPILER STREQUAL ${BUILD_COMPILER} OR
83+
NOT OLD_TARGET STREQUAL ${BUILD_TARGET}
84+
)
4985
configure_file(${TEMPLATE_FILE} ${HEADER_FILE})
5086
endif()
5187
else()

scripts/build-info.h.in

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,7 @@
33

44
#define BUILD_NUMBER @BUILD_NUMBER@
55
#define BUILD_COMMIT "@BUILD_COMMIT@"
6+
#define BUILD_COMPILER "@BUILD_COMPILER@"
7+
#define BUILD_TARGET "@BUILD_TARGET@"
68

79
#endif // BUILD_INFO_H

scripts/build-info.sh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
#!/bin/sh
22

3+
CC=$1
4+
35
build_number="0"
46
build_commit="unknown"
7+
build_compiler="unknown"
8+
build_target="unknown"
59

610
# git is broken on WSL so we need to strip extra newlines
711
if out=$(git rev-list --count HEAD | tr -d '\n'); then
@@ -12,10 +16,20 @@ if out=$(git rev-parse --short HEAD | tr -d '\n'); then
1216
build_commit=$out
1317
fi
1418

19+
if out=$($CC --version | head -1); then
20+
build_compiler=$out
21+
fi
22+
23+
if out=$($CC -dumpmachine); then
24+
build_target=$out
25+
fi
26+
1527
echo "#ifndef BUILD_INFO_H"
1628
echo "#define BUILD_INFO_H"
1729
echo
1830
echo "#define BUILD_NUMBER $build_number"
1931
echo "#define BUILD_COMMIT \"$build_commit\""
32+
echo "#define BUILD_COMPILER \"$build_compiler\""
33+
echo "#define BUILD_TARGET \"$build_target\""
2034
echo
2135
echo "#endif // BUILD_INFO_H"

0 commit comments

Comments
 (0)