From 844e53910d4aa2c72172a8e4e68acf8de8a103d3 Mon Sep 17 00:00:00 2001 From: calcium Date: Sat, 24 Aug 2024 23:34:33 -0400 Subject: [PATCH] Added win32 support. --- CMakeLists.txt | 7 +++---- include/BigEndian.h | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8fa5111..deff9a0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,9 +10,6 @@ include_directories(${CMAKE_BINARY_DIR}) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CXX_STANDARD 23) -set(BUILD_TESTS OFF) -set(BUILD_BENCHMARK OFF) - set(CAVM_RUNTIME_CHECK_SUPPORT ON) add_subdirectory(src) @@ -26,4 +23,6 @@ message("src " ${CONSTANT_POOL_TAG_SRC}) add_executable(parser ${CONSTANT_POOL_TAG_SRC} ) -set(CMAKE_CXX_FLAGS "-std=c++${CXX_STANDARD} -O0 -g -Wpedantic") \ No newline at end of file +if (UNIX) + set(CMAKE_CXX_FLAGS "-std=c++${CXX_STANDARD} -O0 -g -Wpedantic") +endif() \ No newline at end of file diff --git a/include/BigEndian.h b/include/BigEndian.h index 446c32b..a0bc1de 100644 --- a/include/BigEndian.h +++ b/include/BigEndian.h @@ -4,6 +4,17 @@ #include #include +#ifdef _MSC_VER + +#include + +#define __builtin_bswap16 _byteswap_ushort +#define __builtin_bswap32 _byteswap_ulong +#define __builtin_bswap64 _byteswap_uint64 + +#endif + + template class BigEndian { @@ -33,8 +44,8 @@ class BigEndian return __builtin_bswap32(val); case 8: return __builtin_bswap64(val); - // Clang doesn't support __builtin_bswap128, so we fall back to a generic byte-order swap implementation - #ifndef __clang__ + // Only gcc has a 128-bit byte-order swap builtin, so we fall back to a generic byte-order swap implementation for clang and for msvc + #if not defined(__clang__) && not defined(_MSC_VER) case 16: return __builtin_bswap128(val); #endif