Archived
1
Fork 0
This repository has been archived on 2025-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
libxiv/CMakeLists.txt
Joshua Goins 2610de0f7f Add basic MDL parsing
This can read basic MDL files (no terrain, shadow, edge geometry, etc.)
and export them to OBJ. This will be expanded in future commits to let
you export this to an easily readable vertex/index list.

This code is mostly based off of xivModdingFramework/Lumina, and just
ported to C++. All of it will eventually be refactored as there is
duplicate structs EVERYWHERE.
2022-04-11 20:02:20 -04:00

78 lines
No EOL
1.9 KiB
CMake

project(libxiv)
include(FetchContent)
find_package(fmt QUIET)
if(TARGET fmt::fmt)
message("Using system library for fmt")
set(LIBRARIES fmt::fmt ${LIBRARIES})
else()
message("Using built-in fmt")
FetchContent_Declare(
fmt
GIT_REPOSITORY https://github.com/fmtlib/fmt
GIT_TAG master
)
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(fmt)
set(LIBRARIES fmt::fmt ${LIBRARIES})
endif()
# note: unshield does not work on windows per maintainer notice in README, so we might as well not even attempt to look
# for it.
if(NOT WIN32)
find_package(PkgConfig REQUIRED)
pkg_check_modules(libunshield REQUIRED libunshield)
set(LIBRARIES ${libunshield_LIBRARIES} ${LIBRARIES})
set(LIB_DIRS ${libunshield_LIBRARY_DIRS})
endif()
find_package(ZLIB QUIET)
if(TARGET ZLIB::ZLIB)
message("Using system library for zlib")
set(LIBRARIES ZLIB::ZLIB ${LIBRARIES})
else()
message("Using built-in zlib")
FetchContent_Declare(
zlib
GIT_REPOSITORY https://github.com/madler/zlib.git
GIT_TAG master
)
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(zlib)
# welcome to hell, cmake.
include_directories(${CMAKE_BINARY_DIR}/_deps/zlib-src)
# NO REALLY, HELL IS THIS WAY
include_directories(${CMAKE_BINARY_DIR}/_deps/zlib-build)
set(LIBRARIES zlibstatic ${LIBRARIES})
endif()
add_library(libxiv STATIC
src/fiinparser.cpp
src/indexparser.cpp
src/crc32checksum.cpp
src/gamedata.cpp
src/compression.cpp
src/exhparser.cpp
src/exdparser.cpp
src/installextract.cpp
src/patch.cpp
src/exlparser.cpp
src/mdlparser.cpp)
target_include_directories(libxiv PUBLIC include PRIVATE src)
target_link_libraries(libxiv PUBLIC ${LIBRARIES})
target_link_directories(libxiv PUBLIC ${LIB_DIRS})