[openwrt/openwrt] tools/cmake: Build without some included libs

LEDE Commits lede-commits at lists.infradead.org
Mon Nov 20 15:39:37 PST 2023


hauke pushed a commit to openwrt/openwrt.git, branch openwrt-22.03:
https://git.openwrt.org/d8aa8ae8e98b53b059bf32a6877a5b01ec78a3e0

commit d8aa8ae8e98b53b059bf32a6877a5b01ec78a3e0
Author: Rosen Penev <rosenp at gmail.com>
AuthorDate: Sat Sep 24 16:57:40 2022 -0700

    tools/cmake: Build without some included libs
    
    Saves a little bit of time when compiling cmake.
    
    Added patches to fix searching liblzma and zlib. The issue is that
    because pkgconfig is not used, the system libraries get used.
    
    Signed-off-by: Rosen Penev <rosenp at gmail.com>
    (cherry picked from commit 3848cf458ef998fc9971edd6a01cc9cdb43fbef9)
---
 tools/Makefile                        |  6 +++---
 tools/cmake/Makefile                  |  6 ++++++
 tools/cmake/patches/110-liblzma.patch | 17 +++++++++++++++++
 tools/cmake/patches/140-zlib.patch    | 20 ++++++++++++++++++++
 4 files changed, 46 insertions(+), 3 deletions(-)

diff --git a/tools/Makefile b/tools/Makefile
index e1dfb8082d..20a8e3f71e 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -44,7 +44,7 @@ $(curdir)/b43-tools/compile := $(curdir)/bison/compile
 $(curdir)/bc/compile := $(curdir)/bison/compile $(curdir)/libtool/compile
 $(curdir)/bison/compile := $(curdir)/flex/compile
 $(curdir)/cbootimage/compile += $(curdir)/automake/compile
-$(curdir)/cmake/compile += $(curdir)/libressl/compile $(curdir)/ninja/compile
+$(curdir)/cmake/compile += $(curdir)/libressl/compile $(curdir)/ninja/compile $(curdir)/expat/compile $(curdir)/xz/compile $(curdir)/zlib/compile $(curdir)/zstd/compile
 $(curdir)/dosfstools/compile := $(curdir)/autoconf/compile $(curdir)/automake/compile
 $(curdir)/e2fsprogs/compile := $(curdir)/libtool/compile
 $(curdir)/fakeroot/compile := $(curdir)/libtool/compile
@@ -84,9 +84,9 @@ ifeq ($(HOST_OS),Darwin)
 endif
 
 ifneq ($(CONFIG_CCACHE)$(CONFIG_SDK),)
-$(foreach tool, $(filter-out zstd zlib xz pkgconf patch ninja meson libressl cmake,$(tools-y)), $(eval $(curdir)/$(tool)/compile += $(curdir)/ccache/compile))
+$(foreach tool, $(filter-out zstd zlib xz pkgconf patch ninja meson libressl expat cmake,$(tools-y)), $(eval $(curdir)/$(tool)/compile += $(curdir)/ccache/compile))
 tools-y += ccache
-$(curdir)/ccache/compile := $(curdir)/cmake/compile $(curdir)/zstd/compile
+$(curdir)/ccache/compile := $(curdir)/cmake/compile
 endif
 
 # in case there is no patch tool on the host we need to make patch tool a
diff --git a/tools/cmake/Makefile b/tools/cmake/Makefile
index 4391586b2d..d905ea5369 100644
--- a/tools/cmake/Makefile
+++ b/tools/cmake/Makefile
@@ -31,8 +31,14 @@ HOST_CONFIGURE_VARS += \
 HOST_CONFIGURE_ARGS := \
 	$(if $(MAKE_JOBSERVER),--parallel="$(MAKE_JOBSERVER)") \
 	--prefix="$(STAGING_DIR_HOST)" \
+	--system-expat \
+	--system-liblzma \
+	--system-zlib \
+	--system-zstd \
 	--generator=Ninja
 
+HOST_LDFLAGS += -Wl,-rpath,$(STAGING_DIR_HOST)/lib
+
 define Host/Compile/Default
 	+$(NINJA) -C $(HOST_BUILD_DIR) $(1)
 endef
diff --git a/tools/cmake/patches/110-liblzma.patch b/tools/cmake/patches/110-liblzma.patch
new file mode 100644
index 0000000000..e98dd5ade7
--- /dev/null
+++ b/tools/cmake/patches/110-liblzma.patch
@@ -0,0 +1,17 @@
+--- a/Modules/FindLibLZMA.cmake
++++ b/Modules/FindLibLZMA.cmake
+@@ -43,7 +43,13 @@ This module will set the following varia
+   version number as a string (ex: "5.0.3")
+ #]=======================================================================]
+ 
+-find_path(LIBLZMA_INCLUDE_DIR lzma.h )
++if(UNIX)
++  find_package(PkgConfig QUIET)
++  pkg_search_module(PC_liblzma liblzma)
++endif()
++
++find_path(LIBLZMA_INCLUDE_DIR lzma.h HINTS ${PC_liblzma_INCLUDEDIR} ${PC_liblzma_INCLUDE_DIRS})
++find_library(LIBLZMA_LIBRARY NAMES lzma HINTS ${PC_liblzma_LIBDIR} ${PC_liblzma_LIBRARY_DIRS})
+ if(NOT LIBLZMA_LIBRARY)
+   find_library(LIBLZMA_LIBRARY_RELEASE NAMES lzma liblzma NAMES_PER_DIR PATH_SUFFIXES lib)
+   find_library(LIBLZMA_LIBRARY_DEBUG NAMES lzmad liblzmad NAMES_PER_DIR PATH_SUFFIXES lib)
diff --git a/tools/cmake/patches/140-zlib.patch b/tools/cmake/patches/140-zlib.patch
new file mode 100644
index 0000000000..f79801c8a5
--- /dev/null
+++ b/tools/cmake/patches/140-zlib.patch
@@ -0,0 +1,20 @@
+--- a/Modules/FindZLIB.cmake
++++ b/Modules/FindZLIB.cmake
+@@ -85,10 +85,13 @@ else()
+   set(ZLIB_NAMES_DEBUG zd zlibd zdlld zlibd1 zlib1d zlibstaticd zlibwapid zlibvcd zlibstatd)
+ endif()
+ 
+-# Try each search configuration.
+-foreach(search ${_ZLIB_SEARCHES})
+-  find_path(ZLIB_INCLUDE_DIR NAMES zlib.h ${${search}} PATH_SUFFIXES include)
+-endforeach()
++if(UNIX)
++  find_package(PkgConfig QUIET)
++  pkg_search_module(PC_zlib zlib)
++endif()
++
++find_path(ZLIB_INCLUDE_DIR zlib.h HINTS ${PC_zlib_INCLUDEDIR} ${PC_zlib_INCLUDE_DIRS})
++find_library(ZLIB_LIBRARY NAMES z HINTS ${PC_zlib_LIBDIR} ${PC_zlib_LIBRARY_DIRS})
+ 
+ # Allow ZLIB_LIBRARY to be set manually, as the location of the zlib library
+ if(NOT ZLIB_LIBRARY)




More information about the lede-commits mailing list