## * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ## * This file is part of SableJIT. * ## * See the file "LICENSE.JIT" for Copyright information and * ## * the terms and conditions for copying, distribution and * ## * modification of SableJIT. * ## * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * SUBDIRS=src LIBS=build_classes MAKEFILE_JAVA_SRCS=Makefile.java_srcs sinclude ${MAKEFILE_JAVA_SRCS} include Makefile.config include Makefile.common JAVATESTCMD_ALL=${SABLEVM_BIN} ${JAVA_LIBRARY} \ ${JAVA_CP_OPTION} ${JAVA_CLASSPATH} \ ${JAVA_OTHER_OPTIONS} \ -p sablevm.jit.compile.include="${LIBINCLUDE}" \ -p sablevm.jit.compile.exclude="${LIBEXCLUDE}" \ ${RECOMPILE_EXCLUDE_COMMON} .PHONY: dist doc version # # make test [TESTNAMES="list of tests"] # test: all ${JAVATESTCMD_ALL} \ sablejit.SableJITClassLoader run sablejit.TestAll ${TESTNAMES} # Package a distribution # not sure if useful... #dist: # ./makedist.sh # javadoc-related variables DOCDEST=doc ARCHDOCLISTS=arch_ppc.list arch_x86-linux.list arch_sparc-solaris.list DOCLISTS=base.list ${ARCHDOCLISTS} test.list # javadoc # # Need to depend on all as we need to make the automatically generated # Java files. # # TODO: Reimplement without using xargs. xargs may exec several times if # there are too many arguments. # doc: all mkdir -p ${DOCDEST} (cd src && ((for f in `cat ${DOCLISTS}`; do echo "`dirname $$f`/`basename $$f .class`.java"; done) | grep -v '\$$' | xargs javadoc -classpath .:${JUNIT_CLASSPATH} -d ../doc)) # Prints SableJIT version info version: ${SABLEVM_BIN} --version ${SABLEVM_BIN} -Y sablejit.SableJITClassLoader config # # Default install/uninstall rule: jar, jar with test, dir (with tests) # # Targets: # # install # uninstall # # install_jar # install_jar_test # uninstall_jar (works for both non-test/test) # # install_dir # uninstall_dir # # default is jar with test install: install_jar_test uninstall: uninstall_jar install_jar: install_classloader install_sablejit_jar install_jar_test: install_classloader install_sablejit_jar_test install_dir: install_classloader install_sablejit_dir uninstall_jar: uninstall_classloader uninstall_sablejit_jar uninstall_dir: uninstall_classloader uninstall_sablejit_dir ### class loader install/uninstall ### # # SableJITClassLoader must be installed outside the jar in the # bootstrap directory, it cannot load itself... # CL_LOCATION=${SABLEVM_DATADIR}/sablevm-classpath/sablejit install_classloader: build_classes install -d ${CL_LOCATION} install -m 644 classes/sablejit/SableJITClassLoader.class ${CL_LOCATION} uninstall_classloader: rm -f ${CL_LOCATION}/SableJITClassLoader.class -rmdir ${CL_LOCATION} ### sablejit.jar ### install_sablejit_jar: tojar.list sablejit_jar install -m 644 sablejit.jar ${SABLEVM_LIBDIR} install_sablejit_jar_test: tojartest.list sablejit_jar_test install -m 644 sablejit.jar ${SABLEVM_LIBDIR} uninstall_sablejit_jar: rm -f ${SABLEVM_LIBDIR}/sablejit.jar LIST_NO_TEST = src/base.list src/arch.list LIST_TEST = ${LIST_NO_TEST} src/test.list tojar.list: ${LIST_NO_TEST} cat $^ > $@ tojartest.list: ${LIST_TEST} cat $^ > $@ # # Note: fastjar does not currently support @filelist, so we cat the # file content. # sablejit_jar: build_classes (cd classes && jar -cvf ../sablejit.jar `cat ../tojar.list`) sablejit_jar_test: build_classes (cd classes && jar -cvf ../sablejit.jar `cat ../tojartest.list`) install_sablejit_dir: tojartestlist build_classes for f in `cat tojar.list` ; do \ install -d ${SABLEVM_LIBDIR}/`dirname $$f`; \ install -m 644 classes/$$f ${SABLEVM_LIBDIR}/`dirname $$f`; \ done uninstall_sablejit_dir: rm -rf ${SABLEVM_LIBDIR}/sablejit src/arch.list: src/arch_${SABLEJIT_PLATFORM}.list (cd src/${CLASSES_DIR} && \ ln -sf arch_${SABLEJIT_PLATFORM}.list arch.list) src/arch_ppc-sysv.list: (cd src/${CLASSES_DIR} && ln -s arch_ppc.list arch_ppc-sysv.list) src/arch_ppc-macosx.list: (cd src/${CLASSES_DIR} && ln -s arch_ppc.list arch_ppc-macosx.list) .PHONY: genclasses ${MAKEFILE_JAVA_SRCS}: genclasses genclasses: expandm4java rm -f ${MAKEFILE_JAVA_SRCS} echo "JAVA_SRCS = \\" >> ${MAKEFILE_JAVA_SRCS} find . -name '*.java' | grep -v '\.m4\.java$$' | xargs -l1 -i echo "{} \\" >> ${MAKEFILE_JAVA_SRCS} #src/sablejit/AbstractIRBuilder.java: # (cd src/sablejit && make AbstractIRBuilder.java) build_classes: ${JAVA_SRCS} #echo "----------------------" #echo ${JAVA_SRCS} #echo "----------------------" mkdir -p classes (cd src && \ find . -name '*.java' | grep -v '\.m4\.java$$' > compile.list && \ ${JAVAC} -d ../classes ${JAVAC_CP_OPTION} ${JAVAC_CLASSPATH} ${JAVAC_OTHER_OPTIONS} @compile.list) touch build_classes DIST_DOCS= \ COPYING.LIB \ LICENSE.JIT \ NEWS \ README \ VERSION DIST_DEST=dist dist: clean rm -rf ${DIST_DEST} mkdir -p ${DIST_DEST}{,/bin,/src,/src/macros} cp ${DIST_DOCS} ${DIST_DEST} cp bin/mktemplate.pl ${DIST_DEST}/bin cp Makefile.{common,config.in} ${DIST_DEST} for f in Makefile `find . -name Makefile` ; do \ mkdir -p ${DIST_DEST}/`dirname $$f` ; \ cp $$f ${DIST_DEST}/`dirname $$f` ; \ done for f in src/sablejit/AutoConfiguration.java.in `find src -name '*.java' | grep -v AutoConfiguration` ; do \ cp $$f ${DIST_DEST}/`dirname $$f` ; \ done for f in base test arch_ppc arch_x86-linux arch_sparc-solaris ; do \ cp src/$$f.list ${DIST_DEST}/src ; \ done cp src/macros/{sj,svm}_macros.m4 ${DIST_DEST}/src/macros cp src/sablejit/gen{AbstractIRBuilder,sablevmconstants}.pl ${DIST_DEST}/src/sablejit cp src/sablejit/arch/{glue.c,sablejit_arch_Glue.h} ${DIST_DEST}/src/sablejit/arch VER=`svn info | grep '^Revision: ' | awk '{ print $$2 }'` ; \ mkdir -p ${DIST_DEST}/sablejit-staging+$${VER} ; \ mv ${DIST_DEST}/* ${DIST_DEST}/sablejit-staging+$${VER} ; \ tar -C ${DIST_DEST} -cvf sablejit-stating+$${VER}.tar.gz . cleanlocal: rm -f build_classes rm -rf classes rm -f tojar{,test}.list rm -f ${MAKEFILE_JAVA_SRCS}