Skip to content
Snippets Groups Projects
Commit 4b72c35c authored by Elisabetta Pianori's avatar Elisabetta Pianori
Browse files

Merge branch 'dantrim_mac_support' into 'devel'

Changes to allow for support on macOS

See merge request berkeleylab/labRemote!184
parents b4b27769 900b434f
Branches
No related tags found
No related merge requests found
......@@ -4,7 +4,7 @@ if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8)
message(FATAL_ERROR "GCC version must be at least 4.8!")
endif()
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.2)
message(FATAL_ERROR "Clang version must be at least 3.2!")
endif()
......@@ -31,13 +31,13 @@ find_package( libmpsse )
find_package( libusb-1.0 )
if ( (${LIBFTDI1_FOUND}) AND (${LIBMPSSE_FOUND}) )
message("Enabling FTDI and MPSSE support")
message(STATUS "Enabling FTDI and MPSSE support")
set(ENABLE_FTDI 1)
add_definitions(-DFTDI_ENABLED)
else()
message("Disabling FTDI code due to missing libftdi1 or libmpsse")
message(" libftdi1 = ${LIBFTDI1_FOUND}")
message(" libmpsse = ${LIBMPSSE_FOUND}")
message(STATUS "Disabling FTDI code due to missing libftdi1 or libmpsse:")
message(STATUS " LIBFTDI1_FOUND = ${LIBFTDI1_FOUND}")
message(STATUS " LIBMPSSE_FOUND = ${LIBMPSSE_FOUND}")
endif()
if (${LIBUSB_1_FOUND})
......@@ -50,7 +50,7 @@ if (USE_EXTERNAL_JSON)
find_package(nlohmann_json 3.2.0 REQUIRED)
set(JSON_LIBS "nlohmann_json")
else()
message("Using internal JSON library")
message(STATUS "Using internal JSON library")
set(JSON_BuildTests OFF CACHE INTERNAL "")
set(JSON_Install OFF CACHE INTERNAL "")
add_subdirectory(exts/nlohmann_json EXCLUDE_FROM_ALL)
......@@ -69,8 +69,7 @@ find_package ( libgpib )
if ( (${LIBGPIB_FOUND}) )
set(ENABLE_GPIB 1)
else()
message("Disabling linux-GPIB code due to missing libgpib")
message(" libgpib = ${LIBGPIB_FOUND}")
message(STATUS "Disabling linux-GPIB code due to missing libgpib (LIBGPIB_FOUND = ${LIBGPIB_FOUND})")
endif()
#
......@@ -99,22 +98,22 @@ add_subdirectory(tools)
if (USE_PYTHON)
find_package(pybind11 QUIET)
if(pybind11_FOUND)
message("Using external pybind11")
message(STATUS "Using external pybind11")
else()
message("Using internal pybind11")
message(STATUS "Using internal pybind11")
add_subdirectory(exts/pybind11 EXCLUDE_FROM_ALL)
endif()
find_package(pybind11_json QUIET)
if(pybind11_json_FOUND)
message("Using external pybind11_json")
message(STATUS "Using external pybind11_json")
else()
message("Using internal pybind11_json")
message(STATUS "Using internal pybind11_json")
add_subdirectory(exts/pybind11_json EXCLUDE_FROM_ALL)
endif()
# Add python lib
message("Building labRemote python module")
message(STATUS "Building labRemote python module")
add_subdirectory(labRemote)
set(PP [=[\$$PYTHONPATH]=])
......
......@@ -21,8 +21,7 @@ if ( ${ENABLE_GPIB} )
)
target_link_libraries (Com PRIVATE ${LIBGPIB_LIBRARIES} )
else()
message("skipping GPIBNICom due to missing libgpib")
message(" libgpib = ${LIBGPIB_FOUND}")
message(STATUS "Skipping GPIBNICom due to missing libgpib (LIBGPIB_FOUND = ${LIBGPIB_FOUND})")
endif()
set_target_properties(Com PROPERTIES VERSION ${labRemote_VERSION_MAJOR}.${labRemote_VERSION_MINOR})
......
......@@ -20,7 +20,7 @@ if( ${INFLUXDBCPP_FOUND} )
)
target_include_directories (DataSink PRIVATE ${INFLUXDBCPP_INCLUDE_DIR})
else()
message("skipping InfluxDBSink due to missing influxdb-cpp")
message(STATUS "Skipping InfluxDBSink due to missing influxdb-cpp")
endif()
set_target_properties(DataSink PROPERTIES VERSION ${labRemote_VERSION_MAJOR}.${labRemote_VERSION_MINOR})
......
# Commented files are from amacv2_tester version of the library. They still need to be
# ported to labRemote.
add_library(DevCom SHARED)
# These device libraries depend on Linux and will be included
# once we have confirmed (below) that we are on a Linux host
set(LINUX_SPECIFIC_SOURCES SPIDevCom.cpp I2CDevCom.cpp)
target_sources(DevCom
PRIVATE
DeviceCom.cpp
UIOCom.cpp
I2CCom.cpp
I2CDevCom.cpp
I2CDevComuino.cpp
PCA9548ACom.cpp
SPICom.cpp
SPIDevCom.cpp
ComIOException.cpp
NotSupportedException.cpp
......@@ -61,11 +64,24 @@ target_sources(DevCom
DummyCalibration.cpp
LinearCalibration.cpp
FileCalibration.cpp
)
)
target_include_directories(DevCom PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(DevCom PUBLIC Com Utils)
#
# If we are on macOS, ignore those devices that require the Linux-specific drivers
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
message(STATUS "[libDevCom] macOS system detected, ignoring the following Linux specific devices:")
foreach(device_file ${LINUX_SPECIFIC_SOURCES})
get_filename_component(device ${device_file} NAME_WE)
message(STATUS " > libDevCom/${device}")
endforeach()
set(LINUX_SPECIFIC_SOURCES "")
endif()
target_sources(DevCom
PRIVATE
${LINUX_SPECIFIC_SOURCES}
)
# Optional dependencies
if ( ${ENABLE_FTDI} )
target_sources(DevCom
......@@ -78,9 +94,9 @@ if ( ${ENABLE_FTDI} )
target_include_directories (DevCom PRIVATE ${LIBFTDI1_INCLUDE_DIR} ${LIBMPSSE_INCLUDE_DIR} )
target_link_libraries (DevCom PRIVATE ${LIBFTDI1_LIBRARIES} ${LIBMPSSE_LIBRARIES} )
else()
message("skipping FTDICom due to missing libftdi1 or libmpsse")
message(" libftdi1 = ${LIBFTDI1_FOUND}")
message(" libmpsse = ${LIBMPSSE_FOUND}")
message(STATUS "Skipping FTDICom due to missing libftdi1 or libmpsse")
message(STATUS " libftdi1 = ${LIBFTDI1_FOUND}")
message(STATUS " libmpsse = ${LIBMPSSE_FOUND}")
endif()
set_target_properties(DevCom PROPERTIES VERSION ${labRemote_VERSION_MAJOR}.${labRemote_VERSION_MINOR})
......
......@@ -8,7 +8,6 @@
#include <fcntl.h>
#include <unistd.h>
#ifndef __APPLE__
#include <linux/i2c.h>
#include <linux/i2c-dev.h>
......@@ -373,41 +372,3 @@ void I2CDevCom::read_block(std::vector<uint8_t>& data)
if (ioctl(m_fh, I2C_RDWR, &msgset) < 0)
throw ComIOException(std::string("I2CDev read_block failed: ")+std::strerror(errno));
}
#else
// Just don't run on mac
I2CDevCom::I2CDevCom(uint8_t deviceAddr, const std::string& i2cdev) : I2CCom(deviceAddr) {}
I2CDevCom::~I2CDevCom() {}
void I2CDevCom::write_reg32(uint32_t address, uint32_t data) {}
void I2CDevCom::write_reg16(uint32_t address, uint16_t data) {}
void I2CDevCom::write_reg8 (uint32_t address, uint8_t data) {}
void I2CDevCom::write_reg32(uint32_t data) {}
void I2CDevCom::write_reg16(uint16_t data) {}
void I2CDevCom::write_reg8 (uint8_t data) {}
void I2CDevCom::write_block(uint32_t address, const std::vector<uint8_t>& data) {}
void I2CDevCom::write_block(const std::vector<uint8_t>& data) {}
uint32_t I2CDevCom::read_reg32(uint32_t address) {return 0;}
uint16_t I2CDevCom::read_reg16(uint32_t address) {return 0;}
uint8_t I2CDevCom::read_reg8 (uint32_t address) {return 0;}
uint32_t I2CDevCom::read_reg32() {return 0;}
uint16_t I2CDevCom::read_reg16() {return 0;}
uint8_t I2CDevCom::read_reg8 () {return 0;}
void I2CDevCom::read_block(uint32_t address, std::vector<uint8_t>& data) {}
void I2CDevCom::read_block(std::vector<uint8_t>& data) {}
#endif
......@@ -6,13 +6,13 @@
#include <cmath>
MCP3425::MCP3425(Resolution bit_res, ConversionMode conv_mode, Gain gain, std::shared_ptr<I2CCom> com)
: ADCDevice(std::make_shared<LinearCalibration>(2.048/pow(2,gain),
: ADCDevice(std::make_shared<LinearCalibration>(2.048/pow(2,static_cast<int>(gain)),
(uint16_t)pow(2,bit_res - 1))),
m_resolution(bit_res), m_conv_mode(conv_mode), m_gain(gain), m_com(com)
{ }
MCP3425::MCP3425(std::shared_ptr<I2CCom> com)
: ADCDevice(std::make_shared<LinearCalibration>(2.048/pow(2,Gain::x1),
: ADCDevice(std::make_shared<LinearCalibration>(2.048/pow(2,static_cast<int>(Gain::x1)),
(uint16_t)pow(2,Resolution::bit16 - 1))),
m_resolution(Resolution::bit16), m_conv_mode(ConversionMode::Shot), m_gain(Gain::x1), m_com(com)
{ }
......
......@@ -6,13 +6,13 @@
#include <cmath>
MCP3428::MCP3428(Resolution bit_res, ConversionMode conv_mode, Gain gain, std::shared_ptr<I2CCom> com)
: ADCDevice(std::make_shared<LinearCalibration>(2.048/pow(2,gain),
: ADCDevice(std::make_shared<LinearCalibration>(2.048/pow(2,static_cast<int>(gain)),
(uint16_t)pow(2,bit_res - 1))),
m_resolution(bit_res), m_conv_mode(conv_mode), m_gain(gain), m_com(com)
{ }
MCP3428::MCP3428(std::shared_ptr<I2CCom> com)
: ADCDevice(std::make_shared<LinearCalibration>(2.048/pow(2,Gain::x1),
: ADCDevice(std::make_shared<LinearCalibration>(2.048/pow(2,static_cast<int>(Gain::x1)),
(uint16_t)pow(2,Resolution::bit16 - 1))),
m_resolution(Resolution::bit16), m_conv_mode(ConversionMode::Shot), m_gain(Gain::x1), m_com(com)
{ }
......
......@@ -79,7 +79,7 @@ void SPIDevCom::write_block(const std::vector<uint8_t>& data)
msgs[0].len = data.size();
if (ioctl(m_fh, SPI_IOC_MESSAGE(1), &msgs) < 0)
throw ComIOException(std::string("SPIDevCom write_reg32 failed: ")+std::strerror(errno));
throw ComIOException(std::string("SPIDevCom write_block failed: ")+std::strerror(errno));
}
uint32_t SPIDevCom::read_reg32(uint32_t address)
......@@ -149,5 +149,5 @@ void SPIDevCom::read_block(std::vector<uint8_t>& data)
msgs[0].len = data.size();
if (ioctl(m_fh, SPI_IOC_MESSAGE(1), &msgs) < 0)
throw ComIOException(std::string("SPIDevCom read_reg16 failed: ")+std::strerror(errno));
throw ComIOException(std::string("SPIDevCom read_block failed: ")+std::strerror(errno));
}
......@@ -2,8 +2,7 @@ find_package( libgclib QUIET)
find_package( ZLIB )
if ( NOT "${LIBGCLIB_FOUND}" )
message("Disabling libGalil due to missing dependencies")
message(" libgclib = ${LIBGCLIB_FOUND}")
message(STATUS "Disabling libGalil due to missing dependencies (LIBGCLIB_FOUND = ${LIBGCLIB_FOUND})")
set(libGalil_FOUND FALSE PARENT_SCOPE)
return()
......
......@@ -20,9 +20,9 @@ if ( ${OpenCV_FOUND} AND ${OpenCV_xfeatures2d_FOUND} )
# Tell rest of labRemote that the library exists
set(libImageRec_FOUND TRUE)
else()
message("Disabling libImageRec due to missing dependencies")
message(" OpenCV = ${OpenCV_FOUND}")
message(" OpenCV-xfeatures2d = ${OpenCV_xfeatures2d_FOUND}")
message(STATUS "Disabling libImageRec due to missing dependencies:")
message(STATUS " OpenCV_FOUND = ${OpenCV_FOUND}")
message(STATUS " OpenCV-xfeatures2d = ${OpenCV_xfeatures2d_FOUND}")
set(libImageRec_FOUND FALSE)
endif()
......@@ -3,8 +3,7 @@
find_package(libpico)
if ( NOT "${LIBPICO_FOUND}" )
message("Disabling libScope due to missing libpico")
message(" libpico = ${LIBPICO_FOUND}")
message(STATUS "Disabling libScope due to missing libpico (LIBPICO_FOUND = ${LIBPICO_FOUND})")
set(libScope_FOUND FALSE PARENT_SCOPE)
return()
endif()
......
if ( NOT "${libGalil_FOUND}" )
message("Disabling libWaferProb due to missing dependencies")
message(" libGalil = ${libGalil_FOUND}")
message(STATUS "Disabling libWaferProb due to missing dependencies (libGalil_FOUND = ${libGalil_FOUND})")
set(libWaferProb_FOUND FALSE PARENT_SCOPE)
return()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment