2023-08-21 22:07:43 +02:00
# common
2024-06-26 17:33:02 +02:00
find_package ( Threads REQUIRED )
2023-11-02 07:50:16 +01:00
2024-11-26 13:18:08 +01:00
llama_add_compile_flags ( )
2023-11-02 07:50:16 +01: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 23:23:08 +01: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 07:50:16 +01:00
endif ( )
2024-03-04 19:26:55 +01: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 07:50:16 +01: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 (
O U T P U T " $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / b u i l d - i n f o . c p p "
C O M M E N T " G e n e r a t i n g b u i l d d e t a i l s f r o m G i t "
C O M M A N D $ { C M A K E _ C O M M A N D } - D M S V C = $ { MSVC } - D C M A K E _ C _ C O M P I L E R _ V E R S I O N = $ { C M A K E _ C _ C O M P I L E R _ V E R S I O N }
- D C M A K E _ C _ C O M P I L E R _ I D = $ { C M A K E _ C _ C O M P I L E R _ I D } - D C M A K E _ V S _ P L A T F O R M _ N A M E = $ { C M A K E _ V S _ P L A T F O R M _ N A M E }
2024-06-26 17:33:02 +02:00
- D C M A K E _ C _ C O M P I L E R = $ { C M A K E _ C _ C O M P I L E R } - P " $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / c m a k e / b u i l d - i n f o - g e n - c p p . c m a k e "
2023-11-02 07:50:16 +01:00
W O R K I N G _ D I R E C T O R Y " $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / . . "
D E P E N D S " $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / b u i l d - i n f o . c p p . i n " $ { G I T _ I N D E X }
V E R B A T I M
)
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 22:07:43 +02:00
set ( TARGET common )
2023-11-02 07:50:16 +01:00
add_library ( ${ TARGET } STATIC
2024-09-15 19:46:12 +02:00
a r g . c p p
a r g . h
2023-11-06 22:36:23 +01:00
b a s e 6 4 . h p p
2025-01-21 14:18:51 +01:00
c h a t - t e m p l a t e . h p p
2023-08-21 22:07:43 +02:00
c o m m o n . c p p
2024-09-15 19:46:12 +02:00
c o m m o n . h
2023-08-21 22:07:43 +02:00
c o n s o l e . c p p
2024-09-15 19:46:12 +02:00
c o n s o l e . h
2024-04-15 19:35:21 +02:00
j s o n - s c h e m a - t o - g r a m m a r . c p p
2024-09-15 19:46:12 +02:00
j s o n . h p p
2025-01-26 00:49:23 +01:00
l l g u i d a n c e . c p p
2024-09-15 19:46:12 +02:00
l o g . c p p
l o g . h
2025-01-21 14:18:51 +01:00
m i n j a . h p p
2024-03-23 01:24:36 +01:00
n g r a m - c a c h e . c p p
2024-09-15 19:46:12 +02:00
n g r a m - c a c h e . h
s a m p l i n g . c p p
s a m p l i n g . h
2024-11-25 08:58:41 +01:00
s p e c u l a t i v e . c p p
s p e c u l a t i v e . h
2023-08-21 22:07:43 +02: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 )
2024-12-13 19:34:25 +01:00
target_compile_definitions ( ${ TARGET } PUBLIC LLAMA_USE_CURL )
2024-03-17 19:12:37 +01:00
include_directories ( ${ CURL_INCLUDE_DIRS } )
find_library ( CURL_LIBRARY curl REQUIRED )
set ( LLAMA_COMMON_EXTRA_LIBS ${ LLAMA_COMMON_EXTRA_LIBS } ${ CURL_LIBRARY } )
endif ( )
2025-01-26 00:49:23 +01:00
if ( LLAMA_LLGUIDANCE )
include ( ExternalProject )
set ( LLGUIDANCE_SRC ${ CMAKE_BINARY_DIR } /llguidance/source )
set ( LLGUIDANCE_PATH ${ LLGUIDANCE_SRC } /target/release )
ExternalProject_Add ( llguidance_ext
G I T _ R E P O S I T O R Y h t t p s : / / g i t h u b . c o m / g u i d a n c e - a i / l l g u i d a n c e
G I T _ T A G 0 c b e 6 b 3 a 6 e e 7 2 e 5 7 2 6 c 7 6 f 1 3 f e 6 7 e 2 1 a 5 8 9 5 f 6 7 9
P R E F I X $ { C M A K E _ B I N A R Y _ D I R } / l l g u i d a n c e
S O U R C E _ D I R $ { L L G U I D A N C E _ S R C }
B U I L D _ I N _ S O U R C E T R U E
C O N F I G U R E _ C O M M A N D " "
B U I L D _ C O M M A N D c a r g o b u i l d - - r e l e a s e
I N S T A L L _ C O M M A N D " "
B U I L D _ B Y P R O D U C T S $ { L L G U I D A N C E _ P A T H } / l i b l l g u i d a n c e . a $ { L L G U I D A N C E _ P A T H } / l l g u i d a n c e . h
U P D A T E _ C O M M A N D " "
)
target_compile_definitions ( ${ TARGET } PUBLIC LLAMA_USE_LLGUIDANCE )
add_library ( llguidance STATIC IMPORTED )
set_target_properties ( llguidance PROPERTIES IMPORTED_LOCATION ${ LLGUIDANCE_PATH } /libllguidance.a )
add_dependencies ( llguidance llguidance_ext )
target_include_directories ( ${ TARGET } PRIVATE ${ LLGUIDANCE_PATH } )
set ( LLAMA_COMMON_EXTRA_LIBS ${ LLAMA_COMMON_EXTRA_LIBS } llguidance )
endif ( )
2023-08-21 22:07:43 +02:00
target_include_directories ( ${ TARGET } PUBLIC . )
2024-11-29 21:54:58 +01:00
target_compile_features ( ${ TARGET } PUBLIC cxx_std_17 )
2024-06-26 17:33:02 +02:00
target_link_libraries ( ${ TARGET } PRIVATE ${ LLAMA_COMMON_EXTRA_LIBS } PUBLIC llama Threads::Threads )