include_directories(${CMAKE_CURRENT_SOURCE_DIR})
add_definitions(-DAPPNAME=sfsmaster -DAPP_EXAMPLES_SUBDIR="${SFSMASTER_EXAMPLES_SUBDIR}")

collect_sources(MASTER)

if(NOT DB_FOUND)
  list(REMOVE_ITEM MASTER_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/hstring_bdbstorage.cc")
endif()

option(DISABLE_JUDY_FOR_DEFECTIVENODESMAP       "Disable the use of judy for the defective inodes map."                OFF)
option(DISABLE_JUDY_FOR_TRASHPATHCONTAINER      "Disable the use of judy for the trash path container."                OFF)
option(DISABLE_JUDY_FOR_RESERVEDPATHCONTAINER   "Disable the use of judy for the reserved path container."             OFF)

if(DISABLE_JUDY_FOR_DEFECTIVENODESMAP)
  message(STATUS "Judy for defective inodes map disabled")
  add_definitions(-DDISABLE_JUDY_FOR_DEFECTIVENODESMAP)
else()
  message(STATUS "Judy for defective inodes map enabled (if available)")
endif()
if(DISABLE_JUDY_FOR_TRASHPATHCONTAINER)
  message(STATUS "Judy for trash path container disabled")
  add_definitions(-DDISABLE_JUDY_FOR_TRASHPATHCONTAINER)
else()
  message(STATUS "Judy for trash path container enabled (if available)")
endif()
if(DISABLE_JUDY_FOR_RESERVEDPATHCONTAINER)
  message(STATUS "Judy for reserved path container disabled")
  add_definitions(-DDISABLE_JUDY_FOR_RESERVEDPATHCONTAINER)
else()
  message(STATUS "Judy for reserved path container enabled (if available)")
endif()

add_library(master ${MASTER_SOURCES})
target_link_libraries(master sfscommon metrics ${ADDITIONAL_LIBS})
if(JUDY_LIBRARY)
  target_link_libraries(master ${JUDY_LIBRARY})
endif()
if(DB_FOUND)
  target_link_libraries(master ${DB_LIBRARY})
endif()
create_unittest(master ${MASTER_TESTS})
link_unittest(master master sfscommon)

add_executable(sfsmaster ${MAIN_SRC})
target_link_libraries(sfsmaster master metrics ${PAM_LIBRARIES})
if(SYSTEMD_FOUND)
  target_link_libraries(sfsmaster ${SYSTEMD_LIBRARIES})
endif()
install(TARGETS sfsmaster RUNTIME DESTINATION ${SBIN_SUBDIR})

configure_file(sfsrestoremaster.in sfsrestoremaster @ONLY)
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/sfsrestoremaster DESTINATION ${SBIN_SUBDIR})
