
FIND_PACKAGE(Log4Qt)

# Sourcen
SET(NGLLogger_SRCS
  MurmurHash2.cpp
  MurmurHash2.h
  NGLLoggerBootstrap.cpp
  NGLLoggerBootstrap.h
  NGLLogger.cpp
  NGLLogger.h
)

# Header
SET(NGLLogger_HDRS
)

# Make sure NGLLogger.h compiles ..
ADD_DEFINITIONS(-DBUILDING_NGLLOGGER)
NGL_ADD_LIBRARY2(ALL NGLLogger SHARED ${NGLLogger_SRCS} ${NGLLogger_HDRS})
NGL_TARGET_INCLUDE_DIRECTORIES(NGLLogger
  PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${CMAKE_CURRENT_SOURCE_DIR}/../
    ${CMAKE_CURRENT_BINARY_DIR}
)

# Export headers for other modules building in the same tree (e.g., TetraIF)
# Ensure NGLLogger target provides include paths so consumers can include <NGLLogger/INGLLogger.h>

NGL_TARGET_LINK_LIBRARIES(NGLLogger
 PRIVATE
 $<IF:$<BOOL:${Log4Qt_FOUND}>,Log4Qt::log4qt,>
 PUBLIC
  Qt6::Core
)

# Define HAVE_LOG4QT when log4qt is available
IF(Log4Qt_FOUND)
  TARGET_COMPILE_DEFINITIONS(NGLLogger PUBLIC HAVE_LOG4QT)
ENDIF()

NGL_INSTALL_TARGET(NGLLogger)

#
# test_ngllogger
#
IF(BUILD_TESTING AND TARGET NGLLogger AND Log4Qt_FOUND)
  ADD_EXECUTABLE(test_ngllogger test_ngllogger.cpp)
  TARGET_LINK_LIBRARIES(test_ngllogger NGLLogger)
  TARGET_LINK_LIBRARIES(test_ngllogger
    Log4Qt::log4qt
    ngltools
  )
  ADD_TEST(NAME test_ngllogger COMMAND $<TARGET_FILE:test_ngllogger>)
ELSE()
  MESSAGE(STATUS "Log4Qt not found; skipping test_ngllogger")
ENDIF()


CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/log4cxx.props ${CMAKE_BINARY_DIR}/log4cxx.props COPYONLY)
