2023-08-21 23:07:43 +03:00
# common
2023-11-02 02:50:16 -04:00
# Build info header
#
if ( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../.git" )
set ( GIT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../.git" )
# Is git submodule
if ( NOT IS_DIRECTORY "${GIT_DIR}" )
file ( READ ${ GIT_DIR } REAL_GIT_DIR_LINK )
string ( REGEX REPLACE "gitdir: (.*)\n$" "\\1" REAL_GIT_DIR ${ REAL_GIT_DIR_LINK } )
2023-11-30 17:23:08 -05:00
string ( FIND "${REAL_GIT_DIR}" "/" SLASH_POS )
if ( SLASH_POS EQUAL 0 )
set ( GIT_DIR "${REAL_GIT_DIR}" )
else ()
set ( GIT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../${REAL_GIT_DIR}" )
endif ()
2023-11-02 02:50:16 -04:00
endif ()
2024-03-05 05:26:55 +11:00
if ( EXISTS "${GIT_DIR}/index" )
set ( GIT_INDEX "${GIT_DIR}/index" )
else ()
message ( WARNING "Git index not found in git repository." )
set ( GIT_INDEX "" )
endif ()
2023-11-02 02:50:16 -04:00
else ()
message ( WARNING "Git repository not found; to enable automatic generation of build info, make sure Git is installed and the project is a Git repository." )
set ( GIT_INDEX "" )
endif ()
# Add a custom command to rebuild build-info.cpp when .git/index changes
add_custom_command (
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/build-info.cpp"
COMMENT "Generating build details from Git"
COMMAND ${ CMAKE_COMMAND } -DMSVC= ${ MSVC } -DCMAKE_C_COMPILER_VERSION= ${ CMAKE_C_COMPILER_VERSION }
-DCMAKE_C_COMPILER_ID= ${ CMAKE_C_COMPILER_ID } -DCMAKE_VS_PLATFORM_NAME= ${ CMAKE_VS_PLATFORM_NAME }
2023-11-27 15:25:42 -04:00
-DCMAKE_C_COMPILER= ${ CMAKE_C_COMPILER } -P "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/gen-build-info-cpp.cmake"
2023-11-02 02:50:16 -04:00
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/.."
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/build-info.cpp.in" ${ GIT_INDEX }
VERBATIM
)
set ( TARGET build_info )
add_library ( ${ TARGET } OBJECT build-info.cpp )
if ( BUILD_SHARED_LIBS )
set_target_properties ( ${ TARGET } PROPERTIES POSITION_INDEPENDENT_CODE ON )
endif ()
2023-08-21 23:07:43 +03:00
set ( TARGET common )
2023-11-02 02:50:16 -04:00
add_library ( ${ TARGET } STATIC
2023-11-06 22:36:23 +01:00
base64.hpp
2023-08-21 23:07:43 +03:00
common.h
common.cpp
2023-10-11 13:35:46 -06:00
sampling.h
sampling.cpp
2023-08-21 23:07:43 +03:00
console.h
console.cpp
grammar-parser.h
grammar-parser.cpp
2024-03-21 11:50:43 +00:00
json.hpp
2024-04-15 18:35:21 +01:00
json-schema-to-grammar.cpp
2023-09-28 20:40:11 +02:00
train.h
train.cpp
2024-03-23 01:24:36 +01:00
ngram-cache.h
ngram-cache.cpp
2023-08-21 23:07:43 +03:00
)
if ( BUILD_SHARED_LIBS )
set_target_properties ( ${ TARGET } PROPERTIES POSITION_INDEPENDENT_CODE ON )
endif ()
2024-03-17 19:12:37 +01:00
set ( LLAMA_COMMON_EXTRA_LIBS build_info )
# Use curl to download model url
if ( LLAMA_CURL )
find_package ( CURL REQUIRED )
add_definitions ( -DLLAMA_USE_CURL )
include_directories ( ${ CURL_INCLUDE_DIRS } )
find_library ( CURL_LIBRARY curl REQUIRED )
set ( LLAMA_COMMON_EXTRA_LIBS ${ LLAMA_COMMON_EXTRA_LIBS } ${ CURL_LIBRARY } )
endif ()
2023-08-21 23:07:43 +03:00
target_include_directories ( ${ TARGET } PUBLIC . )
target_compile_features ( ${ TARGET } PUBLIC cxx_std_11 )
2024-03-17 19:12:37 +01:00
target_link_libraries ( ${ TARGET } PRIVATE ${ LLAMA_COMMON_EXTRA_LIBS } PUBLIC llama )