MacOS fixes: lower CMake version, use strtoll instead of from_chars

This commit is contained in:
Nikita Lisitsa 2026-01-02 11:34:52 +03:00
parent 0ba3e4324d
commit da39ae1225
3 changed files with 8 additions and 2 deletions

View file

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.30) cmake_minimum_required(VERSION 3.23)
project(pslang CXX) project(pslang CXX)
set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD 23)

View file

@ -10,6 +10,8 @@ set(PSLANG_LEXER_SOURCE_FILE "${CMAKE_CURRENT_BINARY_DIR}/generated/gen_lexer.cp
set(PSLANG_PARSER_HEADER_FILE "${CMAKE_CURRENT_BINARY_DIR}/generated/gen_parser.hpp") set(PSLANG_PARSER_HEADER_FILE "${CMAKE_CURRENT_BINARY_DIR}/generated/gen_parser.hpp")
set(PSLANG_PARSER_SOURCE_FILE "${CMAKE_CURRENT_BINARY_DIR}/generated/gen_parser.cpp") set(PSLANG_PARSER_SOURCE_FILE "${CMAKE_CURRENT_BINARY_DIR}/generated/gen_parser.cpp")
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/generated")
flex_target( flex_target(
generate-pslang-lexer generate-pslang-lexer
${PSLANG_LEXER_RULES_FILE} ${PSLANG_LEXER_RULES_FILE}

View file

@ -47,9 +47,13 @@ template <typename T>
::pslang::ast::literal parse_primitive_literal(std::string const & str, ::pslang::ast::location const & location) ::pslang::ast::literal parse_primitive_literal(std::string const & str, ::pslang::ast::location const & location)
{ {
T value; T value;
#ifdef __clang__
value = std::strtoll(str.data(), nullptr, 10);
#else
auto result = std::from_chars(str.data(), str.data() + str.size(), value); auto result = std::from_chars(str.data(), str.data() + str.size(), value);
if (result.ec != std::errc()) if (result.ec != std::errc())
throw std::system_error(std::make_error_code(result.ec)); throw std::system_error(std::make_error_code(result.ec));
#endif
return ::pslang::ast::primitive_literal_base<T>{value, location}; return ::pslang::ast::primitive_literal_base<T>{value, location};
} }
@ -101,7 +105,7 @@ template <typename T>
%token <std::string> lit_f32 %token <std::string> lit_f32
%token <std::string> lit_f64 %token <std::string> lit_f64
%token <char> lit_char8 %token <std::uint8_t> lit_char8
%token <std::string> name %token <std::string> name