Skip to content

Commit 706f46f

Browse files
committed
Core (Build): Regenerate version.h whenever revision changes (fixes issue #2)
1 parent 9278290 commit 706f46f

File tree

2 files changed

+31
-13
lines changed

2 files changed

+31
-13
lines changed

libvisual/CMakeLists.txt

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -247,21 +247,19 @@ IF(ENABLE_PEDANTIC_CHECKS)
247247
ADD_DEFINITIONS(-DVISUAL_PEDANTIC_CHECKS)
248248
ENDIF()
249249

250-
# Build version
251-
EXECUTE_PROCESS(
252-
COMMAND git describe --always --dirty
253-
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
254-
OUTPUT_STRIP_TRAILING_WHITESPACE
255-
OUTPUT_VARIABLE LV_REVISION
256-
ERROR_QUIET
250+
# Git revision
251+
FIND_PACKAGE(Git)
252+
CONFIGURE_FILE(
253+
"${PROJECT_SOURCE_DIR}/update-version.sh.in"
254+
"${PROJECT_BINARY_DIR}/update-version.sh"
255+
@ONLY
256+
)
257+
ADD_CUSTOM_TARGET(update-version ALL
258+
COMMAND /bin/sh ${PROJECT_BINARY_DIR}/update-version.sh
257259
)
258-
259-
IF(NOT LV_REVISION)
260-
SET(LV_REVISION "unknown")
261-
ENDIF()
262260

263261
# Tools
264-
OPTION(ENABLE_TOOLS "Build Libvisual tools" yes)
262+
OPTION(ENABLE_TOOLS "Biuld Libvisual tools" yes)
265263
IF(ENABLE_TOOLS)
266264
FIND_PACKAGE(SDL)
267265
FIND_PACKAGE(OpenGL)
@@ -284,7 +282,6 @@ INSTALL(FILES ${PROJECT_BINARY_DIR}/${LV_PKG_CONFIG_NAME}.pc DESTINATION ${CMAKE
284282
# Generate config headers
285283
CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/config.h.in ${PROJECT_BINARY_DIR}/config.h)
286284
CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/libvisual/lvconfig.h.in ${PROJECT_BINARY_DIR}/libvisual/lvconfig.h)
287-
CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/version.h.in ${PROJECT_BINARY_DIR}/version.h)
288285

289286
# Build libvisual
290287
ADD_SUBDIRECTORY(libvisual)

libvisual/update-version.sh.in

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!/bin/sh
2+
3+
GIT="@GIT_EXECUTABLE@"
4+
5+
SOURCE_DIR="@PROJECT_SOURCE_DIR@"
6+
BINARY_DIR="@PROJECT_BINARY_DIR@"
7+
8+
INPUT_HEADER="$SOURCE_DIR/version.h.in"
9+
OUTPUT_HEADER="$BINARY_DIR/version.h"
10+
11+
cd $SOURCE_DIR
12+
13+
REVISION=$($GIT describe --always --dirty 2>/dev/null)
14+
[ -z "$REVISION" ] && REVISION="unknown"
15+
16+
if [ -z "$(grep $REVISION $OUTPUT_HEADER 2>/dev/null)" ]; then
17+
echo "Generating version.h"
18+
sed -e "s/\@LV_REVISION\@/$REVISION/g" < $INPUT_HEADER > $OUTPUT_HEADER
19+
fi
20+
21+
exit 0

0 commit comments

Comments
 (0)