diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0f3bd6677d04cbd9ce2eb63b6a510100037b040b..0bdc44bfa3f7b57ba39ec1e83b5b5935b482a8da 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -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]=]) diff --git a/src/libCom/CMakeLists.txt b/src/libCom/CMakeLists.txt index db3429bbe0cf3e491c6e18e578d8cbdf0f8bd542..74efdd8a3169feb44f55131d9339d80420b889de 100644 --- a/src/libCom/CMakeLists.txt +++ b/src/libCom/CMakeLists.txt @@ -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}) diff --git a/src/libDataSink/CMakeLists.txt b/src/libDataSink/CMakeLists.txt index 9beba8bad7f5012b9d139a7388f8455931de0229..dfdf32df34253315a358f472b7e90de0764194fb 100644 --- a/src/libDataSink/CMakeLists.txt +++ b/src/libDataSink/CMakeLists.txt @@ -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}) diff --git a/src/libDevCom/CMakeLists.txt b/src/libDevCom/CMakeLists.txt index de8e98dbb19be366d843a35dc2662cde82f995bf..f3b74e2d8c91e347fd8645074372ea5e49619f41 100644 --- a/src/libDevCom/CMakeLists.txt +++ b/src/libDevCom/CMakeLists.txt @@ -1,18 +1,21 @@ # 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}) diff --git a/src/libDevCom/I2CDevCom.cpp b/src/libDevCom/I2CDevCom.cpp index b49367b35a572bf2cc02b3f0cb44b7215250f329..f9ccd607880c60e98306e5cc0d6bbc2c8ca6d01a 100644 --- a/src/libDevCom/I2CDevCom.cpp +++ b/src/libDevCom/I2CDevCom.cpp @@ -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 diff --git a/src/libDevCom/MCP3425.cpp b/src/libDevCom/MCP3425.cpp index ac276cfb7d0bc8230a758e46b4e6b01039b30b42..60f93bb85b6f6e045ce593bda70df2cbeb6064fa 100644 --- a/src/libDevCom/MCP3425.cpp +++ b/src/libDevCom/MCP3425.cpp @@ -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) { } diff --git a/src/libDevCom/MCP3428.cpp b/src/libDevCom/MCP3428.cpp index e8fddaf50851546bef80e52d9c6e4de564247b36..49b4ab65b0eb1741e6d6bbcadf843373cbd9f8fd 100644 --- a/src/libDevCom/MCP3428.cpp +++ b/src/libDevCom/MCP3428.cpp @@ -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) { } diff --git a/src/libDevCom/SPIDevCom.cpp b/src/libDevCom/SPIDevCom.cpp index f6afc8cf5e93715fc1d2a82a18ada1acc782f129..2f0b691881d936654f325b5bfa6ccee6bb82e24f 100644 --- a/src/libDevCom/SPIDevCom.cpp +++ b/src/libDevCom/SPIDevCom.cpp @@ -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)); } diff --git a/src/libGalil/CMakeLists.txt b/src/libGalil/CMakeLists.txt index 4e76d3837a58137f7bcaa68a897774b7452ba6e6..7289c32a25c19acea64a39c14b87d0f0865dd593 100644 --- a/src/libGalil/CMakeLists.txt +++ b/src/libGalil/CMakeLists.txt @@ -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() diff --git a/src/libImageRec/CMakeLists.txt b/src/libImageRec/CMakeLists.txt index 03cd4a4f4fe6d51981ddcd1d61a3dff36b0b08d0..06d6c9756e185dcddd141e2c6fe7deb4f5c2bbe4 100644 --- a/src/libImageRec/CMakeLists.txt +++ b/src/libImageRec/CMakeLists.txt @@ -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() diff --git a/src/libScope/CMakeLists.txt b/src/libScope/CMakeLists.txt index 55775c1c3510150633f9bcb2fc5961d22089b051..19da1c1f474b448bef3c23c6eb0f47e663de37df 100644 --- a/src/libScope/CMakeLists.txt +++ b/src/libScope/CMakeLists.txt @@ -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() diff --git a/src/libWaferProb/CMakeLists.txt b/src/libWaferProb/CMakeLists.txt index 75fad4fd5ca9ebb20e09b946a6ebb5b37684f871..1181d6170dd83d0b92402bd40cd231cfc3eb474b 100644 --- a/src/libWaferProb/CMakeLists.txt +++ b/src/libWaferProb/CMakeLists.txt @@ -1,6 +1,5 @@ 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()