Skip to content

Commit

Permalink
Add support for CMake 3.31
Browse files Browse the repository at this point in the history
  • Loading branch information
BlankSpruce committed Oct 14, 2024
1 parent afae686 commit a84973c
Show file tree
Hide file tree
Showing 9 changed files with 77 additions and 5 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
# Changelog
## [0.16.1] 2024-10-14
### Added
- support for new keywords in native commands available in CMake 3.31

### Fixed
- incorrect keywords in `bison_target` and `flex_target` (#37)

## [0.16.0] 2024-10-11
### Changed
- removed dependency to `dataclasses` package (#36)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ You can use gersemi with a pre-commit hook by adding the following to `.pre-comm
```yaml
repos:
- repo: https://github.com/BlankSpruce/gersemi
rev: 0.15.1
rev: 0.16.1
hooks:
- id: gersemi
```
Expand Down
2 changes: 1 addition & 1 deletion gersemi/__version__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@
__license__ = "MPL 2.0"
__title__ = "gersemi"
__url__ = "https://github.com/BlankSpruce/gersemi"
__version__ = "0.16.0"
__version__ = "0.16.1"
1 change: 1 addition & 0 deletions gersemi/builtin_commands
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ cmake_language
cmake_minimum_required
cmake_parse_arguments
cmake_path
cmake_pkg_config
cmake_policy
configure_file
continue
Expand Down
12 changes: 9 additions & 3 deletions gersemi/command_invocation_dumpers/module_command_dumpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -532,10 +532,13 @@ class GenerateAppleArchitectureSelectionFile(ArgumentAwareCommandInvocationDumpe
one_value_keywords = [
"INSTALL_DESTINATION",
"INSTALL_PREFIX",
"UNIVERSAL_INCLUDE_FILE",
"ERROR_VARIABLE",
]
multi_value_keywords = [
"SINGLE_ARCHITECTURES",
"SINGLE_ARCHITECTURE_INCLUDE_FILES",
"UNIVERSAL_ARCHITECTURES",
"UNIVERSAL_INCLUDE_FILE",
]


Expand All @@ -547,12 +550,14 @@ class GenerateApplePlatformSelectionFile(ArgumentAwareCommandInvocationDumper):
"MACOS_INCLUDE_FILE",
"IOS_INCLUDE_FILE",
"IOS_SIMULATOR_INCLUDE_FILE",
"IOS_CATALYST_INCLUDE_FILE",
"TVOS_INCLUDE_FILE",
"TVOS_SIMULATOR_INCLUDE_FILE",
"WATCHOS_INCLUDE_FILE",
"WATCHOS_SIMULATOR_INCLUDE_FILE",
"VISIONOS_INCLUDE_FILE",
"VISIONOS_SIMULATOR_INCLUDE_FILE",
"ERROR_VARIABLE",
]


Expand Down Expand Up @@ -595,16 +600,17 @@ class GTestDiscoverTests(
"WORKING_DIRECTORY",
"TEST_PREFIX",
"TEST_SUFFIX",
"TEST_FILTER",
"TEST_LIST",
"DISCOVERY_TIMEOUT",
"XML_OUTPUT_DIR",
"DISCOVERY_MODE",
"TEST_FILTER",
]
multi_value_keywords = ["EXTRA_ARGS", "PROPERTIES"]
multi_value_keywords = ["EXTRA_ARGS", "PROPERTIES", "DISCOVERY_EXTRA_ARGS"]
keyword_formatters = {
"EXTRA_ARGS": "_format_command_line",
"PROPERTIES": "_format_keyword_with_pairs",
"DISCOVERY_EXTRA_ARGS": "_format_command_line",
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class AddCustomCommand(CommandLineFormatter, MultipleSignatureCommandInvocationD
"USES_TERMINAL",
"COMMAND_EXPAND_LISTS",
"DEPENDS_EXPLICIT_ONLY",
"CODEGEN",
],
one_value_keywords=[
"MAIN_DEPENDENCY",
Expand Down
22 changes: 22 additions & 0 deletions gersemi/command_invocation_dumpers/scripting_command_dumpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,26 @@ class CMakePath(TwoWordKeywordIsolator, MultipleSignatureCommandInvocationDumper
}


class CMakePkgConfig(ArgumentAwareCommandInvocationDumper):
options = ["REQUIRED", "EXACT", "QUIET"]
one_value_keywords = [
"STRICTNESS",
"ENV_MODE",
"DISABLE_UNINSTALLED",
"PC_SYSROOT_DIR",
"TOP_BUILD_DIR",
"ALLOW_SYSTEM_INCLUDES",
"ALLOW_SYSTEM_LIBS",
]
multi_value_keywords = [
"EXTRACT",
"PC_LIBDIR",
"PC_PATH",
"SYSTEM_INCLUDE_DIRS",
"SYSTEM_LIBRARY_DIRS",
]


class CMakePolicy(MultipleSignatureCommandInvocationDumper):
customized_signatures = {
"VERSION": dict(front_positional_arguments=["<min>...<max>"]),
Expand Down Expand Up @@ -490,6 +510,7 @@ class File(TwoWordKeywordIsolator, MultipleSignatureCommandInvocationDumper):
"COMPRESSION",
"COMPRESSION_LEVEL",
"MTIME",
"WORKING_DIRECTORY",
],
multi_value_keywords=["PATHS"],
),
Expand Down Expand Up @@ -964,6 +985,7 @@ class Unset(ArgumentAwareCommandInvocationDumper):
"cmake_minimum_required": CMakeMinimumRequired,
"cmake_parse_arguments": CMakeParseArguments,
"cmake_path": CMakePath,
"cmake_pkg_config": CMakePkgConfig,
"cmake_policy": CMakePolicy,
"configure_file": ConfigureFile,
"elseif": ConditionSyntaxCommandInvocationDumper,
Expand Down
5 changes: 5 additions & 0 deletions tests/formatter/cmake_pkg_config.in.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
cmake_pkg_config(EXTRACT foo REQUIRED ENV_MODE PKGCONF PC_PATH /foo/bar /foo/baz /bar /baz)

cmake_pkg_config(EXTRACT foo REQUIRED ENV_MODE PKGCONF PC_PATH /foo/bar /foo/baz /bar /baz /foo__________________________________________________)

cmake_pkg_config(EXTRACT foo 1.2.3 REQUIRED ENV_MODE PKGCONF PC_PATH /foo/bar /foo/baz /bar /baz /foo__________________________________________________)
30 changes: 30 additions & 0 deletions tests/formatter/cmake_pkg_config.out.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
cmake_pkg_config(
EXTRACT foo
REQUIRED
ENV_MODE PKGCONF
PC_PATH /foo/bar /foo/baz /bar /baz
)

cmake_pkg_config(
EXTRACT foo
REQUIRED
ENV_MODE PKGCONF
PC_PATH
/foo/bar
/foo/baz
/bar
/baz
/foo__________________________________________________
)

cmake_pkg_config(
EXTRACT foo 1.2.3
REQUIRED
ENV_MODE PKGCONF
PC_PATH
/foo/bar
/foo/baz
/bar
/baz
/foo__________________________________________________
)

0 comments on commit a84973c

Please sign in to comment.