This commit is contained in:
commit
d104725a46
2 changed files with 75 additions and 37 deletions
|
@ -105,6 +105,44 @@ if (LLAMA_NATIVE)
|
||||||
include(cmake/FindSIMD.cmake)
|
include(cmake/FindSIMD.cmake)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
#
|
||||||
|
# Build info header
|
||||||
|
#
|
||||||
|
|
||||||
|
# Generate initial build-info.h
|
||||||
|
include(${CMAKE_CURRENT_SOURCE_DIR}/scripts/build-info.cmake)
|
||||||
|
|
||||||
|
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})
|
||||||
|
set(GIT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${REAL_GIT_DIR}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Add a custom target for build-info.h
|
||||||
|
add_custom_target(BUILD_INFO ALL DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/build-info.h")
|
||||||
|
|
||||||
|
# Add a custom command to rebuild build-info.h when .git/index changes
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/build-info.h"
|
||||||
|
COMMENT "Generating build details from Git"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_SOURCE_DIR}/scripts/build-info.cmake"
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
DEPENDS "${GIT_DIR}/index"
|
||||||
|
VERBATIM
|
||||||
|
)
|
||||||
|
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.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(LLAMA_NATIVE)
|
||||||
|
include(cmake/FindSIMD.cmake)
|
||||||
|
endif()
|
||||||
|
>>>>>>> 8a2a73102c8b7af446af0350282b65d7820fe4ac
|
||||||
|
|
||||||
#
|
#
|
||||||
# Compile flags
|
# Compile flags
|
||||||
#
|
#
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
INCLUDE(CheckCSourceRuns)
|
include(CheckCSourceRuns)
|
||||||
|
|
||||||
SET(AVX_CODE "
|
set(AVX_CODE "
|
||||||
#include <immintrin.h>
|
#include <immintrin.h>
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
|
@ -10,7 +10,7 @@ SET(AVX_CODE "
|
||||||
}
|
}
|
||||||
")
|
")
|
||||||
|
|
||||||
SET(AVX512_CODE "
|
set(AVX512_CODE "
|
||||||
#include <immintrin.h>
|
#include <immintrin.h>
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
|
@ -28,7 +28,7 @@ SET(AVX512_CODE "
|
||||||
}
|
}
|
||||||
")
|
")
|
||||||
|
|
||||||
SET(AVX2_CODE "
|
set(AVX2_CODE "
|
||||||
#include <immintrin.h>
|
#include <immintrin.h>
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
|
@ -40,7 +40,7 @@ SET(AVX2_CODE "
|
||||||
}
|
}
|
||||||
")
|
")
|
||||||
|
|
||||||
SET(FMA_CODE "
|
set(FMA_CODE "
|
||||||
#include <immintrin.h>
|
#include <immintrin.h>
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
|
@ -52,48 +52,48 @@ SET(FMA_CODE "
|
||||||
}
|
}
|
||||||
")
|
")
|
||||||
|
|
||||||
MACRO(CHECK_SSE type flags)
|
macro(check_sse type flags)
|
||||||
SET(__FLAG_I 1)
|
set(__FLAG_I 1)
|
||||||
SET(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS})
|
set(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS})
|
||||||
FOREACH(__FLAG ${flags})
|
foreach(__FLAG ${flags})
|
||||||
IF(NOT ${type}_FOUND)
|
if(NOT ${type}_FOUND)
|
||||||
SET(CMAKE_REQUIRED_FLAGS ${__FLAG})
|
set(CMAKE_REQUIRED_FLAGS ${__FLAG})
|
||||||
CHECK_C_SOURCE_RUNS("${${type}_CODE}" HAS_${type}_${__FLAG_I})
|
CHECK_C_SOURCE_RUNS("${${type}_CODE}" HAS_${type}_${__FLAG_I})
|
||||||
IF(HAS_${type}_${__FLAG_I})
|
if(HAS_${type}_${__FLAG_I})
|
||||||
SET(${type}_FOUND TRUE CACHE BOOL "${type} support")
|
set(${type}_FOUND TRUE CACHE BOOL "${type} support")
|
||||||
SET(${type}_FLAGS "${__FLAG}" CACHE STRING "${type} flags")
|
set(${type}_FLAGS "${__FLAG}" CACHE STRING "${type} flags")
|
||||||
ENDIF()
|
endif()
|
||||||
MATH(EXPR __FLAG_I "${__FLAG_I}+1")
|
math(EXPR __FLAG_I "${__FLAG_I}+1")
|
||||||
ENDIF()
|
endif()
|
||||||
ENDFOREACH()
|
endforeach()
|
||||||
SET(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE})
|
set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE})
|
||||||
|
|
||||||
IF(NOT ${type}_FOUND)
|
if(NOT ${type}_FOUND)
|
||||||
SET(${type}_FOUND FALSE CACHE BOOL "${type} support")
|
set(${type}_FOUND FALSE CACHE BOOL "${type} support")
|
||||||
SET(${type}_FLAGS "" CACHE STRING "${type} flags")
|
set(${type}_FLAGS "" CACHE STRING "${type} flags")
|
||||||
ENDIF()
|
endif()
|
||||||
|
|
||||||
MARK_AS_ADVANCED(${type}_FOUND ${type}_FLAGS)
|
mark_as_advanced(${type}_FOUND ${type}_FLAGS)
|
||||||
|
|
||||||
ENDMACRO()
|
endmacro()
|
||||||
|
|
||||||
CHECK_SSE("AVX" " ;/arch:AVX")
|
check_sse("AVX" " ;/arch:AVX")
|
||||||
IF(NOT ${AVX_FOUND})
|
if(NOT ${AVX_FOUND})
|
||||||
set(LLAMA_AVX OFF)
|
set(LLAMA_AVX OFF)
|
||||||
ELSE()
|
else()
|
||||||
set(LLAMA_AVX ON)
|
set(LLAMA_AVX ON)
|
||||||
ENDIF()
|
endif()
|
||||||
|
|
||||||
CHECK_SSE("AVX2" " ;/arch:AVX2")
|
check_sse("AVX2" " ;/arch:AVX2")
|
||||||
IF(NOT ${AVX2_FOUND})
|
if(NOT ${AVX2_FOUND})
|
||||||
set(LLAMA_AVX2 OFF)
|
set(LLAMA_AVX2 OFF)
|
||||||
ELSE()
|
else()
|
||||||
set(LLAMA_AVX2 ON)
|
set(LLAMA_AVX2 ON)
|
||||||
ENDIF()
|
endif()
|
||||||
|
|
||||||
CHECK_SSE("AVX512" " ;/arch:AVX512")
|
check_sse("AVX512" " ;/arch:AVX512")
|
||||||
IF(NOT ${AVX512_FOUND})
|
if(NOT ${AVX512_FOUND})
|
||||||
set(LLAMA_AVX512 OFF)
|
set(LLAMA_AVX512 OFF)
|
||||||
ELSE()
|
else()
|
||||||
set(LLAMA_AVX512 ON)
|
set(LLAMA_AVX512 ON)
|
||||||
ENDIF()
|
endif()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue