diff --git a/.cspell/words.txt b/.cspell/words.txt index 7a3310d1..6238b5c2 100644 --- a/.cspell/words.txt +++ b/.cspell/words.txt @@ -148,6 +148,7 @@ libvlc linkflags localappdata lpbyte +lpthread lptr lpwstr markdownlint @@ -171,6 +172,7 @@ nuspell_version oleaut32 openal_version openssldir +osxfuse pistream pkgconfig plarge_integer @@ -182,6 +184,7 @@ project_enable_libdsm project_enable_nana propgrid psecurity_descriptor +pthreads pugi pugixml_project puint32 diff --git a/cmake/flags.cmake b/cmake/flags.cmake index b6691f55..69e56f11 100644 --- a/cmake/flags.cmake +++ b/cmake/flags.cmake @@ -89,7 +89,11 @@ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${PROJECT_RELEASE_FLAG_L set(CMAKE_EXE_LINKER_FLAGS "${PROJECT_CMAKE_EXE_LINKER_FLAGS}") -set(EXTERNAL_CMAKE_CXX_FLAGS "-include cstdint -include utility -fext-numeric-literals ${PROJECT_COMMON_FLAG_LIST}") +set(EXTERNAL_CMAKE_CXX_FLAGS "-include cstdint -include utility ${PROJECT_COMMON_FLAG_LIST}") +if (NOT PROJECT_IS_DARWIN) + set(EXTERNAL_CMAKE_CXX_FLAGS "-fext-numeric-literals ${EXTERNAL_CMAKE_CXX_FLAGS}") +endif() + list(APPEND PROJECT_EXTERNAL_CMAKE_FLAGS -DCMAKE_BUILD_TYPE=${PROJECT_CMAKE_BUILD_TYPE} -DCMAKE_COLOR_MAKEFILE=${CMAKE_COLOR_MAKEFILE} diff --git a/cmake/libraries/boost.cmake b/cmake/libraries/boost.cmake index 99825e4b..af8621a3 100644 --- a/cmake/libraries/boost.cmake +++ b/cmake/libraries/boost.cmake @@ -39,6 +39,14 @@ if(PROJECT_ENABLE_BOOST) wserialization ) else() + if(PROJECT_IS_DARWIN) + set(CMAKE_HAVE_THREADS_LIBRARY 1) + set(CMAKE_THREAD_LIBS_INIT "-lpthread") + set(CMAKE_USE_PTHREADS_INIT 1) + set(CMAKE_USE_WIN32_THREADS_INIT 0) + set(THREADS_PREFER_PTHREAD_FLAG ON) + endif() + find_package(Boost ${BOOST_MAJOR_VERSION}.${BOOST_MINOR_VERSION}.${BOOST_PATCH_VERSION} REQUIRED COMPONENTS diff --git a/cmake/libraries/fuse.cmake b/cmake/libraries/fuse.cmake index bb9883fe..6e45d35e 100644 --- a/cmake/libraries/fuse.cmake +++ b/cmake/libraries/fuse.cmake @@ -20,17 +20,25 @@ if(PROJECT_ENABLE_FUSE AND NOT PROJECT_IS_MINGW) endif() endif() else() - pkg_check_modules(LIBFUSE3 fuse3>=3.0.0) - if(LIBFUSE3_FOUND) - set(PROJECT_FUSE fuse3) - set(PROJECT_FUSE_INCLUDE_DIRS ${LIBFUSE3_INCLUDE_DIRS}) + if (PROJECT_IS_DARWIN) + find_library(OSXFUSE NO_CACHE NAMES OSXFUSE) + if (NOT OSXFUSE) + message(FATAL_ERROR "FUSE for macOS not found (https://macfuse.github.io)") + endif () + set(PROJECT_FUSE fuse2) else() - pkg_check_modules(LIBFUSE2 fuse>=2.9.0) - if(LIBFUSE2_FOUND) - set(PROJECT_FUSE fuse2) - set(PROJECT_FUSE_INCLUDE_DIRS ${LIBFUSE2_INCLUDE_DIRS}) + pkg_check_modules(LIBFUSE3 fuse3>=3.0.0) + if(LIBFUSE3_FOUND) + set(PROJECT_FUSE fuse3) + set(PROJECT_FUSE_INCLUDE_DIRS ${LIBFUSE3_INCLUDE_DIRS}) else() - message(FATAL_ERROR "fuse library not found") + pkg_check_modules(LIBFUSE2 fuse>=2.9.0) + if(LIBFUSE2_FOUND) + set(PROJECT_FUSE fuse2) + set(PROJECT_FUSE_INCLUDE_DIRS ${LIBFUSE2_INCLUDE_DIRS}) + else() + message(FATAL_ERROR "fuse library not found") + endif() endif() endif() endif()