FILE( GLOB_RECURSE Guayadeque_SOURCES_CPP "*.cpp" )
FILE( GLOB_RECURSE Guayadeque_SOURCES_C "*.c" )
FILE( GLOB_RECURSE Guayadeque_HEADERS "*.h" )


SET( Guayadeque_INCLUDE_DIRS "" )
FOREACH( _headerFile ${Guayadeque_HEADERS} )
    GET_FILENAME_COMPONENT( _dir ${_headerFile} PATH )
    LIST( APPEND Guayadeque_INCLUDE_DIRS ${_dir} )
ENDFOREACH()
LIST( REMOVE_DUPLICATES Guayadeque_INCLUDE_DIRS )

INCLUDE_DIRECTORIES( ${Guayadeque_INCLUDE_DIRS} )

ADD_EXECUTABLE( guayadeque ${Guayadeque_SOURCES_CPP} ${Guayadeque_SOURCES_C} ${Guayadeque_HEADERS} )

TARGET_LINK_LIBRARIES( guayadeque
        ${wxWidgets_LIBRARIES}
        ${GSTREAMER_LIBRARIES}
        ${GSTREAMER_TAG_LIBRARIES}
        ${GSTREAMER_APP_LIBRARIES}
        ${SQLITE3_LIBRARIES}
        ${LIBCURL_LIBRARIES}
        ${LIBTAG_LIBRARIES}
        ${LIBDBUS_LIBRARIES}
        ${LIBGDKPIXBUF20_LIBRARIES}
        ${LIBGIO_LIBRARIES}
        ${LIBGPOD_LIBRARIES}
        ${LIBWXSQLITE3_LIBRARIES}
        ${LIBWXSQLITE33_LIBRARIES}
        ${LIBJSONCPP_LIBRARIES}
        ${ICU_LIBRARIES}
)

# X11 display probe for the visualizer (see root CMakeLists).
if(X11_FOUND)
    TARGET_LINK_LIBRARIES( guayadeque ${X11_LIBRARIES} )
endif()

if (projectM4_FOUND)
    TARGET_LINK_LIBRARIES( guayadeque libprojectM::projectM )
    # VisPanel calls GL directly (glGetString for the driver log), and the
    # wx 'gl' component does not pull the GL library by itself on GLVND
    # systems, so link it explicitly (fixes "undefined glGetString").
    if (TARGET OpenGL::GL)
        TARGET_LINK_LIBRARIES( guayadeque OpenGL::GL )
    elseif (OPENGL_LIBRARIES)
        TARGET_LINK_LIBRARIES( guayadeque ${OPENGL_LIBRARIES} )
    endif()
    if (projectM4Playlist_FOUND)
        TARGET_LINK_LIBRARIES( guayadeque libprojectM::playlist )
    endif()
endif()

if (PROJECTM3_FOUND)
    # projectM 3 compat path: C++ class API, playlist built in (no separate
    # playlist library). Headers may live in a libprojectM/ subdir, hence
    # the explicit include dir from find_path.
    TARGET_LINK_LIBRARIES( guayadeque ${PROJECTM3_LIBRARY} )
    INCLUDE_DIRECTORIES( ${PROJECTM3_INCLUDE_DIR} )
    # Same explicit GL link as the v4 path (VisPanel calls glGetString).
    if (TARGET OpenGL::GL)
        TARGET_LINK_LIBRARIES( guayadeque OpenGL::GL )
    elseif (OPENGL_LIBRARIES)
        TARGET_LINK_LIBRARIES( guayadeque ${OPENGL_LIBRARIES} )
    endif()
endif()

INSTALL( TARGETS guayadeque
         RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} )
