* Port to macOS This port to macOS is an amalgam of the existing Linux and Win32 ports. Consequently code is duplicated from each in this port: primarily from win32 in oshw, and Linux is osal. Synthesizing a shared common posix port, did not seem warranted given the modest amount of code, and stable api. This port uses the default pcap interface provided in the development libraries shipped with XCode. Limited testing on os releases: 10.13 and 10.14. * fix possible race condition as for win32 See aed0f81724e5a2d482491bd6e5e9932a83a42646 * fix spelling as for linux / win32 See 7beba91c6286900f07c8831afe1e1468b665815f
89 lines
2.9 KiB
CMake
89 lines
2.9 KiB
CMake
cmake_minimum_required(VERSION 2.8.4)
|
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules")
|
|
project(SOEM C)
|
|
|
|
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
|
# Default to installing in SOEM source directory
|
|
set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/install)
|
|
endif()
|
|
|
|
set(SOEM_INCLUDE_INSTALL_DIR include/soem)
|
|
set(SOEM_LIB_INSTALL_DIR lib)
|
|
set(BUILD_TESTS TRUE)
|
|
|
|
if(WIN32)
|
|
set(OS "win32")
|
|
include_directories(oshw/win32/wpcap/Include)
|
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
link_directories(${CMAKE_SOURCE_DIR}/oshw/win32/wpcap/Lib/x64)
|
|
elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
|
link_directories(${CMAKE_SOURCE_DIR}/oshw/win32/wpcap/Lib)
|
|
endif()
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D _CRT_SECURE_NO_WARNINGS")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX")
|
|
set(OS_LIBS wpcap.lib Packet.lib Ws2_32.lib Winmm.lib)
|
|
elseif(UNIX AND NOT APPLE)
|
|
set(OS "linux")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror")
|
|
set(OS_LIBS pthread rt)
|
|
elseif(APPLE)
|
|
# This must come *before* linux or MacOSX will identify as Unix.
|
|
set(OS "macosx")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror")
|
|
set(OS_LIBS pthread pcap)
|
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "rt-kernel")
|
|
set(OS "rtk")
|
|
message("ARCH is ${ARCH}")
|
|
message("BSP is ${BSP}")
|
|
include_directories(oshw/${OS}/${ARCH})
|
|
file(GLOB OSHW_EXTRA_SOURCES oshw/${OS}/${ARCH}/*.c)
|
|
set(OSHW_SOURCES "${OS_HW_SOURCES} ${OSHW_ARCHSOURCES}")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-but-set-variable")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-format")
|
|
set(OS_LIBS "-Wl,--start-group -l${BSP} -l${ARCH} -lkern -ldev -lsio -lblock -lfs -lusb -llwip -leth -li2c -lrtc -lcan -lnand -lspi -lnor -lpwm -ladc -ltrace -lc -lm -Wl,--end-group")
|
|
elseif(${CMAKE_SYSTEM_NAME} MATCHES "rtems")
|
|
message("Building for RTEMS")
|
|
set(OS "rtems")
|
|
set(SOEM_LIB_INSTALL_DIR ${LIB_DIR})
|
|
set(BUILD_TESTS FALSE)
|
|
endif()
|
|
|
|
message("OS is ${OS}")
|
|
|
|
file(GLOB SOEM_SOURCES soem/*.c)
|
|
file(GLOB OSAL_SOURCES osal/${OS}/*.c)
|
|
file(GLOB OSHW_SOURCES oshw/${OS}/*.c)
|
|
|
|
file(GLOB SOEM_HEADERS soem/*.h)
|
|
file(GLOB OSAL_HEADERS osal/osal.h osal/${OS}/*.h)
|
|
file(GLOB OSHW_HEADERS oshw/${OS}/*.h)
|
|
|
|
include_directories(soem)
|
|
include_directories(osal)
|
|
include_directories(osal/${OS})
|
|
include_directories(oshw/${OS})
|
|
|
|
add_library(soem STATIC
|
|
${SOEM_SOURCES}
|
|
${OSAL_SOURCES}
|
|
${OSHW_SOURCES}
|
|
${OSHW_EXTRA_SOURCES})
|
|
target_link_libraries(soem ${OS_LIBS})
|
|
|
|
message("LIB_DIR: ${SOEM_LIB_INSTALL_DIR}")
|
|
|
|
install(TARGETS soem DESTINATION ${SOEM_LIB_INSTALL_DIR})
|
|
install(FILES
|
|
${SOEM_HEADERS}
|
|
${OSAL_HEADERS}
|
|
${OSHW_HEADERS}
|
|
DESTINATION ${SOEM_INCLUDE_INSTALL_DIR})
|
|
|
|
if(BUILD_TESTS)
|
|
add_subdirectory(test/linux/slaveinfo)
|
|
add_subdirectory(test/linux/eepromtool)
|
|
add_subdirectory(test/linux/simple_test)
|
|
endif()
|