@@ -92,17 +92,54 @@ if(VCPKG_CHAINLOAD_TOOLCHAIN_FILE)
92
92
include ("${VCPKG_CHAINLOAD_TOOLCHAIN_FILE} " )
93
93
endif ()
94
94
95
+ option (WITH_ABI_VERSION_1 "ABI version 1" ON )
96
+ option (WITH_ABI_VERSION_2 "EXPERIMENTAL: ABI version 2 preview" OFF )
97
+
95
98
file (READ "${CMAKE_CURRENT_LIST_DIR} /api/include/opentelemetry/version.h"
96
99
OPENTELEMETRY_CPP_HEADER_VERSION_H )
97
- if (OPENTELEMETRY_CPP_HEADER_VERSION_H MATCHES
98
- "OPENTELEMETRY_ABI_VERSION_NO[ \t\r\n ]+\" ?([0-9]+)\" ?" )
99
- math (EXPR OPENTELEMETRY_ABI_VERSION_NO ${CMAKE_MATCH_1} )
100
- else ()
100
+
101
+ #
102
+ # We do not want to have WITH_ABI_VERSION = "1" or "2", and instead prefer two
103
+ # distinct flags, WITH_ABI_VERSION_1 and WITH_ABI_VERSION_2.
104
+ #
105
+ # This allows:
106
+ #
107
+ # * to have a specific option description for each ABI
108
+ # * to mark experimental/stable/deprecated on flags, for clarity
109
+ # * to search for exact abi usage move easily, discouraging:
110
+ #
111
+ # * cmake -DWITH_ABI_VERSION=${ARG}
112
+ #
113
+ # While not supported, having distinct WITH_ABI_VERSION_1 and WITH_ABI_VERSION_2
114
+ # flags also opens the possibility to support multiple ABI concurrently, should
115
+ # that become necessary.
116
+ #
117
+ if (WITH_ABI_VERSION_1 AND WITH_ABI_VERSION_2 )
118
+ #
119
+ # Only one ABI is supported in a build.
120
+ #
101
121
message (
102
- FATAL_ERROR
103
- "OPENTELEMETRY_ABI_VERSION_NO not found on ${CMAKE_CURRENT_LIST_DIR} /api/include/opentelemetry/version.h"
104
- )
122
+ FATAL_ERROR "Set either WITH_ABI_VERSION_1 or WITH_ABI_VERSION_2, not both" )
105
123
endif ()
124
+
125
+ if (WITH_ABI_VERSION_2 )
126
+ set (OPENTELEMETRY_ABI_VERSION_NO "2" )
127
+ elseif (WITH_ABI_VERSION_1 )
128
+ set (OPENTELEMETRY_ABI_VERSION_NO "1" )
129
+ else ()
130
+ if (OPENTELEMETRY_CPP_HEADER_VERSION_H MATCHES
131
+ "OPENTELEMETRY_ABI_VERSION_NO[ \t\r\n ]+\" ?([0-9]+)\" ?" )
132
+ math (EXPR OPENTELEMETRY_ABI_VERSION_NO ${CMAKE_MATCH_1} )
133
+ else ()
134
+ message (
135
+ FATAL_ERROR
136
+ "OPENTELEMETRY_ABI_VERSION_NO not found on ${CMAKE_CURRENT_LIST_DIR} /api/include/opentelemetry/version.h"
137
+ )
138
+ endif ()
139
+ endif ()
140
+
141
+ message (STATUS "OPENTELEMETRY_ABI_VERSION_NO=${OPENTELEMETRY_ABI_VERSION_NO} " )
142
+
106
143
if (OPENTELEMETRY_CPP_HEADER_VERSION_H MATCHES
107
144
"OPENTELEMETRY_VERSION[ \t\r\n ]+\" ?([^\" ]+)\" ?" )
108
145
set (OPENTELEMETRY_VERSION ${CMAKE_MATCH_1} )
@@ -113,6 +150,8 @@ else()
113
150
)
114
151
endif ()
115
152
153
+ message (STATUS "OPENTELEMETRY_VERSION=${OPENTELEMETRY_VERSION} " )
154
+
116
155
option (WITH_NO_DEPRECATED_CODE "Do not include deprecated code" OFF )
117
156
118
157
option (WITH_STL "Whether to use Standard Library for C++ latest features" OFF )
0 commit comments