Skip to content

Commit

Permalink
- Salvage of old Java stuff for use in EHC. Can be turned on with ./c…
Browse files Browse the repository at this point in the history
…onfigure --enable-java, if a java compiler (named 'javac') is available.

  Is based on old library for java laziness, called 'jazy'. For now only most of the framework is in place, only variant 8, only an Int constant can be evaluated.
  Old stuff in Core/ToJava, new version in Core/ToJazy, code generation based on Core (not grin).
  • Loading branch information
atzedijkstra committed Feb 23, 2009
1 parent d6cc1cd commit 761f80a
Show file tree
Hide file tree
Showing 59 changed files with 2,610 additions and 101 deletions.
9 changes: 6 additions & 3 deletions Makefile
Expand Up @@ -67,6 +67,9 @@ include $(SRC_PREFIX)grini/files.mk
include extlibs/bgc/files.mk
include extlibs/gmp/files.mk
include $(SRC_PREFIX)rts/files.mk
ifeq ($(ENABLE_JAVA),yes)
-include $(SRC_PREFIX)jazy/files.mk
endif
include $(SRC_PREFIX)ehc/files2.mk
include $(SRC_PREFIX)agprimer/files.mk
-include $(SRC_PREFIX)infer2pass/variant.mk
Expand Down Expand Up @@ -203,7 +206,7 @@ uhc-install: uhc
done ; \
rm -f $(UHC_INSTALL_EXEC) ; \
ehc="$(UHC_INSTALL_PREFIX)bin/$(EHC_EXEC_NAME)$(EXEC_SUFFIX)" ; \
strip $${ehc} ; \
$(STRIP) $${ehc} ; \
ln -s $${ehc} $(UHC_INSTALL_EXEC)
$(UHC_INSTALL_EXEC) --meta-export-env=$(TOPLEVEL_SYSTEM_ABSPATH_PREFIX)$(INSTALL_UHC_ROOT),$(UHC_INSTALL_VARIANTNAME)

Expand Down Expand Up @@ -242,8 +245,8 @@ clean: cleans
FUN_PREFIX2DIR = $(patsubst %/,%,$(1))

tst:
@echo $(EHCLIB_INSTALL_VARIANT_TARGET_PREFIX)
@echo $(EHCLIB_BLD_VARIANT_ASPECTS_PREFIX)
@echo $(INSTALL_LIB_JAZY)
@echo $(JAZY_JAVA_JAZY_SRC_JAVA)

tstv:
$(MAKE) EHC_VARIANT=100 tst
Expand Down
166 changes: 160 additions & 6 deletions configure
Expand Up @@ -667,6 +667,11 @@ EH_VERSION_MINORMINOR
EH_VERSION_STABILITY
EH_VERSION_SHORT
EH_VERSION_FULL
ENABLE_JAVA
javacCmd
jarCmd
JAVAC_CMD
JAR_CMD
ranlibCmd
RANLIB_CMD
arCmd
Expand Down Expand Up @@ -1327,6 +1332,11 @@ if test -n "$ac_init_help"; then
esac
cat <<\_ACEOF
Optional Features:
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--enable-java include java code generation
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
Expand Down Expand Up @@ -1998,6 +2008,137 @@ EH_VERSION_FULL=$EH_VERSION_MAJOR.$EH_VERSION_MINOR.$EH_VERSION_MINORMINOR.$EH_V
### enable options
# Check whether --enable-java was given.
if test "${enable_java+set}" = set; then
enableval=$enable_java; enableJava=yes
else
enableJava=no
fi
ENABLE_JAVA=$enableJava
if test x$enableJava == xyes
then
# Extract the first word of "javac", so it can be a program name with args.
set dummy javac; ac_word=$2
{ echo "$as_me:$LINENO: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
if test "${ac_cv_path_javacCmd+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
case $javacCmd in
[\\/]* | ?:[\\/]*)
ac_cv_path_javacCmd="$javacCmd" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_javacCmd="$as_dir/$ac_word$ac_exec_ext"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
;;
esac
fi
javacCmd=$ac_cv_path_javacCmd
if test -n "$javacCmd"; then
{ echo "$as_me:$LINENO: result: $javacCmd" >&5
echo "${ECHO_T}$javacCmd" >&6; }
else
{ echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6; }
fi
if test -z "$javacCmd"; then
{ { echo "$as_me:$LINENO: error:
You must install javac before you can continue
Perhaps it is already installed, but not in your PATH?" >&5
echo "$as_me: error:
You must install javac before you can continue
Perhaps it is already installed, but not in your PATH?" >&2;}
{ (exit 1); exit 1; }; }
fi
# Extract the first word of "jar", so it can be a program name with args.
set dummy jar; ac_word=$2
{ echo "$as_me:$LINENO: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
if test "${ac_cv_path_jarCmd+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
case $jarCmd in
[\\/]* | ?:[\\/]*)
ac_cv_path_jarCmd="$jarCmd" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_jarCmd="$as_dir/$ac_word$ac_exec_ext"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
;;
esac
fi
jarCmd=$ac_cv_path_jarCmd
if test -n "$jarCmd"; then
{ echo "$as_me:$LINENO: result: $jarCmd" >&5
echo "${ECHO_T}$jarCmd" >&6; }
else
{ echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6; }
fi
if test -z "$jarCmd"; then
{ { echo "$as_me:$LINENO: error:
You must install jar before you can continue
Perhaps it is already installed, but not in your PATH?" >&5
echo "$as_me: error:
You must install jar before you can continue
Perhaps it is already installed, but not in your PATH?" >&2;}
{ (exit 1); exit 1; }; }
fi
if test "$javacCmd" = "no"; then
javacCmd=""
jarCmd=""
javacExists="no"
else
javacExists="yes"
fi
JAVAC_CMD=$javacCmd
JAR_CMD=$jarCmd
fi
### ar, ranlib, libtool
# Extract the first word of "ranlib", so it can be a program name with args.
Expand Down Expand Up @@ -7271,6 +7412,11 @@ EH_VERSION_MINORMINOR!$EH_VERSION_MINORMINOR$ac_delim
EH_VERSION_STABILITY!$EH_VERSION_STABILITY$ac_delim
EH_VERSION_SHORT!$EH_VERSION_SHORT$ac_delim
EH_VERSION_FULL!$EH_VERSION_FULL$ac_delim
ENABLE_JAVA!$ENABLE_JAVA$ac_delim
javacCmd!$javacCmd$ac_delim
jarCmd!$jarCmd$ac_delim
JAVAC_CMD!$JAVAC_CMD$ac_delim
JAR_CMD!$JAR_CMD$ac_delim
ranlibCmd!$ranlibCmd$ac_delim
RANLIB_CMD!$RANLIB_CMD$ac_delim
arCmd!$arCmd$ac_delim
Expand Down Expand Up @@ -7311,11 +7457,6 @@ CPP_CMD!$CPP_CMD$ac_delim
llvmAs!$llvmAs$ac_delim
LLVM_AS_CMD!$LLVM_AS_CMD$ac_delim
llvmOpt!$llvmOpt$ac_delim
LLVM_OPT_CMD!$LLVM_OPT_CMD$ac_delim
llvmLlc!$llvmLlc$ac_delim
LLVM_LLC_CMD!$LLVM_LLC_CMD$ac_delim
CPP!$CPP$ac_delim
GREP!$GREP$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
Expand Down Expand Up @@ -7357,6 +7498,11 @@ _ACEOF
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
cat >conf$$subs.sed <<_ACEOF
LLVM_OPT_CMD!$LLVM_OPT_CMD$ac_delim
llvmLlc!$llvmLlc$ac_delim
LLVM_LLC_CMD!$LLVM_LLC_CMD$ac_delim
CPP!$CPP$ac_delim
GREP!$GREP$ac_delim
EGREP!$EGREP$ac_delim
MACH_DEP_C_FOR_TAILCALL_ENTER!$MACH_DEP_C_FOR_TAILCALL_ENTER$ac_delim
MACH_DEP_C_FOR_TAILCALL_LEAVE1!$MACH_DEP_C_FOR_TAILCALL_LEAVE1$ac_delim
Expand Down Expand Up @@ -7393,7 +7539,7 @@ LIBOBJS!$LIBOBJS$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 34; then
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 39; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
Expand Down Expand Up @@ -7841,6 +7987,14 @@ echo " version : $ghcVersion"
echo " command for ghc : $ghcCmd"
fi
if test x$enableJava == xyes
then
echo " javac is available? : $javacExists"
if test "x$javacExists" = "xyes" ;then
echo " command for javac : $javacCmd"
fi
fi
echo "Optional:"
echo " haddock is available? : $haddockExists"
if test "x$haddockExists" = "xyes" ;then
Expand Down
26 changes: 26 additions & 0 deletions configure.ac
Expand Up @@ -66,6 +66,24 @@ AC_DEFUN(REQUIRED_OPTIONAL_PROG_FOR_EH,
fi
])

### enable options
AC_ARG_ENABLE(java, AS_HELP_STRING([--enable-java],[include java code generation]), [enableJava=yes], [enableJava=no])
AC_SUBST(ENABLE_JAVA,$enableJava)
if test x$enableJava == xyes
then
REQUIRED_PROG_FOR_EH(javacCmd,javac)
REQUIRED_PROG_FOR_EH(jarCmd,jar)
if test "$javacCmd" = "no"; then
javacCmd=""
jarCmd=""
javacExists="no"
else
javacExists="yes"
fi
AC_SUBST(JAVAC_CMD,$javacCmd)
AC_SUBST(JAR_CMD,$jarCmd)
fi

### ar, ranlib, libtool
REQUIRED_PROG_FOR_EH(ranlibCmd,ranlib)
# See remarks about cpp
Expand Down Expand Up @@ -638,6 +656,14 @@ echo " version : $ghcVersion"
echo " command for ghc : $ghcCmd"
fi

if test x$enableJava == xyes
then
echo " javac is available? : $javacExists"
if test "x$javacExists" = "xyes" ;then
echo " command for javac : $javacCmd"
fi
fi

echo "Optional:"
echo " haddock is available? : $haddockExists"
if test "x$haddockExists" = "xyes" ;then
Expand Down
2 changes: 2 additions & 0 deletions ehclib/files.mk
Expand Up @@ -148,6 +148,8 @@ ehclib-codegentargetspecific-bc: $(if $(EHC_CFG_USE_GRIN),$(INSTALL_LIB_RTS),)

ehclib-codegentargetspecific-C: $(if $(EHC_CFG_USE_GRIN),$(INSTALL_LIB_RTS),)

ehclib-codegentargetspecific-jazy: $(if $(ENABLE_JAVA),$(INSTALL_LIB_JAZY),)

ehclib-codegentargetspecific-core:

###########################################################################################
Expand Down
10 changes: 10 additions & 0 deletions mk/config.mk.in
Expand Up @@ -55,3 +55,13 @@ RULER2_OPTS_VERSION :=
RTS_PKG_NAME := @RTS_PKG_NAME@
EXTLIBS_BGC_PKG_NAME := @EXTLIBS_BGC_PKG_NAME@
EXTLIBS_GMP_PKG_NAME := @EXTLIBS_GMP_PKG_NAME@

###########################################################################################
# inclusion of features
###########################################################################################

# include java code generation
ifeq (@ENABLE_JAVA@,yes)
ENABLE_JAVA := yes
endif

42 changes: 25 additions & 17 deletions mk/shared.mk.in
Expand Up @@ -181,28 +181,30 @@ EHCLIB_SHARED := @EHCLIB_SHARED@
###########################################################################################

# compilers and tools used
AGC := @UUAGC_CMD@
GHC := @GHC_CMD@
GHC_VERSION := @GHC_VERSION@
HADDOCK := @HADDOCK_CMD@
HADDOCK_VERSION := @HADDOCK_VERSION@
GCC := @GCC_CMD@
AR := @AR_CMD@
RANLIB := @RANLIB_CMD@
OPEN_FOR_EDIT := bbedit
STRIP := $(STRIP_CMD)
AGC := @UUAGC_CMD@
GHC := @GHC_CMD@
GHC_VERSION := @GHC_VERSION@
HADDOCK := @HADDOCK_CMD@
HADDOCK_VERSION := @HADDOCK_VERSION@
GCC := @GCC_CMD@
AR := @AR_CMD@
RANLIB := @RANLIB_CMD@
OPEN_FOR_EDIT := bbedit
STRIP := $(STRIP_CMD)
JAVAC := @JAVAC_CMD@
JAR := @JAR_CMD@
SHELL_FILTER_NONEMP_FILES := $(BINABS_PREFIX)filterOutEmptyFiles
SHELL_AGDEPEND := $(BINABS_PREFIX)agdepend

# lhs2TeX
LHS2TEX_ENV := $(LHS2TEX)
LHS2TEX_CMD := LHS2TEX=".$(PATHS_SEP)../../$(FMT_SRC_PREFIX)$(PATHS_SEP)$(LHS2TEX_ENV)" lhs2TeX
LHS2TEX_ENV := $(LHS2TEX)
LHS2TEX_CMD := LHS2TEX=".$(PATHS_SEP)../../$(FMT_SRC_PREFIX)$(PATHS_SEP)$(LHS2TEX_ENV)" lhs2TeX

# latex
LATEX_ENV := $(TEXINPUTS)
PDFLATEX := TEXINPUTS=".$(PATHS_SEP_COL)../../$(LATEX_SRC_PREFIX)$(PATHS_SEP_COL)$(LATEX_EHC_SUBDIRS)$(LATEX_ENV)" pdflatex
BIBTEX := BSTINPUTS=".$(PATHS_SEP_COL)../../$(LATEX_SRC_PREFIX)$(PATHS_SEP_COL)$(LATEX_ENV)" BIBINPUTS=".$(PATHS_SEP_COL)../../$(LATEX_SRC_PREFIX)$(LATEX_ENV)" bibtex
MAKEINDEX := makeindex
LATEX_ENV := $(TEXINPUTS)
PDFLATEX := TEXINPUTS=".$(PATHS_SEP_COL)../../$(LATEX_SRC_PREFIX)$(PATHS_SEP_COL)$(LATEX_EHC_SUBDIRS)$(LATEX_ENV)" pdflatex
BIBTEX := BSTINPUTS=".$(PATHS_SEP_COL)../../$(LATEX_SRC_PREFIX)$(PATHS_SEP_COL)$(LATEX_ENV)" BIBINPUTS=".$(PATHS_SEP_COL)../../$(LATEX_SRC_PREFIX)$(LATEX_ENV)" bibtex
MAKEINDEX := makeindex

###########################################################################################
# installation locations for ehc running time, as functions still depending on variant + target
Expand Down Expand Up @@ -248,9 +250,15 @@ FUN_INSTALLABS_FLAG_PREFIX = $(call FUN_INSTALLABS_VARIANT_XXX_PREFIX,$(1),i
# Construction of the name of a library
###########################################################################################

# for a C library
# $1: directory/location prefix
# $2: package name
FUN_MK_LIB_FILENAME = $(1)lib$(2)$(LIB_SUFFIX)
FUN_MK_CLIB_FILENAME = $(1)lib$(2)$(LIB_SUFFIX)

# for a java library
# $1: directory/location prefix
# $2: package name
FUN_MK_JAVALIB_FILENAME = $(1)lib$(2).jar

###########################################################################################
# Regular options to commands, as functions still depending on variant + target
Expand Down

0 comments on commit 761f80a

Please sign in to comment.