-
Notifications
You must be signed in to change notification settings - Fork 6.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Patch Tuesday for December 2024 (#42749)
- Loading branch information
1 parent
4fcf123
commit f06267d
Showing
18 changed files
with
150 additions
and
146 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
cmake_minimum_required(VERSION 3.30) | ||
project(ryu LANGUAGES C) | ||
|
||
add_library(ryu | ||
"ryu/f2s.c" | ||
"ryu/d2s.c" | ||
"ryu/d2s.h" | ||
"ryu/d2s_full_table.h" | ||
"ryu/d2s_intrinsics.h" | ||
"ryu/digit_table.h" | ||
"ryu/common.h" | ||
"ryu/ryu.h" | ||
) | ||
|
||
target_include_directories(ryu PUBLIC | ||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> | ||
$<INSTALL_INTERFACE:include> | ||
) | ||
|
||
add_library(ryu_printf | ||
"ryu/d2fixed.c" | ||
"ryu/d2s_intrinsics.h" | ||
"ryu/d2fixed_full_table.h" | ||
"ryu/digit_table.h" | ||
"ryu/common.h" | ||
"ryu/ryu2.h" | ||
) | ||
|
||
target_include_directories(ryu_printf PUBLIC | ||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> | ||
$<INSTALL_INTERFACE:include> | ||
) | ||
|
||
if(NOT "${CMAKE_STATIC_LIBRARY_SUFFIX}" STREQUAL ".lib") | ||
set_target_properties(ryu PROPERTIES OUTPUT_NAME "libryu") | ||
set_target_properties(ryu_printf PROPERTIES OUTPUT_NAME "libryu_printf") | ||
endif() | ||
|
||
if(INSTALL_HEADERS) | ||
install(FILES "ryu/ryu.h" "ryu/ryu2.h" DESTINATION "include/ryu") | ||
endif() | ||
|
||
install(TARGETS ryu ryu_printf EXPORT ryuTargets | ||
ARCHIVE DESTINATION lib | ||
LIBRARY DESTINATION lib | ||
RUNTIME DESTINATION bin | ||
) | ||
|
||
install(EXPORT ryuTargets | ||
FILE ryuConfig.cmake | ||
NAMESPACE RYU:: | ||
DESTINATION share/ryu | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,107 +1,22 @@ | ||
function(bazel_build build_type) | ||
set(c_flags "${VCPKG_COMBINED_C_FLAGS_RELEASE}") | ||
set(linker_flags "${VCPKG_COMBINED_SHARED_LINKER_FLAGS_RELEASE}") | ||
set(log_suffix "rel") | ||
if (${build_type} STREQUAL "debug") | ||
set(c_flags "${VCPKG_COMBINED_C_FLAGS_DEBUG}") | ||
set(linker_flags "${VCPKG_COMBINED_SHARED_LINKER_FLAGS_DEBUG}") | ||
set(log_suffix "dbg") | ||
set(destination_modifier "/debug") | ||
endif () | ||
|
||
separate_arguments(conly_opts NATIVE_COMMAND "${c_flags}") | ||
separate_arguments(link_opts NATIVE_COMMAND "${linker_flags}") | ||
|
||
if (DEFINED ENV{CC}) | ||
list(JOIN conly_opts ":" joined_opts) | ||
set(ENV{BAZEL_CXXOPTS} "${joined_opts}") | ||
list(JOIN link_opts ":" joined_opts) | ||
set(ENV{BAZEL_LINKOPTS} "${joined_opts}") | ||
endif () | ||
|
||
list(TRANSFORM conly_opts PREPEND "--conlyopt=") | ||
list(TRANSFORM link_opts PREPEND "--linkopt=") | ||
|
||
vcpkg_execute_build_process( | ||
COMMAND "${BAZEL}" --batch ${BAZEL_OUTPUT} build ${BAZEL_COMPILER} ${BAZEL_CPU} ${conly_opts} ${link_opts} --verbose_failures --strategy=CppCompile=standalone //ryu //ryu:ryu_printf | ||
WORKING_DIRECTORY "${SOURCE_PATH}" | ||
LOGNAME "build-${TARGET_TRIPLET}-${log_suffix}" | ||
) | ||
|
||
if ("${CMAKE_STATIC_LIBRARY_SUFFIX}" STREQUAL ".lib") | ||
file(INSTALL "${SOURCE_PATH}/bazel-bin/ryu/ryu.lib" DESTINATION "${CURRENT_PACKAGES_DIR}${destination_modifier}/lib") | ||
file(INSTALL "${SOURCE_PATH}/bazel-bin/ryu/ryu_printf.lib" DESTINATION "${CURRENT_PACKAGES_DIR}${destination_modifier}/lib") | ||
else () | ||
file(INSTALL "${SOURCE_PATH}/bazel-bin/ryu/libryu.a" DESTINATION "${CURRENT_PACKAGES_DIR}${destination_modifier}/lib") | ||
file(INSTALL "${SOURCE_PATH}/bazel-bin/ryu/libryu_printf.a" DESTINATION "${CURRENT_PACKAGES_DIR}${destination_modifier}/lib") | ||
endif () | ||
endfunction() | ||
vcpkg_check_linkage(ONLY_STATIC_LIBRARY) | ||
|
||
vcpkg_from_github( | ||
OUT_SOURCE_PATH SOURCE_PATH | ||
REPO ulfjack/ryu | ||
REF v2.0 | ||
SHA512 88a0cca74a4889e8e579987abdc75a6ac87c1cdae557e5a15c29dbfd65733f9e591d6569e97a9374444918475099087f8056e696a97c9be24e38eb737e2304c2 | ||
HEAD_REF master | ||
OUT_SOURCE_PATH SOURCE_PATH | ||
REPO ulfjack/ryu | ||
REF v2.0 | ||
SHA512 88a0cca74a4889e8e579987abdc75a6ac87c1cdae557e5a15c29dbfd65733f9e591d6569e97a9374444918475099087f8056e696a97c9be24e38eb737e2304c2 | ||
HEAD_REF master | ||
) | ||
|
||
find_program(BAZEL bazel PATHS "${CURRENT_HOST_INSTALLED_DIR}/tools" REQUIRED) | ||
get_filename_component(BAZEL_DIR "${BAZEL}" DIRECTORY) | ||
vcpkg_add_to_path(PREPEND "${BAZEL_DIR}") | ||
set(ENV{BAZEL_BIN_PATH} "${BAZEL}") | ||
|
||
vcpkg_cmake_get_vars(cmake_vars_file) | ||
include("${cmake_vars_file}") | ||
if (VCPKG_HOST_IS_WINDOWS) | ||
if (VCPKG_DETECTED_MSVC) | ||
set(ENV{BAZEL_VC} "$ENV{VCInstallDir}") | ||
elseif (VCPKG_TARGET_IS_MINGW) | ||
if (NOT "${VCPKG_DETECTED_CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64") | ||
message(FATAL_ERROR "${TARGET_TRIPLET} is not supported on Windows!") | ||
endif () | ||
set(BAZEL_COMPILER "--compiler=mingw-gcc") | ||
# BAZEL_SH can be propagated to the build environment using VCPKG_KEEP_ENV_VARS | ||
if (NOT DEFINED ENV{BAZEL_SH}) | ||
message("BAZEL_SH is not specified, trying to guess...") | ||
get_filename_component(DIR "${VCPKG_DETECTED_CMAKE_C_COMPILER}" DIRECTORY) | ||
# Bazel expects Mingw-w64 to be installed in MSYS2 (pacman -S mingw-w64-x86_64-toolchain). | ||
# From BAZEL_SH it finds MSYS2 root, adds "mingw64" to the root and uses this path as the location of Mingw-w64. | ||
# It is also possible to use non-MSYS2 binaries with Bazel if they are installed to a directory | ||
# whose name ends with "mingw64", such as c:\mingw64 or c:\TDM-GCC-64\mingw64. | ||
string(REGEX REPLACE /mingw64/bin$ "" MSYS2_ROOT "${DIR}") | ||
set(ENV{BAZEL_SH} "${MSYS2_ROOT}/usr/bin/bash.exe") | ||
message("BAZEL_SH $ENV{BAZEL_SH}") | ||
endif () | ||
else () | ||
message(FATAL_ERROR "${TARGET_TRIPLET} is not supported!") | ||
endif () | ||
if ("${VCPKG_DETECTED_CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86") | ||
set(BAZEL_CPU "--cpu=x64_x86_windows") | ||
elseif ("${VCPKG_DETECTED_CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64" OR "${VCPKG_DETECTED_CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64") | ||
set(BAZEL_CPU "--cpu=x64_windows") | ||
elseif ("${VCPKG_DETECTED_CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ARM") | ||
set(BAZEL_CPU "--cpu=x64_arm_windows") | ||
elseif ("${VCPKG_DETECTED_CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ARM64") | ||
set(BAZEL_CPU "--cpu=arm64_windows") | ||
else () | ||
message(FATAL_ERROR "${TARGET_TRIPLET} is not supported!") | ||
endif () | ||
else () | ||
if (NOT DEFINED ENV{USER}) | ||
set(ENV{USER} "root") | ||
set(BAZEL_OUTPUT "--output_user_root=/tmp/bazel") | ||
endif () | ||
set(ENV{BAZEL_USE_CPP_ONLY_TOOLCHAIN} "1") | ||
set(ENV{CC} "${VCPKG_DETECTED_CMAKE_C_COMPILER}") | ||
endif () | ||
file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}") | ||
|
||
bazel_build("release") | ||
if (NOT VCPKG_BUILD_TYPE) | ||
bazel_build("debug") | ||
endif () | ||
vcpkg_cmake_configure( | ||
SOURCE_PATH "${SOURCE_PATH}" | ||
OPTIONS_RELEASE | ||
-DINSTALL_HEADERS=ON | ||
) | ||
|
||
file(INSTALL "${SOURCE_PATH}/LICENSE-Boost" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) | ||
file(INSTALL "${SOURCE_PATH}/ryu/ryu.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include/ryu") | ||
file(INSTALL "${SOURCE_PATH}/ryu/ryu2.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include/ryu") | ||
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/ryuConfig.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") | ||
vcpkg_cmake_install() | ||
vcpkg_cmake_config_fixup() | ||
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE-Apache2" "${SOURCE_PATH}/LICENSE-Boost") | ||
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
The package ryu provides CMake targets: | ||
|
||
find_package(ryu CONFIG REQUIRED) | ||
target_link_libraries(main PRIVATE RYU::ryu) | ||
target_link_libraries(main PRIVATE RYU::ryu RYU::ryu_printf) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
cmake_minimum_required(VERSION 3.30) | ||
project(vcpkg-ci-ryu LANGUAGES C) | ||
find_package(ryu CONFIG REQUIRED) | ||
add_executable(test test.c) | ||
target_link_libraries(test PUBLIC RYU::ryu RYU::ryu_printf) | ||
install(TARGETS test RUNTIME DESTINATION bin/vcpkg-ci-ryu) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
set(VCPKG_POLICY_SKIP_ALL_POST_BUILD_CHECKS enabled) | ||
vcpkg_cmake_configure(SOURCE_PATH "${CURRENT_PORT_DIR}") | ||
vcpkg_cmake_install() | ||
if(NOT VCPKG_CROSSCOMPILING) | ||
vcpkg_execute_required_process(COMMAND "${CURRENT_PACKAGES_DIR}/bin/vcpkg-ci-ryu/test" WORKING_DIRECTORY "." LOGNAME release-test) | ||
if(NOT VCPKG_BUILD_TYPE) | ||
vcpkg_execute_required_process(COMMAND "${CURRENT_PACKAGES_DIR}/debug/bin/vcpkg-ci-ryu/test" WORKING_DIRECTORY "." LOGNAME debug-test) | ||
endif() | ||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
#include <string.h> | ||
#include <stdio.h> | ||
|
||
#include <ryu/ryu.h> | ||
#include <ryu/ryu2.h> | ||
|
||
int main() { | ||
char* result = d2s(3.14); | ||
if (strcmp(result, "3.14E0") != 0) { | ||
printf("Unexpected ryu: %s\n", result); | ||
return 1; | ||
} | ||
|
||
result = d2fixed(3.14159, 1); | ||
if (strcmp(result, "3.1") != 0) { | ||
printf("Unexpected ryu_printf: %s\n", result); | ||
return 2; | ||
} | ||
|
||
return 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
{ | ||
"name": "vcpkg-ci-ryu", | ||
"version-date": "2024-12-17", | ||
"dependencies": [ | ||
"ryu", | ||
{ | ||
"name": "vcpkg-cmake", | ||
"host": true | ||
} | ||
] | ||
} |
Oops, something went wrong.