# system:     "Gobo Eiffel Libraries precompilation"
# author:     "Eric Bezault <ericb@gobosoft.com>"
# copyright:  "Copyright (c) 2001, Eric Bezault and others"
# license:    "Eiffel Forum Freeware License v1 (see forum.txt)"
# date:       "$Date: 2001/05/01 12:39:30 $"
# revision:   "$Revision: 1.3 $"


TARGET=gobo
ROOT_CLASS=ANY
CREATION_ROUTINE=
ROOT_DIR=${GOBO}/test/precomp

include ${GOBO}/misc/platform.mk
include ${GOBO}/misc/eiffel.mk

# SmallEiffel

se-precomp:
	${MAKE} compile-se-precomp
	${MAKE} install-se-precomp 'BIN_DIR=${BIN_DIR}'
	${MAKE} clean-se-precomp

compile-se-precomp: loadpath.se se.sh
	./se.sh > tmp_precompile.txt 2>&1

se.sh: ${ROOT_DIR}/se.sh
	${CP} ${ROOT_DIR}/se.sh se.sh

install-se-precomp:
	-${CP} -f precomp.html ${BIN_DIR}

clean-se-precomp:
	-${RM} -f precomp.html


# ISE Eiffel

ISE_PRECOMP_CFLAGS=-precompile -batch
ISE_PRECOMP_CODEGEN=W_code
ISE_PRECOMP_FFLAGS=${ISE_PFFLAGS}

ise-precomp:
	${MAKE} ise-precomp-no-base
	${MAKE} ise-precomp-base

ise-precomp-no-base:
	${MAKE} compile-ise-precomp
	${MAKE} install-ise-precomp 'BIN_DIR=${BIN_DIR}'
	${MAKE} clean-ise-precomp

ise-precomp-base:
	${MAKE} compile-ise-precomp-base
	${MAKE} install-ise-precomp-base 'BIN_DIR=${BIN_DIR}'
	${MAKE} clean-ise-precomp

compile-ise-precomp: ise.ace
	${ISE_ECOMPILER} ${ISE_PRECOMP_CFLAGS} -ace ise.ace
	${MAKE} ise_finish_freezing_precomp 'MAKEFLAGS='

compile-ise-precomp-base: ise_base.ace
	${ISE_ECOMPILER} ${ISE_PRECOMP_CFLAGS} -ace ise_base.ace
	${MAKE} ise_finish_freezing_precomp 'MAKEFLAGS='

# Problem with ${MAKEFLAGS} when compiling under
# Windows: 'nmake' (called by 'finish_freezing')
# does not recognize option --unix.
ise_finish_freezing_precomp:
	cd EIFGEN/${ISE_PRECOMP_CODEGEN} ; ${ISE_FINISH_FREEZING} ${ISE_PRECOMP_FFLAGS}

include ise_base.dep

ise_base.ace: ${ROOT_DIR}/ise_base.tpl
	${ECHO} '-- *** GENERATED BY '\''make ise_base.ace'\'' *** --' > ise_base.ace
	${GEPP} -DASSERTION ${ROOT_DIR}/ise_base.tpl >> ise_base.ace

ise_base.dep: ${ROOT_DIR}/ise_base.tpl
	${ECHO} -n 'ise_base.ace:' > ise_base.dep
	${GEPP} -M ${ROOT_DIR}/ise_base.tpl >> ise_base.dep

install-ise-precomp:
	-if [ -r EIFGEN/${ISE_PRECOMP_CODEGEN}/${ISE_COMPILER}/driver${EXE} ]; then \
		${CP} -f EIFGEN/${ISE_PRECOMP_CODEGEN}/${ISE_COMPILER}/driver${EXE} ${BIN_DIR} ; \
	else \
		${CP} -f EIFGEN/${ISE_PRECOMP_CODEGEN}/driver${EXE} ${BIN_DIR} ; \
	fi

install-ise-precomp-base:
	-if [ -r EIFGEN/${ISE_PRECOMP_CODEGEN}/${ISE_COMPILER}/driver${EXE} ]; then \
		${CP} -f EIFGEN/${ISE_PRECOMP_CODEGEN}/${ISE_COMPILER}/driver${EXE} ${BIN_DIR}/driver-base${EXE} ; \
	else \
		if [ -r EIFGEN/${ISE_PRECOMP_CODEGEN}/${COMPILER}/driver${EXE} ]; then \
			${CP} -f EIFGEN/${ISE_PRECOMP_CODEGEN}/${COMPILER}/driver${EXE} ${BIN_DIR}/driver-base${EXE} ; \
		else \
			${CP} -f EIFGEN/${ISE_PRECOMP_CODEGEN}/driver${EXE} ${BIN_DIR}/driver-base${EXE} ; \
		fi \
	fi

clean-ise-precomp:
	-${RM} -rf EIFGEN
	-${RM} -f precomp.epr


# Halstenbach

HACT_PRECOMP_CFLAGS=-precompile -new -stop
HACT_PRECOMP_CODEGEN=W_code
HACT_PRECOMP_FFLAGS=

hact-precomp:
	${MAKE} compile-hact-precomp
	${MAKE} install-hact-precomp 'BIN_DIR=${BIN_DIR}'
	${MAKE} clean-hact-precomp

compile-hact-precomp: hact.ace
	${HACT_COMPILER} ${HACT_PRECOMP_CFLAGS} -ace hact.ace -project ${TARGET}.eif
	${MAKE} hact_fish_precomp 'MAKEFLAGS='

# Problem with ${MAKEFLAGS} when compiling under
# Windows: 'nmake' (called by 'fish') does not
# recognize option --unix.
hact_fish_precomp:
	cd ${TARGET}_gen/${HACT_PRECOMP_CODEGEN} ; ${HACT_FISH} ${HACT_PRECOMP_FFLAGS}

install-hact-precomp:
	-${CP} -f ${TARGET}_gen/${HACT_PRECOMP_CODEGEN}/driver${EXE} ${BIN_DIR}

clean-hact-precomp:
	-${RM} -rf ${TARGET}_gen
	-${RM} -f ${TARGET}.eif


# Visual Eiffel

VE_PRECOMP_CFLAGS=-no

ve-precomp:
	${MAKE} compile-ve-precomp
	${MAKE} install-ve-precomp 'BIN_DIR=${BIN_DIR}'
	${MAKE} clean-ve-precomp

compile-ve-precomp: ve.eld
	${VE_COMPILER} ${VE_PRECOMP_CFLAGS} -p:ve.eld

ve.eld: ${ROOT_DIR}/ve.eld
	${CP} ${ROOT_DIR}/ve.eld ve.eld

install-ve-precomp:
	-${CP} -f Result.out ${BIN_DIR}

clean-ve-precomp:
	${VE_COMPILER} -eu -y -no
