############################################################################## # These are the programs to be installed (fxlib is the library). ############################################################################## INSTALL_PROGS = fxp fxcanon fxcopy fxesis fxviz fxlib ############################################################################## # These are the locations for executables, heap images and library files ############################################################################## FXP_BINDIR = ${PREFIX}/bin FXP_LIBDIR = ${PREFIX}/lib/sml-fxp FXP_DOCDIR = ${PREFIX}/share/doc/fxp ############################################################################## # The path where the SML-NJ binaries are located, and the name of the # SML-NJ executable with the Compilation manager built-in. If sml is in # your PATH at execution time, you fon't need the full path here. ############################################################################## SML_BINDIR = ${PREFIX}/bin SML_EXEC = ${SML_BINDIR}/sml ############################################################################## # No need to change this for SML-NJ 110.0.6. For earlier or working versions # 110.19 you might have to use the second or third line. This is the # compilation manager function for making with a named description file. ############################################################################## .if defined(SMLNJ_DEVEL) && ${SMLNJ_DEVEL} == "yes" SML_MAKEDEF = val make = CM.make SML_STABILIZEDEF = val stabilize = CM.stabilize true .else SML_MAKEDEF = val make = CM.make' SML_STABILIZEDEF = val stabilize = (fn n=> CM.stabilize' (n, true)) .endif MLTON=${PREFIX}/bin/mlton HEAP2EXEC=${PREFIX}/bin/heap2exec HEAP_SUFFIX=x86-bsd ############################################################################## # These should be fine on most unix machines ############################################################################## SED = sed RM = rm -f RMDIR = rmdir COPY = cp -f CHMOD = chmod FIND = find #buggy in cygwin #MKDIRHIER = mkdirhier MKDIRHIER = mkdir -p MV = mv ############################################################################## # nothing to change below this line ############################################################################## SRC = src DOC = doc FXLIB_PRUNE = \( -name CM -o -name .cm -o -name CVS -o -name Apps \) all: fxp.sh images stabilize arch.os: echo ${HEAP_SUFFIX} > .arch-opsys fxp.sh: Makefile arch.os @${RM} fxp.sh @echo "#!/bin/sh -f" > fxp.sh @echo >> fxp.sh @echo "SML_BINDIR=${SML_BINDIR}" >> fxp.sh @echo "FXP_LIBDIR=${FXP_LIBDIR}" >> fxp.sh @cat fxp.sh.in >> fxp.sh stabilize: #see inst.fxlib for old sml-nj .if defined(STABILIZE) && defined(SMLNJ_DEVEL) && ${SMLNJ_DEVEL} == "yes" @echo "Stabilizing the library..." echo "${SML_STABILIZEDEF}; stabilize \"src/fxlib.cm\"; \ OS.Process.exit OS.Process.success;" | ${SML_EXEC} .endif image.prog: fxp.sh .if defined(MLTON_BUILD) @echo "Building the ${PROG_NAME} binary..." ${MLTON} -output ${SRC}/${PROG_NAME} ${SRC}/${PROG_CM:S/cm$/mlb/} .else @echo "Creating the ${PROG_NAME} heap image..." echo "${SML_MAKEDEF}; make \"${SRC}/${PROG_CM}\"; \ SMLofNJ.exportFn(\"${SRC}/_${PROG_NAME}\",${PROG_FUN})" | ${SML_EXEC} .if defined(SMLNJ_DEVEL) && ${SMLNJ_DEVEL} == "yes" ${HEAP2EXEC} ${SRC}/_${PROG_NAME}.${HEAP_SUFFIX} ${SRC}/${PROG_NAME} .endif .endif image.fxlib: image.fxp: @make image.prog PROG_NAME=fxp PROG_CM=Apps/Null/null.cm PROG_FUN=Null.null image.fxcanon: @make image.prog PROG_NAME=fxcanon PROG_CM=Apps/Canon/canon.cm PROG_FUN=Canon.canon image.fxcopy: @make image.prog PROG_NAME=fxcopy PROG_CM=Apps/Copy/copy.cm PROG_FUN=Copy.copy image.fxesis: @make image.prog PROG_NAME=fxesis PROG_CM=Apps/Esis/esis.cm PROG_FUN=Esis.esis image.fxviz: @make image.prog PROG_NAME=fxviz PROG_CM=Apps/Viz/viz.cm PROG_FUN=Viz.viz images: for prog in ${INSTALL_PROGS}; do \ make image.$${prog}; \ done inst.dirs: test -d ${FXP_BINDIR} || ${MKDIRHIER} ${FXP_BINDIR} test -d ${FXP_LIBDIR} || ${MKDIRHIER} ${FXP_LIBDIR} inst.prog: inst.dirs fxp.sh arch.os .if defined(NO_HEAP2EXEC) ${RM} ${FXP_BINDIR}/${PROG_NAME} ${FXP_BINDIR}/fxp.sh \ ${FXP_LIBDIR}/_${PROG_NAME}.`cat .arch-opsys` ${BSD_INSTALL_SCRIPT} fxp.sh ${FXP_BINDIR}/ ln -s fxp.sh ${FXP_BINDIR}/${PROG_NAME} ${BSD_INSTALL_DATA} ${SRC}/_${PROG_NAME}.${HEAP_SUFFIX} ${FXP_LIBDIR}/ .else ${BSD_INSTALL_PROGRAM} ${SRC}/${PROG_NAME} ${FXP_BINDIR}/ .endif inst.fxp: @make inst.prog PROG_NAME=fxp PROG_CM=Apps/Null/null.cm PROG_FUN=Null.null inst.fxcanon: @make inst.prog PROG_NAME=fxcanon PROG_CM=Apps/Canon/canon.cm PROG_FUN=Canon.canon inst.fxcopy: @make inst.prog PROG_NAME=fxcopy PROG_CM=Apps/Copy/copy.cm PROG_FUN=Copy.copy inst.fxesis: @make inst.prog PROG_NAME=fxesis PROG_CM=Apps/Esis/esis.cm PROG_FUN=Esis.esis inst.fxviz: @make inst.prog PROG_NAME=fxviz PROG_CM=Apps/Viz/viz.cm PROG_FUN=Viz.viz inst.fxlib: for dir in `${FIND} ${SRC} ${FXLIB_PRUNE} -prune -o -type d -print`; do \ ${MKDIRHIER} ${FXP_LIBDIR}/$${dir}; \ done for file in `${FIND} ${SRC} ${FXLIB_PRUNE} -prune -o -name '*.sml' -print`; do \ ${BSD_INSTALL_DATA} $${file} ${FXP_LIBDIR}/$${file}; \ done for file in `${FIND} ${SRC} ${FXLIB_PRUNE} -prune -o -type f -name '*.cm' -print`; do \ ${BSD_INSTALL_DATA} $${file} ${FXP_LIBDIR}/$${file}; \ done ${BSD_INSTALL_DATA} ${SRC}/fxlib.cm ${FXP_LIBDIR}/${SRC}/ ${BSD_INSTALL_DATA} ${SRC}/fxlib.mlb ${FXP_LIBDIR}/${SRC}/ .if defined(STABILIZE) .if defined(SMLNJ) && ${SMLNJ} == "yes" # Stabilizing in place seems to be the only reliable way for old sml-nj echo "${SML_STABILIZEDEF}; stabilize \"${FXP_LIBDIR}/src/fxlib.cm\"; \ OS.Process.exit OS.Process.success;" | ${SML_EXEC} .else ${MKDIRHIER} ${FXP_LIBDIR}/src/.cm/x86-unix ${BSD_INSTALL_DATA} ${SRC}/.cm/x86-unix/fxlib.cm ${FXP_LIBDIR}/src/.cm/x86-unix/ .endif .endif install-doc: for file in ball-shadow.jpg fxp-shadow.jpg shadow.jpg \ exa-vcg-1.gif exa-vcg-2.gif exa-vcg-3.gif \ exa-vcg-4.gif exa-vcg-5.gif exa-vcg-6.gif ; do \ rm ${DOC}/$${file} || true; \ done rm ${DOC}/Images/index.html || true for dir in `${FIND} ${DOC}/* -type d -print`; do \ d=`expr "$${dir}" : "[^/]*/\(.*\)"`; \ ${MKDIRHIER} ${FXP_DOCDIR}/$${d}; \ done for file in `${FIND} ${DOC}/* -type f \! -regex '.*\.orig$$' -print`; do \ f=`expr "$${file}" : "[^/]*/\(.*\)"`; \ ${BSD_INSTALL_MAN} $${file} ${FXP_DOCDIR}/$${f}; \ done install: for prog in ${INSTALL_PROGS}; do \ make inst.$${prog}; \ done uninstall: arch.os -for prog in ${INSTALL_PROGRAMS}; do \ if [ "$${prog}" == "fxlib" ]; then \ ${RM} -r ${FXP_LIBDIR/src}; \ else \ ${RM} ${FXP_BINDIR}/$${prog}; \ ${RM} ${FXP_LIBDIR}/_$${prog}.`cat .arch-opsys`; \ fi; \ done -${RM} ${FXP_BINDIR}/fxp.sh -${RMDIR} ${FXP_BINDIR} ${FXP_LIBDIR} clean: -${RM} -f ${SRC}/_fx.* fxp.sh .arch-opsys -find ${SRC} -type d -name CM -print | xargs ${RM} -r