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