diff --git a/.github/workflows/build-cmake.yml b/.github/workflows/build-cmake.yml new file mode 100644 index 0000000..82ac45d --- /dev/null +++ b/.github/workflows/build-cmake.yml @@ -0,0 +1,57 @@ +name: CMake + +on: + pull_request: + branches: ["main"] + paths: + - ".github/workflows/build-cmake.yml" + - "ipc/**/*.c" + - "ipc/**/*.h" + - "**/CMakeLists.txt" + - "cmake/*.cmake" + push: + branches: ["main"] + paths: + - ".github/workflows/build-cmake.yml" + - "ipc/**/*.c" + - "ipc/**/*.h" + - "**/CMakeLists.txt" + - "cmake/*.cmake" + +jobs: + linux-build-cmake: + name: Linux + runs-on: ubuntu-latest + strategy: + fail-fast: true + matrix: + compiler: ["gcc", "clang"] + steps: + - uses: actions/checkout@v5 + - name: Setup CMake + run: | + CC=${{ matrix.compiler }} cmake -S . -B build + - name: Build + run: | + CC=${{ matrix.compiler }} cmake --build build + + windows-build-cmake: + name: Windows + runs-on: windows-latest + strategy: + fail-fast: true + matrix: + compiler: ["cl.exe", "gcc.exe"] + steps: + - uses: actions/checkout@v5 + - uses: ilammy/msvc-dev-cmd@v1.13.0 + - name: Setup CMake + run: | + cmake -S . -B build + env: + CC: ${{ matrix.compiler }} + - name: Build + run: | + cmake --build build + env: + CC: ${{ matrix.compiler }} diff --git a/.github/workflows/build.yml b/.github/workflows/build-meson.yml similarity index 94% rename from .github/workflows/build.yml rename to .github/workflows/build-meson.yml index 63addd2..9247b4a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build-meson.yml @@ -1,17 +1,17 @@ -name: Build and Test +name: Meson on: pull_request: branches: ["main"] paths: - - ".github/workflows/build.yml" + - ".github/workflows/build-meson.yml" - "ipc/**/*.c" - "ipc/**/*.h" - "**/meson.build" push: branches: ["main"] paths: - - ".github/workflows/build.yml" + - ".github/workflows/build-meson.yml" - "ipc/**/*.c" - "ipc/**/*.h" - "**/meson.build" diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..a03d4cd --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,42 @@ +cmake_minimum_required(VERSION 3.30..4.0) +project(libtestrig + LANGUAGES C) + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") + +set(LIB_DIR "${CMAKE_SOURCE_DIR}/lib") +set(IPC_DIR "${LIB_DIR}/ipc") +set(EPOS_DIR "${LIB_DIR}/epos2") + +set(IPC_SOURCES + "${IPC_DIR}/ipc.c" + "${IPC_DIR}/constants.c" + "${IPC_DIR}/message.c" + "${IPC_DIR}/os.c") + +set(EPOS_SOURCES + "${EPOS_DIR}/epos2.c" + "${EPOS_DIR}/connect.c" + "${EPOS_DIR}/definitions.c" + "${EPOS_DIR}/identify.c") + +set(LIBTESTRIG_SOURCES ${IPC_SOURCES}) + +find_package(EPOSCmd) +if (EPOSCmd_FOUND) + list(APPEND LIBTESTRIG_SOURCES ${EPOS_SOURCES}) +else() + message("Controller capabilities not being built.") +endif() + +add_library(Libtestrig SHARED ${LIBTESTRIG_SOURCES}) +target_compile_definitions(Libtestrig PRIVATE COMPILING_TESTRIG_DLL) +target_include_directories(Libtestrig PUBLIC ${LIB_DIR}) + +if (WIN32) + target_link_libraries(Libtestrig PRIVATE Ws2_32) +endif() + +if (EPOSCmd_FOUND) + target_link_libraries(Libtestrig PUBLIC EPOSCmd) +endif() diff --git a/cmake/FindEPOSCmd.cmake b/cmake/FindEPOSCmd.cmake new file mode 100644 index 0000000..e69de29