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)
|
||||
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
|
||||
#
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
INCLUDE(CheckCSourceRuns)
|
||||
include(CheckCSourceRuns)
|
||||
|
||||
SET(AVX_CODE "
|
||||
set(AVX_CODE "
|
||||
#include <immintrin.h>
|
||||
int main()
|
||||
{
|
||||
|
@ -10,7 +10,7 @@ SET(AVX_CODE "
|
|||
}
|
||||
")
|
||||
|
||||
SET(AVX512_CODE "
|
||||
set(AVX512_CODE "
|
||||
#include <immintrin.h>
|
||||
int main()
|
||||
{
|
||||
|
@ -28,7 +28,7 @@ SET(AVX512_CODE "
|
|||
}
|
||||
")
|
||||
|
||||
SET(AVX2_CODE "
|
||||
set(AVX2_CODE "
|
||||
#include <immintrin.h>
|
||||
int main()
|
||||
{
|
||||
|
@ -40,7 +40,7 @@ SET(AVX2_CODE "
|
|||
}
|
||||
")
|
||||
|
||||
SET(FMA_CODE "
|
||||
set(FMA_CODE "
|
||||
#include <immintrin.h>
|
||||
int main()
|
||||
{
|
||||
|
@ -52,48 +52,48 @@ SET(FMA_CODE "
|
|||
}
|
||||
")
|
||||
|
||||
MACRO(CHECK_SSE type flags)
|
||||
SET(__FLAG_I 1)
|
||||
SET(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS})
|
||||
FOREACH(__FLAG ${flags})
|
||||
IF(NOT ${type}_FOUND)
|
||||
SET(CMAKE_REQUIRED_FLAGS ${__FLAG})
|
||||
macro(check_sse type flags)
|
||||
set(__FLAG_I 1)
|
||||
set(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS})
|
||||
foreach(__FLAG ${flags})
|
||||
if(NOT ${type}_FOUND)
|
||||
set(CMAKE_REQUIRED_FLAGS ${__FLAG})
|
||||
CHECK_C_SOURCE_RUNS("${${type}_CODE}" HAS_${type}_${__FLAG_I})
|
||||
IF(HAS_${type}_${__FLAG_I})
|
||||
SET(${type}_FOUND TRUE CACHE BOOL "${type} support")
|
||||
SET(${type}_FLAGS "${__FLAG}" CACHE STRING "${type} flags")
|
||||
ENDIF()
|
||||
MATH(EXPR __FLAG_I "${__FLAG_I}+1")
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
SET(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE})
|
||||
if(HAS_${type}_${__FLAG_I})
|
||||
set(${type}_FOUND TRUE CACHE BOOL "${type} support")
|
||||
set(${type}_FLAGS "${__FLAG}" CACHE STRING "${type} flags")
|
||||
endif()
|
||||
math(EXPR __FLAG_I "${__FLAG_I}+1")
|
||||
endif()
|
||||
endforeach()
|
||||
set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE})
|
||||
|
||||
IF(NOT ${type}_FOUND)
|
||||
SET(${type}_FOUND FALSE CACHE BOOL "${type} support")
|
||||
SET(${type}_FLAGS "" CACHE STRING "${type} flags")
|
||||
ENDIF()
|
||||
if(NOT ${type}_FOUND)
|
||||
set(${type}_FOUND FALSE CACHE BOOL "${type} support")
|
||||
set(${type}_FLAGS "" CACHE STRING "${type} flags")
|
||||
endif()
|
||||
|
||||
MARK_AS_ADVANCED(${type}_FOUND ${type}_FLAGS)
|
||||
mark_as_advanced(${type}_FOUND ${type}_FLAGS)
|
||||
|
||||
ENDMACRO()
|
||||
endmacro()
|
||||
|
||||
CHECK_SSE("AVX" " ;/arch:AVX")
|
||||
IF(NOT ${AVX_FOUND})
|
||||
check_sse("AVX" " ;/arch:AVX")
|
||||
if(NOT ${AVX_FOUND})
|
||||
set(LLAMA_AVX OFF)
|
||||
ELSE()
|
||||
else()
|
||||
set(LLAMA_AVX ON)
|
||||
ENDIF()
|
||||
endif()
|
||||
|
||||
CHECK_SSE("AVX2" " ;/arch:AVX2")
|
||||
IF(NOT ${AVX2_FOUND})
|
||||
check_sse("AVX2" " ;/arch:AVX2")
|
||||
if(NOT ${AVX2_FOUND})
|
||||
set(LLAMA_AVX2 OFF)
|
||||
ELSE()
|
||||
else()
|
||||
set(LLAMA_AVX2 ON)
|
||||
ENDIF()
|
||||
endif()
|
||||
|
||||
CHECK_SSE("AVX512" " ;/arch:AVX512")
|
||||
IF(NOT ${AVX512_FOUND})
|
||||
check_sse("AVX512" " ;/arch:AVX512")
|
||||
if(NOT ${AVX512_FOUND})
|
||||
set(LLAMA_AVX512 OFF)
|
||||
ELSE()
|
||||
else()
|
||||
set(LLAMA_AVX512 ON)
|
||||
ENDIF()
|
||||
endif()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue