diff options
| author | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-02-11 02:37:39 -0600 |
|---|---|---|
| committer | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-02-11 02:37:39 -0600 |
| commit | 7ee008e150bc5bcf76082d726f719ee0fdfda982 (patch) | |
| tree | 27fb39be241fdb5ac2734c574de678977d1856d0 /libs/usvfs/CMakeLists.txt | |
Fluorine Manager: full Linux port of Mod Organizer 2
Complete native Linux port with FUSE-based virtual filesystem,
Proton/umu-run integration, and Flatpak packaging.
Key features:
- FUSE VFS replacing Windows USVFS (in-process + standalone helper for Flatpak)
- Proton/GE-Proton/umu-run launcher with env var forwarding
- Flatpak support (sandbox-aware VFS, NXM handler, umu-run)
- Wine prefix management UI
- Case-insensitive path resolution for Linux filesystems
- QSettings-safe INI handling (avoids Bethesda INI corruption)
- Portable instance support with auto-generated launcher scripts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'libs/usvfs/CMakeLists.txt')
| -rw-r--r-- | libs/usvfs/CMakeLists.txt | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/libs/usvfs/CMakeLists.txt b/libs/usvfs/CMakeLists.txt new file mode 100644 index 0000000..e0deb42 --- /dev/null +++ b/libs/usvfs/CMakeLists.txt @@ -0,0 +1,75 @@ +cmake_minimum_required(VERSION 3.16) + +include(CMakePackageConfigHelpers) + +project(usvfs) + +set_property(GLOBAL PROPERTY USE_FOLDERS ON) +set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) +set(CMAKE_CXX_STANDARD 20) + +set(USVFS_BINDIR ${CMAKE_CURRENT_LIST_DIR}/bin) +set(USVFS_LIBDIR ${CMAKE_CURRENT_LIST_DIR}/lib) + +if (MSVC) + # /Zi generate PDBs + # /Gy enable function-level linking + # /Oi enable intrinsic function + add_compile_options("$<$<NOT:$<CONFIG:DEBUG>>:/Zi;/Gy;/Oi>") + + # /OPT:ICF enable COMDAT folding + # /DEBUG:FULL generate debug info (PDB) + # /OPT:REF enable references (PDB) + add_link_options("$<$<NOT:$<CONFIG:DEBUG>>:/OPT:ICF;/DEBUG:FULL;/OPT:REF>") +endif() + +if(CMAKE_SIZEOF_VOID_P EQUAL 4) + set(ARCH_POSTFIX _x86) +else() + set(ARCH_POSTFIX _x64) +endif() + +add_subdirectory(src/shared) + +add_subdirectory(src/thooklib) +add_subdirectory(src/tinjectlib) +add_subdirectory(src/usvfs_helper) + +add_subdirectory(src/usvfs_dll) +add_subdirectory(src/usvfs_proxy) + +configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/config.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/usvfsConfig.cmake" + INSTALL_DESTINATION "lib/cmake/usvfs" + NO_SET_AND_CHECK_MACRO + NO_CHECK_REQUIRED_COMPONENTS_MACRO +) + +file(READ "${CMAKE_CURRENT_SOURCE_DIR}/include/usvfs/usvfs_version.h" usvfs_version) +string(REGEX MATCH "USVFS_VERSION_MAJOR ([0-9]*)" _ ${usvfs_version}) +set(usvfs_version_major ${CMAKE_MATCH_1}) +string(REGEX MATCH "USVFS_VERSION_MINOR ([0-9]*)" _ ${usvfs_version}) +set(usvfs_version_minor ${CMAKE_MATCH_1}) +string(REGEX MATCH "USVFS_VERSION_BUILD ([0-9]*)" _ ${usvfs_version}) +set(usvfs_version_build ${CMAKE_MATCH_1}) +string(REGEX MATCH "USVFS_VERSION_REVISION ([0-9]*)" _ ${usvfs_version}) +set(usvfs_version_revision ${CMAKE_MATCH_1}) + +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/usvfsConfigVersion.cmake" + VERSION "${usvfs_version_major}.${usvfs_version_minor}.${usvfs_version_build}.${usvfs_version_revision}" + COMPATIBILITY AnyNewerVersion + ARCH_INDEPENDENT +) + +install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/usvfsConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/usvfsConfigVersion.cmake + DESTINATION lib/cmake/usvfs +) + +if (BUILD_TESTING) + enable_testing() + set(USVFS_TEST_BINDIR ${CMAKE_CURRENT_LIST_DIR}/test/bin) + add_subdirectory(test) +endif() |
