1
0
mirror of git://projects.qi-hardware.com/openwrt-packages.git synced 2024-09-30 00:49:47 +03:00

fixed various major and minor build problems. Host forth build dependency now

fixed?  Added comments about what we're actually doing
This commit is contained in:
David Kühling 2010-07-28 02:02:56 +02:00
parent c3604e02b2
commit 23955b4887

View File

@ -6,17 +6,17 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=gforth
PKG_VERSION:=0.7.0-20100725
PKG_RELEASE:=3
PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://mosquito.dyndns.tv/~spock/
PKG_MD5SUM:=f030bdfe42a9be32889d5b4c8cb37856
PKG_BUILD_DEPENDS:= gforth/host libldtl/host
PKG_BUILD_DEPENDS:= gforth/host libltdl/host
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/package.mk
# for now: override download and use local gforth sources
# remove the prepare.stamp if updating tgz
@ -44,33 +44,47 @@ endef
HOST_CONFIGURE_VARS += LTDL_LIBRARY_PATH=$(STAGING_DIR_HOST)/lib
# found this in the libtool Makefile. does it help us?
#export GLOBAL_LIBDIR=$(STAGING_DIR)/usr/lib
## The host-GForth uses -ltdl to link against the staging dir version of
## libltdl. However, when the host-GForth runs, it won't find that library,
## as no library path is encoded into the ltdl dependency (why?). So here we
## override LD_LIBRARY_PATH for all the build steps that might run the
## host-GForth.
define Host/Configure
export LD_LIBRARY_PATH=$(STAGING_DIR_HOST)/lib; $(call Host/Configure/Default)
export LD_LIBRARY_PATH=$(STAGING_DIR_HOST)/lib; \
$(call Host/Configure/Default)
endef
# define Host/Compile
# $(MAKE) -C $(HOST_BUILD_DIR)
# endef
define Host/Compile
export LD_LIBRARY_PATH=$(STAGING_DIR_HOST)/lib; \
$(call Host/Compile/Default)
endef
# define Host/Install
# $(MAKE) -C $(HOST_BUILD_DIR) \
# DESTDIR="$(STAGING_DIR_HOST)" \
# install
# endef
define Host/Install
export LD_LIBRARY_PATH=$(STAGING_DIR_HOST)/lib; \
$(call Host/Install/Default)
endef
# todo: skipcode=
# todo: compiler options / tuning (openwrt sets bad defaults?)
# todo: either gcc 3.4 or -Os makes primitives use doubly-indirect dispatch :(
CROSS_PREFORTH=$(PKG_BUILD_DIR)/preforth
## here we call configure, then patch the cross-GForth source tree to replace
## the 'preforth' script with a script that calls our host-compiled GForth
define Build/Configure
$(call Build/Configure/Default,)
echo "#!/bin/sh" > $(PKG_BUILD_DIR)/preforth
echo '$(STAGING_DIR_HOST)/bin/gforth -i $(STAGING_DIR_HOST)/lib/gforth/$(PKG_VERSION)/gforth.fi "$$$$@"' >> $(PKG_BUILD_DIR)/preforth
echo "#!/bin/sh" > $(CROSS_PREFORTH)
echo "export LD_LIBRARY_PATH=$(STAGING_DIR_HOST)/lib;" >> $(CROSS_PREFORTH)
echo '$(STAGING_DIR_HOST)/bin/gforth -i $(STAGING_DIR_HOST)/lib/gforth/$(PKG_VERSION)/gforth.fi "$$$$@"' >> $(CROSS_PREFORTH)
chmod a+x $(PKG_BUILD_DIR)/preforth
endef
## Compilation is pretty manual to only build the parts we need. By default
## the GForth Makefile attempts to auto-tune by recursively calling itself for
## compilation, then running the GForth binary through unit-tests. This won't
## work with a cross-compile environment
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) kernel/version.fs gforth-ditc \
engine/prim-fast.i engine/prim_lab-fast.i engine/prim_names-fast.i \
@ -84,6 +98,10 @@ define Build/Compile
cp engine/gforth-fast-ll-reg ./gforth-fast
endef
##
## define lists of GForth's sources to package for loading in the target system
##
STARTUP = exboot.fs startup.fs arch/mips/asm.fs arch/mips/disasm.fs
GFORTH_FI_SRC = \