summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile16
-rw-r--r--common/common.h6
-rw-r--r--examples/beam-search/CMakeLists.txt3
-rw-r--r--examples/beam-search/beam-search.cpp1
-rw-r--r--examples/benchmark/CMakeLists.txt3
-rw-r--r--examples/benchmark/benchmark-matmult.cpp4
-rw-r--r--examples/embd-input/embd-input-lib.cpp3
-rw-r--r--examples/embd-input/embd-input.h1
-rw-r--r--examples/embedding/embedding.cpp3
-rw-r--r--examples/main/main.cpp1
-rw-r--r--examples/perplexity/perplexity.cpp3
-rw-r--r--examples/quantize-stats/CMakeLists.txt1
-rw-r--r--examples/quantize-stats/quantize-stats.cpp7
-rw-r--r--examples/quantize/CMakeLists.txt1
-rw-r--r--examples/quantize/quantize.cpp5
-rw-r--r--examples/save-load-state/save-load-state.cpp3
-rw-r--r--examples/simple/CMakeLists.txt3
-rw-r--r--examples/simple/simple.cpp2
-rw-r--r--scripts/build-info.cmake42
-rw-r--r--scripts/build-info.h.in2
-rwxr-xr-xscripts/build-info.sh38
21 files changed, 97 insertions, 51 deletions
diff --git a/Makefile b/Makefile
index 98bf8845..a1438b80 100644
--- a/Makefile
+++ b/Makefile
@@ -499,22 +499,22 @@ main: examples/main/main.cpp build-info.h ggml.
@echo '==== Run ./main -h for help. ===='
@echo
-simple: examples/simple/simple.cpp build-info.h ggml.o llama.o common.o $(OBJS)
+simple: examples/simple/simple.cpp ggml.o llama.o common.o $(OBJS)
$(CXX) $(CXXFLAGS) $(filter-out %.h,$^) -o $@ $(LDFLAGS)
-quantize: examples/quantize/quantize.cpp build-info.h ggml.o llama.o $(OBJS)
+quantize: examples/quantize/quantize.cpp ggml.o llama.o $(OBJS)
$(CXX) $(CXXFLAGS) $(filter-out %.h,$^) -o $@ $(LDFLAGS)
-quantize-stats: examples/quantize-stats/quantize-stats.cpp build-info.h ggml.o llama.o $(OBJS)
+quantize-stats: examples/quantize-stats/quantize-stats.cpp ggml.o llama.o $(OBJS)
$(CXX) $(CXXFLAGS) $(filter-out %.h,$^) -o $@ $(LDFLAGS)
-perplexity: examples/perplexity/perplexity.cpp build-info.h ggml.o llama.o common.o $(OBJS)
+perplexity: examples/perplexity/perplexity.cpp ggml.o llama.o common.o $(OBJS)
$(CXX) $(CXXFLAGS) $(filter-out %.h,$^) -o $@ $(LDFLAGS)
-embedding: examples/embedding/embedding.cpp build-info.h ggml.o llama.o common.o $(OBJS)
+embedding: examples/embedding/embedding.cpp ggml.o llama.o common.o $(OBJS)
$(CXX) $(CXXFLAGS) $(filter-out %.h,$^) -o $@ $(LDFLAGS)
-save-load-state: examples/save-load-state/save-load-state.cpp build-info.h ggml.o llama.o common.o $(OBJS)
+save-load-state: examples/save-load-state/save-load-state.cpp ggml.o llama.o common.o $(OBJS)
$(CXX) $(CXXFLAGS) $(filter-out %.h,$^) -o $@ $(LDFLAGS)
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)
endif
build-info.h: $(wildcard .git/index) scripts/build-info.sh
- @sh scripts/build-info.sh > $@.tmp
+ @sh scripts/build-info.sh $(CC) > $@.tmp
@if ! cmp -s $@.tmp $@; then \
mv $@.tmp $@; \
else \
@@ -567,7 +567,7 @@ build-info.h: $(wildcard .git/index) scripts/build-info.sh
tests: $(TEST_TARGETS)
-benchmark-matmult: examples/benchmark/benchmark-matmult.cpp build-info.h ggml.o $(OBJS)
+benchmark-matmult: examples/benchmark/benchmark-matmult.cpp ggml.o $(OBJS)
$(CXX) $(CXXFLAGS) $(filter-out %.h,$^) -o $@ $(LDFLAGS)
./$@
diff --git a/common/common.h b/common/common.h
index 37d15415..f9dfd4a2 100644
--- a/common/common.h
+++ b/common/common.h
@@ -3,6 +3,7 @@
#pragma once
#include "llama.h"
+#include "build-info.h"
#define LOG_NO_FILE_LINE_FUNCTION
#include "log.h"
@@ -23,6 +24,11 @@
#define die(msg) do { fputs("error: " msg "\n", stderr); exit(1); } while (0)
#define die_fmt(fmt, ...) do { fprintf(stderr, "error: " fmt "\n", __VA_ARGS__); exit(1); } while (0)
+#define print_build_info() do { \
+ fprintf(stderr, "%s: build = %d (%s)\n", __func__, BUILD_NUMBER, BUILD_COMMIT); \
+ fprintf(stderr, "%s: built with %s for %s\n", __func__, BUILD_COMPILER, BUILD_TARGET); \
+} while(0)
+
//
// CLI argument parsing
//
diff --git a/examples/beam-search/CMakeLists.txt b/examples/beam-search/CMakeLists.txt
index e44a7497..f0e37468 100644
--- a/examples/beam-search/CMakeLists.txt
+++ b/examples/beam-search/CMakeLists.txt
@@ -3,6 +3,3 @@ add_executable(${TARGET} beam-search.cpp)
install(TARGETS ${TARGET} RUNTIME)
target_link_libraries(${TARGET} PRIVATE common llama ${CMAKE_THREAD_LIBS_INIT})
target_compile_features(${TARGET} PRIVATE cxx_std_11)
-if(TARGET BUILD_INFO)
- add_dependencies(${TARGET} BUILD_INFO)
-endif()
diff --git a/examples/beam-search/beam-search.cpp b/examples/beam-search/beam-search.cpp
index 805170c9..888ae966 100644
--- a/examples/beam-search/beam-search.cpp
+++ b/examples/beam-search/beam-search.cpp
@@ -1,6 +1,5 @@
#include "common.h"
#include "llama.h"
-#include "build-info.h"
#include <cassert>
#include <cinttypes>
diff --git a/examples/benchmark/CMakeLists.txt b/examples/benchmark/CMakeLists.txt
index 3f341535..14916d83 100644
--- a/examples/benchmark/CMakeLists.txt
+++ b/examples/benchmark/CMakeLists.txt
@@ -1,7 +1,8 @@
set(TARGET benchmark)
add_executable(${TARGET} benchmark-matmult.cpp)
install(TARGETS ${TARGET} RUNTIME)
-target_link_libraries(${TARGET} PRIVATE common llama ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(${TARGET} PRIVATE llama ${CMAKE_THREAD_LIBS_INIT})
+target_include_directories(${TARGET} PRIVATE ../../common)
target_compile_features(${TARGET} PRIVATE cxx_std_11)
if(TARGET BUILD_INFO)
add_dependencies(${TARGET} BUILD_INFO)
diff --git a/examples/benchmark/benchmark-matmult.cpp b/examples/benchmark/benchmark-matmult.cpp
index f7215f43..561309ac 100644
--- a/examples/benchmark/benchmark-matmult.cpp
+++ b/examples/benchmark/benchmark-matmult.cpp
@@ -1,5 +1,5 @@
+#include "common.h"
#include "ggml.h"
-#include "build-info.h"
#include <locale.h>
#include <assert.h>
@@ -99,7 +99,7 @@ int main(int argc, char ** argv) {
exit(1);
}
- fprintf(stderr, "%s: build = %d (%s)\n", __func__, BUILD_NUMBER, BUILD_COMMIT);
+ print_build_info();
printf("Starting Test\n");
// create the ggml context
diff --git a/examples/embd-input/embd-input-lib.cpp b/examples/embd-input/embd-input-lib.cpp
index ef12212b..fc6e44eb 100644
--- a/examples/embd-input/embd-input-lib.cpp
+++ b/examples/embd-input/embd-input-lib.cpp
@@ -1,3 +1,4 @@
+#include "common.h"
#include "embd-input.h"
#include <cassert>
@@ -22,7 +23,7 @@ struct MyModel* create_mymodel(int argc, char ** argv) {
return nullptr;
}
- fprintf(stderr, "%s: build = %d (%s)\n", __func__, BUILD_NUMBER, BUILD_COMMIT);
+ print_build_info();
if (params.seed == LLAMA_DEFAULT_SEED) {
params.seed = uint32_t(time(NULL));
diff --git a/examples/embd-input/embd-input.h b/examples/embd-input/embd-input.h
index efb5ba5e..eff5e3b8 100644
--- a/examples/embd-input/embd-input.h
+++ b/examples/embd-input/embd-input.h
@@ -3,7 +3,6 @@
#include "common.h"
#include "llama.h"
-#include "build-info.h"
extern "C" {
diff --git a/examples/embedding/embedding.cpp b/examples/embedding/embedding.cpp
index e4a0a38c..0788f362 100644
--- a/examples/embedding/embedding.cpp
+++ b/examples/embedding/embedding.cpp
@@ -1,6 +1,5 @@
#include "common.h"
#include "llama.h"
-#include "build-info.h"
#include <ctime>
@@ -17,7 +16,7 @@ int main(int argc, char ** argv) {
params.embedding = true;
- fprintf(stderr, "%s: build = %d (%s)\n", __func__, BUILD_NUMBER, BUILD_COMMIT);
+ print_build_info();
if (params.seed == LLAMA_DEFAULT_SEED) {
params.seed = time(NULL);
diff --git a/examples/main/main.cpp b/examples/main/main.cpp
index e3cc3d39..d7811226 100644
--- a/examples/main/main.cpp
+++ b/examples/main/main.cpp
@@ -149,6 +149,7 @@ int main(int argc, char ** argv) {
}
LOG_TEE("%s: build = %d (%s)\n", __func__, BUILD_NUMBER, BUILD_COMMIT);
+ LOG_TEE("%s: built with %s for %s\n", __func__, BUILD_COMPILER, BUILD_TARGET);
if (params.seed == LLAMA_DEFAULT_SEED) {
params.seed = time(NULL);
diff --git a/examples/perplexity/perplexity.cpp b/examples/perplexity/perplexity.cpp
index 4620c43a..4958cdfb 100644
--- a/examples/perplexity/perplexity.cpp
+++ b/examples/perplexity/perplexity.cpp
@@ -1,6 +1,5 @@
#include "common.h"
#include "llama.h"
-#include "build-info.h"
#include <cmath>
#include <cstdio>
@@ -670,7 +669,7 @@ int main(int argc, char ** argv) {
params.n_ctx += params.ppl_stride/2;
}
- fprintf(stderr, "%s: build = %d (%s)\n", __func__, BUILD_NUMBER, BUILD_COMMIT);
+ print_build_info();
if (params.seed == LLAMA_DEFAULT_SEED) {
params.seed = time(NULL);
diff --git a/examples/quantize-stats/CMakeLists.txt b/examples/quantize-stats/CMakeLists.txt
index c5c39405..db182e26 100644
--- a/examples/quantize-stats/CMakeLists.txt
+++ b/examples/quantize-stats/CMakeLists.txt
@@ -2,4 +2,5 @@ set(TARGET quantize-stats)
add_executable(${TARGET} quantize-stats.cpp)
install(TARGETS ${TARGET} RUNTIME)
target_link_libraries(${TARGET} PRIVATE llama ${CMAKE_THREAD_LIBS_INIT})
+target_include_directories(${TARGET} PRIVATE ../../common)
target_compile_features(${TARGET} PRIVATE cxx_std_11)
diff --git a/examples/quantize-stats/quantize-stats.cpp b/examples/quantize-stats/quantize-stats.cpp
index bfe70889..9f930ded 100644
--- a/examples/quantize-stats/quantize-stats.cpp
+++ b/examples/quantize-stats/quantize-stats.cpp
@@ -1,7 +1,6 @@
-#include "ggml.h"
-#include "build-info.h"
-
#define LLAMA_API_INTERNAL
+#include "common.h"
+#include "ggml.h"
#include "llama.h"
#include <algorithm>
@@ -299,7 +298,7 @@ int main(int argc, char ** argv) {
return 1;
}
- fprintf(stderr, "%s: build = %d (%s)\n", __func__, BUILD_NUMBER, BUILD_COMMIT);
+ print_build_info();
// load the model
fprintf(stderr, "Loading model\n");
diff --git a/examples/quantize/CMakeLists.txt b/examples/quantize/CMakeLists.txt
index 47d0be72..4a8eed54 100644
--- a/examples/quantize/CMakeLists.txt
+++ b/examples/quantize/CMakeLists.txt
@@ -2,6 +2,7 @@ set(TARGET quantize)
add_executable(${TARGET} quantize.cpp)
install(TARGETS ${TARGET} RUNTIME)
target_link_libraries(${TARGET} PRIVATE llama ${CMAKE_THREAD_LIBS_INIT})
+target_include_directories(${TARGET} PRIVATE ../../common)
target_compile_features(${TARGET} PRIVATE cxx_std_11)
if(TARGET BUILD_INFO)
add_dependencies(${TARGET} BUILD_INFO)
diff --git a/examples/quantize/quantize.cpp b/examples/quantize/quantize.cpp
index 300788c9..acb79e69 100644
--- a/examples/quantize/quantize.cpp
+++ b/examples/quantize/quantize.cpp
@@ -1,5 +1,4 @@
-#include "build-info.h"
-
+#include "common.h"
#include "llama.h"
#include <cstdio>
@@ -161,7 +160,7 @@ int main(int argc, char ** argv) {
}
}
- fprintf(stderr, "%s: build = %d (%s)\n", __func__, BUILD_NUMBER, BUILD_COMMIT);
+ print_build_info();
fprintf(stderr, "%s: quantizing '%s' to '%s' as %s", __func__, fname_inp.c_str(), fname_out.c_str(), ftype_str.c_str());
if (params.nthread > 0) {
diff --git a/examples/save-load-state/save-load-state.cpp b/examples/save-load-state/save-load-state.cpp
index 14e9501c..eac30790 100644
--- a/examples/save-load-state/save-load-state.cpp
+++ b/examples/save-load-state/save-load-state.cpp
@@ -1,6 +1,5 @@
#include "common.h"
#include "llama.h"
-#include "build-info.h"
#include <vector>
#include <cstdio>
@@ -17,7 +16,7 @@ int main(int argc, char ** argv) {
return 1;
}
- fprintf(stderr, "%s: build = %d (%s)\n", __func__, BUILD_NUMBER, BUILD_COMMIT);
+ print_build_info();
if (params.n_predict < 0) {
params.n_predict = 16;
diff --git a/examples/simple/CMakeLists.txt b/examples/simple/CMakeLists.txt
index 0ac9cb03..7da5ff6f 100644
--- a/examples/simple/CMakeLists.txt
+++ b/examples/simple/CMakeLists.txt
@@ -3,6 +3,3 @@ add_executable(${TARGET} simple.cpp)
install(TARGETS ${TARGET} RUNTIME)
target_link_libraries(${TARGET} PRIVATE common llama ${CMAKE_THREAD_LIBS_INIT})
target_compile_features(${TARGET} PRIVATE cxx_std_11)
-if(TARGET BUILD_INFO)
- add_dependencies(${TARGET} BUILD_INFO)
-endif()
diff --git a/examples/simple/simple.cpp b/examples/simple/simple.cpp
index ba5de0cc..440d22ec 100644
--- a/examples/simple/simple.cpp
+++ b/examples/simple/simple.cpp
@@ -1,5 +1,3 @@
-#include "build-info.h"
-
#include "common.h"
#include "llama.h"
diff --git a/scripts/build-info.cmake b/scripts/build-info.cmake
index 5023b77a..e33f3349 100644
--- a/scripts/build-info.cmake
+++ b/scripts/build-info.cmake
@@ -2,6 +2,8 @@ set(TEMPLATE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/scripts/build-info.h.in")
set(HEADER_FILE "${CMAKE_CURRENT_SOURCE_DIR}/build-info.h")
set(BUILD_NUMBER 0)
set(BUILD_COMMIT "unknown")
+set(BUILD_COMPILER "unknown")
+set(BUILD_TARGET "unknown")
# Look for git
find_package(Git)
@@ -41,11 +43,45 @@ if(Git_FOUND)
endif()
endif()
+if(GIT_HEAD_RESULT EQUAL 0 AND GIT_COUNT_RESULT EQUAL 0)
+ set(BUILD_COMMIT ${HEAD})
+ set(BUILD_NUMBER ${COUNT})
+endif()
+
+execute_process(
+ COMMAND sh -c "$@ --version | head -1" _ ${CMAKE_C_COMPILER}
+ OUTPUT_VARIABLE OUT
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ RESULT_VARIABLE RES
+)
+if (RES EQUAL 0)
+ set(BUILD_COMPILER ${OUT})
+endif()
+
+execute_process(
+ COMMAND ${CMAKE_C_COMPILER} -dumpmachine
+ OUTPUT_VARIABLE OUT
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ RESULT_VARIABLE RES
+)
+if (RES EQUAL 0)
+ set(BUILD_TARGET ${OUT})
+endif()
+
# Only write the header if it's changed to prevent unnecessary recompilation
if(EXISTS ${HEADER_FILE})
- file(STRINGS ${HEADER_FILE} CONTENTS REGEX "BUILD_COMMIT \"([^\"]*)\"")
- list(GET CONTENTS 0 EXISTING)
- if(NOT EXISTING STREQUAL "#define BUILD_COMMIT \"${BUILD_COMMIT}\"")
+ file(READ ${HEADER_FILE} CONTENTS)
+ string(REGEX MATCH "BUILD_COMMIT \"([^\"]*)\"" _ ${CONTENTS})
+ set(OLD_COMMIT ${CMAKE_MATCH_1})
+ string(REGEX MATCH "BUILD_COMPILER \"([^\"]*)\"" _ ${CONTENTS})
+ set(OLD_COMPILER ${CMAKE_MATCH_1})
+ string(REGEX MATCH "BUILD_TARGET \"([^\"]*)\"" _ ${CONTENTS})
+ set(OLD_TARGET ${CMAKE_MATCH_1})
+ if (
+ NOT OLD_COMMIT STREQUAL BUILD_COMMIT OR
+ NOT OLD_COMPILER STREQUAL BUILD_COMPILER OR
+ NOT OLD_TARGET STREQUAL BUILD_TARGET
+ )
configure_file(${TEMPLATE_FILE} ${HEADER_FILE})
endif()
else()
diff --git a/scripts/build-info.h.in b/scripts/build-info.h.in
index 75d1e16f..e996faef 100644
--- a/scripts/build-info.h.in
+++ b/scripts/build-info.h.in
@@ -3,5 +3,7 @@
#define BUILD_NUMBER @BUILD_NUMBER@
#define BUILD_COMMIT "@BUILD_COMMIT@"
+#define BUILD_COMPILER "@BUILD_COMPILER@"
+#define BUILD_TARGET "@BUILD_TARGET@"
#endif // BUILD_INFO_H
diff --git a/scripts/build-info.sh b/scripts/build-info.sh
index ed0d6c56..3c8b1fb8 100755
--- a/scripts/build-info.sh
+++ b/scripts/build-info.sh
@@ -1,23 +1,35 @@
#!/bin/sh
-BUILD_NUMBER="0"
-BUILD_COMMIT="unknown"
+CC=$1
-REV_LIST=$(git rev-list --count HEAD)
-if [ $? -eq 0 ]; then
- BUILD_NUMBER=$REV_LIST
+build_number="0"
+build_commit="unknown"
+build_compiler="unknown"
+build_target="unknown"
+
+if out=$(git rev-list --count HEAD); then
+ # git is broken on WSL so we need to strip extra newlines
+ build_number=$(printf '%s' "$out" | tr -d '\n')
+fi
+
+if out=$(git rev-parse --short HEAD); then
+ build_commit=$(printf '%s' "$out" | tr -d '\n')
+fi
+
+if out=$($CC --version | head -1); then
+ build_compiler=$out
fi
-REV_PARSE=$(git rev-parse --short HEAD)
-if [ $? -eq 0 ]; then
- BUILD_COMMIT=$REV_PARSE
+if out=$($CC -dumpmachine); then
+ build_target=$out
fi
echo "#ifndef BUILD_INFO_H"
echo "#define BUILD_INFO_H"
-echo ""
-echo "#define BUILD_NUMBER $BUILD_NUMBER" | tr -d '\n'
-echo ""
-echo "#define BUILD_COMMIT \"$BUILD_COMMIT\"" | tr -d '\n'
-echo ""
+echo
+echo "#define BUILD_NUMBER $build_number"
+echo "#define BUILD_COMMIT \"$build_commit\""
+echo "#define BUILD_COMPILER \"$build_compiler\""
+echo "#define BUILD_TARGET \"$build_target\""
+echo
echo "#endif // BUILD_INFO_H"