Skip to content

Commit e6616cf

Browse files
authored
examples : add compiler version and target to build info (#2998)
1 parent 3aefaab commit e6616cf

File tree

21 files changed

+97
-51
lines changed

21 files changed

+97
-51
lines changed

Makefile

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -499,22 +499,22 @@ main: examples/main/main.cpp build-info.h ggml.
499499
@echo '==== Run ./main -h for help. ===='
500500
@echo
501501

502-
simple: examples/simple/simple.cpp build-info.h ggml.o llama.o common.o $(OBJS)
502+
simple: examples/simple/simple.cpp ggml.o llama.o common.o $(OBJS)
503503
$(CXX) $(CXXFLAGS) $(filter-out %.h,$^) -o $@ $(LDFLAGS)
504504

505-
quantize: examples/quantize/quantize.cpp build-info.h ggml.o llama.o $(OBJS)
505+
quantize: examples/quantize/quantize.cpp ggml.o llama.o $(OBJS)
506506
$(CXX) $(CXXFLAGS) $(filter-out %.h,$^) -o $@ $(LDFLAGS)
507507

508-
quantize-stats: examples/quantize-stats/quantize-stats.cpp build-info.h ggml.o llama.o $(OBJS)
508+
quantize-stats: examples/quantize-stats/quantize-stats.cpp ggml.o llama.o $(OBJS)
509509
$(CXX) $(CXXFLAGS) $(filter-out %.h,$^) -o $@ $(LDFLAGS)
510510

511-
perplexity: examples/perplexity/perplexity.cpp build-info.h ggml.o llama.o common.o $(OBJS)
511+
perplexity: examples/perplexity/perplexity.cpp ggml.o llama.o common.o $(OBJS)
512512
$(CXX) $(CXXFLAGS) $(filter-out %.h,$^) -o $@ $(LDFLAGS)
513513

514-
embedding: examples/embedding/embedding.cpp build-info.h ggml.o llama.o common.o $(OBJS)
514+
embedding: examples/embedding/embedding.cpp ggml.o llama.o common.o $(OBJS)
515515
$(CXX) $(CXXFLAGS) $(filter-out %.h,$^) -o $@ $(LDFLAGS)
516516

517-
save-load-state: examples/save-load-state/save-load-state.cpp build-info.h ggml.o llama.o common.o $(OBJS)
517+
save-load-state: examples/save-load-state/save-load-state.cpp ggml.o llama.o common.o $(OBJS)
518518
$(CXX) $(CXXFLAGS) $(filter-out %.h,$^) -o $@ $(LDFLAGS)
519519

520520
server: examples/server/server.cpp examples/server/httplib.h examples/server/json.hpp examples/server/index.html.hpp examples/server/index.js.hpp examples/server/completion.js.hpp build-info.h ggml.o llama.o common.o grammar-parser.o $(OBJS)
@@ -554,7 +554,7 @@ metal: examples/metal/metal.cpp ggml.o $(OBJS)
554554
endif
555555

556556
build-info.h: $(wildcard .git/index) scripts/build-info.sh
557-
@sh scripts/build-info.sh > $@.tmp
557+
@sh scripts/build-info.sh $(CC) > $@.tmp
558558
@if ! cmp -s $@.tmp $@; then \
559559
mv $@.tmp $@; \
560560
else \
@@ -567,7 +567,7 @@ build-info.h: $(wildcard .git/index) scripts/build-info.sh
567567

568568
tests: $(TEST_TARGETS)
569569

570-
benchmark-matmult: examples/benchmark/benchmark-matmult.cpp build-info.h ggml.o $(OBJS)
570+
benchmark-matmult: examples/benchmark/benchmark-matmult.cpp ggml.o $(OBJS)
571571
$(CXX) $(CXXFLAGS) $(filter-out %.h,$^) -o $@ $(LDFLAGS)
572572
./$@
573573

common/common.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#pragma once
44

55
#include "llama.h"
6+
#include "build-info.h"
67

78
#define LOG_NO_FILE_LINE_FUNCTION
89
#include "log.h"
@@ -23,6 +24,11 @@
2324
#define die(msg) do { fputs("error: " msg "\n", stderr); exit(1); } while (0)
2425
#define die_fmt(fmt, ...) do { fprintf(stderr, "error: " fmt "\n", __VA_ARGS__); exit(1); } while (0)
2526

27+
#define print_build_info() do { \
28+
fprintf(stderr, "%s: build = %d (%s)\n", __func__, BUILD_NUMBER, BUILD_COMMIT); \
29+
fprintf(stderr, "%s: built with %s for %s\n", __func__, BUILD_COMPILER, BUILD_TARGET); \
30+
} while(0)
31+
2632
//
2733
// CLI argument parsing
2834
//

examples/beam-search/CMakeLists.txt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,3 @@ add_executable(${TARGET} beam-search.cpp)
33
install(TARGETS ${TARGET} RUNTIME)
44
target_link_libraries(${TARGET} PRIVATE common llama ${CMAKE_THREAD_LIBS_INIT})
55
target_compile_features(${TARGET} PRIVATE cxx_std_11)
6-
if(TARGET BUILD_INFO)
7-
add_dependencies(${TARGET} BUILD_INFO)
8-
endif()

examples/beam-search/beam-search.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#include "common.h"
22
#include "llama.h"
3-
#include "build-info.h"
43

54
#include <cassert>
65
#include <cinttypes>

examples/benchmark/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
set(TARGET benchmark)
22
add_executable(${TARGET} benchmark-matmult.cpp)
33
install(TARGETS ${TARGET} RUNTIME)
4-
target_link_libraries(${TARGET} PRIVATE common llama ${CMAKE_THREAD_LIBS_INIT})
4+
target_link_libraries(${TARGET} PRIVATE llama ${CMAKE_THREAD_LIBS_INIT})
5+
target_include_directories(${TARGET} PRIVATE ../../common)
56
target_compile_features(${TARGET} PRIVATE cxx_std_11)
67
if(TARGET BUILD_INFO)
78
add_dependencies(${TARGET} BUILD_INFO)

examples/benchmark/benchmark-matmult.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
#include "common.h"
12
#include "ggml.h"
2-
#include "build-info.h"
33

44
#include <locale.h>
55
#include <assert.h>
@@ -99,7 +99,7 @@ int main(int argc, char ** argv) {
9999
exit(1);
100100
}
101101

102-
fprintf(stderr, "%s: build = %d (%s)\n", __func__, BUILD_NUMBER, BUILD_COMMIT);
102+
print_build_info();
103103
printf("Starting Test\n");
104104

105105
// create the ggml context

examples/embd-input/embd-input-lib.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#include "common.h"
12
#include "embd-input.h"
23

34
#include <cassert>
@@ -22,7 +23,7 @@ struct MyModel* create_mymodel(int argc, char ** argv) {
2223
return nullptr;
2324
}
2425

25-
fprintf(stderr, "%s: build = %d (%s)\n", __func__, BUILD_NUMBER, BUILD_COMMIT);
26+
print_build_info();
2627

2728
if (params.seed == LLAMA_DEFAULT_SEED) {
2829
params.seed = uint32_t(time(NULL));

examples/embd-input/embd-input.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
#include "common.h"
55
#include "llama.h"
6-
#include "build-info.h"
76

87
extern "C" {
98

examples/embedding/embedding.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#include "common.h"
22
#include "llama.h"
3-
#include "build-info.h"
43

54
#include <ctime>
65

@@ -17,7 +16,7 @@ int main(int argc, char ** argv) {
1716

1817
params.embedding = true;
1918

20-
fprintf(stderr, "%s: build = %d (%s)\n", __func__, BUILD_NUMBER, BUILD_COMMIT);
19+
print_build_info();
2120

2221
if (params.seed == LLAMA_DEFAULT_SEED) {
2322
params.seed = time(NULL);

examples/main/main.cpp

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

151151
LOG_TEE("%s: build = %d (%s)\n", __func__, BUILD_NUMBER, BUILD_COMMIT);
152+
LOG_TEE("%s: built with %s for %s\n", __func__, BUILD_COMPILER, BUILD_TARGET);
152153

153154
if (params.seed == LLAMA_DEFAULT_SEED) {
154155
params.seed = time(NULL);

examples/perplexity/perplexity.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#include "common.h"
22
#include "llama.h"
3-
#include "build-info.h"
43

54
#include <cmath>
65
#include <cstdio>
@@ -670,7 +669,7 @@ int main(int argc, char ** argv) {
670669
params.n_ctx += params.ppl_stride/2;
671670
}
672671

673-
fprintf(stderr, "%s: build = %d (%s)\n", __func__, BUILD_NUMBER, BUILD_COMMIT);
672+
print_build_info();
674673

675674
if (params.seed == LLAMA_DEFAULT_SEED) {
676675
params.seed = time(NULL);

examples/quantize-stats/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@ set(TARGET quantize-stats)
22
add_executable(${TARGET} quantize-stats.cpp)
33
install(TARGETS ${TARGET} RUNTIME)
44
target_link_libraries(${TARGET} PRIVATE llama ${CMAKE_THREAD_LIBS_INIT})
5+
target_include_directories(${TARGET} PRIVATE ../../common)
56
target_compile_features(${TARGET} PRIVATE cxx_std_11)

examples/quantize-stats/quantize-stats.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
#include "ggml.h"
2-
#include "build-info.h"
3-
41
#define LLAMA_API_INTERNAL
2+
#include "common.h"
3+
#include "ggml.h"
54
#include "llama.h"
65

76
#include <algorithm>
@@ -299,7 +298,7 @@ int main(int argc, char ** argv) {
299298
return 1;
300299
}
301300

302-
fprintf(stderr, "%s: build = %d (%s)\n", __func__, BUILD_NUMBER, BUILD_COMMIT);
301+
print_build_info();
303302

304303
// load the model
305304
fprintf(stderr, "Loading model\n");

examples/quantize/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ set(TARGET quantize)
22
add_executable(${TARGET} quantize.cpp)
33
install(TARGETS ${TARGET} RUNTIME)
44
target_link_libraries(${TARGET} PRIVATE llama ${CMAKE_THREAD_LIBS_INIT})
5+
target_include_directories(${TARGET} PRIVATE ../../common)
56
target_compile_features(${TARGET} PRIVATE cxx_std_11)
67
if(TARGET BUILD_INFO)
78
add_dependencies(${TARGET} BUILD_INFO)

examples/quantize/quantize.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
#include "build-info.h"
2-
1+
#include "common.h"
32
#include "llama.h"
43

54
#include <cstdio>
@@ -161,7 +160,7 @@ int main(int argc, char ** argv) {
161160
}
162161
}
163162

164-
fprintf(stderr, "%s: build = %d (%s)\n", __func__, BUILD_NUMBER, BUILD_COMMIT);
163+
print_build_info();
165164

166165
fprintf(stderr, "%s: quantizing '%s' to '%s' as %s", __func__, fname_inp.c_str(), fname_out.c_str(), ftype_str.c_str());
167166
if (params.nthread > 0) {

examples/save-load-state/save-load-state.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#include "common.h"
22
#include "llama.h"
3-
#include "build-info.h"
43

54
#include <vector>
65
#include <cstdio>
@@ -17,7 +16,7 @@ int main(int argc, char ** argv) {
1716
return 1;
1817
}
1918

20-
fprintf(stderr, "%s: build = %d (%s)\n", __func__, BUILD_NUMBER, BUILD_COMMIT);
19+
print_build_info();
2120

2221
if (params.n_predict < 0) {
2322
params.n_predict = 16;

examples/simple/CMakeLists.txt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,3 @@ add_executable(${TARGET} simple.cpp)
33
install(TARGETS ${TARGET} RUNTIME)
44
target_link_libraries(${TARGET} PRIVATE common llama ${CMAKE_THREAD_LIBS_INIT})
55
target_compile_features(${TARGET} PRIVATE cxx_std_11)
6-
if(TARGET BUILD_INFO)
7-
add_dependencies(${TARGET} BUILD_INFO)
8-
endif()

examples/simple/simple.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#include "build-info.h"
2-
31
#include "common.h"
42
#include "llama.h"
53

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 "$@ --version | head -1" _ ${CMAKE_C_COMPILER}
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: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,35 @@
11
#!/bin/sh
22

3-
BUILD_NUMBER="0"
4-
BUILD_COMMIT="unknown"
3+
CC=$1
54

6-
REV_LIST=$(git rev-list --count HEAD)
7-
if [ $? -eq 0 ]; then
8-
BUILD_NUMBER=$REV_LIST
5+
build_number="0"
6+
build_commit="unknown"
7+
build_compiler="unknown"
8+
build_target="unknown"
9+
10+
if out=$(git rev-list --count HEAD); then
11+
# git is broken on WSL so we need to strip extra newlines
12+
build_number=$(printf '%s' "$out" | tr -d '\n')
13+
fi
14+
15+
if out=$(git rev-parse --short HEAD); then
16+
build_commit=$(printf '%s' "$out" | tr -d '\n')
17+
fi
18+
19+
if out=$($CC --version | head -1); then
20+
build_compiler=$out
921
fi
1022

11-
REV_PARSE=$(git rev-parse --short HEAD)
12-
if [ $? -eq 0 ]; then
13-
BUILD_COMMIT=$REV_PARSE
23+
if out=$($CC -dumpmachine); then
24+
build_target=$out
1425
fi
1526

1627
echo "#ifndef BUILD_INFO_H"
1728
echo "#define BUILD_INFO_H"
18-
echo ""
19-
echo "#define BUILD_NUMBER $BUILD_NUMBER" | tr -d '\n'
20-
echo ""
21-
echo "#define BUILD_COMMIT \"$BUILD_COMMIT\"" | tr -d '\n'
22-
echo ""
29+
echo
30+
echo "#define BUILD_NUMBER $build_number"
31+
echo "#define BUILD_COMMIT \"$build_commit\""
32+
echo "#define BUILD_COMPILER \"$build_compiler\""
33+
echo "#define BUILD_TARGET \"$build_target\""
34+
echo
2335
echo "#endif // BUILD_INFO_H"

0 commit comments

Comments
 (0)