Initial support for building on Windows

This commit is contained in:
Marcus Holland-Moritz 2023-06-20 12:25:29 +02:00
parent 4901d0b03a
commit 41c975f26f

View File

@ -186,12 +186,15 @@ if(STATIC_BUILD_DO_NOT_USE)
set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
endif()
find_package(PkgConfig REQUIRED)
find_package(PkgConfig)
if(STATIC_BUILD_DO_NOT_USE)
if (PKG_CONFIG_FOUND)
list(APPEND PKG_CONFIG_EXECUTABLE "--static")
endif()
endif()
if(PKG_CONFIG_FOUND)
pkg_check_modules(FUSE IMPORTED_TARGET fuse>=2.9.9)
pkg_check_modules(FUSE3 IMPORTED_TARGET fuse3>=3.10.5)
pkg_check_modules(LIBLZ4 IMPORTED_TARGET liblz4>=1.9.3)
@ -201,6 +204,7 @@ pkg_check_modules(LIBBROTLIENC IMPORTED_TARGET libbrotlienc>=1.0.9)
pkg_check_modules(LIBARCHIVE IMPORTED_TARGET libarchive>=3.6.0)
pkg_check_modules(ZSTD IMPORTED_TARGET libzstd>=1.5.2)
pkg_check_modules(XXHASH IMPORTED_TARGET libxxhash>=0.8.1)
endif()
if(XXHASH_FOUND)
list(APPEND CMAKE_REQUIRED_LIBRARIES PkgConfig::XXHASH)
@ -215,9 +219,13 @@ if(XXHASH_FOUND)
XXHASH_VERSION_OK)
endif()
if(WIN32)
# TODO
else()
if(NOT FUSE_FOUND AND NOT FUSE3_FOUND)
message(FATAL_ERROR "No FUSE or FUSE3 library found")
endif()
endif()
if(WITH_TESTS)
find_program(DIFF_BIN diff DOC "compare files line by line" REQUIRED)
@ -303,6 +311,8 @@ if(NOT
AND PREFER_SYSTEM_XXHASH))
add_library(xxhash xxHash/xxhash.c)
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR
"${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
target_compile_options(
xxhash
PRIVATE -Wall
@ -326,6 +336,7 @@ if(NOT
-Wredundant-decls
-Wstrict-overflow=2)
endif()
endif()
list(
APPEND
@ -567,26 +578,31 @@ list(
add_custom_command(
OUTPUT ${FROZEN_THRIFT_SRC}
COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift
COMMAND
cp ${CMAKE_CURRENT_SOURCE_DIR}/fbthrift/thrift/lib/thrift/frozen.thrift
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/fbthrift/thrift/lib/thrift/frozen.thrift
${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift/
COMMAND cd ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift &&
${CMAKE_CURRENT_BINARY_DIR}/bin/thrift1 --gen mstch_cpp2 frozen.thrift
COMMAND ${CMAKE_CURRENT_BINARY_DIR}/bin/thrift1
-o ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift
--gen mstch_cpp2
frozen.thrift
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/bin/thrift1
${CMAKE_CURRENT_SOURCE_DIR}/fbthrift/thrift/lib/thrift/frozen.thrift)
${CMAKE_CURRENT_SOURCE_DIR}/fbthrift/thrift/lib/thrift/frozen.thrift
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift
)
add_custom_command(
OUTPUT ${METADATA_THRIFT_SRC}
COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs
COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/thrift/metadata.thrift
thrift/dwarfs/metadata.thrift
COMMAND
cd ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs &&
${CMAKE_CURRENT_BINARY_DIR}/bin/thrift1 --gen mstch_cpp2:frozen2
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/thrift/metadata.thrift
${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs/metadata.thrift
COMMAND ${CMAKE_CURRENT_BINARY_DIR}/bin/thrift1
-o ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs
--gen mstch_cpp2:frozen2
metadata.thrift
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/bin/thrift1
${CMAKE_CURRENT_SOURCE_DIR}/thrift/metadata.thrift)
${CMAKE_CURRENT_SOURCE_DIR}/thrift/metadata.thrift
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/thrift/dwarfs
)
list(
APPEND
@ -634,6 +650,7 @@ add_library(
${CMAKE_CURRENT_BINARY_DIR}/thrift/lib/thrift/gen-cpp2/frozen_types.cpp)
set_property(TARGET thrift_light PROPERTY CXX_STANDARD 20)
target_link_libraries(thrift_light folly)
target_include_directories(thrift_light PRIVATE ${INCLUDE_DIRS})
@ -671,7 +688,10 @@ foreach(tgt dwarfs dwarfs_compression dwarfs_tool ${BINARY_TARGETS} ${MAIN_TARGE
target_compile_definitions(${tgt} PRIVATE DWARFS_USE_EXCEPTION_TRACER)
endif()
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR
"${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
target_compile_options(${tgt} PRIVATE -Wall -Wextra -pedantic)
endif()
set_property(TARGET ${tgt} PROPERTY CXX_STANDARD 20)
set_property(TARGET ${tgt} PROPERTY CXX_STANDARD_REQUIRED ON)
@ -745,7 +765,9 @@ if(LIBBROTLIDEC_FOUND AND LIBBROTLIENC_FOUND)
endif()
if(NOT STATIC_BUILD_DO_NOT_USE)
if(LIBARCHIVE_FOUND)
target_link_libraries(dwarfs PkgConfig::LIBARCHIVE)
endif()
endif(NOT STATIC_BUILD_DO_NOT_USE)
if(ZSTD_FOUND AND PREFER_SYSTEM_ZSTD)