cmake_minimum_required(VERSION 3.15)

include(FetchContent)

# Set MMG version
set(MMG_GIT_TAG "v5.8.0" CACHE STRING "MMG version to build")
set(MMG_REPOSITORY "https://github.com/MmgTools/mmg.git" CACHE STRING "MMG repository URL")

# Fetch MMG
FetchContent_Declare(
    mmg
    GIT_REPOSITORY ${MMG_REPOSITORY}
    GIT_TAG ${MMG_GIT_TAG}
)

# Configure MMG build options before making it available
set(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries" FORCE)
set(BUILD_TESTING OFF CACHE BOOL "Disable MMG testing" FORCE)
set(BUILD_MMG ON CACHE BOOL "Build all MMG libraries" FORCE)
set(BUILD_MMG2D ON CACHE BOOL "Build MMG2D library" FORCE)
set(BUILD_MMG3D ON CACHE BOOL "Build MMG3D library" FORCE)
set(BUILD_MMGS ON CACHE BOOL "Build MMGS library" FORCE)
set(LIBMMG2D_SHARED ON CACHE BOOL "Build MMG2D shared library" FORCE)
set(LIBMMG3D_SHARED ON CACHE BOOL "Build MMG3D shared library" FORCE)
set(LIBMMGS_SHARED ON CACHE BOOL "Build MMGS shared library" FORCE)
set(LIBMMG2D_STATIC OFF CACHE BOOL "Do not build static libraries" FORCE)
set(LIBMMG3D_STATIC OFF CACHE BOOL "Do not build static libraries" FORCE)
set(LIBMMGS_STATIC OFF CACHE BOOL "Do not build static libraries" FORCE)

# Make MMG available
FetchContent_MakeAvailable(mmg)

# Set the correct library targets
set(MMG_LIBRARIES 
    libmmg2d_so 
    libmmg3d_so 
    libmmgs_so
    CACHE INTERNAL ""
)

# Export MMG include directories
set(MMG_INCLUDE_DIRS
    ${mmg_SOURCE_DIR}/src/common
    ${mmg_SOURCE_DIR}/src/mmg2d
    ${mmg_SOURCE_DIR}/src/mmg3d
    ${mmg_SOURCE_DIR}/src/mmgs
    ${mmg_BINARY_DIR}/src/common
    ${mmg_BINARY_DIR}/include/mmg/common
    ${mmg_BINARY_DIR}/include/mmg/mmg2d
    ${mmg_BINARY_DIR}/include/mmg/mmg3d
    ${mmg_BINARY_DIR}/include/mmg/mmgs
    CACHE INTERNAL ""
)