cmake_minimum_required(VERSION 2.6)

if(NOT GLUON_BUILD_ALL)
    project(GluonInput)
    find_package(GluonCore REQUIRED)
endif()

include_directories(
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${CMAKE_CURRENT_BINARY_DIR}
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${GLUON_CORE_INCLUDES}
)

set(GLUON_INPUT_INCLUDES
    ${GLUON_CORE_INCLUDES}
    ${CMAKE_CURRENT_SOURCE_DIR}
    CACHE PATHS "Includes required for Gluon Input"
)

set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)

if(APPLE)
    find_library(IOKIT_LIBRARY NAMES IOKit)
    message("-- Found IOKit:" ${IOKIT_LIBRARY})

    find_library(COREFOUNDATION_LIBRARY NAMES CoreFoundation)
    message("-- Found CoreFoundation:" ${COREFOUNDATION_LIBRARY})

    include_directories(${CMAKE_CURRENT_SOURCE_DIR}/mac/)
elseif(WIN32)
    include_directories(${CMAKE_CURRENT_SOURCE_DIR}/win/)
else()
    include_directories(${CMAKE_CURRENT_SOURCE_DIR}/linux/)
endif()

###############win source and headers###################
set(GluonInput_SRCS_WIN )

set(GluonInput_HEADERS_WIN )
###############win source and headers###################

###############mac source and headers###################
set(GluonInput_SRCS_MAC
	mac/macthread.cpp
	mac/code.cpp
    mac/detectmac.cpp
)

set(GluonInput_HEADERS_MAC
	mac/code.h
    mac/detectmac.h
	mac/macthread.h
    mac/inputdefinitions.h

)
###############mac source and headers###################

###############linux source and headers###################
set(GluonInput_SRCS_LINUX
	linux/linuxthread.cpp
	linux/code.cpp
    linux/detectlinux.cpp
)

set(GluonInput_HEADERS_LINUX
	linux/linuxthread.h
	linux/code.h
    linux/detectlinux.h
    linux/inputdefinitions.h
)
###############linux source and headers###################

###############common source and headers###################
set(GluonInput_SRCS_COMMON
	inputevent.cpp
    inputdevice.cpp
    mouse.cpp
    tablet.cpp
    keyboard.cpp
    joystick.cpp
    custominput.cpp
	threadabstract.cpp
    detect.cpp
    detectabstract.cpp
)

set(GluonInput_HEADERS_COMMON
    gluon_input_export.h
    detect.h
    inputevent.h
    inputdevice.h
    mouse.h
    tablet.h
    keyboard.h
    joystick.h
    custominput.h
	detectabstract.h
)
###############common source and headers###################

qt4_automoc(${GluonInput_SRCS_COMMON})

if(APPLE)
    qt4_automoc(${GluonInput_SRCS_MAC})
    add_library(GluonInput SHARED ${GluonInput_SRCS_MAC} ${GluonInput_SRCS_COMMON})
elseif(WIN32)
    qt4_automoc(${GluonInput_SRCS_WIN})
    add_library(GluonInput SHARED ${GluonInput_SRCS_WIN} ${GluonInput_SRCS_COMMON})
else()
    qt4_automoc(${GluonInput_SRCS_LINUX})
    add_library(GluonInput SHARED ${GluonInput_SRCS_LINUX} ${GluonInput_SRCS_COMMON})
endif()

set_target_properties(GluonInput PROPERTIES VERSION ${GLUON_VERSION_STRING} SOVERSION ${GLUON_VERSION_STRING})
if(GLUON_BUILD_ALL)
    add_dependencies(GluonInput GluonCore)
endif()

target_link_libraries(GluonInput ${GLUON_CORE_LIBS})

set(GLUON_INPUT_LIBS
    GluonInput
    ${GLUON_CORE_LIBS}
    CACHE PATHS "Libraries required for Gluon Input"
)

if(APPLE)
    set(GLUON_INPUT_LIBS
        ${GLUON_INPUT_LIBS}
        ${IOKIT_LIBRARY}
        ${COREFOUNDATION_LIBRARY}
        CACHE PATHS "Libraries required for Gluon Input"
    )
elseif(WIN32)
else()
endif()

if(APPLE)
    target_link_libraries(GluonInput ${IOKIT_LIBRARY}  ${COREFOUNDATION_LIBRARY})
elseif(WIN32)
else()
endif()

install(TARGETS GluonInput DESTINATION ${LIB_INSTALL_DIR})

if(APPLE)
    install(
        FILES
        ${GluonInput_HEADERS_MAC}
        ${GluonInput_HEADERS_COMMON}
        DESTINATION ${INCLUDE_INSTALL_DIR}/gluon/input
        COMPONENT Devel
    )
elseif(WIN32)
    install(
        FILES
        ${GluonInput_HEADERS_WIN}
        ${GluonInput_HEADERS_COMMON}
        DESTINATION ${INCLUDE_INSTALL_DIR}/gluon/input
        COMPONENT Devel
    )
else()
    install(
        FILES
        ${GluonInput_HEADERS_LINUX}
        ${GluonInput_HEADERS_COMMON}
        DESTINATION ${INCLUDE_INSTALL_DIR}/gluon/input
        COMPONENT Devel
    )
endif()

install(
    FILES
    cmake/FindGluonInput.cmake
    DESTINATION
    ${SHARE_INSTALL_DIR}/gluon/cmake
    COMPONENT Devel
)
