Re: git: 4963e985a45d - main - Mk/cmake.mk: add support for indirect argument
Date: Mon, 08 Apr 2024 21:04:53 UTC
On Mon, Apr 8, 2024 at 5:27 PM Max Brazhnikov <makc@freebsd.org> wrote: > The branch main has been updated by makc: > > URL: > https://cgit.FreeBSD.org/ports/commit/?id=4963e985a45dca57a9dba4d3c39d8862ac9cc185 > > commit 4963e985a45dca57a9dba4d3c39d8862ac9cc185 > Author: Max Brazhnikov <makc@FreeBSD.org> > AuthorDate: 2024-04-08 09:15:42 +0000 > Commit: Max Brazhnikov <makc@FreeBSD.org> > CommitDate: 2024-04-08 09:15:42 +0000 > > Mk/cmake.mk: add support for indirect argument > > Add indirect to list of arguments for USES=cmake. cmake:indirect is > intended primarily > for ports, which use meson or pep517 for build, but rely on cmake > underneath. > Update documentation while here. > > Differential Revision: https://reviews.freebsd.org/D44509 > --- > CHANGES | 8 ++++++++ > Mk/Uses/cmake.mk | 54 > ++++++++++++++++++++++++++++++++++-------------------- > 2 files changed, 42 insertions(+), 20 deletions(-) > > diff --git a/CHANGES b/CHANGES > index b840bc11fdeb..ebfabbffd719 100644 > --- a/CHANGES > +++ b/CHANGES > @@ -10,6 +10,14 @@ in the release notes and/or placed into UPDATING. > > All ports committers are allowed to commit to this file. > > +20240408: > +AUTHOR: makc@FreeBSD.org > + > + USES=cmake now supports `indirect' argument. This argument adds cmake > binary > + to the BUILD_DEPENDS and and exposes CMAKE_ARGS and some other helpers, > but > + does not run cmake in the configure step. cmake:indirect is intended > + primarily for ports which use meson or pep517 for build. > + > 20240229: > AUTHOR: tijl@FreeBSD.org > > diff --git a/Mk/Uses/cmake.mk b/Mk/Uses/cmake.mk > index 8229fa9cbb55..e9a9dc64df58 100644 > --- a/Mk/Uses/cmake.mk > +++ b/Mk/Uses/cmake.mk > @@ -2,9 +2,12 @@ > # > # Feature: cmake > # Usage: USES=cmake or USES=cmake:ARGS > -# Valid ARGS: insource, run, noninja, testing > +# Valid ARGS: insource, indirect, noninja, run, testing > I guess the arguments are listed in alphabetical order. That means indirect is in front of insource. > # ARGS description: > # insource do not perform an out-of-source build > +# indirect do not run cmake for configure step, only add > build dependency. > +# This should be set only for ports which use other > build systems, > +# e.g. pep517 or meson, but rely internally on cmake. > # noninja don't use ninja instead of make > # Setting this should be an exception, and hints to > an issue > # inside the ports build system. > @@ -31,6 +34,7 @@ > # CMAKE_OFF Appends -D<var>:bool=OFF to the CMAKE_ARGS. > # CMAKE_ARGS - Arguments passed to cmake > # Default: see below > +# Variables for ports which use cmake for configure > # CMAKE_BUILD_TYPE - Type of build (cmake predefined build types). > # Projects may have their own build profiles. > # CMake supports the following types: Debug, > @@ -38,19 +42,28 @@ > # Debug and Release profiles respect system > # CFLAGS, RelWithDebInfo and MinSizeRel will set > # CFLAGS to "-O2 -g" and "-Os -DNDEBUG". > -# Default: Release, if WITH_DEBUG is not set, > -# Debug otherwise > +# Default: Release, if neither WITH_DEBUG nor > WITH_DEBUGINFO is set, > +# RelWithDebInfo, if WITH_DEBUGINFO is set, > +# Debug, if WITH_DEBUG is set. > # CMAKE_SOURCE_PATH - Path to the source directory > # Default: ${WRKSRC} > +# Variables for ports which use cmake for testing > +# CMAKE_TESTING_ARGS - Additional arguments passed to cmake on test > target. > +# CMAKE_TESTING_ON Appends -D<var>:bool=ON to the CMAKE_TESTING_ARGS. > +# Default: BUILD_TESTING > +# CMAKE_TESTING_OFF Appends -D<var>:bool=OFF to the CMAKE_TESTING_ARGS. > +# Default: empty > +# CMAKE_TESTING_TARGET - Name of the test target. Default: test > # > # MAINTAINER: kde@FreeBSD.org > > .if !defined(_INCLUDE_USES_CMAKE_MK) > _INCLUDE_USES_CMAKE_MK= yes > > -_valid_ARGS= insource run noninja testing _internal > +_valid_ARGS= insource indirect noninja run testing _internal > > _CMAKE_VERSION= 3.28.3 > +CMAKE_BIN= ${LOCALBASE}/bin/cmake > > # Sanity check > . for arg in ${cmake_ARGS} > @@ -59,12 +72,14 @@ IGNORE= Incorrect 'USES+= cmake:${cmake_ARGS}' > usage: argument [${arg}] is not r > . endif > . endfor > > -# Check whehter other flags than only '_internal' are passed (this should > be equivalent to PORT = devel/cmake-core > -. if ${cmake_ARGS} != _internal > -CMAKE_BIN= ${LOCALBASE}/bin/cmake > +. if !empty(cmake_ARGS:M_internal) > +# _internal is intended only for devel/cmake-core > +MASTER_SITES?= > https://github.com/Kitware/CMake/releases/download/v${DISTVERSION}/ \ > + https://www.cmake.org/files/v${DISTVERSION}/ > +. else > BUILD_DEPENDS+= ${CMAKE_BIN}:devel/cmake-core > > -. if ${cmake_ARGS:Mrun} > +. if !empty(cmake_ARGS:Mrun) > RUN_DEPENDS+= ${CMAKE_BIN}:devel/cmake-core > . endif > > @@ -76,12 +91,6 @@ CMAKE_BUILD_TYPE?= RelWithDebInfo > CMAKE_BUILD_TYPE?= Release > . endif #defined(WITH_DEBUG) > > -PLIST_SUB+= CMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE:tl}" > - > -. if defined(STRIP) && ${STRIP} != "" && !defined(WITH_DEBUG) && > !defined(WITH_DEBUGINFO) > -INSTALL_TARGET?= install/strip > -. endif > - > CMAKE_ARGS+= -DCMAKE_C_COMPILER:STRING="${CC}" \ > -DCMAKE_CXX_COMPILER:STRING="${CXX}" \ > -DCMAKE_C_FLAGS:STRING="${CFLAGS}" \ > @@ -116,6 +125,17 @@ CMAKE_NOCOLOR= yes > . if defined(CMAKE_NOCOLOR) > CMAKE_ARGS+= -DCMAKE_COLOR_MAKEFILE:BOOL=OFF > . endif > +. endif > + > +. if empty(cmake_ARGS:Mindirect) > +. if defined(STRIP) && ${STRIP} != "" && !defined(WITH_DEBUG) && > !defined(WITH_DEBUGINFO) > +INSTALL_TARGET?= install/strip > +. endif > +. endif > + > +# Use cmake for configure stage and for testing > +. if empty(cmake_ARGS:M_internal) && empty(cmake_ARGS:Mindirect) > +PLIST_SUB+= CMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE:tl}" > > _CMAKE_MSG= "===> Performing in-source build" > CMAKE_SOURCE_PATH?= ${WRKSRC} > @@ -176,10 +196,4 @@ do-test: > . endif > . endif > > -. if !empty(cmake_ARGS:M_internal) > -MASTER_SITES?= > https://github.com/Kitware/CMake/releases/download/v${DISTVERSION}/ \ > - https://www.cmake.org/files/v${DISTVERSION}/ > - > -. endif > - > .endif #!defined(_INCLUDE_USES_CMAKE_MK) >