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

set(SRING_SOURCES sring_impl.h sring_impl.cpp)

if(NOT APPLE)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static")
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static")
endif()

add_library(sring STATIC ${SRING_SOURCES})

add_subdirectory(highway)
add_subdirectory(hptt)
add_subdirectory(pprint)
add_subdirectory(large_types)

if(APPLE AND ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm64")
    find_library(ACCELERATE_LIBRARY Accelerate REQUIRED)
    target_include_directories(sring PUBLIC ./)
    target_link_libraries(sring PUBLIC hwy hptt pprint large_types ${ACCELERATE_LIBRARY})
else ()
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-uninitialized -Wno-maybe-uninitialized -Wno-unused-variable -Wno-unused-function -Wno-int-to-pointer-cast")
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-uninitialized -Wno-maybe-uninitialized -Wno-unused-variable -Wno-unused-function -Wno-int-to-pointer-cast")
    option(BUILD_STATIC_LIBS ON)
    option(BUILD_WITHOUT_LAPACK ON)
    option(BUILD_LAPACK_DEPRECATED OFF)
    option(BUILD_TESTING OFF)
    set(NO_LAPACK ON)
    set(ONLY_CBLAS ON)
    set(NUM_THREADS 256)
    add_subdirectory(OpenBLAS)
    target_include_directories(sring PUBLIC ./ "${CMAKE_CURRENT_SOURCE_DIR}/OpenBLAS"
            "${CMAKE_CURRENT_BINARY_DIR}/OpenBLAS")
    target_link_libraries(sring PUBLIC hwy hptt pprint large_types openblas)
endif()



