From b28279f8b9b4aee72edcd2cba11045343fe4013a Mon Sep 17 00:00:00 2001
From: Slávek Banko <slavek.banko@axis.cz>
Date: Sun, 14 Sep 2025 16:50:38 +0200
Subject: DEB tde-cdbs: Add basic CMake build rules from cmake.mk to tde.mk.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Added automatic selection of build system based on the presence
of CMakeLists.txt or Makefile.am.

Note: cmake.mk is removed in cdbs >= 0.4.177

Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
---
 debian/_base/metapackages/tde-cdbs/tde.mk | 84 +++++++++++++++++++++++++------
 1 file changed, 68 insertions(+), 16 deletions(-)

diff --git a/debian/_base/metapackages/tde-cdbs/tde.mk b/debian/_base/metapackages/tde-cdbs/tde.mk
index 01b23943e..fa1a66768 100644
--- a/debian/_base/metapackages/tde-cdbs/tde.mk
+++ b/debian/_base/metapackages/tde-cdbs/tde.mk
@@ -27,13 +27,20 @@ endif
 ifndef _cdbs_class_tde
 _cdbs_class_tde := 1
 
+# automatically select build system
+ifneq "$(wildcard CMakeLists.txt)" ""
+  _tde_build_cmake := 1
+else ifneq "$(wildcard Makefile.am)" ""
+  _tde_build_automake := 1
+endif
+
 # for dh_icons
 CDBS_BUILD_DEPENDS   := $(CDBS_BUILD_DEPENDS), debhelper (>= 5.0.7ubuntu4)
 
 # Note: This _must_ be included before autotools.mk, or it won't work.
 common-configure-arch common-configure-indep:: debian/stamp-cvs-make
 debian/stamp-cvs-make:
-ifndef _cdbs_class_cmake
+ifdef _tde_build_automake
 	cp -Rp /usr/share/aclocal/libtool.m4 admin/libtool.m4.in
 ifneq "$(wildcard /usr/share/libtool/config/ltmain.sh)" ""
 	cp -Rp /usr/share/libtool/config/ltmain.sh admin/ltmain.sh
@@ -59,17 +66,46 @@ else
 DEB_BUILDDIR = obj-$(DEB_BUILD_GNU_TYPE)
 endif
 
-ifndef _cdbs_class_cmake
-include $(_cdbs_class_path)/autotools.mk$(_cdbs_makefile_suffix)
-endif
-
-ifdef _cdbs_class_cmake
-ifneq "$(wildcard /usr/bin/ninja)" ""
-MAKE = ninja -v
-DEB_MAKE_ENVVARS += DESTDIR=$(DEB_DESTDIR)
-DEB_MAKE_INSTALL_TARGET = install
-DEB_CMAKE_NORMAL_ARGS += -GNinja
-endif
+ifdef _tde_build_cmake
+  -include $(_cdbs_class_path)/cmake.mk$(_cdbs_makefile_suffix)
+  ifndef _cdbs_class_cmake
+    include $(_cdbs_class_path)/makefile.mk$(_cdbs_makefile_suffix)
+    DEB_MAKE_EXTRA_ARGS = $(DEB_MAKE_PARALLEL)
+    DEB_MAKE_INSTALL_TARGET ?= install DESTDIR=$(DEB_DESTDIR)
+    CMAKE ?= cmake
+    DEB_CMAKE_INSTALL_PREFIX ?= /usr
+    DEB_CMAKE_CFLAGS ?= $(CFLAGS) $(CPPFLAGS)
+    DEB_CMAKE_CXXFLAGS ?= $(CXXFLAGS) $(CPPFLAGS)
+    DEB_CMAKE_LDFLAGS ?= $(LDFLAGS)
+    DEB_CMAKE_NORMAL_ARGS ?= \
+        -DCMAKE_INSTALL_PREFIX="$(DEB_CMAKE_INSTALL_PREFIX)" \
+        -DCMAKE_C_COMPILER:FILEPATH="$(CC)" \
+        -DCMAKE_CXX_COMPILER:FILEPATH="$(CXX)" \
+        -DCMAKE_C_FLAGS="$(DEB_CMAKE_CFLAGS)" \
+        -DCMAKE_CXX_FLAGS="$(DEB_CMAKE_CXXFLAGS)" \
+        -DCMAKE_SKIP_RPATH=ON \
+        -DCMAKE_VERBOSE_MAKEFILE=ON \
+        -DCMAKE_EXE_LINKER_FLAGS="$(DEB_CMAKE_LDFLAGS)" \
+        -DCMAKE_MODULE_LINKER_FLAGS="$(DEB_CMAKE_LDFLAGS)" \
+        -DCMAKE_SHARED_LINKER_FLAGS="$(DEB_CMAKE_LDFLAGS)"
+    _cdbs_cmake_system_name_linux = Linux
+    _cdbs_cmake_system_name_kfreebsd = FreeBSD
+    _cdbs_cmake_system_name_hurd = GNU
+    DEB_CMAKE_CROSS_ARGS ?= \
+        $(patsubst %,-DCMAKE_SYSTEM_NAME=%,\
+            $(_cdbs_cmake_system_name_$(DEB_HOST_ARCH_OS))) \
+        -DCMAKE_SYSTEM_PROCESSOR=$(DEB_HOST_GNU_CPU) \
+        -DCMAKE_INSTALL_LIBDIR=lib/$(DEB_HOST_MULTIARCH) \
+        -DPKG_CONFIG_EXECUTABLE=/usr/bin/$(DEB_HOST_GNU_TYPE)-pkg-config
+  endif
+  ifneq "$(wildcard /usr/bin/ninja)" ""
+    MAKE = ninja -v
+    DEB_MAKE_ENVVARS += DESTDIR=$(DEB_DESTDIR)
+    DEB_MAKE_INSTALL_TARGET = install
+    DEB_CMAKE_NORMAL_ARGS += -GNinja
+  endif
+else ifdef _tde_build_automake
+  include $(_cdbs_class_path)/autotools.mk$(_cdbs_makefile_suffix)
 endif
 
 ifndef _cdbs_rules_patchsys_quilt
@@ -90,6 +126,8 @@ DEB_AC_AUX_DIR = $(DEB_SRCDIR)/admin
 DEB_CONFIGURE_INCLUDEDIR = "\$${prefix}/include"
 DEB_COMPRESS_EXCLUDE_ALL += .dcl .docbook -license .tag .sty .el
 
+DEB_BUILD_PARALLEL ?= true
+
 # The default gzip compressor has been changed in dpkg >= 1.17.0.
 deb_default_compress = $(shell LANG=C dpkg-deb --version | head -n1 | \
                          sed -e "s|.*version ||" -e "s| .*||" | \
@@ -100,6 +138,7 @@ DEB_DH_BUILDDEB_ARGS += -- -Z$(shell dpkg-deb --help | grep -q ":.* xz[,.]" \
                                && echo xz || echo bzip2)
 endif
 
+ifdef _tde_build_automake
 ifeq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
     cdbs_treat_me_gently_arches := arm m68k alpha ppc64 armel armeb
     ifeq (,$(filter $(DEB_HOST_ARCH_CPU),$(cdbs_treat_me_gently_arches)))
@@ -120,20 +159,19 @@ ifneq (,$(filter debug,$(DEB_BUILD_OPTIONS)))
 	cdbs_kde_enable_debug = --enable-debug=full
 endif
 
-DEB_BUILD_PARALLEL ?= true
-
 cdbs_configure_flags += \
     --with-qt-dir=/usr/share/qt3 \
     --disable-rpath \
     --with-xinerama \
     $(cdbs_kde_enable_final) \
     $(cdbs_kde_enable_debug)
+endif
 
 
 # This is a convenience target for calling manually.
 # It's not part of the build process.
 buildprep: clean apply-patches
-ifndef _cdbs_class_cmake
+ifdef _tde_build_automake
 	$(MAKE) -f admin/Makefile.common dist
 endif
 	debian/rules clean
@@ -146,6 +184,20 @@ endif
 
 post-patches:: .tdepkginfo
 
+ifdef _tde_build_cmake
+ifndef _cdbs_class_cmake
+common-configure-arch common-configure-indep:: common-configure-impl
+common-configure-impl:: $(DEB_BUILDDIR)/CMakeCache.txt
+$(DEB_BUILDDIR)/CMakeCache.txt:
+	$(strip cd $(DEB_BUILDDIR) && \
+	$(CMAKE) $(CURDIR)/$(DEB_SRCDIR) \
+		$(DEB_CMAKE_NORMAL_ARGS) \
+		$(if $(cdbs_crossbuild),\
+			$(DEB_CMAKE_CROSS_ARGS)) \
+		$(DEB_CMAKE_EXTRA_FLAGS))
+endif
+endif
+
 common-build-arch:: debian/stamp-man-pages
 debian/stamp-man-pages:
 	if ! test -d debian/man/out; then mkdir -p debian/man/out; fi
@@ -242,7 +294,7 @@ cleanbuilddir::
 	-$(if $(call cdbs_streq,$(DEB_BUILDDIR),$(DEB_SRCDIR)),,rm -rf $(DEB_BUILDDIR))
 
 clean::
-ifndef _cdbs_class_cmake
+ifdef _tde_build_automake
 	if test -n "$(DEB_KDE_CVS_MAKE)" && test -d $(DEB_SRCDIR); then \
 		cd $(DEB_SRCDIR); \
 		find . -name Makefile.in -print | \
-- 
cgit v1.2.3

