diff --git a/build/cmake/modules/FindGTK4.cmake b/build/cmake/modules/FindGTK4.cmake new file mode 100644 index 0000000000..ea8f07e6c0 --- /dev/null +++ b/build/cmake/modules/FindGTK4.cmake @@ -0,0 +1,46 @@ +# - Try to find GTK+ 4 +# Once done, this will define +# +# GTK4_FOUND - system has GTK+ 4. +# GTK4_INCLUDE_DIRS - the GTK+ 4. include directories +# GTK4_LIBRARIES - link these to use GTK+ 4. +# +# Copyright (C) 2012 Raphael Kubo da Costa +# Copyright (C) 2013 Igalia S.L. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND ITS CONTRIBUTORS ``AS +# IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ITS +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +find_package(PkgConfig) +pkg_check_modules(GTK4 QUIET gtk4) +set(VERSION_OK TRUE) +if (GTK4_VERSION) +if (GTK4_FIND_VERSION_EXACT) +if (NOT("${GTK4_FIND_VERSION}" VERSION_EQUAL "${GTK4_VERSION}")) +set(VERSION_OK FALSE) +endif () +else () +if ("${GTK4_VERSION}" VERSION_LESS "${GTK4_FIND_VERSION}") +set(VERSION_OK FALSE) +endif () +endif () +endif () +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK4 DEFAULT_MSG GTK4_INCLUDE_DIRS GTK4_LIBRARIES VERSION_OK) diff --git a/build/cmake/setup.cmake b/build/cmake/setup.cmake index a102731af9..35ba62b64b 100644 --- a/build/cmake/setup.cmake +++ b/build/cmake/setup.cmake @@ -65,10 +65,16 @@ endif() if(WXGTK) # Add GTK version definitions - foreach(gtk_version 1.2.7 2.0 2.10 2.18 2.20 3.0) + foreach(gtk_version 1.2.7 2.0 2.10 2.18 2.20 3.0 3.90.0) if(wxTOOLKIT_VERSION VERSION_GREATER gtk_version) - string(REPLACE . "" gtk_version_dotless ${gtk_version}) - set(__WXGTK${gtk_version_dotless}__ ON) + if(gtk_version EQUAL 3.90.0) + set(__WXGTK4__ ON) + elseif(gtk_version EQUAL 3.0) + set(__WXGTK3__ ON) + else() + string(REPLACE . "" gtk_version_dotless ${gtk_version}) + set(__WXGTK${gtk_version_dotless}__ ON) + endif() endif() endforeach() endif() diff --git a/build/cmake/toolkit.cmake b/build/cmake/toolkit.cmake index 2117f7cace..6b59ea69e0 100644 --- a/build/cmake/toolkit.cmake +++ b/build/cmake/toolkit.cmake @@ -24,11 +24,11 @@ elseif(APPLE AND IPHONE) set(wxPLATFORM OSX) elseif(APPLE) set(wxDEFAULT_TOOLKIT osx_cocoa) - set(wxTOOLKIT_OPTIONS osx_cocoa gtk2 gtk3 qt) + set(wxTOOLKIT_OPTIONS osx_cocoa gtk2 gtk3 gtk4 qt) set(wxPLATFORM OSX) elseif(UNIX) set(wxDEFAULT_TOOLKIT gtk2) - set(wxTOOLKIT_OPTIONS gtk2 gtk3 motif qt) + set(wxTOOLKIT_OPTIONS gtk2 gtk3 gtk4 motif qt) set(wxPLATFORM UNIX) else() message(FATAL_ERROR "Unsupported platform") @@ -72,7 +72,9 @@ if(UNIX AND NOT APPLE AND NOT WIN32) endif() if(WXGTK) - if(WXGTK3) + if(WXGTK4) + set(gtk_lib GTK4) + elseif(WXGTK3) set(gtk_lib GTK3) elseif(WXGTK2) set(gtk_lib GTK2)