1
+# SPDX-License-Identifier: GPL-3.0-or-later
2
+
3
+function(_handle_otel)
4
+ if(CMAKE_BUILD_TYPE STREQUAL Debug)
5
+ set(DEBUG_BUILD True)
6
+ else()
7
+ set(DEBUG_BUILD False)
8
+ endif()
9
+
10
+ message(STATUS "Generating OpenTelemetry Collector Builder configuration")
11
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/release-config.yaml.in"
12
+ "${CMAKE_BINARY_DIR}/otel-build-config.yaml"
13
+ @ONLY)
14
+ message(STATUS "Generating OpenTelemetry Collector Builder configuration -- Done")
15
+
16
+ message(STATUS "Fetching OpenTelemetry Collector Builder")
17
+ set(OLD_GOBIN $ENV{GOBIN})
18
+ set(ENV{GOBIN} ${CMAKE_BINARY_DIR}/bin)
19
+ execute_process(
20
+ COMMAND ${GO_EXECUTABLE} install go.opentelemetry.io/collector/cmd/builder@latest
21
+ RESULT_VARIABLE otel_builder_install
22
+ )
23
+ set(ENV{GOBIN} ${OLD_GOBIN})
24
+
25
+ if(otel_builder_install)
26
+ message(FATAL_ERROR "Fetching OpenTelemetry Collector Builder --Failed")
27
+ else()
28
+ message(STATUS "Fetching OpenTelemetry Collector Builder -- Success")
29
+ endif()
30
+
31
+ set(DIRS "exporter/journaldexporter")
32
+ set(otelcol_deps "")
33
+
34
+ foreach(dir IN LISTS DIRS)
35
+ file(GLOB_RECURSE deps CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${dir}/*.go")
36
+ list(APPEND otelcol_deps "${deps}")
37
+ list(APPEND otelcol_deps
38
+ "${CMAKE_CURRENT_SOURCE_DIR}/${dir}/go.mod"
39
+ "${CMAKE_CURRENT_SOURCE_DIR}/${dir}/go.sum"
40
+ )
41
+ endforeach()
42
+
43
+ add_custom_command(
44
+ OUTPUT otel-collector/otelcol.plugin
45
+ COMMAND ${CMAKE_BINARY_DIR}/bin/builder --config=${CMAKE_BINARY_DIR}/otel-build-config.yaml
46
+ DEPENDS ${otelcol_deps}
47
+ COMMENT "Building otelcol.plugin"
48
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
49
+ VERBATIM
50
+ )
51
+
52
+ add_custom_target(
53
+ plugin-otelcol ALL
54
+ DEPENDS otel-collector/otelcol.plugin
55
+ )
56
+endfunction()
57
+
58
+handle_otel()