diff mbox series

[1/2] package/webkitgtk: Build with ninja

Message ID 20230209170707.4066903-1-peter@korsgaard.com
State Accepted
Headers show
Series [1/2] package/webkitgtk: Build with ninja | expand

Commit Message

Peter Korsgaard Feb. 9, 2023, 5:07 p.m. UTC
Webkitgtk needs cmake >= 3.20 when building with the make backend since
webkitgtk 3.8.0.

Cmake 3.20 is above our minimal version in
support/dependencies/check-host-cmake.mk, so this breaks builds on hosts
with cmake >= 3.18 < 3.20 - So use the ninja backend instead.

https://github.com/WebKit/WebKit/commit/6cd89696b5d406c1a3d9a7a9bbb18fda9284fa1f

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
---
 package/webkitgtk/webkitgtk.mk | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

Comments

John Keeping Feb. 10, 2023, 11:17 a.m. UTC | #1
Hi Peter,

On Thu, Feb 09, 2023 at 06:07:05PM +0100, Peter Korsgaard wrote:
> +define WEBKITGTK_BUILD_CMDS
> +	$(TARGET_MAKE_ENV) $(BR2_CMAKE) --build $(WEBKITGTK_BUILDDIR)
> +endef
> +
> +define WEBKITGTK_INSTALL_STAGING_CMDS
> +	$(TARGET_MAKE_ENV) DESTDIR=$(STAGING_DIR) $(BR2_CMAKE) --install $(WEBKITGTK_BUILDDIR)
> +endef
> +
> +define WEBKITGTK_INSTALL_TARGET_CMDS
> +	$(TARGET_MAKE_ENV) DESTDIR=$(TARGET_DIR) $(BR2_CMAKE) --install $(WEBKITGTK_BUILDDIR)
> +endef
> +

Would it make sense to apply these changes in pkg-cmake.mk?

Using `cmake --build` and `cmake --install` works with all generators
and it would avoid needing to repeat this block for both of the packages
in this series.


Regards,
John
Peter Korsgaard Feb. 10, 2023, 11:45 a.m. UTC | #2
>>>>> "John" == John Keeping <john@metanate.com> writes:

 > Hi Peter,
 > On Thu, Feb 09, 2023 at 06:07:05PM +0100, Peter Korsgaard wrote:
 >> +define WEBKITGTK_BUILD_CMDS
 >> +	$(TARGET_MAKE_ENV) $(BR2_CMAKE) --build $(WEBKITGTK_BUILDDIR)
 >> +endef
 >> +
 >> +define WEBKITGTK_INSTALL_STAGING_CMDS
 >> +	$(TARGET_MAKE_ENV) DESTDIR=$(STAGING_DIR) $(BR2_CMAKE) --install $(WEBKITGTK_BUILDDIR)
 >> +endef
 >> +
 >> +define WEBKITGTK_INSTALL_TARGET_CMDS
 >> +	$(TARGET_MAKE_ENV) DESTDIR=$(TARGET_DIR) $(BR2_CMAKE) --install $(WEBKITGTK_BUILDDIR)
 >> +endef
 >> +

 > Would it make sense to apply these changes in pkg-cmake.mk?

 > Using `cmake --build` and `cmake --install` works with all generators
 > and it would avoid needing to repeat this block for both of the packages
 > in this series.

Longer term that is indeed the direction we want to move to (and
generally build cmake packages with the ninja backend).

This is meant as a minimal patch that is easy to backport to the stable
branches.

We have a number of cmake packages that use custom FOO_MAKE_OPTS, how
are those passed to make when using cmake --build / --install?
Peter Korsgaard Feb. 10, 2023, 3:27 p.m. UTC | #3
>>>>> "Peter" == Peter Korsgaard <peter@korsgaard.com> writes:

 > Webkitgtk needs cmake >= 3.20 when building with the make backend since
 > webkitgtk 3.8.0.

 > Cmake 3.20 is above our minimal version in
 > support/dependencies/check-host-cmake.mk, so this breaks builds on hosts
 > with cmake >= 3.18 < 3.20 - So use the ninja backend instead.

 > https://github.com/WebKit/WebKit/commit/6cd89696b5d406c1a3d9a7a9bbb18fda9284fa1f

 > Signed-off-by: Peter Korsgaard <peter@korsgaard.com>

Committed, thanks.
John Keeping Feb. 10, 2023, 6:46 p.m. UTC | #4
On Fri, Feb 10, 2023 at 12:45:24PM +0100, Peter Korsgaard wrote:
> >>>>> "John" == John Keeping <john@metanate.com> writes:
> 
>  > Hi Peter,
>  > On Thu, Feb 09, 2023 at 06:07:05PM +0100, Peter Korsgaard wrote:
>  >> +define WEBKITGTK_BUILD_CMDS
>  >> +	$(TARGET_MAKE_ENV) $(BR2_CMAKE) --build $(WEBKITGTK_BUILDDIR)
>  >> +endef
>  >> +
>  >> +define WEBKITGTK_INSTALL_STAGING_CMDS
>  >> +	$(TARGET_MAKE_ENV) DESTDIR=$(STAGING_DIR) $(BR2_CMAKE) --install $(WEBKITGTK_BUILDDIR)
>  >> +endef
>  >> +
>  >> +define WEBKITGTK_INSTALL_TARGET_CMDS
>  >> +	$(TARGET_MAKE_ENV) DESTDIR=$(TARGET_DIR) $(BR2_CMAKE) --install $(WEBKITGTK_BUILDDIR)
>  >> +endef
>  >> +
> 
>  > Would it make sense to apply these changes in pkg-cmake.mk?
> 
>  > Using `cmake --build` and `cmake --install` works with all generators
>  > and it would avoid needing to repeat this block for both of the packages
>  > in this series.
> 
> Longer term that is indeed the direction we want to move to (and
> generally build cmake packages with the ninja backend).
> 
> This is meant as a minimal patch that is easy to backport to the stable
> branches.

Makes sense.

> We have a number of cmake packages that use custom FOO_MAKE_OPTS, how
> are those passed to make when using cmake --build / --install?

For building, we have:

	cmake --build <dir> [<options>] [-- <build-tool-options>]

so it should be easy to pass _MAKE_OPTS through.

But I can't see anything similar for --install, although I wonder if
anything actually needs to pass _MAKE_OPTS for installation.

From a quick look only 3 CMake packages use _MAKE_OPTS at all:

	$ git grep -l cmake-package package/ | grep -vF pkg-cmake.mk | xargs grep MAKE_OPTS
	package/gdal/gdal.mk:GDAL_MAKE_OPTS += -f Makefile
	package/mariadb/mariadb.mk:HOST_MARIADB_MAKE_OPTS = import_executables
	package/zeek/zeek.mk:HOST_ZEEK_MAKE_OPTS = binpac bifcl

Of those, gdal's use is probably unnecessary when using `cmake --build`
and the other two could us a more specific option to set targets and use
the --targets option (but should also be okay with passing options after
`--`).


Regards,
John
Peter Korsgaard Feb. 28, 2023, 8:10 p.m. UTC | #5
>>>>> "Peter" == Peter Korsgaard <peter@korsgaard.com> writes:

 > Webkitgtk needs cmake >= 3.20 when building with the make backend since
 > webkitgtk 3.8.0.

 > Cmake 3.20 is above our minimal version in
 > support/dependencies/check-host-cmake.mk, so this breaks builds on hosts
 > with cmake >= 3.18 < 3.20 - So use the ninja backend instead.

 > https://github.com/WebKit/WebKit/commit/6cd89696b5d406c1a3d9a7a9bbb18fda9284fa1f

 > Signed-off-by: Peter Korsgaard <peter@korsgaard.com>

Committed to 2022.11.x and 2022.02.x, thanks.
diff mbox series

Patch

diff --git a/package/webkitgtk/webkitgtk.mk b/package/webkitgtk/webkitgtk.mk
index b42ac3b644..a6974db926 100644
--- a/package/webkitgtk/webkitgtk.mk
+++ b/package/webkitgtk/webkitgtk.mk
@@ -139,4 +139,23 @@  ifeq ($(BR2_ARM_CPU_ARMV5)$(BR2_ARM_CPU_ARMV6)$(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS
 WEBKITGTK_CONF_OPTS += -DENABLE_JIT=OFF -DENABLE_C_LOOP=ON -DENABLE_SAMPLING_PROFILER=OFF
 endif
 
+# webkitgtk needs cmake >= 3.20 when not building with ninja, which is
+# above our minimal version in
+# support/dependencies/check-host-cmake.mk, so use the ninja backend:
+# https://github.com/WebKit/WebKit/commit/6cd89696b5d406c1a3d9a7a9bbb18fda9284fa1f
+WEBKITGTK_CONF_OPTS += -GNinja
+WEBKITGTK_DEPENDENCIES += host-ninja
+
+define WEBKITGTK_BUILD_CMDS
+	$(TARGET_MAKE_ENV) $(BR2_CMAKE) --build $(WEBKITGTK_BUILDDIR)
+endef
+
+define WEBKITGTK_INSTALL_STAGING_CMDS
+	$(TARGET_MAKE_ENV) DESTDIR=$(STAGING_DIR) $(BR2_CMAKE) --install $(WEBKITGTK_BUILDDIR)
+endef
+
+define WEBKITGTK_INSTALL_TARGET_CMDS
+	$(TARGET_MAKE_ENV) DESTDIR=$(TARGET_DIR) $(BR2_CMAKE) --install $(WEBKITGTK_BUILDDIR)
+endef
+
 $(eval $(cmake-package))