Age | Commit message (Collapse) | Author |
|
For example, if you have:
//This is a comment
now clang-format won't change it to:
// This is a comment
We're mainly interested in formatting the code, not the comments, so that
cuts down on some noise when running clang-format.
CCBUG: 456819
|
|
Only install pre-commit hooks if KDE_CONFIGURE_GIT_PRE_COMMIT_HOOK
is called frm CMAKE_CURRENT_PROEJECT, eg. don't install pre-commit
hooks if ECM is inside a submodule or fetched-content.
|
|
The main target consumers of this macro currently (should) want to be
informed about new deprecations as early as possible. As do the authors
of the warnings.
So instead let's make no warnings an opt-in. Not documenting the
now deprecated flag in the docs, given no wide-spread use yet, just
supporting still in the code with a note to users.
|
|
|
|
This should catch undefined preprocessor expressions, i.e. instead of
showing a warning if FOO_BAR_H is undefined:
#if FOO_BAR_H
make the build fai lwith an error instead.
This combined with using #cmakedefine01 (instead of #cmakedefine), could
catch things like:
https://invent.kde.org/pim/kdepim-runtime/-/commit/05a0e5bbfbb06ed6aa88640f25f563cf7e5b1330
|
|
Should help readers being aware of pitfalls
NO_CHANGELOG
|
|
NO_CHANGELOG
|
|
NO_CHANGELOG
|
|
NO_CHANGELOG
|
|
OpenBSD has a similar patch inside the ports, see
Allow KDE5 libraries to be built without having to link to libc explicitly.
Index: kde-modules/KDECompilerSettings.cmake
--- kde-modules/KDECompilerSettings.cmake.orig
+++ kde-modules/KDECompilerSettings.cmake
@@ -530,6 +530,8 @@ endfunction()
# Better diagnostics (warnings, errors)
############################################################
+set(ALLOW_UNDEFINED_LIB_SYMBOLS No CACHE BOOL "allow undefined symbols in generated shared objects")
+
if ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND NOT APPLE) OR
(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT APPLE) OR
(CMAKE_CXX_COMPILER_ID STREQUAL "Intel" AND NOT WIN32))
@@ -537,9 +539,11 @@ if ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND NOT APPL
set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--fatal-warnings ${CMAKE_SHARED_LINKER_FLAGS}")
set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--fatal-warnings ${CMAKE_MODULE_LINKER_FLAGS}")
- # Do not allow undefined symbols, even in non-symbolic shared libraries
- set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined ${CMAKE_SHARED_LINKER_FLAGS}")
- set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--no-undefined ${CMAKE_MODULE_LINKER_FLAGS}")
+ if (NOT ${ALLOW_UNDEFINED_LIB_SYMBOLS})
+ # Do not allow undefined symbols, even in non-symbolic shared libraries
+ set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined ${CMAKE_SHARED_LINKER_FLAGS}")
+ set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--no-undefined ${CMAKE_MODULE_LINKER_FLAGS}")
+ endif()
endif()
set(_KDE_GCC_COMMON_WARNING_FLAGS "-Wall -Wextra -Wcast-align -Wchar-subscripts -Wformat-security -Wno-long-long -Wpointer-arith -Wundef")
|
|
If the module is not included, the current message would be misleading.
Including the module by default is undesirable, because we print out a warning
that we do not override an existing module. While this warning is reasonable in most
cases, it is annoying for projects that have a custom clang-format file.
Checking if a .clang-format file exists and if not including KDEClangFormat is fragile,
because it depends on the include order of the modules.
Considering all that, a proper warning with instructions on how to fix the issue
is IMHO the best way to go.
|
|
I was getting CMake errors in repositories that had a pre-existing commit
hook: `string sub-command FIND requires 3 or 4 parameters.`
Adding quotes around the variables from 6224e7b8c28d434b81a19ac47b88cb58fee9d7d5
fixes this issue for me.
|
|
If the .git/hooks/pre-commit already exists, only add the clang-format line
if it doesn't already exist.
|
|
If clang-format isn't found, there is nothing to write to the file.
|
|
|
|
Continuation of commit 4e47b053c9d799.
All unittests still pass.
|
|
It should be --extensions "cpp,h,hpp,c"; previously, I naively tested that
it didn't bother .json files, but I not if it'll actually trigger for e.g.
a .h file...
|
|
and target
Previously the clang-format.sh git hook script didn't specify the file
extensions to format; however it looks like with recent(?) clang-format
versions 'git clang-format' will consider .json files if such files were
changed by a commit, which makes the script fail, see:
https://invent.kde.org/frameworks/extra-cmake-modules/-/merge_requests/254
Sepcify the file extensions by passing --extensions to 'git clang-format'
command.
Also add ".hpp" to the file extensions we format, and use the same list of
file extensions everywhere.
|
|
If we are not tracking a specific branch, assume the remote is "origin"
which is git's default.
|
|
|
|
This fixes KDEInstallDirsTest.relative_or_absolute_qt unittest.
|
|
Otherwise, commits will be rejected because the hook cannot be found from the workdir root dir (there is only one .git directory in a checkout, but commands are run relative to the worktree root dir).
|
|
As outlined in https://reproducible-builds.org/docs/archives/ to ensure
that tarballs are reproducible, one should honour SOURCE_DATE_EPOCH.
In the case it's not, fallback to date +%s, set the mtime.
Delete atime and ctime completely. No idea if this is better or worse.
Based on the patch by: Brendan Tildesley <mail@brendan.scot>
From: https://bugs.kde.org/show_bug.cgi?id=443532
v2: Emil
- Split from larger patch
- Fallback to date +%s
v3: Emil
- $ENV{...} to evaluate the variable
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
|
|
In some build environments like in Guix, the GID of "root" is not
consistent.
With --numeric-owner, we only need to specify UID and GID, the user name
is unneeded, so set --owner=0 --group=0
Based on the patch by: Brendan Tildesley <mail@brendan.scot>
From: https://bugs.kde.org/show_bug.cgi?id=443532
v2: Emil
- Keep args reorder a separate commit
- Move time changes into separate commit
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
|
|
Split the arguments in separate lines, grouped appropriately.
No functional changes.
Suggested-by: @adridg
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
|
|
Fixes unit tests with Qt6 and identified the missing definition of the
full path variables for aliases.
|
|
With Qt6 that isn't always the case, for example in our Linux CI image.
Using -bsymbolic-function on the final executable in that case can result
in function pointer conntect or method/signal lookups to fail. This can be
observed in various unit test failures on the CI right now.
|
|
Semantically this is an ECM module, because it can be used to manage deprecated
Qt API and from any project which use ecm_generate_export_headers
|
|
This will make setting the deprecation versions easier, otherwise one would need
to edit the hex value. It also helps to keep the required versions and deprecation versions
in sync.
Also this allows one to keep the deprecation warnings, when one excludes deprecations for a specific version.
Additionally the deprecation version can be overwritten by a cmake parameter.
This will make local testing easier, because one does not need to edit the CMakeLists.txt files.
Task: https://phabricator.kde.org/T15109
|
|
So far we were defining e.g. KSERVICESDIR next to KDE_INSTALL_KSERVICES5DIR
here, rather than the intended KDE_INSTALL_KSERVICESDIR.
|
|
This enables forward-compatibility with KDEInstallDirs6.cmake
This was partly done already, but in the wrong order and not for all
versioned variables.
|
|
There is no path out of QtVersionOption.cmake that would let
QT_MAJOR_VERSION undefined, so this check is unnecessary. Worse, this
doesn't actually check for QT_MAJOR_VERSION being defined, but whether
a variable named after the content of the QT_MAJOR_VERSION variable is
defined. That is always false, so this effectively forces Qt5 and breaks
Qt6 support.
This reverts commit 8fd79163a7c60386fbc94bc14ca4a3b0b29d7227.
|
|
This fixes an infinite recursion of KDEInstallDirs including
itself when QT_MAJOR_VERSION is not defined.
|
|
and use only KSERVICESDIR in KDEInstallDirs6.
|
|
|
|
|
|
+ adjust docu
|
|
|
|
This factors out large parts of the common code into separate modules,
and adds a backward compatibility wrapper.
The 6 variant drops some deprecated variables where possible, but otherwise
is the same as the 5 variant. It still lacks a replacement for the paths
depending on ECMQueryQMake though.
|
|
This breaks older clang-format version :/
This reverts commit 81f70c9639154dcd067d73b0620767d8ba0362cf.
|
|
This is only supported in the latest clang-format version.
Having formatting enabled would cause it to complain about no rules
being set for json files.
|
|
|
|
Ensure /Zc:__cplusplus is passed when using newer C++ standards.
https://docs.microsoft.com/en-us/cpp/build/reference/zc-cplusplus?view=msvc-160
|
|
Should help catch errors like initializing a q-ptr with itself[1].
[1] https://invent.kde.org/frameworks/knewstuff/-/commit/d09ba1917cb7e035a9aac6c27c86fc4df5da3194
|
|
I was seeing `error: No such remote 'origin'` in the cmake output.
This commit avoids hardcoding `origin` as the upstream URL and instead
uses the `git rev-parse @{u}` to get the configured upstream.
As a follow-up we may want to check if this should be executed by default,
but for now this fixes a warning that I'm seeing with various projects.
|
|
wl_resource_for_each_safe is used in kwayland-server, and as the name
suggests is a for-each like function.
|
|
|
|
If people ship their own clang-format file they might still have the copyright, because
they forked it. Instead search for the notice that the file is autogenerated.
|
|
Git on Windows provides bash
|
|
With non-GNU tar, passing the --sort option may print out an
error message saying the option isn't supported; that's
confusing and not useful to the consumer.
|