cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(contract LANGUAGES CXX)

set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wno-effc++ -Wno-builtin-macro-redefined -Wno-unused-function -Wno-missing-field-initializers")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wno-builtin-macro-redefined -Wno-unused-function -Wno-missing-field-initializers")


if (NOT WIN32)
    if(APPLE AND ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm64")
        set(MIMALLOC_LIBRARY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/mimalloc_builds/mac_arm64/libmimalloc.a")
    elseif(APPLE AND ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
        set(MIMALLOC_LIBRARY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/mimalloc_builds/mac_x86_64/libmimalloc.a")
    else ()
        set(MI_BUILD_OBJECT "OFF")
        set(MI_BUILD_TESTS "OFF")
        set(MI_BUILD_SHARED "OFF")
        set(MI_LOCAL_DYNAMIC_TLS "ON")
        #set(MI_USE_CXX "ON")

        add_subdirectory(mimalloc)
        set(MIMALLOC_LIBRARY_PATH "mimalloc-static")
    endif ()
endif()

add_subdirectory(cpath)
add_subdirectory(kahypar)

add_library(contract STATIC contract.h contract.cpp)
target_include_directories(contract PUBLIC ./)

if (WIN32)
    target_link_libraries(contract PUBLIC cpath kahypar)
else ()
    target_link_libraries(contract PRIVATE ${MIMALLOC_LIBRARY_PATH} PUBLIC cpath kahypar)
endif ()



