cmake_minimum_required(VERSION 3.16)
project(phash LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

option(PHASH_BUILD_SHARED "Build libphash as a shared library" ON)

set(PHASH_SOURCES
  src/phash.cpp
  src/resize.cpp
  src/decode_stb.cpp
  src/hamming.cpp
)

if(PHASH_BUILD_SHARED)
  add_library(phash SHARED ${PHASH_SOURCES})
else()
  add_library(phash STATIC ${PHASH_SOURCES})
endif()

target_include_directories(phash
  PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}/include
  PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}/third_party
)

# Keep C API symbols visible for dart:ffi / DynamicLibrary.process().
set_target_properties(phash PROPERTIES
  CXX_VISIBILITY_PRESET default
  VISIBILITY_INLINES_HIDDEN OFF
  POSITION_INDEPENDENT_CODE ON
  OUTPUT_NAME phash
)

if(ANDROID)
  find_library(LOG_LIB log)
  target_link_libraries(phash PUBLIC m ${LOG_LIB})
elseif(UNIX)
  target_link_libraries(phash PUBLIC m)
endif()
