diff --git a/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/cmake-demo_0.1.bb b/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/cmake-demo_0.1.bb new file mode 100644 index 0000000..931954e --- /dev/null +++ b/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/cmake-demo_0.1.bb @@ -0,0 +1,44 @@ +# Example how to make a recipe that uses CMake for building +# Please note that this is a recipe to build the package. For package to be added to an Image, another recipe needs to be changed. +# Example: This package is added to be part of coreos-image-full-cmdline image. +# A new line: IMAGE_INSTALL += "cmake-demo" is added to layers/meta-belden-coreos/recipes-core/images/coreos-image-full-cmdline.bb + +DESCRIPTION = "Simple helloworld cmake application" + +# Recipe must include a licence +LICENSE = "CLOSED" + +# Revision of this recipe (optional) +PR = "r1" + +# Systemd file +SYSTEMD_SERVICE_${PN} = "hello.service" + +# Recipe needs to know where the needed files are +SRC_URI += "file://CMakeLists.txt\ + file://lib/CMakeLists.txt \ + file://src/CMakeLists.txt \ + file://src/helloworld.c \ + file://src/hello.service \ + file://lib/lib-demo.c \ + file://lib/lib-demo.h" + +# List of files and directories that are placed in a package +FILES:${PN} += "${systemd_unitdir}/system/hello.service" + +# Temporary work directory for each recipe where extracted source files are kept +S="${WORKDIR}" + +# CMake will do most of the work, so it needs to be inherited +inherit cmake systemd + +# Passing any needed configure options to CMake +EXTRA_OECMAKE = "" + +# Systemd service is being installed using this function (this is an example). Other files are installed using CMake +do_install:append() { + install -d ${D}/${systemd_unitdir}/system + install -m 0644 ${WORKDIR}/src/hello.service ${D}/${systemd_unitdir}/system +} + + diff --git a/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/files/CMakeLists.txt b/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/files/CMakeLists.txt new file mode 100644 index 0000000..e42e042 --- /dev/null +++ b/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/files/CMakeLists.txt @@ -0,0 +1,15 @@ +# Top CMakeLists.txt file + +# Firstly a minimum required version of CMake is specified +cmake_minimum_required(VERSION 3.22) + +# Name the project, and give a version +project(cmake_demo VERSION 0.0.1) + +# Setting build logs to verbose (usefull for debugging) +set(CMAKE_VERBOSE_MAKEFILE ON) + +# Adding subdirectories that contain CMakeLists.txt +add_subdirectory(lib) +add_subdirectory(src) + diff --git a/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/files/lib/CMakeLists.txt b/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/files/lib/CMakeLists.txt new file mode 100644 index 0000000..4d24d60 --- /dev/null +++ b/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/files/lib/CMakeLists.txt @@ -0,0 +1,17 @@ +# CMakeLists.txt file is gets some info from top CMakeLists.txt file (Minimum required version, Project name), so its not needed to redefine it here + + +# Declare the library target. +add_library(${PROJECT_NAME} SHARED lib-demo.c) + +# Set the version property. +set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION}) + +# Set the shared object version property to the project's major version. +set_target_properties(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR}) + +# Set the public header property to the one with the actual API. +set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER lib-demo.h) + +# Install library and dependency file +install (TARGETS ${PROJECT_NAME} LIBRARY DESTINATION lib PUBLIC_HEADER DESTINATION include) diff --git a/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/files/lib/lib-demo.c b/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/files/lib/lib-demo.c new file mode 100644 index 0000000..d250584 --- /dev/null +++ b/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/files/lib/lib-demo.c @@ -0,0 +1,12 @@ +/* +* Simple C library to be used for demonstration +* Bitbake recipe calls CMake to buld and install +* +*/ +#include +#include "lib-demo.h" + +void demo_print(){ + + printf("Print from demo lib\n"); +} diff --git a/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/files/lib/lib-demo.h b/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/files/lib/lib-demo.h new file mode 100644 index 0000000..087206b --- /dev/null +++ b/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/files/lib/lib-demo.h @@ -0,0 +1,4 @@ +/* +* Library dependency file +*/ +void demo_print(); diff --git a/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/files/src/CMakeLists.txt b/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/files/src/CMakeLists.txt new file mode 100644 index 0000000..5f9d124 --- /dev/null +++ b/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/files/src/CMakeLists.txt @@ -0,0 +1,7 @@ +# CMakeLists.txt file is gets some info from top CMakeLists.txt file (Minimum required version, Project name), so its not needed to redefine it here + +# Create binary +add_executable(helloworld helloworld.c) + +# Install binary +install(TARGETS helloworld RUNTIME DESTINATION bin) diff --git a/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/files/src/hello.service b/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/files/src/hello.service new file mode 100644 index 0000000..1ee1d6e --- /dev/null +++ b/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/files/src/hello.service @@ -0,0 +1,10 @@ +# Systemd service file + +[Unit] +Description=GNU Hello World startup script for KOAN training course + +[Service] +ExecStart=/usr/bin/helloworld + +[Install] +WantedBy=multi-user.target diff --git a/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/files/src/helloworld.c b/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/files/src/helloworld.c new file mode 100644 index 0000000..53bdf48 --- /dev/null +++ b/layers/meta-belden-coreos-demo/recipes-demo/cmake-demo/files/src/helloworld.c @@ -0,0 +1,13 @@ +/* +* Simple C code (binary is used for demonstration) +*/ + +#include + +int main() { + + printf("Hello, World!"); + + return 0; + +} diff --git a/layers/meta-belden-coreos/recipes-core/images/coreos-image-full-cmdline.bb b/layers/meta-belden-coreos/recipes-core/images/coreos-image-full-cmdline.bb index 21f6690..c2e9e63 100644 --- a/layers/meta-belden-coreos/recipes-core/images/coreos-image-full-cmdline.bb +++ b/layers/meta-belden-coreos/recipes-core/images/coreos-image-full-cmdline.bb @@ -3,5 +3,5 @@ functionality installed." inherit coreos-image -IMAGE_FEATURES += "ssh-server podman dev-tools cockpit networkmanager swupdate" -IMAGE_INSTALL:append = " packagegroup-core-full-cmdline swupdate-www" +IMAGE_FEATURES += "ssh-server podman dev-tools cockpit networkmanager" +IMAGE_INSTALL:append = " packagegroup-core-full-cmdline"