common.cmake 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. include("ggml/cmake/common.cmake")
  2. function(llama_add_compile_flags)
  3. if (LLAMA_FATAL_WARNINGS)
  4. if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  5. list(APPEND C_FLAGS -Werror)
  6. list(APPEND CXX_FLAGS -Werror)
  7. elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
  8. add_compile_options(/WX)
  9. endif()
  10. endif()
  11. if (LLAMA_ALL_WARNINGS)
  12. if (NOT MSVC)
  13. list(APPEND C_FLAGS -Wshadow -Wstrict-prototypes -Wpointer-arith -Wmissing-prototypes
  14. -Werror=implicit-int -Werror=implicit-function-declaration)
  15. list(APPEND CXX_FLAGS -Wmissing-declarations -Wmissing-noreturn)
  16. list(APPEND WARNING_FLAGS -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function)
  17. list(APPEND C_FLAGS ${WARNING_FLAGS})
  18. list(APPEND CXX_FLAGS ${WARNING_FLAGS})
  19. ggml_get_flags(${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION})
  20. add_compile_options("$<$<COMPILE_LANGUAGE:C>:${C_FLAGS};${GF_C_FLAGS}>"
  21. "$<$<COMPILE_LANGUAGE:CXX>:${CXX_FLAGS};${GF_CXX_FLAGS}>")
  22. else()
  23. # todo : msvc
  24. set(C_FLAGS "" PARENT_SCOPE)
  25. set(CXX_FLAGS "" PARENT_SCOPE)
  26. endif()
  27. endif()
  28. endfunction()
  29. function(llama_download_model NAME HASH)
  30. set(DEST "${CMAKE_BINARY_DIR}/${NAME}")
  31. get_filename_component(DEST_DIR "${DEST}" DIRECTORY)
  32. file(MAKE_DIRECTORY "${DEST_DIR}")
  33. if(NOT EXISTS "${DEST}")
  34. message(STATUS "Downloading ${NAME} from ggml-org/models...")
  35. endif()
  36. file(DOWNLOAD
  37. "https://huggingface.co/ggml-org/models/resolve/main/${NAME}?download=true"
  38. "${DEST}"
  39. TLS_VERIFY ON
  40. EXPECTED_HASH ${HASH}
  41. STATUS status
  42. )
  43. list(GET status 0 code)
  44. if(NOT code EQUAL 0)
  45. list(GET status 1 msg)
  46. message(FATAL_ERROR "Failed to download ${NAME}: ${msg}")
  47. endif()
  48. set(LLAMA_DOWNLOAD_MODEL "${DEST}" PARENT_SCOPE)
  49. endfunction()