Idris2-boot/Makefile

102 lines
3.0 KiB
Makefile
Raw Normal View History

2019-08-29 09:43:34 +03:00
# current Idris2 version components
MAJOR=0
MINOR=0
PATCH=0
GIT_SHA1=
VER_TAG=
ifeq ($(shell git status >/dev/null 2>&1; echo $$?), 0)
# inside a git repo
ifneq ($(shell git describe --exact-match --tags >/dev/null 2>&1; echo $$?), 0)
# not tagged as a released version, so add sha1 of this build in between releases
GIT_SHA1 := $(shell git rev-parse --short=9 HEAD)
VER_TAG := -${GIT_SHA1}
endif
endif
IDRIS2_VERSION_TAG:=${MAJOR}.${MINOR}.${PATCH}${VER_TAG}
IDRIS2_VERSION:=${MAJOR}.${MINOR}.${PATCH}
2019-07-10 01:45:33 +03:00
PREFIX ?= ${HOME}/.idris2
export IDRIS2_PATH = ${CURDIR}/libs/prelude/build/ttc:${CURDIR}/libs/base/build/ttc
export IDRIS2_DATA = ${CURDIR}/support
IDRIS_VERSION := $(shell idris --version)
VALID_IDRIS_VERSION_REGEXP = "1.3.2.*"
2019-07-10 01:45:33 +03:00
-include custom.mk
.PHONY: ttimp idris2 prelude test base clean lib_clean check_version idris2c dist/idris2.c
all: idris2 libs test
2019-07-26 10:50:54 +03:00
check_version:
@echo "Using Idris 1 version: $(IDRIS_VERSION)"
2019-07-26 17:44:27 +03:00
@if [ $(shell expr $(IDRIS_VERSION) : $(VALID_IDRIS_VERSION_REGEXP)) -eq 0 ]; then echo "Wrong idris version, expected version matching $(VALID_IDRIS_VERSION_REGEXP)"; exit 1; fi
2019-07-26 10:50:54 +03:00
idris2: src/YafflePaths.idr check_version
@echo "Building Idris 2 version: $(IDRIS2_VERSION_TAG)"
idris --build idris2.ipkg
src/YafflePaths.idr:
echo 'module YafflePaths; export yversion : ((Nat,Nat,Nat), String); yversion = ((${MAJOR},${MINOR},${PATCH}), "${GIT_SHA1}")' > src/YafflePaths.idr
echo 'export yprefix : String; yprefix = "${PREFIX}"' >> src/YafflePaths.idr
prelude:
make -C libs/prelude IDRIS2=../../idris2
2019-06-15 13:54:22 +03:00
base: prelude
make -C libs/base IDRIS2=../../idris2
2019-07-22 18:21:38 +03:00
network: prelude
make -C libs/network IDRIS2=../../idris2
make -C libs/network test IDRIS2=../../idris2
2019-07-22 18:21:38 +03:00
contrib: prelude
make -C libs/contrib IDRIS2=../../idris2
libs : prelude base network contrib
clean: clean-libs
make -C src clean
make -C tests clean
rm -f runtests
rm -f idris2
clean-libs:
make -C libs/prelude clean
2019-06-15 13:54:22 +03:00
make -C libs/base clean
2019-07-22 18:21:38 +03:00
make -C libs/network clean
make -C libs/contrib clean
test:
idris --build tests.ipkg
@make -C tests only=$(only)
install: all install-exec install-support install-libs
install-support:
mkdir -p ${PREFIX}/idris2-${IDRIS2_VERSION}/support/chez
mkdir -p ${PREFIX}/idris2-${IDRIS2_VERSION}/support/chicken
mkdir -p ${PREFIX}/idris2-${IDRIS2_VERSION}/support/racket
install support/chez/* ${PREFIX}/idris2-${IDRIS2_VERSION}/support/chez
install support/chicken/* ${PREFIX}/idris2-${IDRIS2_VERSION}/support/chicken
install support/racket/* ${PREFIX}/idris2-${IDRIS2_VERSION}/support/racket
install-exec: idris2
mkdir -p ${PREFIX}/bin
mkdir -p ${PREFIX}/idris2-${IDRIS2_VERSION}/lib
install idris2 ${PREFIX}/bin
install-libs: libs
make -C libs/prelude install IDRIS2=../../idris2
2019-06-15 13:54:22 +03:00
make -C libs/base install IDRIS2=../../idris2
make -C libs/network install IDRIS2=../../idris2 IDRIS2_VERSION=${IDRIS2_VERSION}
make -C libs/contrib install IDRIS2=../../idris2
dist/idris2.c:
idris --build idris2-mkc.ipkg
cat idris2.c dist/rts/idris_main.c > dist/idris2.c
idris2c: dist/idris2.c