# Copyright 2006-2017, Matthew Welland.
#
# This file is part of Megatest.
#
# Megatest is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Megatest is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Megatest. If not, see <http://www.gnu.org/licenses/>.
#======================================================================
# Chicken build
#======================================================================
# CHICKEN_BIN_DIR=$(shell dirname $(shell which csi))
# if have csi on path use that, else use default
# CSIPATH=$(shell which csi)
# CKPATH=$(shell dirname $(shell dirname $(CSIPATH)))
# CHICKEN_PREFIX=$(or $(CKPATH),$(PREFIX)/bin/.$(ARCHSTR))
whatever :
@echo "CHICKEN_PREFIX=$(CHICKEN_PREFIX)"
tgz-$(USER)/postgresql-9.6.4.tar.gz :
mkdir -p tgz-$(USER)
wget -c https://ftp.postgresql.org/pub/source/v9.6.4/postgresql-9.6.4.tar.gz
mv postgresql-9.6.4.tar.gz tgz-$(USER)/
tgz-$(USER)/sqlite-autoconf-3090200.tar.gz :
mkdir -p tgz-$(USER)
curl http://www.sqlite.org/2015/sqlite-autoconf-3090200.tar.gz > tgz-$(USER)/sqlite-autoconf-3090200.tar.gz
tgz-$(USER)/nanomsg-1.0.0.tar.gz :
wget --no-check-certificate https://github.com/nanomsg/nanomsg/archive/1.0.0.tar.gz
mv 1.0.0.tar.gz tgz-$(USER)/nanomsg-1.0.0.tar.gz
tgz-$(USER)/chicken-4.13.0.tar.gz :
mkdir -p tgz-$(USER)
curl https://code.call-cc.org/releases/4.13.0/chicken-4.13.0.tar.gz > tgz-$(USER)/chicken-4.13.0.tar.gz
tgz-$(USER)/ffcall.tar.gz :
wget -c -O tgz-$(USER)/ffcall.tar.gz 'http://www.kiatoa.com/fossils/ffcall/tarball?name=ffcall&uuid=trunk'
$(CHICKEN_PREFIX)/bin/pg_config : tgz-$(USER)/postgresql-9.6.4.tar.gz
mkdir -p build-$(USER)
tar xfz tgz-$(USER)/postgresql-9.6.4.tar.gz -C build-$(USER)
cd build-$(USER)/postgresql-9.6.4; ./configure --prefix=$(CHICKEN_PREFIX) --with-openssl; make; make install
if [[ -e $(CHICKEN_PREFIX)/bin/pg_config ]];then touch $(CHICKEN_PREFIX)/bin/pg_config;fi
build-$(USER)/sqlite-autoconf-3090200/configure : tgz-$(USER)/sqlite-autoconf-3090200.tar.gz
mkdir -p build-$(USER);
cd build-$(USER); tar xf ../tgz-$(USER)/sqlite-autoconf-3090200.tar.gz
if [[ -e build-$(USER)/sqlite-autoconf-3090200/configure ]];then touch build-$(USER)/sqlite-autoconf-3090200/configure;fi
# bin/.11/lib64/libnanomsg.so
$(CHICKEN_PREFIX)/bin/nanocat : tgz-$(USER)/nanomsg-1.0.0.tar.gz
cd tgz-$(USER); tar -xzvf nanomsg-1.0.0.tar.gz
cd tgz-$(USER)/nanomsg-1.0.0; mkdir build-$(USER); cd build-$(USER);
cd tgz-$(USER)/nanomsg-1.0.0/build-$(USER); cmake ../ -DCMAKE_INSTALL_PREFIX=$(CHICKEN_PREFIX)
cd tgz-$(USER)/nanomsg-1.0.0/build-$(USER); make; make install
build-$(USER)/chicken-4.13.0/LICENSE : tgz-$(USER)/chicken-4.13.0.tar.gz
mkdir -p build-$(USER)/eggs-installed
cd build-$(USER);tar xf ../tgz-$(USER)/chicken-4.13.0.tar.gz
if [[ -e build-$(USER)/chicken-4.13.0/LICENSE ]];then touch build-$(USER)/chicken-4.13.0/LICENSE;fi
tgz-$(USER)/opensrc.fossil :
cd tgz-$(USER); fossil clone http://www.kiatoa.com/fossils/opensrc opensrc.fossil
mkdir tgz-$(USER)/opensrc
cd tgz-$(USER)/opensrc; fossil open --nested ../opensrc.fossil; fossil up; fossil uv sync
$(CHICKEN_PREFIX)/lib/libiupweb.so : tgz-$(USER)/opensrc.fossil
cd tgz-$(USER)/opensrc; fossil unversioned cat libs/cd/cd-$(CDVER)_Linux$(IUPARCH)_64_lib.tar.gz > ../cd.tgz
cd tgz-$(USER)/opensrc; fossil unversioned cat libs/im/im-$(IMVER)_Linux$(IUPARCH)_64_lib.tar.gz > ../im.tgz
cd tgz-$(USER)/opensrc; fossil unversioned cat libs/iup/iup-$(IUPVER)_Linux$(IUPARCH)_64_lib.tar.gz > ../iup.tgz
cd tgz-$(USER); tar -xzf cd.tgz;
cd tgz-$(USER); tar -xzf im.tgz;
cd tgz-$(USER); tar -xzf iup.tgz;
rsync -av tgz-$(USER)/include/ $(CHICKEN_PREFIX)/include/
rsync -av tgz-$(USER)/*.so $(CHICKEN_PREFIX)/lib/
rsync -av tgz-$(USER)/*.a $(CHICKEN_PREFIX)/lib/
rsync -av tgz-$(USER)/ftgl/lib/*/* $(CHICKEN_PREFIX)/lib/
if [[ -e $(CHICKEN_PREFIX)/lib/libiupweb.so ]];then touch $(CHICKEN_PREFIX)/lib/libiupweb.so;fi
# removed hahn-utils as it requires libgit2
EGGS=srfi-69 srfi-42 typed-records md5 regex-case base64 \
format dot-locking csv-xml z3 udp hostinfo directory-utils stack dbi crypt sha1 \
posix-extras pathname-expand csv call-with-environment-variables s11n spiffy \
uri-common intarweb http-client spiffy-request-vars spiffy-directory-listing \
ansi-escape-sequences test slice rfc3339 uuid-lib filepath srfi-19 sparse-vectors \
sql-de-lite fmt readline apropos json simple-exceptions rpc trace logpro refdb
EGGSTARG=$(addsuffix .done,$(addprefix build-$(USER)/eggs-installed/,$(EGGS)))
# EGGSTARG2=$(addsuffix .done, $(EGGS))
$(EGGSTARG) : sqlite3.done
build-$(USER)/eggs-installed/call-with-environment-variables.done : build-$(USER)/eggs-installed/hahn-utils.done
$(CHICKEN_PREFIX)/lib/libcallback.a : tgz-$(USER)/ffcall.tar.gz
cd tgz-$(USER); tar -xzvf ffcall.tar.gz
cd tgz-$(USER)/ffcall; ./configure --prefix=$(CHICKEN_PREFIX) --enable-shared
cd tgz-$(USER)/ffcall; make CC="gcc -fPIC"; make install
$(CHICKEN_PREFIX)/bin/sqlite3 : build-$(USER)/sqlite-autoconf-3090200/configure
cd build-$(USER)/sqlite-autoconf-3090200; ./configure --prefix=$(CHICKEN_PREFIX); make; make install
$(CHICKEN_PREFIX)/bin/csi : $(SQLITE3_DEPS) build-$(USER)/chicken-4.13.0/LICENSE $(NANOMSG_DEPS)
cd build-$(USER)/chicken-4.13.0;make PLATFORM=linux PREFIX=$(CHICKEN_PREFIX)
cd build-$(USER)/chicken-4.13.0;make PLATFORM=linux PREFIX=$(CHICKEN_PREFIX) install
# NOTE: generate this list with an ls of $(CHICKEN_PREFIX)/bin
# removed chicken-bind vacuumdb
ALL_CKBIN=$(shell echo chicken chicken-bug chicken-install chicken-profile \
chicken-status chicken-uninstall csc csi feathers nanocat sqlite3 \
logpro refdb $(shell ls $(CHICKEN_PREFIX)/bin) | sort -u)
CKBIN_WRAPPERS=$(addprefix $(PREFIX)/bin/,$(ALL_CKBIN))
$(PREFIX)/bin/% : $(CHICKEN_PREFIX)/bin/% $(CHICKEN_PREFIX)/bin/csi $(EGGSTARG)
utils/mk_wrapper_tool $(PREFIX) $* $(PREFIX)/bin/$*
chmod a+x $(PREFIX)/bin/$*
$(PREFIX)/bin :
mkdir -p $(PREFIX)/bin $(CHICKEN_PREFIX)/bin
chicken : $(PREFIX)/bin $(CHICKEN_PREFIX)/bin/csi binwrappers iup.done canvas-draw.done
@echo "Fake target to build prefix chicken"
binwrappers : $(CKBIN_WRAPPERS)
# Turn on postgres if configure did not find the library
ifeq ($(BUILD_POSTGRES),yes)
POSTGRES_DEPS=$(CHICKEN_PREFIX)/bin/pg_config
endif
# Turn on sqlite3 if configure did not find the library
ifeq ($(BUILD_SQLITE3),yes)
SQLITE3_DEPS=$(CHICKEN_PREFIX)/bin/sqlite3
endif
ifeq ($(BUILD_NANOMSG),yes)
NANOMSG_DEPS=$(CHICKEN_PREFIX)/bin/nanocat
endif
# NOTE: added dep to csi in following .done targets to ensure chicken is built first
postgresql.done : $(POSTGRES_DEPS) $(CHICKEN_PREFIX)/bin/csi
CSC_OPTIONS="-I$(CHICKEN_PREFIX)/include -L$(CHICKEN_PREFIX)/lib -L$(CHICKEN_PREFIX)/lib64" $(CHICKEN_PREFIX)/bin/chicken-install postgresql > postgresql.done
# was $(CHICKEN_PREFIX)/lib64/libnanomsg.so
nanomsg.done : $(NANOMSG_DEPS) $(CHICKEN_PREFIX)/bin/csi
CSC_OPTIONS="-I$(CHICKEN_PREFIX)/include -L$(CHICKEN_PREFIX)/lib -L$(CHICKEN_PREFIX)/lib64" $(CHICKEN_PREFIX)/bin/chicken-install nanomsg > nanomsg.done
iup.done : $(CHICKEN_PREFIX)/lib/libcallback.a $(CHICKEN_PREFIX)/lib/libiupweb.so $(CHICKEN_PREFIX)/bin/csi
CSC_OPTIONS="-I$(CHICKEN_PREFIX)/include -L$(CHICKEN_PREFIX)/lib" $(CHICKEN_PREFIX)/bin/chicken-install -D no-library-checks -feature disable-iup-web -feature disable-iup-pplot -feature disable-iup-matrixex iup$(IUPEGGVER) > iup.done
canvas-draw.done : iup.done $(CHICKEN_PREFIX)/bin/csi
CSC_OPTIONS="-I$(CHICKEN_PREFIX)/include -L$(CHICKEN_PREFIX)/lib" $(CHICKEN_PREFIX)/bin/chicken-install -D no-library-checks canvas-draw > canvas-draw.done
sqlite3.done : $(SQLITE3_DEPS) $(CHICKEN_PREFIX)/bin/csi
CSC_OPTIONS="-I$(CHICKEN_PREFIX)/include -L$(CHICKEN_PREFIX)/lib" $(CHICKEN_PREFIX)/bin/chicken-install sqlite3 > sqlite3.done
sql-de-lite.done : $(CHICKEN_PREFIX)/bin/csi
CSC_OPTIONS="-I$(CHICKEN_PREFIX)/include -L$(CHICKEN_PREFIX)/lib" $(CHICKEN_PREFIX)/bin/chicken-install sql-de-lite > sql-de-lite.done
dbi.done : postgresql.done sqlite3.done sql-de-lite.done
CSC_OPTIONS="-I$(CHICKEN_PREFIX)/include -L$(CHICKEN_PREFIX)/lib" $(CHICKEN_PREFIX)/bin/chicken-install dbi > dbi.done
logpro.done : typed-records.done
build-$(USER)/eggs-installed/%.done :
$(CHICKEN_PREFIX)/bin/chicken-install $* > build-$(USER)/eggs-installed/$*.done
build-$(USER)/eggs-installed/%.done : $(CHICKEN_PREFIX)/bin/csi
$(CHICKEN_PREFIX)/bin/chicken-install $* > build-$(USER)/eggs-installed/$*.done
build-clean :
rm -rf build-$(USER) bin *.done