From 50b4221ee5c77bf427b010ea22c2b96bd232d1a3 Mon Sep 17 00:00:00 2001 From: "Sergey V. Lobanov" Date: Fri, 14 Jan 2022 01:29:08 +0300 Subject: [PATCH] tcsh: fix build on macos tcsh requires host-tool (gethost) to generate tc.defs.c file. To build this tool on macos, it is required to run ./configure script wihout target vars/flags, but this package is not splitted to host and target build. This patch splits build to host and target builds to compile host-tool(gethost) first, then compile tsch. Due to lack of support of separate building host and target, OpenWrt Makefile is modified to do it in the order below: 1. build host-tool (gethost) 2. build sh.err.h header for target 3. build tc.const.h header for target 4. copy gethost tool from host staging dir to target build dir 5. touch (make -t) gethost to protect it from recompiling 6. build tsch for target It is required to do step 2 and 3 because 'make -t' generates empty files but these files required to build tcsh Patch 020-cross.patch has been removed due to not required anymore (gethost build is separated and not affected by target configure flags and vars) Signed-off-by: Sergey V. Lobanov --- utils/tcsh/Makefile | 25 +++++++++++++++++++++++++ utils/tcsh/patches/020-cross.patch | 11 ----------- 2 files changed, 25 insertions(+), 11 deletions(-) delete mode 100644 utils/tcsh/patches/020-cross.patch diff --git a/utils/tcsh/Makefile b/utils/tcsh/Makefile index 4f41e31ec..3a1482594 100644 --- a/utils/tcsh/Makefile +++ b/utils/tcsh/Makefile @@ -25,8 +25,10 @@ PKG_CPE_ID:=cpe:/a:tcsh:tcsh PKG_FIXUP:=autoreconf PKG_INSTALL:=1 +PKG_BUILD_DEPENDS:=tcsh/host PKG_BUILD_PARALLEL:=1 +include $(INCLUDE_DIR)/host-build.mk include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/nls.mk @@ -50,6 +52,28 @@ define Package/tcsh/description mechanism, job control and a C-like syntax. endef + +define Host/Compile + $(call Host/Compile/Default,gethost) +endef + +define Host/Install + mkdir -p $(STAGING_DIR_HOSTPKG)/usr/bin + $(INSTALL_BIN) $(HOST_BUILD_DIR)/gethost $(STAGING_DIR_HOSTPKG)/usr/bin/tcsh-gethost +endef + +define Build/Compile + #Build sh.err.h and tc.const.h for target build + $(call Build/Compile/Default,sh.err.h) + $(call Build/Compile/Default,tc.const.h) + #Copy gethost (host tool to generate header file) from hostpkg dir + $(CP) $(STAGING_DIR_HOSTPKG)/usr/bin/tcsh-gethost $(PKG_BUILD_DIR)/gethost + #Make-touch header generator binary to prevent recompiling during target build + $(call Build/Compile/Default,-t gethost) + #Build tcsh for target + $(call Build/Compile/Default) +endef + define Package/tcsh/postinst #!/bin/sh grep tcsh $${IPKG_INSTROOT}/etc/shells || { \ @@ -64,4 +88,5 @@ define Package/tcsh/install ln -sf tcsh $(1)/bin/csh endef +$(eval $(call HostBuild)) $(eval $(call BuildPackage,tcsh)) diff --git a/utils/tcsh/patches/020-cross.patch b/utils/tcsh/patches/020-cross.patch deleted file mode 100644 index 526b3c45e..000000000 --- a/utils/tcsh/patches/020-cross.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/Makefile.in -+++ b/Makefile.in -@@ -448,7 +448,7 @@ pure:$(P) ${OBJS} - - gethost: gethost.c sh.err.h tc.const.h sh.h - rm -f gethost -- ${CC_FOR_GETHOST} -o gethost ${CPPFLAGS} ${CFLAGS} ${LDFLAGS} $(srcdir)/gethost.c -+ ${CC_FOR_GETHOST} -o gethost $(srcdir)/gethost.c - - tc.defs.c: gethost host.defs - @rm -f $@.tmp