Setting {ALL,INSTALL,FAKE,TEST}_TARGET in cmake ports has no effect
unless you handroll do-* targets.

In general, the default "all", "install" and "test"/"check" targets make
no sense with CMake, since the default target to build is derived during
configure.

Make devel/cmake default to empty *_TARGET to reflect that.
This way it can distinguish between default bsd.port.mk(5) and explicit
values in ports Makefiles.

Make devel/cmake pass explicitly set targets.
Handle ALL_TARGET and INSTALL_TARGET for build and install, only.
Tests are built and run with ctest(1) which works differently.

According to
  $ grep -Fw -r -e MODCMAKE_BUILD_TARGET -e MODCMAKE_INSTALL_TARGET
  ./devel/range-v3/Makefile:      ${MODCMAKE_BUILD_TARGET}
  ./net/libtorrent-rasterbar/Makefile:    @${MODCMAKE_BUILD_TARGET} -t 
${ALL_TARGET}
  ./net/libtorrent-rasterbar/Makefile:    @${MODCMAKE_BUILD_TARGET}
  ./security/keepassxc/Makefile:  @${MODCMAKE_BUILD_TARGET} -t ${ALL_TARGET}
  ./security/keepassxc/Makefile:  @${MODCMAKE_BUILD_TARGET}
  ./shells/fish/Makefile: ${MODCMAKE_BUILD_TARGET} -t ${TEST_TARGET}

only libtorrent-rasterbar and keepassxc are effected, where we can now
drop the handrolled do-build target.

range-v3 and fish manually build tests in their *-test targets and do
not fiddle with ALL_TARGET or INSTALL_TARGET, so no behaviour change.

It looks like this is pretty contained, but I might've missed something.
Should this go through a bulk?

Feedback? Objection? OK?


Index: devel/cmake/cmake.port.mk
===================================================================
RCS file: /cvs/ports/devel/cmake/cmake.port.mk,v
retrieving revision 1.79
diff -u -p -r1.79 cmake.port.mk
--- devel/cmake/cmake.port.mk   29 Oct 2022 04:11:21 -0000      1.79
+++ devel/cmake/cmake.port.mk   22 Jan 2023 15:27:14 -0000
@@ -33,6 +33,22 @@ MODCMAKE_INSTALL_TARGET = cd ${WRKBUILD}
 MODCMAKE_TEST_TARGET = cd ${WRKBUILD} && exec ${SETENV} ${ALL_TEST_ENV} \
        ctest ${_MAKE_VERBOSE} -j ${MAKE_JOBS}
 
+# Default targets are only known after configure, see cmake-buildsystem(7) and
+# cmake-properties(7) BUILDSYSTEM_TARGETS.
+# Overrule bsd.port.mk defaults.
+ALL_TARGET ?=          # empty
+INSTALL_TARGET ?=      # empty
+
+# Only pass explicitly set targets.
+# Do not quote, cmake(1) -t takes multiple target arguments.
+.if !empty(ALL_TARGET)
+MODCMAKE_BUILD_TARGET +=       -t ${ALL_TARGET}
+.endif
+
+.if !empty(INSTALL_TARGET)
+MODCMAKE_INSTALL_TARGET +=     -t ${INSTALL_TARGET}
+.endif
+
 .if !target(do-build)
 do-build:
        @${MODCMAKE_BUILD_TARGET}
Index: security/keepassxc/Makefile
===================================================================
RCS file: /cvs/ports/security/keepassxc/Makefile,v
retrieving revision 1.50
diff -u -p -r1.50 Makefile
--- security/keepassxc/Makefile 15 Jan 2023 11:39:19 -0000      1.50
+++ security/keepassxc/Makefile 22 Jan 2023 15:09:36 -0000
@@ -93,9 +93,6 @@ post-patch:
                browser/BrowserSettingsWidget.cpp \
                browser/NativeMessageInstaller.cpp
 
-do-build:
-       @${MODCMAKE_BUILD_TARGET} -t ${ALL_TARGET}
-
 # build whatever is left (ca. 200 GUI test files)
 pre-test:
        @${MODCMAKE_BUILD_TARGET}
Index: net/libtorrent-rasterbar/Makefile
===================================================================
RCS file: /cvs/ports/net/libtorrent-rasterbar/Makefile,v
retrieving revision 1.30
diff -u -p -r1.30 Makefile
--- net/libtorrent-rasterbar/Makefile   21 Jan 2023 09:45:24 -0000      1.30
+++ net/libtorrent-rasterbar/Makefile   22 Jan 2023 15:09:02 -0000
@@ -39,9 +39,6 @@ CONFIGURE_ARGS +=     -DCMAKE_CXX_STANDARD=1
 ALL_TARGET =           torrent-rasterbar \
                        python-libtorrent
 
-do-build:
-       @${MODCMAKE_BUILD_TARGET} -t ${ALL_TARGET}
-
 # build whatever is left (+200 test files)
 pre-test:
        @${MODCMAKE_BUILD_TARGET}

Reply via email to