Skip to content

Commit

Permalink
Merge branch 'master' of github.com:robert-burger/libethercat
Browse files Browse the repository at this point in the history
  • Loading branch information
robert-burger committed Aug 21, 2024
2 parents 6917b01 + 388ac34 commit 1a9cca4
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 11 deletions.
18 changes: 9 additions & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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})
Expand Down
13 changes: 11 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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=<installdir of libosal> -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=<installdir of libosal> -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.
Expand Down
15 changes: 15 additions & 0 deletions cmake/cmake_config.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 1a9cca4

Please sign in to comment.