tcsh: fix build on macos
authorSergey V. Lobanov <sergey@lobanov.in>
Thu, 13 Jan 2022 22:29:08 +0000 (01:29 +0300)
committerRosen Penev <rosenp@gmail.com>
Wed, 19 Jan 2022 02:10:48 +0000 (18:10 -0800)
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 <sergey@lobanov.in>
utils/tcsh/Makefile
utils/tcsh/patches/020-cross.patch [deleted file]

index 4f41e31ec2cf5c3d0c032495c3dd0781bfb4a5c4..3a148259498777b9063bf84b45e612d53d0dc723 100644 (file)
@@ -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 (file)
index 526b3c4..0000000
+++ /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