diff --git a/CMakeLists.txt b/CMakeLists.txt index fa35922..678b1b4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,8 @@ string(REGEX MATCH "VERSION = ([0-9]*.[0-9]*.[0-9]*)" _ ${PROJECT_PROPERTIES}) set(PROJECT_VERSION ${CMAKE_MATCH_1}) project(libethercat VERSION ${PROJECT_VERSION}) -set(ECAT_DEVICE "sock_raw" CACHE STRING "EtherCAT device layer as `;` separated list") +set(ECAT_DEVICE "sock_raw" CACHE STRING "EtherCAT device layer as `+` separated list") +string(REPLACE "+" ";" ECAT_DEVICE ${ECAT_DEVICE}) include(CheckIncludeFiles) include(CheckSymbolExists) @@ -65,9 +66,6 @@ find_package (Threads REQUIRED) include_directories(${libosal_INCLUDE_DIRS} include) link_directories(${libosal_LIB_DIR}) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_config.h.in ${CMAKE_CURRENT_SOURCE_DIR}/include/libethercat/config.h) - - set(SRC_ETHERCAT src/async_loop.c src/coe.c @@ -95,29 +93,31 @@ list(FIND ECAT_DEVICE "bpf" HAS_SOCK_BPF) if (${HAS_SOCK_RAW} GREATER -1) message("Include device sock_raw") list(APPEND SRC_HW_LAYER src/hw_sock_raw.c) - add_compile_definitions(LIBETHERCAT_BUILD_DEVICE_SOCK_RAW_LEGACY) + set(LIBETHERCAT_BUILD_DEVICE_SOCK_RAW_LEGACY 1) endif() if (${HAS_SOCK_RAW_MMAPED} GREATER -1) message("Include device sock_raw_mmaped") list(APPEND SRC_HW_LAYER src/hw_sock_raw_mmaped.c) - add_compile_definitions(LIBETHERCAT_BUILD_DEVICE_SOCK_RAW_MMAPED) + set(LIBETHERCAT_BUILD_DEVICE_SOCK_RAW_MMAPED 1) endif() if (${HAS_SOCK_FILE} GREATER -1) message("Include device file") list(APPEND SRC_HW_LAYER src/hw_file.c) - add_compile_definitions(LIBETHERCAT_BUILD_DEVICE_FILE) + set(LIBETHERCAT_BUILD_DEVICE_FILE 1) endif() if (${HAS_SOCK_PIKEOS} GREATER -1) message("Include device pikeos") list(APPEND SRC_HW_LAYER src/hw_pikeos.c) - add_compile_definitions(LIBETHERCAT_BUILD_DEVICE_PIKEOS) + set(LIBETHERCAT_BUILD_DEVICE_PIKEOS 1) endif() if (${HAS_SOCK_BPF} GREATER -1) message("Include device bpf") list(APPEND SRC_HW_LAYER src/hw_bpf.c) - add_compile_definitions(LIBETHERCAT_BUILD_DEVICE_BPD) + set(LIBETHERCAT_BUILD_DEVICE_BPF 1) endif() +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_config.h.in ${CMAKE_CURRENT_SOURCE_DIR}/include/libethercat/config.h) + # LIBS add_library(ethercat ${SRC_ETHERCAT} ${SRC_HW_LAYER}) target_link_libraries (ethercat ${CMAKE_THREAD_LIBS_INIT} ${libosal_LIBS}) diff --git a/README.md b/README.md index 855e63e..64b7191 100644 --- a/README.md +++ b/README.md @@ -64,15 +64,24 @@ This will build and install a static as well as a dynamic library. For use in ot ### CMake +Steps to build: ```bash mkdir build cd build # Please change the path to the install dir. If you chose a global install you can omit the CMAKE_PREFIX_PATH option -# You can specify which EtherCAT devices should be included into the build with -DECAT_DEVICE="sock_raw;sock_raw_mmaped;..." -cmake .. -DCMAKE_PREFIX_PATH= -DECAT_DEVICE="sock_raw;sock_raw_mmaped" +# You can specify which EtherCAT devices should be included into the build with -DECAT_DEVICE="sock_raw+sock_raw_mmaped+..." +cmake -DCMAKE_PREFIX_PATH= -DECAT_DEVICE="sock_raw+sock_raw_mmaped" .. cmake --build . ``` +#### Configuration parameters + +| Parameter | Default | Description | +|-------------------|----------|-----------------------------------------------------------------------------------------------------------| +| CMAKE_PREFIX_PATH | | Install directory of the libosal | +| ECAT_DEVICE | sock_raw | List of EtherCAT devices as `+` separated list. Possible values: sock_raw+sock_raw_mmaped+file+pikeos+bpf | +| BUILD_SHARED_LIBS | OFF | Flag to build shared libraries instead of static ones. | + ## Tools libethercat also provides some small helper programs for the EtherCAT bus. diff --git a/cmake/cmake_config.h.in b/cmake/cmake_config.h.in index 6421a51..91d7373 100644 --- a/cmake/cmake_config.h.in +++ b/cmake/cmake_config.h.in @@ -124,6 +124,21 @@ /* Define to the version of this package. */ #cmakedefine LIBETHERCAT_VERSION "@LIBETHERCAT_VERSION@" +/* Define to build DEVICE_SOCK_RAW_LEGACY. */ +#cmakedefine LIBETHERCAT_BUILD_DEVICE_SOCK_RAW_LEGACY ${LIBETHERCAT_BUILD_DEVICE_SOCK_RAW_LEGACY} + +/* Define to build DEVICE_SOCK_RAW_MMAPED. */ +#cmakedefine LIBETHERCAT_BUILD_DEVICE_SOCK_RAW_MMAPED ${LIBETHERCAT_BUILD_DEVICE_SOCK_RAW_MMAPED} + +/* Define to build DEVICE_FILE. */ +#cmakedefine LIBETHERCAT_BUILD_DEVICE_FILE ${LIBETHERCAT_BUILD_DEVICE_FILE} + +/* Define to build BUILD_DEVICE_PIKEOS. */ +#cmakedefine LIBETHERCAT_BUILD_DEVICE_PIKEOS ${LIBETHERCAT_BUILD_DEVICE_PIKEOS} + +/* Define to build BUILD_DEVICE_BPD. */ +#cmakedefine LIBETHERCAT_BUILD_DEVICE_BPF ${LIBETHERCAT_BUILD_DEVICE_BPF} + /* Define to necessary symbol if this constant uses a non-standard name on your system. */ #undef PTHREAD_CREATE_JOINABLE