mirror of
https://github.com/hyprwm/Hyprland
synced 2025-12-20 09:30:15 +01:00
build: replace generateVersion.sh (#12110)
* Implemented the CMake version of generateVersion.sh * Made version.h.in compatible with the new build system and included version.h in helpers/MiscFunctions.cpp * Deleted the scripts/generateVersion.sh as it's no longer needed * Updated meson.build to match the new workflow * Added an empty line between includes and namespaces that I accidentally removed
This commit is contained in:
parent
057695bc3f
commit
019589e23f
5 changed files with 119 additions and 94 deletions
|
|
@ -23,9 +23,6 @@ set(CMAKE_MESSAGE_LOG_LEVEL "STATUS")
|
||||||
|
|
||||||
message(STATUS "Gathering git info")
|
message(STATUS "Gathering git info")
|
||||||
|
|
||||||
# Get git info hash and branch
|
|
||||||
execute_process(COMMAND ./scripts/generateVersion.sh
|
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
|
||||||
# Make shader files includable
|
# Make shader files includable
|
||||||
execute_process(COMMAND ./scripts/generateShaderIncludes.sh
|
execute_process(COMMAND ./scripts/generateShaderIncludes.sh
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
||||||
|
|
@ -119,14 +116,53 @@ list(GET AQ_VERSION_LIST 0 AQ_VERSION_MAJOR)
|
||||||
list(GET AQ_VERSION_LIST 1 AQ_VERSION_MINOR)
|
list(GET AQ_VERSION_LIST 1 AQ_VERSION_MINOR)
|
||||||
list(GET AQ_VERSION_LIST 2 AQ_VERSION_PATCH)
|
list(GET AQ_VERSION_LIST 2 AQ_VERSION_PATCH)
|
||||||
|
|
||||||
add_compile_definitions(AQUAMARINE_VERSION="${aquamarine_dep_VERSION}")
|
set(AQUAMARINE_VERSION "${aquamarine_dep_VERSION}")
|
||||||
add_compile_definitions(AQUAMARINE_VERSION_MAJOR=${AQ_VERSION_MAJOR})
|
set(AQUAMARINE_VERSION_MAJOR "${AQ_VERSION_MAJOR}")
|
||||||
add_compile_definitions(AQUAMARINE_VERSION_MINOR=${AQ_VERSION_MINOR})
|
set(AQUAMARINE_VERSION_MINOR "${AQ_VERSION_MINOR}")
|
||||||
add_compile_definitions(AQUAMARINE_VERSION_PATCH=${AQ_VERSION_PATCH})
|
set(AQUAMARINE_VERSION_PATCH "${AQ_VERSION_PATCH}")
|
||||||
add_compile_definitions(HYPRLANG_VERSION="${hyprlang_dep_VERSION}")
|
set(HYPRLANG_VERSION "${hyprlang_dep_VERSION}")
|
||||||
add_compile_definitions(HYPRUTILS_VERSION="${hyprutils_dep_VERSION}")
|
set(HYPRUTILS_VERSION "${hyprutils_dep_VERSION}")
|
||||||
add_compile_definitions(HYPRCURSOR_VERSION="${hyprcursor_dep_VERSION}")
|
set(HYPRCURSOR_VERSION "${hyprcursor_dep_VERSION}")
|
||||||
add_compile_definitions(HYPRGRAPHICS_VERSION="${hyprgraphics_dep_VERSION}")
|
set(HYPRGRAPHICS_VERSION "${hyprgraphics_dep_VERSION}")
|
||||||
|
|
||||||
|
find_package(Git QUIET)
|
||||||
|
if(Git_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
|
||||||
|
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
|
||||||
|
OUTPUT_VARIABLE GIT_COMMIT_HASH OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
execute_process(COMMAND ${GIT_EXECUTABLE} branch --show-current
|
||||||
|
OUTPUT_VARIABLE GIT_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
execute_process(COMMAND ${GIT_EXECUTABLE} show -s --format=%s
|
||||||
|
OUTPUT_VARIABLE GIT_COMMIT_MESSAGE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
execute_process(COMMAND ${GIT_EXECUTABLE} show -s --format=%cd --date=local
|
||||||
|
OUTPUT_VARIABLE GIT_COMMIT_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
execute_process(COMMAND ${GIT_EXECUTABLE} diff-index --quiet HEAD -- OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
RESULT_VARIABLE GIT_DIRTY_RESULT)
|
||||||
|
if(NOT GIT_DIRTY_RESULT EQUAL 0)
|
||||||
|
set(GIT_DIRTY "dirty")
|
||||||
|
else()
|
||||||
|
set(GIT_DIRTY "clean")
|
||||||
|
endif()
|
||||||
|
execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags
|
||||||
|
OUTPUT_VARIABLE GIT_TAG OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
execute_process(COMMAND ${GIT_EXECUTABLE} rev-list --count HEAD
|
||||||
|
OUTPUT_VARIABLE GIT_COMMITS OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
else()
|
||||||
|
set(GIT_COMMIT_HASH "unknown")
|
||||||
|
set(GIT_BRANCH "unknown")
|
||||||
|
set(GIT_COMMIT_MESSAGE "unknown")
|
||||||
|
set(GIT_COMMIT_DATE "unknown")
|
||||||
|
set(GIT_DIRTY "unknown")
|
||||||
|
set(GIT_TAG "unknown")
|
||||||
|
set(GIT_COMMITS "0")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
${CMAKE_SOURCE_DIR}/src/version.h.in
|
||||||
|
${CMAKE_SOURCE_DIR}/src/version.h
|
||||||
|
@ONLY
|
||||||
|
)
|
||||||
|
|
||||||
|
set_source_files_properties(${CMAKE_SOURCE_DIR}/src/version.h PROPERTIES GENERATED TRUE)
|
||||||
|
|
||||||
pkg_check_modules(
|
pkg_check_modules(
|
||||||
deps
|
deps
|
||||||
|
|
|
||||||
79
meson.build
79
meson.build
|
|
@ -9,7 +9,6 @@ project(
|
||||||
'optimization=3',
|
'optimization=3',
|
||||||
'buildtype=release',
|
'buildtype=release',
|
||||||
'debug=false',
|
'debug=false',
|
||||||
'b_lto=false',
|
|
||||||
'cpp_std=c++26',
|
'cpp_std=c++26',
|
||||||
],
|
],
|
||||||
meson_version: '>= 1.1.0',
|
meson_version: '>= 1.1.0',
|
||||||
|
|
@ -22,7 +21,8 @@ add_project_arguments(
|
||||||
'-Wno-unused-value',
|
'-Wno-unused-value',
|
||||||
'-Wno-missing-field-initializers',
|
'-Wno-missing-field-initializers',
|
||||||
'-Wno-narrowing',
|
'-Wno-narrowing',
|
||||||
'-Wno-pointer-arith', datarootdir,
|
'-Wno-pointer-arith',
|
||||||
|
datarootdir,
|
||||||
'-DHYPRLAND_VERSION="' + meson.project_version() + '"',
|
'-DHYPRLAND_VERSION="' + meson.project_version() + '"',
|
||||||
],
|
],
|
||||||
language: 'cpp',
|
language: 'cpp',
|
||||||
|
|
@ -38,15 +38,52 @@ hyprcursor = dependency('hyprcursor', version: '>=0.1.7')
|
||||||
hyprgraphics = dependency('hyprgraphics', version: '>=0.1.6')
|
hyprgraphics = dependency('hyprgraphics', version: '>=0.1.6')
|
||||||
hyprlang = dependency('hyprlang', version: '>=0.3.2')
|
hyprlang = dependency('hyprlang', version: '>=0.3.2')
|
||||||
hyprutils = dependency('hyprutils', version: '>=0.8.2')
|
hyprutils = dependency('hyprutils', version: '>=0.8.2')
|
||||||
aquamarine_version_list = aquamarine.version().split('.')
|
|
||||||
add_project_arguments(['-DAQUAMARINE_VERSION="@0@"'.format(aquamarine.version())], language: 'cpp')
|
aq_ver_list = aquamarine.version().split('.')
|
||||||
add_project_arguments(['-DAQUAMARINE_VERSION_MAJOR=@0@'.format(aquamarine_version_list.get(0))], language: 'cpp')
|
git = find_program('git', required: false)
|
||||||
add_project_arguments(['-DAQUAMARINE_VERSION_MINOR=@0@'.format(aquamarine_version_list.get(1))], language: 'cpp')
|
|
||||||
add_project_arguments(['-DAQUAMARINE_VERSION_PATCH=@0@'.format(aquamarine_version_list.get(2))], language: 'cpp')
|
if git.found()
|
||||||
add_project_arguments(['-DHYPRCURSOR_VERSION="@0@"'.format(hyprcursor.version())], language: 'cpp')
|
git_hash = run_command(git, 'rev-parse', 'HEAD').stdout().strip()
|
||||||
add_project_arguments(['-DHYPRGRAPHICS_VERSION="@0@"'.format(hyprgraphics.version())], language: 'cpp')
|
git_branch = run_command(git, 'branch', '--show-current').stdout().strip()
|
||||||
add_project_arguments(['-DHYPRLANG_VERSION="@0@"'.format(hyprlang.version())], language: 'cpp')
|
git_message = run_command(git, 'show', '-s', '--format=%s').stdout().strip()
|
||||||
add_project_arguments(['-DHYPRUTILS_VERSION="@0@"'.format(hyprutils.version())], language: 'cpp')
|
git_date = run_command(git, 'show', '-s', '--format=%cd', '--date=local').stdout().strip()
|
||||||
|
git_dirty = run_command(git, 'diff-index', '--quiet', 'HEAD', '--', check: false).returncode() != 0 ? 'dirty' : 'clean'
|
||||||
|
git_tag = run_command(git, 'describe', '--tags').stdout().strip()
|
||||||
|
git_commits = run_command(git, 'rev-list', '--count', 'HEAD').stdout().strip()
|
||||||
|
else
|
||||||
|
git_hash = 'unknown'
|
||||||
|
git_branch = 'unknown'
|
||||||
|
git_message = 'unknown'
|
||||||
|
git_date = 'unknown'
|
||||||
|
git_dirty = 'unknown'
|
||||||
|
git_tag = 'unknown'
|
||||||
|
git_commits = '0'
|
||||||
|
endif
|
||||||
|
|
||||||
|
cfg = configuration_data()
|
||||||
|
cfg.set('GIT_COMMIT_HASH', git_hash)
|
||||||
|
cfg.set('GIT_BRANCH', git_branch)
|
||||||
|
cfg.set('GIT_COMMIT_MESSAGE', git_message)
|
||||||
|
cfg.set('GIT_COMMIT_DATE', git_date)
|
||||||
|
cfg.set('GIT_DIRTY', git_dirty)
|
||||||
|
cfg.set('GIT_TAG', git_tag)
|
||||||
|
cfg.set('GIT_COMMITS', git_commits)
|
||||||
|
cfg.set('AQUAMARINE_VERSION', aquamarine.version())
|
||||||
|
cfg.set('AQUAMARINE_VERSION_MAJOR', aq_ver_list[0])
|
||||||
|
cfg.set('AQUAMARINE_VERSION_MINOR', aq_ver_list[1])
|
||||||
|
cfg.set('AQUAMARINE_VERSION_PATCH', aq_ver_list[2])
|
||||||
|
cfg.set('HYPRLANG_VERSION', hyprlang.version())
|
||||||
|
cfg.set('HYPRUTILS_VERSION', hyprutils.version())
|
||||||
|
cfg.set('HYPRCURSOR_VERSION', hyprcursor.version())
|
||||||
|
cfg.set('HYPRGRAPHICS_VERSION', hyprgraphics.version())
|
||||||
|
|
||||||
|
version_h = configure_file(
|
||||||
|
input: 'src/version.h.in',
|
||||||
|
output: 'version.h',
|
||||||
|
configuration: cfg
|
||||||
|
)
|
||||||
|
|
||||||
|
install_headers(version_h, subdir: 'src')
|
||||||
|
|
||||||
xcb_dep = dependency('xcb', required: get_option('xwayland'))
|
xcb_dep = dependency('xcb', required: get_option('xwayland'))
|
||||||
xcb_composite_dep = dependency('xcb-composite', required: get_option('xwayland'))
|
xcb_composite_dep = dependency('xcb-composite', required: get_option('xwayland'))
|
||||||
|
|
@ -55,7 +92,6 @@ xcb_icccm_dep = dependency('xcb-icccm', required: get_option('xwayland'))
|
||||||
xcb_render_dep = dependency('xcb-render', required: get_option('xwayland'))
|
xcb_render_dep = dependency('xcb-render', required: get_option('xwayland'))
|
||||||
xcb_res_dep = dependency('xcb-res', required: get_option('xwayland'))
|
xcb_res_dep = dependency('xcb-res', required: get_option('xwayland'))
|
||||||
xcb_xfixes_dep = dependency('xcb-xfixes', required: get_option('xwayland'))
|
xcb_xfixes_dep = dependency('xcb-xfixes', required: get_option('xwayland'))
|
||||||
|
|
||||||
gio_dep = dependency('gio-2.0', required: true)
|
gio_dep = dependency('gio-2.0', required: true)
|
||||||
|
|
||||||
if not xcb_dep.found()
|
if not xcb_dep.found()
|
||||||
|
|
@ -63,18 +99,14 @@ if not xcb_dep.found()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
backtrace_dep = cpp_compiler.find_library('execinfo', required: false)
|
backtrace_dep = cpp_compiler.find_library('execinfo', required: false)
|
||||||
epoll_dep = dependency('epoll-shim', required: false) # timerfd on BSDs
|
epoll_dep = dependency('epoll-shim', required: false)
|
||||||
inotify_dep = dependency('libinotify', required: false) # inotify on BSDs
|
inotify_dep = dependency('libinotify', required: false)
|
||||||
|
|
||||||
re2 = dependency('re2', required: true)
|
re2 = dependency('re2', required: true)
|
||||||
|
|
||||||
# Handle options
|
|
||||||
systemd_option = get_option('systemd')
|
systemd_option = get_option('systemd')
|
||||||
systemd = dependency('systemd', required: systemd_option)
|
systemd = dependency('systemd', required: systemd_option)
|
||||||
systemd_option.enable_auto_if(systemd.found())
|
systemd_option.enable_auto_if(systemd.found())
|
||||||
|
|
||||||
if (systemd_option.enabled())
|
if (systemd_option.enabled())
|
||||||
message('Enabling systemd integration')
|
|
||||||
add_project_arguments('-DUSES_SYSTEMD', language: 'cpp')
|
add_project_arguments('-DUSES_SYSTEMD', language: 'cpp')
|
||||||
subdir('systemd')
|
subdir('systemd')
|
||||||
endif
|
endif
|
||||||
|
|
@ -83,40 +115,31 @@ if get_option('buildtype') == 'debug'
|
||||||
add_project_arguments('-DHYPRLAND_DEBUG', language: 'cpp')
|
add_project_arguments('-DHYPRLAND_DEBUG', language: 'cpp')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Generate hyprland version and populate version.h
|
|
||||||
run_command('sh', '-c', 'scripts/generateVersion.sh', check: true)
|
|
||||||
# Make shader files includable
|
|
||||||
run_command('sh', '-c', 'scripts/generateShaderIncludes.sh', check: true)
|
run_command('sh', '-c', 'scripts/generateShaderIncludes.sh', check: true)
|
||||||
|
|
||||||
# Install headers
|
|
||||||
globber = run_command('find', 'src', '-name', '*.h*', '-o', '-name', '*.inc', check: true)
|
globber = run_command('find', 'src', '-name', '*.h*', '-o', '-name', '*.inc', check: true)
|
||||||
headers = globber.stdout().strip().split('\n')
|
headers = globber.stdout().strip().split('\n')
|
||||||
foreach file : headers
|
foreach file : headers
|
||||||
install_headers(file, subdir: 'hyprland', preserve_path: true)
|
install_headers(file, subdir: 'hyprland', preserve_path: true)
|
||||||
endforeach
|
endforeach
|
||||||
|
install_headers(version_h, subdir: 'src')
|
||||||
|
|
||||||
tracy = dependency('tracy', static: true, required: get_option('tracy_enable'))
|
tracy = dependency('tracy', static: true, required: get_option('tracy_enable'))
|
||||||
|
|
||||||
if get_option('tracy_enable') and get_option('buildtype') != 'debugoptimized'
|
if get_option('tracy_enable') and get_option('buildtype') != 'debugoptimized'
|
||||||
warning('Profiling builds should set -- buildtype = debugoptimized')
|
warning('Profiling builds should set -- buildtype = debugoptimized')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
subdir('protocols')
|
subdir('protocols')
|
||||||
subdir('src')
|
subdir('src')
|
||||||
subdir('hyprctl')
|
subdir('hyprctl')
|
||||||
subdir('assets')
|
subdir('assets')
|
||||||
subdir('example')
|
subdir('example')
|
||||||
subdir('docs')
|
subdir('docs')
|
||||||
|
|
||||||
if get_option('hyprpm').enabled()
|
if get_option('hyprpm').enabled()
|
||||||
subdir('hyprpm/src')
|
subdir('hyprpm/src')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Generate hyprland.pc
|
|
||||||
pkg_install_dir = join_paths(get_option('datadir'), 'pkgconfig')
|
pkg_install_dir = join_paths(get_option('datadir'), 'pkgconfig')
|
||||||
|
|
||||||
import('pkgconfig').generate(
|
import('pkgconfig').generate(
|
||||||
name: 'Hyprland',
|
name: 'Hyprland',
|
||||||
filebase: 'hyprland',
|
filebase: 'hyprland',
|
||||||
|
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# if the git directory doesn't exist, don't gather data to avoid overwriting, unless
|
|
||||||
# the version file is missing altogether (otherwise compiling will fail)
|
|
||||||
if [ ! -d ./.git ]; then
|
|
||||||
if [ -f ./src/version.h ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
cp -fr ./src/version.h.in ./src/version.h
|
|
||||||
|
|
||||||
HASH=${HASH-$(git rev-parse HEAD)}
|
|
||||||
BRANCH=${BRANCH-$(git branch --show-current)}
|
|
||||||
MESSAGE=${MESSAGE-$(git show | head -n 5 | tail -n 1 | sed -e 's/#//g' -e 's/\"//g')}
|
|
||||||
DATE=${DATE-$(git show --no-patch --format=%cd --date=local)}
|
|
||||||
DIRTY=${DIRTY-$(git diff-index --quiet HEAD -- || echo dirty)}
|
|
||||||
TAG=${TAG-$(git describe --tags)}
|
|
||||||
COMMITS=${COMMITS-$(git rev-list --count HEAD)}
|
|
||||||
|
|
||||||
sed -i -e "s#@HASH@#${HASH}#" ./src/version.h
|
|
||||||
sed -i -e "s#@BRANCH@#${BRANCH}#" ./src/version.h
|
|
||||||
sed -i -e "s#@MESSAGE@#${MESSAGE}#" ./src/version.h
|
|
||||||
sed -i -e "s#@DATE@#${DATE}#" ./src/version.h
|
|
||||||
sed -i -e "s#@DIRTY@#${DIRTY}#" ./src/version.h
|
|
||||||
sed -i -e "s#@TAG@#${TAG}#" ./src/version.h
|
|
||||||
sed -i -e "s#@COMMITS@#${COMMITS}#" ./src/version.h
|
|
||||||
|
|
@ -23,6 +23,8 @@
|
||||||
#endif
|
#endif
|
||||||
#include <hyprutils/string/String.hpp>
|
#include <hyprutils/string/String.hpp>
|
||||||
#include <hyprutils/os/Process.hpp>
|
#include <hyprutils/os/Process.hpp>
|
||||||
|
#include "../version.h"
|
||||||
|
|
||||||
using namespace Hyprutils::String;
|
using namespace Hyprutils::String;
|
||||||
using namespace Hyprutils::OS;
|
using namespace Hyprutils::OS;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,19 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#define GIT_COMMIT_HASH "@HASH@"
|
#define GIT_COMMIT_HASH "@GIT_COMMIT_HASH@"
|
||||||
#define GIT_BRANCH "@BRANCH@"
|
#define GIT_BRANCH "@GIT_BRANCH@"
|
||||||
#define GIT_COMMIT_MESSAGE "@MESSAGE@"
|
#define GIT_COMMIT_MESSAGE "@GIT_COMMIT_MESSAGE@"
|
||||||
#define GIT_COMMIT_DATE "@DATE@"
|
#define GIT_COMMIT_DATE "@GIT_COMMIT_DATE@"
|
||||||
#define GIT_DIRTY "@DIRTY@"
|
#define GIT_DIRTY "@GIT_DIRTY@"
|
||||||
#define GIT_TAG "@TAG@"
|
#define GIT_TAG "@GIT_TAG@"
|
||||||
#define GIT_COMMITS "@COMMITS@"
|
#define GIT_COMMITS "@GIT_COMMITS@"
|
||||||
|
|
||||||
#ifndef HYPRCURSOR_VERSION
|
|
||||||
#define HYPRCURSOR_VERSION "@HYPRCURSOR_VERSION@"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef HYPRGRAPHICS_VERSION
|
|
||||||
#define HYPRGRAPHICS_VERSION "@HYPRGRAPHICS_VERSION@"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef HYPRLANG_VERSION
|
|
||||||
#define HYPRLANG_VERSION "@HYPRLANG_VERSION@"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef HYPRUTILS_VERSION
|
|
||||||
#define HYPRUTILS_VERSION "@HYPRUTILS_VERSION@"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef AQUAMARINE_VERSION
|
|
||||||
#define AQUAMARINE_VERSION "@AQUAMARINE_VERSION@"
|
#define AQUAMARINE_VERSION "@AQUAMARINE_VERSION@"
|
||||||
#endif
|
// clang-format off
|
||||||
|
#define AQUAMARINE_VERSION_MAJOR @AQUAMARINE_VERSION_MAJOR@
|
||||||
|
#define AQUAMARINE_VERSION_MINOR @AQUAMARINE_VERSION_MINOR@
|
||||||
|
#define AQUAMARINE_VERSION_PATCH @AQUAMARINE_VERSION_PATCH@
|
||||||
|
// clang-format on
|
||||||
|
#define HYPRLANG_VERSION "@HYPRLANG_VERSION@"
|
||||||
|
#define HYPRUTILS_VERSION "@HYPRUTILS_VERSION@"
|
||||||
|
#define HYPRCURSOR_VERSION "@HYPRCURSOR_VERSION@"
|
||||||
|
#define HYPRGRAPHICS_VERSION "@HYPRGRAPHICS_VERSION@"
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue