1
0
mirror of git://projects.qi-hardware.com/openwrt-packages.git synced 2024-11-16 23:59:23 +02:00
openwrt-packages/yacas/Makefile

97 lines
4.0 KiB
Makefile
Raw Normal View History

# Copyright (C) 2008 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
#
include $(TOPDIR)/rules.mk
## Package name
PKG_NAME:=yacas
## Package version we need (to match our download source)
PKG_VERSION:=1.2.2
## Release version (don't really needed, just for completeness)
PKG_RELEASE:=3
## Name of the file we will download, with the previous package name definitions
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
## Url with the PKG_SOURCE file
PKG_SOURCE_URL:=http://yacas.sourceforge.net/backups/
## Program to uncompress the sources
PKG_CAT:=zcat
include $(INCLUDE_DIR)/package.mk
# Definition of the package, for adding to menuconfig and creating the ipkg.
define Package/yacas
TITLE:=yacas
SECTION:=Maths
CATEGORY:=Maths
DEPENDS:=@BROKEN
URL:=http://yacas.sourceforge.net
endef
# Directory where the sources will be uncompiled and built BUILD_DIR
# is an env variable from the OpenWrt toolchain, you don't need to set
# it.
PKG_BUILD_DIR:=$(BUILD_DIR)/yacas-$(PKG_VERSION)
# Long description of the package
define Package/yacas/description
YACAS is an easy to use, general purpose Computer Algebra System, a program for symbolic manipulation of mathematical expressions. It uses its own programming language designed for symbolic as well as arbitrary-precision numerical computations. The system has a library of scripts that implement many of the symbolic algebra operations; new algorithms can be easily added to the library. YACAS comes with extensive documentation (hundreds of pages) covering the scripting language, the functionality that is already implemented in the system, and the algorithms we used.
endef
define Build/Prepare
# The following is a dirty hack. To compile yacas you need to get
# mkfastprimes to run in your host computer. To do so, in Prepare I
# download the tar.gz in pkg_build_dir/temporaryyacas to configure and
# make it to get this mkfastprimes compiled. configure has a problem:
# it generates the Makefile in the current working directory... and cd
# doesn't seem to change it. Thus, it would overwrite the Makefile in
# ports/misc/yacas, a thing which we don't like. To solve it, copy
# Makefile to Makefile2, configure-make and copy it back. The only
# drawback of this approach is that ports/misc/yacas/ gets a little
# full of miscellaneous, unneeded files, generated by configure. Once
# we have mkfastprimes, we copy it to tmp, and then the applied patch
# uses that file. It looks like pwd, export and several other
# constructs don't work under openwrt's build-make environment, that
# is why I just use $(CP) which looks like works correctly.
wget $(PKG_SOURCE_URL)$(PKG_NAME)-$(PKG_VERSION).tar.gz
mkdir /tmp/temporaryyacas
mv $(PKG_NAME)-$(PKG_VERSION).tar.gz /tmp/temporaryyacas/
cp Makefile Makefile2
tar -C /tmp/temporaryyacas/ -xvf /tmp/temporaryyacas/$(PKG_NAME)-$(PKG_VERSION).tar.gz
patch /tmp/temporaryyacas/$(PKG_NAME)-$(PKG_VERSION)/configure.in patches1/manmake.pat
patch /tmp/temporaryyacas/$(PKG_NAME)-$(PKG_VERSION)/Makefile.in patches1/manmake2.pat
/tmp/temporaryyacas/$(PKG_NAME)-$(PKG_VERSION)/configure
make
$(CP) src/mkfastprimes /tmp/mkfastprimes
cp Makefile2 Makefile
rm /tmp/temporaryyacas/ -rf
$(call Build/Prepare/Default)
endef
# Configure, in principle does not need any parameter
define Package/yacas/Build/Configure
$(call Build/Configure/Default)
endef
# To end, copy the yacas binary to sbin, and all yacas scripts to
# sin/yacas-scripts. When you have installed the ipkg you have to add
# sin/yacas-scripts/ to the path, if you don't yacas won't do
# anything. You can also cd to sbin/yacas-scripts and run yacas from
# there. I'll have to check if configure or make has a configuration
# parameter to set the scripts folder.
define Package/yacas/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/yacas $(1)/usr/sbin/
mkdir $(1)/usr/sbin/yacas-scripts/
cp -r $(PKG_BUILD_DIR)/scripts/* $(1)/usr/sbin/yacas-scripts/
endef
# Final step for bulding the package
$(eval $(call BuildPackage,yacas))