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/archive/src/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/archive/src/CMakeLists.txt')
| -rw-r--r-- | libs/archive/src/CMakeLists.txt | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/libs/archive/src/CMakeLists.txt b/libs/archive/src/CMakeLists.txt new file mode 100644 index 0000000..75e9b53 --- /dev/null +++ b/libs/archive/src/CMakeLists.txt @@ -0,0 +1,101 @@ +cmake_minimum_required(VERSION 3.16) + +if(WIN32) + find_package(7zip CONFIG REQUIRED) +endif() + +add_library(archive) + +set_target_properties(archive PROPERTIES CXX_STANDARD 20) + +# On Linux, we use the bundled 7zip SDK headers and dlopen the 7z.so at runtime +# On Windows, we use the vcpkg 7zip package +if(WIN32) + target_link_libraries(archive PRIVATE 7zip::7zip) +else() + # Add 7zip SDK headers from thirdparty + target_include_directories(archive PRIVATE + ${CMAKE_CURRENT_LIST_DIR}/../thirdparty/CPP + ) + # We need to compile MyWindows.cpp for BSTR/Variant support on Linux + target_sources(archive PRIVATE + ${CMAKE_CURRENT_LIST_DIR}/../thirdparty/CPP/Common/MyWindows.cpp + ) + target_link_libraries(archive PRIVATE dl) + target_compile_definitions(archive PRIVATE -DARCHIVE_LINUX_PORT) +endif() + +set(ARCHIVE_SOURCES + archive.cpp + compat.h + extractcallback.cpp + extractcallback.h + fileio.cpp + fileio.h + formatter.h + inputstream.cpp + inputstream.h + instrument.h + interfaceguids.cpp + library.h + multioutputstream.cpp + multioutputstream.h + opencallback.cpp + opencallback.h + propertyvariant.cpp + propertyvariant.h + unknown_impl.h +) + +if(WIN32) + list(APPEND ARCHIVE_SOURCES version.rc) +endif() + +target_sources(archive + PRIVATE + ${ARCHIVE_SOURCES} + PUBLIC + FILE_SET HEADERS + BASE_DIRS ${CMAKE_CURRENT_LIST_DIR}/../include + FILES ${CMAKE_CURRENT_LIST_DIR}/../include/archive/archive.h +) + +target_include_directories(archive PRIVATE ${CMAKE_CURRENT_LIST_DIR}/../include/archive) + +if (MSVC) + target_compile_options(archive + PRIVATE + "/MP" + "/W4" + "/external:anglebrackets" + "/external:W0" + ) + target_link_options(archive + PRIVATE + $<$<CONFIG:RelWithDebInfo>:/LTCG /INCREMENTAL:NO /OPT:REF /OPT:ICF> + ) + + set_target_properties(archive PROPERTIES VS_STARTUP_PROJECT archive) +endif() + +if(NOT MSVC) + target_compile_options(archive PRIVATE -Wall -Wextra -Wno-unused-parameter) +endif() + +if (BUILD_STATIC) + target_compile_definitions(archive PUBLIC -DMO2_ARCHIVE_BUILD_STATIC) +else() + target_compile_definitions(archive PRIVATE -DMO2_ARCHIVE_BUILD_EXPORT) +endif() + +add_library(mo2::archive ALIAS archive) + +install(TARGETS archive EXPORT archiveTargets FILE_SET HEADERS) +if (NOT BUILD_STATIC AND WIN32) + install(FILES $<TARGET_PDB_FILE:archive> DESTINATION pdb OPTIONAL) +endif() +install(EXPORT archiveTargets + FILE mo2-archive-targets.cmake + NAMESPACE mo2:: + DESTINATION lib/cmake/mo2-archive +) |
