Browse Source

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 <sergey@lobanov.in>
lilik-openwrt-22.03
Sergey V. Lobanov 2 years ago
committed by Rosen Penev
parent
commit
50b4221ee5
2 changed files with 25 additions and 11 deletions
  1. +25
    -0
      utils/tcsh/Makefile
  2. +0
    -11
      utils/tcsh/patches/020-cross.patch

+ 25
- 0
utils/tcsh/Makefile View 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))

+ 0
- 11
utils/tcsh/patches/020-cross.patch View File

@ -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

Loading…
Cancel
Save