Implemented compile capability for MacOS.

Former-commit-id: 86e560e0d4f03251ee08a648ffa6fd9a0e01ae78
This commit is contained in:
Timo van der Zwan 2013-12-17 22:53:16 +01:00
parent 92bb518698
commit 6f15e89d29
12 changed files with 1256 additions and 55 deletions

View File

@ -8,7 +8,10 @@ cmake_minimum_required(VERSION 2.8)
# set the build options # set the build options
option (ENABLE_DISPMANX "Enable the RPi dispmanx grabber" ON) option (ENABLE_DISPMANX "Enable the RPi dispmanx grabber" ON)
option (ENABLE_SPIDEV "Enable the SPIDEV device" ON)
message(STATUS "ENABLE_DISPMANX = " ${ENABLE_DISPMANX}) message(STATUS "ENABLE_DISPMANX = " ${ENABLE_DISPMANX})
message(STATUS "ENABLE_SPIDEV = " ${ENABLE_SPIDEV})
# Createt the configuration file # Createt the configuration file
# configure a header file to pass some of the CMake settings # configure a header file to pass some of the CMake settings
@ -53,7 +56,10 @@ find_package(Threads REQUIRED)
include(${QT_USE_FILE}) include(${QT_USE_FILE})
add_definitions(${QT_DEFINITIONS}) add_definitions(${QT_DEFINITIONS})
link_directories(${CMAKE_FIND_ROOT_PATH}/lib/arm-linux-gnueabihf) # TODO[TvdZ]: This linking directory should only be added if we are cross compiling
if(NOT APPLE)
link_directories(${CMAKE_FIND_ROOT_PATH}/lib/arm-linux-gnueabihf)
endif()
configure_file(bin/install_hyperion.sh ${LIBRARY_OUTPUT_PATH} @ONLY) configure_file(bin/install_hyperion.sh ${LIBRARY_OUTPUT_PATH} @ONLY)
configure_file(config/hyperion.config.json ${LIBRARY_OUTPUT_PATH} @ONLY) configure_file(config/hyperion.config.json ${LIBRARY_OUTPUT_PATH} @ONLY)

View File

@ -2,3 +2,6 @@
// Define to enable the dispmanx grabber // Define to enable the dispmanx grabber
#cmakedefine ENABLE_DISPMANX #cmakedefine ENABLE_DISPMANX
// Define to enable the spi-device
#cmakedefine ENABLE_SPIDEV

View File

@ -0,0 +1,21 @@
# -----------------------------------------------------------------------------
# Find IOKit framework (Mac OS X).
#
# Define:
# CoreFoundation_FOUND
# CoreFoundation_INCLUDE_DIR
# CoreFoundation_LIBRARY
set(CoreFoundation_FOUND false)
set(CoreFoundation_INCLUDE_DIR)
set(CoreFoundation_LIBRARY)
if(APPLE)
# The only platform it makes sense to check for CoreFoundation
find_library(CoreFoundation CoreFoundation)
if(CoreFoundation)
set(CoreFoundation_FOUND true)
set(CoreFoundation_INCLUDE_DIR ${CoreFoundation})
set(CoreFoundation_LIBRARY ${CoreFoundation})
endif(CoreFoundation)
endif(APPLE)

21
cmake/FindIOKit.cmake Normal file
View File

@ -0,0 +1,21 @@
# -----------------------------------------------------------------------------
# Find IOKit framework (Mac OS X).
#
# Define:
# IOKit_FOUND
# IOKit_INCLUDE_DIR
# IOKit_LIBRARY
set(IOKit_FOUND false)
set(IOKit_INCLUDE_DIR)
set(IOKit_LIBRARY)
if(APPLE)
# The only platform it makes sense to check for IOKit
find_library(IOKit IOKit)
if(IOKit)
set(IOKit_FOUND true)
set(IOKit_INCLUDE_DIR ${IOKit})
set(IOKit_LIBRARY ${IOKit})
endif(IOKit)
endif(APPLE)

View File

@ -1,16 +1,36 @@
project(hidapi) project(hidapi)
#add libusb and pthreads # Add the 'generic' hidapi include directory
find_package(libusb-1.0 REQUIRED) include_directories(../../include/hidapi)
find_package(Threads REQUIRED)
include_directories( if(APPLE)
../../include/hidapi
${LIBUSB_1_INCLUDE_DIRS})
add_library(hidapi-libusb hid-libusb.c) find_package(IOKit REQUIRED)
find_package(CoreFoundation REQUIRED)
target_link_libraries(hidapi-libusb include_directories($IOKit_INCLUDE_DIRS})
${LIBUSB_1_LIBRARIES} #apt-get install libusb-1.0-0-dev include_directories($CoreFoundation_INCLUDE_DIRS})
${CMAKE_THREAD_LIBS_INIT}
) # HIDAPI library specific for MacOS
add_library(hidapi-mac hid-mac.c)
target_link_libraries(hidapi-mac
${IOKit_LIBRARY}
${CoreFoundation_LIBRARY})
elseif(UNIX)
# HIDAPI library based on lib-usb
#add libusb and pthreads
find_package(libusb-1.0 REQUIRED)
find_package(Threads REQUIRED)
include_directories($LIBUSB_1_INCLUDE_DIRS})
add_library(hidapi-libusb hid-libusb.c)
target_link_libraries(hidapi-libusb
${LIBUSB_1_LIBRARIES} #apt-get install libusb-1.0-0-dev
${CMAKE_THREAD_LIBS_INIT}
)
endif()

1112
dependencies/build/hidapi/hid-mac.c vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -57,7 +57,6 @@ target_link_libraries(hyperion
hyperion-utils hyperion-utils
leddevice leddevice
effectengine effectengine
hidapi-libusb
serialport serialport
${QT_LIBRARIES} ${QT_LIBRARIES}
) )

View File

@ -1,6 +1,7 @@
// STL includes // STL includes
#include <algorithm> #include <algorithm>
#include <cmath>
#include <cassert> #include <cassert>
// hyperion includes // hyperion includes

View File

@ -7,9 +7,6 @@
// Qt includes // Qt includes
#include <QTimer> #include <QTimer>
// Linux-SPI includes
#include <linux/spi/spidev.h>
// hyperion incluse // hyperion incluse
#include <leddevice/LedDevice.h> #include <leddevice/LedDevice.h>

View File

@ -12,22 +12,14 @@ include_directories(
${LIBUSB_1_INCLUDE_DIRS}) # for Lightpack device ${LIBUSB_1_INCLUDE_DIRS}) # for Lightpack device
# Group the headers that go through the MOC compiler # Group the headers that go through the MOC compiler
SET(Leddevice_QT_HEADERS
${CURRENT_SOURCE_DIR}/LedDeviceAdalight.h
)
SET(Leddevice_HEADERS SET(Leddevice_HEADERS
${CURRENT_HEADER_DIR}/LedDevice.h ${CURRENT_HEADER_DIR}/LedDevice.h
${CURRENT_HEADER_DIR}/LedDeviceFactory.h ${CURRENT_HEADER_DIR}/LedDeviceFactory.h
${CURRENT_SOURCE_DIR}/LedSpiDevice.h
${CURRENT_SOURCE_DIR}/LedRs232Device.h ${CURRENT_SOURCE_DIR}/LedRs232Device.h
${CURRENT_SOURCE_DIR}/LedDeviceTest.h ${CURRENT_SOURCE_DIR}/LedDeviceTest.h
${CURRENT_SOURCE_DIR}/LedDeviceSedu.h ${CURRENT_SOURCE_DIR}/LedDeviceSedu.h
${CURRENT_SOURCE_DIR}/LedDeviceWs2801.h
${CURRENT_SOURCE_DIR}/LedDeviceWs2811.h
${CURRENT_SOURCE_DIR}/LedDeviceLpd6803.h
${CURRENT_SOURCE_DIR}/LedDeviceLpd8806.h
${CURRENT_SOURCE_DIR}/LedDeviceLightpack.h ${CURRENT_SOURCE_DIR}/LedDeviceLightpack.h
${CURRENT_SOURCE_DIR}/LedDevicePaintpack.h ${CURRENT_SOURCE_DIR}/LedDevicePaintpack.h
${CURRENT_SOURCE_DIR}/LedDeviceMultiLightpack.h ${CURRENT_SOURCE_DIR}/LedDeviceMultiLightpack.h
@ -36,20 +28,39 @@ SET(Leddevice_HEADERS
SET(Leddevice_SOURCES SET(Leddevice_SOURCES
${CURRENT_SOURCE_DIR}/LedDeviceFactory.cpp ${CURRENT_SOURCE_DIR}/LedDeviceFactory.cpp
${CURRENT_SOURCE_DIR}/LedSpiDevice.cpp
${CURRENT_SOURCE_DIR}/LedRs232Device.cpp ${CURRENT_SOURCE_DIR}/LedRs232Device.cpp
${CURRENT_SOURCE_DIR}/LedDeviceSedu.cpp ${CURRENT_SOURCE_DIR}/LedDeviceSedu.cpp
${CURRENT_SOURCE_DIR}/LedDeviceTest.cpp ${CURRENT_SOURCE_DIR}/LedDeviceTest.cpp
${CURRENT_SOURCE_DIR}/LedDeviceWs2801.cpp
${CURRENT_SOURCE_DIR}/LedDeviceWs2811.cpp
${CURRENT_SOURCE_DIR}/LedDeviceLpd6803.cpp
${CURRENT_SOURCE_DIR}/LedDeviceLpd8806.cpp
${CURRENT_SOURCE_DIR}/LedDeviceAdalight.cpp
${CURRENT_SOURCE_DIR}/LedDeviceLightpack.cpp ${CURRENT_SOURCE_DIR}/LedDeviceLightpack.cpp
${CURRENT_SOURCE_DIR}/LedDevicePaintpack.cpp ${CURRENT_SOURCE_DIR}/LedDevicePaintpack.cpp
${CURRENT_SOURCE_DIR}/LedDeviceMultiLightpack.cpp ${CURRENT_SOURCE_DIR}/LedDeviceMultiLightpack.cpp
) )
if(ENABLE_SPIDEV)
SET(Leddevice_QT_HEADERS
${Leddevice_QT_HEADERS}
${CURRENT_SOURCE_DIR}/LedDeviceAdalight.h
)
SET(Leddevice_HEADERS
${Leddevice_HEADERS}
${CURRENT_SOURCE_DIR}/LedSpiDevice.h
${CURRENT_SOURCE_DIR}/LedDeviceLpd6803.h
${CURRENT_SOURCE_DIR}/LedDeviceLpd8806.h
${CURRENT_SOURCE_DIR}/LedDeviceWs2801.h
${CURRENT_SOURCE_DIR}/LedDeviceWs2811.h
)
SET(Leddevice_SOURCES
${Leddevice_SOURCES}
${CURRENT_SOURCE_DIR}/LedSpiDevice.cpp
${CURRENT_SOURCE_DIR}/LedDeviceAdalight.cpp
${CURRENT_SOURCE_DIR}/LedDeviceLpd6803.cpp
${CURRENT_SOURCE_DIR}/LedDeviceLpd8806.cpp
${CURRENT_SOURCE_DIR}/LedDeviceWs2801.cpp
${CURRENT_SOURCE_DIR}/LedDeviceWs2811.cpp
)
endif(ENABLE_SPIDEV)
QT4_WRAP_CPP(Leddevice_HEADERS_MOC ${Leddevice_QT_HEADERS}) QT4_WRAP_CPP(Leddevice_HEADERS_MOC ${Leddevice_QT_HEADERS})
add_library(leddevice add_library(leddevice
@ -61,9 +72,13 @@ add_library(leddevice
target_link_libraries(leddevice target_link_libraries(leddevice
hyperion-utils hyperion-utils
hidapi-libusb
serialport serialport
${LIBUSB_1_LIBRARIES} #apt-get install libusb-1.0-0-dev ${LIBUSB_1_LIBRARIES} #apt-get install libusb-1.0-0-dev
${CMAKE_THREAD_LIBS_INIT} ${CMAKE_THREAD_LIBS_INIT}
${QT_LIBRARIES} ${QT_LIBRARIES}
) )
if(APPLE)
target_link_libraries(leddevice hidapi-mac)
else()
target_link_libraries(leddevice hidapi-libusb)
endif()

View File

@ -3,12 +3,15 @@
#include <leddevice/LedDeviceFactory.h> #include <leddevice/LedDeviceFactory.h>
// Local Leddevice includes // Local Leddevice includes
#include "LedDeviceLpd6803.h" #ifdef ENABLE_SPIDEV
#include "LedDeviceLpd8806.h" #include "LedDeviceLpd6803.h"
#include "LedDeviceLpd8806.h"
#include "LedDeviceWs2801.h"
#include "LedDeviceWs2811.h"
#endif
#include "LedDeviceSedu.h" #include "LedDeviceSedu.h"
#include "LedDeviceTest.h" #include "LedDeviceTest.h"
#include "LedDeviceWs2801.h"
#include "LedDeviceWs2811.h"
#include "LedDeviceAdalight.h" #include "LedDeviceAdalight.h"
#include "LedDevicePaintpack.h" #include "LedDevicePaintpack.h"
#include "LedDeviceLightpack.h" #include "LedDeviceLightpack.h"
@ -22,7 +25,9 @@ LedDevice * LedDeviceFactory::construct(const Json::Value & deviceConfig)
std::transform(type.begin(), type.end(), type.begin(), ::tolower); std::transform(type.begin(), type.end(), type.begin(), ::tolower);
LedDevice* device = nullptr; LedDevice* device = nullptr;
if (type == "ws2801" || type == "lightberry") if (false) {}
#ifdef ENABLE_SPIDEV
else if (type == "ws2801" || type == "lightberry")
{ {
const std::string output = deviceConfig["output"].asString(); const std::string output = deviceConfig["output"].asString();
const unsigned rate = deviceConfig["rate"].asInt(); const unsigned rate = deviceConfig["rate"].asInt();
@ -69,16 +74,6 @@ LedDevice * LedDeviceFactory::construct(const Json::Value & deviceConfig)
device = deviceLpd8806; device = deviceLpd8806;
} }
else if (type == "sedu")
{
const std::string output = deviceConfig["output"].asString();
const unsigned rate = deviceConfig["rate"].asInt();
LedDeviceSedu* deviceSedu = new LedDeviceSedu(output, rate);
deviceSedu->open();
device = deviceSedu;
}
else if (type == "adalight") else if (type == "adalight")
{ {
const std::string output = deviceConfig["output"].asString(); const std::string output = deviceConfig["output"].asString();
@ -89,6 +84,17 @@ LedDevice * LedDeviceFactory::construct(const Json::Value & deviceConfig)
device = deviceAdalight; device = deviceAdalight;
} }
#endif
else if (type == "sedu")
{
const std::string output = deviceConfig["output"].asString();
const unsigned rate = deviceConfig["rate"].asInt();
LedDeviceSedu* deviceSedu = new LedDeviceSedu(output, rate);
deviceSedu->open();
device = deviceSedu;
}
else if (type == "lightpack") else if (type == "lightpack")
{ {
const std::string output = deviceConfig.get("output", "").asString(); const std::string output = deviceConfig.get("output", "").asString();

View File

@ -1,11 +1,15 @@
# Needed for testing non-public components # Needed for testing non-public components
include_directories(../libsrc) include_directories(../libsrc)
# Add the simple test executable 'TestSpi' if(ENABLE_SPIDEV)
add_executable(test_spi # Add the simple test executable 'TestSpi'
TestSpi.cpp) add_executable(test_spi TestSpi.cpp)
target_link_libraries(test_spi target_link_libraries(test_spi hyperion)
hyperion)
add_executable(spidev_test spidev_test.c)
add_executable(gpio2spi switchPinCtrl.c)
endif(ENABLE_SPIDEV)
add_executable(test_configfile add_executable(test_configfile
TestConfigFile.cpp) TestConfigFile.cpp)
@ -44,7 +48,3 @@ target_link_libraries(test_blackborderprocessor
add_executable(test_qregexp TestQRegExp.cpp) add_executable(test_qregexp TestQRegExp.cpp)
target_link_libraries(test_qregexp target_link_libraries(test_qregexp
${QT_LIBRARIES}) ${QT_LIBRARIES})
add_executable(spidev_test spidev_test.c)
add_executable(gpio2spi switchPinCtrl.c)