@@ -9,11 +9,44 @@ project(tools)
9
9
set (REPOSITORY_DIR ${PROJECT_SOURCE_DIR} /../ )
10
10
11
11
# ------------------------------------------------------------------------------------ #
12
- # Set version
13
- set (TOOLS_MAJOR_VERSION 1 )
14
- set (TOOLS_MINOR_VERSION 0 )
15
- set (TOOLS_PATCH_VERSION 0 )
12
+ # Set version from the git tag
13
+ find_package (Git )
14
+ if (NOT GIT_FOUND )
15
+ message (FATAL_ERROR "Git not found" )
16
+ endif ()
17
+ execute_process (
18
+ COMMAND "${GIT_EXECUTABLE} " describe --tags
19
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} "
20
+ RESULT_VARIABLE git_result
21
+ OUTPUT_VARIABLE git_tag
22
+ ERROR_VARIABLE git_error
23
+ OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE
24
+ )
25
+ if (NOT git_result EQUAL 0 )
26
+ message (FATAL_ERROR "Failed to execute Git: ${git_error} " )
27
+ endif ()
28
+ if (git_tag MATCHES
29
+ "^v([1-9][0-9]*)[.]([0-9]+)([.]([0-9]+))?-?([0-9]+)?(-g([0-9a-f-]+))?$"
30
+ )
31
+ set (TOOLS_MAJOR_VERSION "${CMAKE_MATCH_1} " )
32
+ set (TOOLS_MINOR_VERSION "${CMAKE_MATCH_2} " )
33
+ set (TOOLS_PATCH_VERSION "${CMAKE_MATCH_4} " )
34
+ set (NB_COMMIT "${CMAKE_MATCH_5} " )
35
+ set (GIT_HASH "${CMAKE_MATCH_7} " )
36
+ else ()
37
+ message (FATAL_ERROR "Git tag isn't valid semantic version: [${git_tag} ]" )
38
+ endif ()
39
+
40
+ if ("${TOOLS_PATCH_VERSION} " STREQUAL "" )
41
+ set (TOOLS_PATCH_VERSION 0 )
42
+ endif ()
16
43
set (TOOLS_VERSION ${TOOLS_MAJOR_VERSION} .${TOOLS_MINOR_VERSION}.${TOOLS_PATCH_VERSION} )
44
+ if (NOT "${GIT_HASH} " EQUAL "" )
45
+ message (STATUS "Tools base version: ${TOOLS_VERSION} " )
46
+ message (STATUS "Commit: ${GIT_HASH} , ${NB_COMMIT} commits above latest version" )
47
+ else ()
48
+ message (STATUS "Tools version: ${TOOLS_VERSION} " )
49
+ endif ()
17
50
18
51
# ------------------------------------------------------------------------------------ #
19
52
# Set compilation version
@@ -105,26 +138,6 @@ set(CMAKE_CXX_FLAGS
105
138
"${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic -Wno-long-long -Wno-vla"
106
139
)
107
140
108
- # ------------------------------------------------------------------------------------ #
109
- # Get the Cppyy and clang package
110
- execute_process (
111
- COMMAND bash -c "poetry show cppyy-backend | cut -d: -f2 | sed -n 2p"
112
- OUTPUT_VARIABLE CPPYY_BACKEND_VERSION
113
- OUTPUT_STRIP_TRAILING_WHITESPACE
114
- )
115
- message (STATUS "CPPYY_BACKEND_VERSION: ${CPPYY_BACKEND_VERSION} " )
116
-
117
- if (${CPPYY_BACKEND_VERSION} LESS_EQUAL 1.14.5 )
118
- # Until version 1.14.5, use corrected cmake scripts to find Cppyy and libClang
119
- list (APPEND CMAKE_MODULE_PATH ${REPOSITORY_DIR} /cmake )
120
- endif ()
121
- execute_process (
122
- COMMAND cling-config --cmake
123
- OUTPUT_VARIABLE CPPYY_MODULE_PATH
124
- OUTPUT_STRIP_TRAILING_WHITESPACE )
125
- list (APPEND CMAKE_MODULE_PATH ${CPPYY_MODULE_PATH} )
126
- find_package (Cppyy REQUIRED )
127
-
128
141
# ------------------------------------------------------------------------------------ #
129
142
# Set the headers directory
130
143
include_directories (${PROJECT_SOURCE_DIR} /inc ${PROJECT_BINARY_DIR} )
@@ -159,32 +172,6 @@ install(
159
172
)
160
173
set (TOOLS_LIB ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} /libTools.so )
161
174
162
- # ------------------------------------------------------------------------------------ #
163
- # Target Cppyy binding
164
- message (STATUS "INSTALL_INCLUDE_DIR: ${INSTALL_INCLUDE_DIR} " )
165
- # Generating the library
166
- cppyy_add_bindings (
167
- "PyTools"
168
- "${TOOLS_VERSION} "
169
- "jgaffiot"
170
- "j.gaffiot@laposte.net"
171
- LICENSE "LGPL-3.0-or-later"
172
- LICENSE_FILE ${REPOSITORY_DIR} /LICENSE
173
- README_FILE ${REPOSITORY_DIR} /README.md
174
- LANGUAGE_STANDARD "17"
175
- NAMESPACES "tools"
176
- LINKDEFS ${PROJECT_SOURCE_DIR} /Linkdef.h
177
- INCLUDE_DIRS ${PROJECT_BINARY_DIR} /
178
- LINK_LIBRARIES ${TOOLS_LIB}
179
- H_DIRS ${PROJECT_SOURCE_DIR} /inc/
180
- H_FILES ${TOOLS_INC}
181
- )
182
- add_dependencies (PyToolsCppyy Tools )
183
- install (CODE "message(STATUS \" Attempting pip install\" ${PY_WHEEL_FILE} )"
184
- CODE "execute_process(COMMAND poetry run pip install --force-reinstall
185
- ${PY_WHEEL_FILE} )"
186
- )
187
-
188
175
# ------------------------------------------------------------------------------------ #
189
176
# Create the package: add all targets to the build-tree export set
190
177
export (TARGETS Tools FILE "${PROJECT_BINARY_DIR} /ToolsTargets.cmake" )
@@ -222,3 +209,65 @@ install(
222
209
DESTINATION "${INSTALL_CMAKE_DIR} "
223
210
COMPONENT dev
224
211
)
212
+
213
+ # ------------------------------------------------------------------------------------ #
214
+ # Get the Cppyy and clang package
215
+ execute_process (
216
+ COMMAND bash -c "poetry show cppyy-backend | cut -d: -f2 | sed -n 2p"
217
+ OUTPUT_VARIABLE CPPYY_BACKEND_VERSION
218
+ OUTPUT_STRIP_TRAILING_WHITESPACE
219
+ )
220
+ message (STATUS "CPPYY_BACKEND_VERSION: ${CPPYY_BACKEND_VERSION} " )
221
+
222
+ if (${CPPYY_BACKEND_VERSION} LESS_EQUAL 1.14.5 )
223
+ # Until version 1.14.5, use corrected cmake scripts to find Cppyy and libClang
224
+ list (APPEND CMAKE_MODULE_PATH ${REPOSITORY_DIR} /cmake )
225
+ endif ()
226
+ execute_process (
227
+ COMMAND cling-config --cmake
228
+ OUTPUT_VARIABLE CPPYY_MODULE_PATH
229
+ ERROR_VARIABLE CPPYY_MODULE_ERROR
230
+ OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE
231
+ )
232
+ if (NOT CPPYY_MODULE_ERROR EQUAL 0 )
233
+ message (STATUS "Cppyy has not been installed, skipping the Python binding" )
234
+ return ()
235
+ endif ()
236
+ list (APPEND CMAKE_MODULE_PATH ${CPPYY_MODULE_PATH} )
237
+ find_package (Cppyy REQUIRED )
238
+
239
+ # ------------------------------------------------------------------------------------ #
240
+ # Target Cppyy binding
241
+ message (STATUS "INSTALL_INCLUDE_DIR: ${INSTALL_INCLUDE_DIR} " )
242
+ # Generating the library
243
+ cppyy_add_bindings (
244
+ "PyTools"
245
+ "${TOOLS_VERSION} "
246
+ "jgaffiot"
247
+ "j.gaffiot@laposte.net"
248
+ LICENSE
249
+ "LGPL-3.0-or-later"
250
+ LICENSE_FILE
251
+ ${REPOSITORY_DIR} /LICENSE
252
+ README_FILE
253
+ ${REPOSITORY_DIR} /README.md
254
+ LANGUAGE_STANDARD
255
+ "17"
256
+ NAMESPACES
257
+ "tools"
258
+ LINKDEFS
259
+ ${PROJECT_SOURCE_DIR} /Linkdef.h
260
+ INCLUDE_DIRS
261
+ ${PROJECT_BINARY_DIR} /
262
+ LINK_LIBRARIES
263
+ ${TOOLS_LIB}
264
+ H_DIRS
265
+ ${PROJECT_SOURCE_DIR} /inc/
266
+ H_FILES
267
+ ${TOOLS_INC}
268
+ )
269
+ add_dependencies (PyToolsCppyy Tools )
270
+ install (CODE "message(STATUS \" Attempting pip install\" ${PY_WHEEL_FILE} )"
271
+ CODE "execute_process(COMMAND poetry run pip install --force-reinstall
272
+ ${PY_WHEEL_FILE} )"
273
+ )
0 commit comments