mirror of
https://github.com/RGBCube/serenity
synced 2025-05-14 08:44:58 +00:00
Kernel: Bake version information into the Kernel
This is done by generating a Kernel/Version.h header with major version, minor version, and git hash.
This commit is contained in:
parent
92c203bba2
commit
7c05eed487
2 changed files with 50 additions and 0 deletions
|
@ -410,6 +410,18 @@ set(ELF_SOURCES
|
||||||
../Userland/Libraries/LibELF/Validation.cpp
|
../Userland/Libraries/LibELF/Validation.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
COMMAND "${SerenityOS_SOURCE_DIR}/Kernel/generate-version-file.sh" "${CMAKE_CURRENT_BINARY_DIR}/Version.h.tmp"
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${CMAKE_CURRENT_BINARY_DIR}/Version.h.tmp" "${CMAKE_CURRENT_BINARY_DIR}/Version.h"
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E remove "${CMAKE_CURRENT_BINARY_DIR}/Version.h.tmp"
|
||||||
|
WORKING_DIRECTORY "${SerenityOS_SOURCE_DIR}"
|
||||||
|
COMMENT "Generating SerenityOS version information"
|
||||||
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/Version.h"
|
||||||
|
VERBATIM
|
||||||
|
)
|
||||||
|
add_custom_target(generate_version_header ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/Version.h")
|
||||||
|
set(GENERATED_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/Version.h")
|
||||||
|
|
||||||
generate_state_machine(../Userland/Libraries/LibVT/StateMachine.txt ../Userland/Libraries/LibVT/EscapeSequenceStateMachine.h)
|
generate_state_machine(../Userland/Libraries/LibVT/StateMachine.txt ../Userland/Libraries/LibVT/EscapeSequenceStateMachine.h)
|
||||||
|
|
||||||
set(VT_SOURCES
|
set(VT_SOURCES
|
||||||
|
@ -437,6 +449,7 @@ set(SOURCES
|
||||||
if (NOT "${SERENITY_ARCH}" STREQUAL "aarch64")
|
if (NOT "${SERENITY_ARCH}" STREQUAL "aarch64")
|
||||||
set(SOURCES
|
set(SOURCES
|
||||||
${KERNEL_SOURCES}
|
${KERNEL_SOURCES}
|
||||||
|
${GENERATED_SOURCES}
|
||||||
${SOURCES}
|
${SOURCES}
|
||||||
${EDID_SOURCES}
|
${EDID_SOURCES}
|
||||||
${ELF_SOURCES}
|
${ELF_SOURCES}
|
||||||
|
|
37
Kernel/generate-version-file.sh
Executable file
37
Kernel/generate-version-file.sh
Executable file
|
@ -0,0 +1,37 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
OUTPUT_FILE=$1
|
||||||
|
|
||||||
|
if command -v git >/dev/null; then
|
||||||
|
if git status >/dev/null 2>&1; then
|
||||||
|
GIT_HASH=$( (git log --pretty=format:'%h' -n 1 | cut -c1-7) || true )
|
||||||
|
# There is at least one modified file as reported by git.
|
||||||
|
if git status --porcelain=v2 | head | grep -Ei '^1' >/dev/null; then
|
||||||
|
GIT_HASH="${GIT_HASH}-modified"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
GIT_HASH=unknown
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
GIT_HASH=unknown
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
cat << EOF > "$OUTPUT_FILE"
|
||||||
|
/*
|
||||||
|
* Automatically generated by Kernel/generate-version-file.sh
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include <AK/StringView.h>
|
||||||
|
|
||||||
|
namespace Kernel {
|
||||||
|
|
||||||
|
constexpr unsigned SERENITY_MAJOR_REVISION = 1;
|
||||||
|
constexpr unsigned SERENITY_MINOR_REVISION = 0;
|
||||||
|
constexpr StringView SERENITY_VERSION = "${GIT_HASH}"sv;
|
||||||
|
|
||||||
|
}
|
||||||
|
EOF
|
Loading…
Add table
Add a link
Reference in a new issue