Skip to content

Commit b38a16d

Browse files
authored
cmake : fix issue with version info not getting baked into LlamaConfig.cmake (#3970)
* Split CPP generation from build-info query * Remove blank lines * Add BUILD_SHARED_LIBS option
1 parent 0dab8cd commit b38a16d

File tree

4 files changed

+29
-23
lines changed

4 files changed

+29
-23
lines changed

CMakeLists.txt

+4
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ else()
4343
endif()
4444

4545
# general
46+
option(BUILD_SHARED_LIBS "build shared libraries" OFF)
4647
option(LLAMA_STATIC "llama: static link libraries" OFF)
4748
option(LLAMA_NATIVE "llama: enable -march=native flag" ON)
4849
option(LLAMA_LTO "llama: enable link time optimization" OFF)
@@ -100,6 +101,9 @@ option(LLAMA_BUILD_TESTS "llama: build tests" ${LLAMA_STANDALO
100101
option(LLAMA_BUILD_EXAMPLES "llama: build examples" ${LLAMA_STANDALONE})
101102
option(LLAMA_BUILD_SERVER "llama: build server example" ON)
102103

104+
# Required for relocatable CMake package
105+
include(${CMAKE_CURRENT_SOURCE_DIR}/scripts/build-info.cmake)
106+
103107
#
104108
# Compile flags
105109
#

common/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ add_custom_command(
2626
COMMENT "Generating build details from Git"
2727
COMMAND ${CMAKE_COMMAND} -DMSVC=${MSVC} -DCMAKE_C_COMPILER_VERSION=${CMAKE_C_COMPILER_VERSION}
2828
-DCMAKE_C_COMPILER_ID=${CMAKE_C_COMPILER_ID} -DCMAKE_VS_PLATFORM_NAME=${CMAKE_VS_PLATFORM_NAME}
29-
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -P "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/build-info.cmake"
29+
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -P "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/gen-build-info-cpp.cmake"
3030
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/.."
3131
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/build-info.cpp.in" ${GIT_INDEX}
3232
VERBATIM

scripts/build-info.cmake

-22
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
set(TEMPLATE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/common/build-info.cpp.in")
2-
set(OUTPUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/common/build-info.cpp")
31
set(BUILD_NUMBER 0)
42
set(BUILD_COMMIT "unknown")
53
set(BUILD_COMPILER "unknown")
@@ -58,23 +56,3 @@ else()
5856
)
5957
set(BUILD_TARGET ${OUT})
6058
endif()
61-
62-
# Only write the build info if it changed
63-
if(EXISTS ${OUTPUT_FILE})
64-
file(READ ${OUTPUT_FILE} CONTENTS)
65-
string(REGEX MATCH "LLAMA_COMMIT = \"([^\"]*)\";" _ ${CONTENTS})
66-
set(OLD_COMMIT ${CMAKE_MATCH_1})
67-
string(REGEX MATCH "LLAMA_COMPILER = \"([^\"]*)\";" _ ${CONTENTS})
68-
set(OLD_COMPILER ${CMAKE_MATCH_1})
69-
string(REGEX MATCH "LLAMA_BUILD_TARGET = \"([^\"]*)\";" _ ${CONTENTS})
70-
set(OLD_TARGET ${CMAKE_MATCH_1})
71-
if (
72-
NOT OLD_COMMIT STREQUAL BUILD_COMMIT OR
73-
NOT OLD_COMPILER STREQUAL BUILD_COMPILER OR
74-
NOT OLD_TARGET STREQUAL BUILD_TARGET
75-
)
76-
configure_file(${TEMPLATE_FILE} ${OUTPUT_FILE})
77-
endif()
78-
else()
79-
configure_file(${TEMPLATE_FILE} ${OUTPUT_FILE})
80-
endif()

scripts/gen-build-info-cpp.cmake

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
include(${CMAKE_CURRENT_SOURCE_DIR}/scripts/build-info.cmake)
2+
3+
set(TEMPLATE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/common/build-info.cpp.in")
4+
set(OUTPUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/common/build-info.cpp")
5+
6+
# Only write the build info if it changed
7+
if(EXISTS ${OUTPUT_FILE})
8+
file(READ ${OUTPUT_FILE} CONTENTS)
9+
string(REGEX MATCH "LLAMA_COMMIT = \"([^\"]*)\";" _ ${CONTENTS})
10+
set(OLD_COMMIT ${CMAKE_MATCH_1})
11+
string(REGEX MATCH "LLAMA_COMPILER = \"([^\"]*)\";" _ ${CONTENTS})
12+
set(OLD_COMPILER ${CMAKE_MATCH_1})
13+
string(REGEX MATCH "LLAMA_BUILD_TARGET = \"([^\"]*)\";" _ ${CONTENTS})
14+
set(OLD_TARGET ${CMAKE_MATCH_1})
15+
if (
16+
NOT OLD_COMMIT STREQUAL BUILD_COMMIT OR
17+
NOT OLD_COMPILER STREQUAL BUILD_COMPILER OR
18+
NOT OLD_TARGET STREQUAL BUILD_TARGET
19+
)
20+
configure_file(${TEMPLATE_FILE} ${OUTPUT_FILE})
21+
endif()
22+
else()
23+
configure_file(${TEMPLATE_FILE} ${OUTPUT_FILE})
24+
endif()

0 commit comments

Comments
 (0)