mirror of
https://github.com/openwrt/openwrt.git
synced 2026-10-19 02:45:55 +04:00
With ccache enabled, MKlib_gen.sh treats ccache as the compiler when probing its version. It therefore misses GCC's required -P workaround for line markers introduced while expanding macros. The generated lib_gen.c then fails to compile with GCC 14.4.0, reporting: "_Bool" after # is not a positive integer Pass -P explicitly to the make-time preprocessor used by the ncurses source generators. This fixes the apm821xx/nand and qoriq/generic external-toolchain CI failures without changing compiler detection or the source library API. Increment the package release. Build-tested complete static/shared ncurses, menu, form and panel libraries with ccache and the failing PowerPC GCC 14.4.0 toolchains. The same build also passes with MIPS32 GCC 16.2.0. The original make-time CPP command reproduces both PowerPC failures. Signed-off-by: Gleb Pesin <dormancygrace@gmail.com> Assisted-by: Codex (OpenAI GPT-6) Link: https://github.com/openwrt/openwrt/pull/25538 Signed-off-by: Robert Marko <robimarko@gmail.com>
207 lines
4.9 KiB
Makefile
207 lines
4.9 KiB
Makefile
#
|
|
# Copyright (C) 2006-2026 OpenWrt.org
|
|
#
|
|
# This is free software, licensed under the GNU General Public License v2.
|
|
# See /LICENSE for more information.
|
|
#
|
|
|
|
include $(TOPDIR)/rules.mk
|
|
|
|
PKG_NAME:=ncurses
|
|
PKG_CPE_ID:=cpe:/a:gnu:ncurses
|
|
PKG_VERSION_MAJOR:=6.6
|
|
PKG_SNAPSHOT_DATE:=20260801
|
|
PKG_VERSION:=$(PKG_VERSION_MAJOR)$(if $(PKG_SNAPSHOT_DATE),.$(PKG_SNAPSHOT_DATE),)
|
|
PKG_RELEASE:=2
|
|
|
|
PKG_SOURCE_PROTO:=git
|
|
PKG_SOURCE_URL:=https://github.com/ThomasDickey/ncurses-snapshots.git
|
|
PKG_SOURCE_VERSION:=v$(subst .,_,$(PKG_VERSION))
|
|
PKG_MIRROR_HASH:=a64061953353818a511e2ec7a284e10e89ac5ec62f3cdccc1ab549eb5f2d9c84
|
|
|
|
PKG_LICENSE:=MIT
|
|
PKG_LICENSE_FILES:=README
|
|
|
|
PKG_INSTALL:=1
|
|
PKG_BUILD_PARALLEL:=1
|
|
|
|
PKG_BUILD_DEPENDS:=ncurses/host
|
|
|
|
include $(INCLUDE_DIR)/package.mk
|
|
include $(INCLUDE_DIR)/host-build.mk
|
|
|
|
define Package/terminfo
|
|
SECTION:=libs
|
|
CATEGORY:=Libraries
|
|
TITLE:=Terminal Info Database (ncurses)
|
|
URL:=https://www.gnu.org/software/ncurses/
|
|
endef
|
|
|
|
define Package/libncurses
|
|
SECTION:=libs
|
|
CATEGORY:=Libraries
|
|
TITLE:=Terminal handling library (Unicode)
|
|
URL:=https://www.gnu.org/software/ncurses/
|
|
PROVIDES:=libncursesw
|
|
DEPENDS:= +terminfo
|
|
ABI_VERSION:=6
|
|
endef
|
|
|
|
define Package/libncurses-dev
|
|
SECTION:=devel
|
|
CATEGORY:=Development
|
|
SUBMENU:=Libraries
|
|
DEPENDS:=zlib
|
|
TITLE:=Development files for the ncurses library
|
|
endef
|
|
|
|
define Package/libncurses/config
|
|
source "$(SOURCE)/Config.in"
|
|
endef
|
|
|
|
TARGET_CFLAGS += $(FPIC) -std=gnu17
|
|
|
|
CONFIGURE_ARGS += \
|
|
--enable-echo \
|
|
--enable-const \
|
|
--enable-overwrite \
|
|
--enable-pc-files \
|
|
--disable-rpath \
|
|
--without-ada \
|
|
--without-debug \
|
|
--without-manpages \
|
|
--without-profile \
|
|
--without-progs \
|
|
--without-tests \
|
|
--disable-big-core \
|
|
--disable-home-terminfo \
|
|
--with-normal \
|
|
--with-shared \
|
|
--with-terminfo-dirs=/usr/share/terminfo \
|
|
--with-default-terminfo-dir=/usr/share/terminfo \
|
|
--with-pkg-config-libdir=/usr/lib/pkgconfig \
|
|
--enable-widec \
|
|
--with-build-cppflags=-D_GNU_SOURCE
|
|
|
|
CONFIGURE_VARS += \
|
|
cf_try_fPIC=no
|
|
|
|
HOST_CFLAGS += $(HOST_FPIC)
|
|
|
|
HOST_CONFIGURE_ARGS += \
|
|
--enable-pc-files \
|
|
--without-cxx \
|
|
--without-cxx-binding \
|
|
--without-ada \
|
|
--without-debug \
|
|
--without-manpages \
|
|
--without-profile \
|
|
--without-tests \
|
|
--without-curses-h \
|
|
--disable-db-install
|
|
|
|
|
|
ifeq ($(HOST_OS),FreeBSD)
|
|
CONFIGURE_ARGS +=
|
|
--with-terminfo=/usr/share/terminfo.db
|
|
endif
|
|
|
|
MAKE_FLAGS += \
|
|
CPP="$(TARGET_CC) -E -P" \
|
|
BUILD_CC="$(HOSTCC)" \
|
|
HOSTCC="$(HOSTCC)" \
|
|
HOSTCCFLAGS="" \
|
|
PKG_CONFIG_LIBDIR=/usr/lib/pkgconfig \
|
|
libs
|
|
|
|
define Build/Install/Default
|
|
$(MAKE_VARS) \
|
|
$(MAKE) -C $(PKG_BUILD_DIR)/$(MAKE_PATH) \
|
|
$(MAKE_INSTALL_FLAGS) \
|
|
$(1) install.libs install.data;
|
|
endef
|
|
|
|
define Package/terminfo/install
|
|
echo ""
|
|
ifneq ($(HOST_OS),FreeBSD)
|
|
$(INSTALL_DIR) $(1)/usr/share/terminfo
|
|
(cd $(PKG_INSTALL_DIR)/usr/share/terminfo; \
|
|
for dir in ??; do \
|
|
[ -d "$$$$dir" ] || continue; \
|
|
mv $$$$dir $$$$(echo -ne "\x$$$$dir"); \
|
|
done \
|
|
)
|
|
for file in \
|
|
a/ansi \
|
|
a/alacritty \
|
|
d/dumb \
|
|
f/foot \
|
|
l/linux \
|
|
r/rxvt \
|
|
r/rxvt-unicode \
|
|
s/screen \
|
|
s/screen-256color \
|
|
t/tmux \
|
|
t/tmux-256color \
|
|
v/vt100 \
|
|
v/vt102 \
|
|
x/xterm \
|
|
x/xterm-color \
|
|
x/xterm-256color \
|
|
$(call qstrip,$(CONFIG_LIBNCURSES_TERMINFO)); do \
|
|
$(INSTALL_DIR) $(1)/usr/share/terminfo/`dirname $$$$file`; \
|
|
$(CP) $(PKG_INSTALL_DIR)/usr/share/terminfo/$$$$file \
|
|
$(1)/usr/share/terminfo/$$$$file; \
|
|
done
|
|
endif
|
|
endef
|
|
|
|
define Package/libncurses/install
|
|
$(INSTALL_DIR) $(1)/usr/lib
|
|
for lib in ncurses panel menu form; do \
|
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib$$$${lib}w.so.* $(1)/usr/lib/; \
|
|
for so in $(1)/usr/lib/lib$$$${lib}w.so.*; do \
|
|
ln -s $$$${so##*/} $$$${so%w.so*}.so$$$${so##*w.so}; \
|
|
done; \
|
|
done
|
|
endef
|
|
|
|
define Package/libncurses-dev/install
|
|
$(INSTALL_DIR) $(1)/usr/bin
|
|
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
|
|
$(INSTALL_DIR) $(1)/usr/include
|
|
$(CP) $(PKG_INSTALL_DIR)/usr/include/*.h $(1)/usr/include/
|
|
$(INSTALL_DIR) $(1)/usr/lib
|
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/*.a $(1)/usr/lib/
|
|
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
|
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc $(1)/usr/lib/pkgconfig/
|
|
endef
|
|
|
|
define Build/InstallDev
|
|
$(CP) $(PKG_INSTALL_DIR)/* $(1)
|
|
for lib in ncurses panel menu form; do \
|
|
for so in $(1)/usr/lib/lib$$$${lib}w.so*; do \
|
|
ln -s $$$${so##*/} $$$${so%w.so*}.so$$$${so##*w.so}; \
|
|
done; \
|
|
done
|
|
ln -s . $(1)/usr/include/ncursesw
|
|
$(TARGET_CROSS)ar rc $(1)/usr/lib/libtinfo.a
|
|
$(INSTALL_DIR) $(2)/bin
|
|
$(CP) $(PKG_INSTALL_DIR)/usr/bin/ncursesw6-config $(2)/bin/
|
|
$(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' -e 's/$$$$INCS //g' \
|
|
$(2)/bin/ncursesw6-config
|
|
ln -sf $(STAGING_DIR)/host/bin/ncursesw6-config $(1)/usr/bin/ncursesw6-config
|
|
$(SED) 's,$(TOOLCHAIN_DIR),$(STAGING_DIR),g' \
|
|
$(1)/usr/lib/pkgconfig/ncursesw.pc
|
|
endef
|
|
|
|
define Host/Compile
|
|
$(MAKE) -C $(HOST_BUILD_DIR) libs
|
|
$(MAKE) -C $(HOST_BUILD_DIR)/progs tic
|
|
endef
|
|
|
|
$(eval $(call HostBuild))
|
|
$(eval $(call BuildPackage,terminfo))
|
|
$(eval $(call BuildPackage,libncurses))
|
|
$(eval $(call BuildPackage,libncurses-dev))
|