jcc.mk

来自「This is a resource based on j2me embedde」· MK 代码 · 共 262 行

MK
262
字号
## Copyright  1990-2008 Sun Microsystems, Inc. All Rights Reserved.  # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER  #   # This program is free software; you can redistribute it and/or  # modify it under the terms of the GNU General Public License version  # 2 only, as published by the Free Software Foundation.   #   # This program is distributed in the hope that it will be useful, but  # WITHOUT ANY WARRANTY; without even the implied warranty of  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU  # General Public License version 2 for more details (a copy is  # included at /legal/license.txt).   #   # You should have received a copy of the GNU General Public License  # version 2 along with this work; if not, write to the Free Software  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  # 02110-1301 USA   #   # Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa  # Clara, CA 95054 or visit www.sun.com if you need additional  # information or have any questions. ## @(#)jcc.mk	1.116 06/10/27### Makefile for building JavaCodeCompact(tm) and romjava.c###################### Exported variables##################### this is exported for the cleanjcc ruleCVM_JCC_CLASSPATH	= $(CVM_BUILD_TOP)/classes.jcc#CVM_ROMJAVA_O 		= romjava.oCVM_ROMJAVA_O 		= libromjava.aCVM_ROMJAVA_CPATTERN	= $(CVM_DERIVEDROOT)/javavm/runtime/romjavaCVM_ROMJAVA_LIST   	= $(CVM_ROMJAVA_CPATTERN)ListCVM_ROMJAVA_CLASSES_PER_FILE = 400CVM_BUILDDIRS	+= $(CVM_JCC_CLASSPATH)################## Local variables#################CVM_JCC_SRCPATH	= $(CVM_TOP)/src/share/javavm/jcc############################################### We have a big set of files derived from # opcodes.list.##############################################CVM_GENOPCODE_DEPEND	= $(CVM_JCC_CLASSPATH)/GenOpcodes.classCVM_OPCODE_LIST		= $(CVM_SHAREROOT)/javavm/include/opcodes.listCVM_GENOPCODE_TARGETS	= \	$(CVM_DERIVEDROOT)/javavm/include/gen_opcodes.h \	$(CVM_DERIVEDROOT)/javavm/runtime/gen_opcodes.c \	$(CVM_DERIVEDROOT)/javavm/runtime/bcattr.c \	$(CVM_DERIVEDROOT)/javavm/runtime/opcodelen.c \	$(CVM_DERIVEDROOT)/javavm/include/opcodeLabels.h \	$(CVM_DERIVEDROOT)/javavm/include/opcodeSimplification.h \	$(CVM_DERIVEDROOT)/javavm/runtime/opcodeconsts/OpcodeConst.javaifeq ($(CVM_JIT), true)CVM_GENOPCODE_TARGETS	+= \	$(CVM_DERIVEDROOT)/javavm/runtime/jit/jitopcodemap.cCVM_JITOPCODEMAP	 = \	-opcodeMap $(CVM_DERIVEDROOT)/javavm/runtime/jit/jitopcodemap.cendif$(CVM_GENOPCODE_TARGETS): $(CVM_OPCODE_LIST) $(CVM_GENOPCODE_DEPEND)	@echo ... $(CVM_OPCODE_LIST)	$(AT)export CLASSPATH; \	CLASSPATH=$(CVM_JCC_CLASSPATH); \	$(CVM_JAVA) GenOpcodes $(CVM_OPCODE_LIST) \	    -h $(CVM_DERIVEDROOT)/javavm/include/gen_opcodes.h \	    -c $(CVM_DERIVEDROOT)/javavm/runtime/gen_opcodes.c \	    -bcAttr $(CVM_DERIVEDROOT)/javavm/runtime/bcattr.c \	    -opcodeLengths $(CVM_DERIVEDROOT)/javavm/runtime/opcodelen.c \	    $(CVM_JITOPCODEMAP) \	    -label $(CVM_DERIVEDROOT)/javavm/include/opcodeLabels.h \	    -javaConst $(CVM_DERIVEDROOT)/javavm/runtime/opcodeconsts/OpcodeConst.java \	    -simplification $(CVM_DERIVEDROOT)/javavm/include/opcodeSimplification.h$(CVM_GENOPCODE_DEPEND) :: $(CVM_JCC_CLASSPATH)$(CVM_GENOPCODE_DEPEND) :: $(CVM_JCC_SRCPATH)/GenOpcodes.java \		 $(CVM_JCC_SRCPATH)/text/*.java \		 $(CVM_JCC_SRCPATH)/util/*.java \		 $(CVM_JCC_SRCPATH)/JCCMessage.properties	@echo "... $@"	$(AT)CLASSPATH=$(CVM_JCC_SRCPATH); export CLASSPATH; \	$(CVM_JAVAC) $(JAVAC_OPTIONS) -d $(CVM_JCC_CLASSPATH) \	    $(subst /,$(CVM_FILESEP),$(CVM_JCC_SRCPATH)/GenOpcodes.java)	$(AT)rm -f $(CVM_JCC_CLASSPATH)/JCCMessage.properties; \	cp $(CVM_JCC_SRCPATH)/JCCMessage.properties $(CVM_JCC_CLASSPATH)/JCCMessage.propertiesCVM_JCC_DEPEND	= $(CVM_JCC_CLASSPATH)/JavaCodeCompact.class## Set JCC_EXCLUDES to something like "-excludeFile <path_to_file>" if you# want to exclude a list of classes from romization.#JCC_EXCLUDES +=# #  At this time, all natives would be JNI,#  and we are ROM only -- no impure constant pools allowed,#  so no constant-pool type-table required.# # NOTE: CVM_PROFILE_JCC_OPTIONS are for JCC options that the profile specific#       makefiles may wish to add (e.g. profile specific classpaths).  It can#       be left empty (i.e. undefined) if the profile does not have any options#       to add.#CVM_GENERATE_OFFSETS	= $(patsubst %,-extraHeaders CVMOffsets %,$(CVM_OFFSETS_CLASSES))CVM_GENERATE_NATIVES	= $(patsubst %,-nativesType CNI %,$(CVM_CNI_CLASSES))ifeq ($(CVM_JIT), true)CVM_JCC_OPTIONS = -jitendifCVM_JCC_OPTIONS += \		  $(CVM_GENERATE_NATIVES) \		  -nativesType JNI "-*" \		  -headersDir CNI $(CVM_DERIVEDROOT)/cni \		  -headersDir JNI $(CVM_DERIVEDROOT)/jni \		  -headersDir CVMOffsets $(CVM_DERIVEDROOT)/offsets \		  $(JCC_EXCLUDES) \		  $(CVM_PROFILE_JCC_OPTIONS) \	          $(CVM_GENERATE_OFFSETS)ifeq ($(CVM_JVMTI_ROM), true)	override CVM_LOSSLESS_OPCODES = trueendififeq ($(CVM_JVMPI_TRACE_INSTRUCTION), true)	override CVM_LOSSLESS_OPCODES = trueendififeq ($(CVM_LOSSLESS_OPCODES), true)CVM_JCC_OPTIONS += -qlosslessendififneq ($(CVM_CLASSLOADING), true)CVM_JCC_OPTIONS += -imageAttribute noClassLoadingendififeq ($(CVM_NO_CODE_COMPACTION), true)CVM_JCC_OPTIONS += -noCodeCompactionelseCVM_JCC_OPTIONS += -sharedCPendifCVM_JCC_INPUT += $(CVM_BUILDTIME_CLASSESZIP)## For purposes of this workspace, ROMize the kBench benchmarks, right# out of the jar file#ifeq ($(CVM_PRELOAD_TEST), true)CVM_JCC_CL_INPUT += -cl:sysCVM_JCC_CL_INPUT += $(KBENCH_JAR)CVM_JCC_CL_INPUT += $(CVM_TEST_CLASSESZIP)endififeq ($(CVM_DEBUG_CLASSINFO), true)CVM_JCC_OPTIONS += -gendif# Allow breakpoints in ROMized codeifeq ($(CVM_JVMTI_ROM), true)CVM_JCC_OPTIONS += -imageAttribute noPureCodeendififeq ($(CVM_ALLOW_UNRESOLVED), true)CVM_JCC_OPTIONS += -allowUnresolvedendif############ romjava.c files###########CVM_JCC_INPUT_FILES = $(filter-out -%,$(CVM_JCC_INPUT))$(CVM_ROMJAVA_LIST): $(CVM_JCC_INPUT_FILES) $(CVM_JCC_DEPEND)	@echo "jcc romjava.c files"	$(AT)$(CVM_JAVA) -cp $(CVM_JCC_CLASSPATH) -Xmx256m JavaCodeCompact \		$(CVM_JCC_OPTIONS) \		-maxSegmentSize $(CVM_ROMJAVA_CLASSES_PER_FILE) \		-o $(CVM_ROMJAVA_CPATTERN) \		$(call POSIX2HOST,$(CVM_JCC_INPUT)) \		$(CVM_JCC_CL_INPUT) $(CVM_JCC_APILISTER_OPTIONS)############ romjava.o  is made by compiling all the .c files and linking the result############# How to get from a list of C files to a single ROMJAVA_O## 1) make CVM_ROMJAVA_O depend on CVM_ROMJAVA_LIST, which contains#    a list of all the C files created by a JCC run (when segmenting#    output file).# 2) Convert the contents of CVM_ROMJAVA_LIST to CVM_ROMJAVA_LIST_O,#    a list of object files needed to create ROMJAVA_O.# 3) Recursively call make to compile the object files in CVM_ROMJAVA_LIST_O# 4) Link files in CVM_ROMJAVA_LIST_O to create ROMJAVA_O.## Build list of romjava object files from the list of C files generated by JCC.CVM_ROMJAVA_LIST_C = $(shell cat $(CVM_ROMJAVA_LIST))CVM_ROMJAVA_LIST_C_NODIR = $(notdir $(CVM_ROMJAVA_LIST_C))CVM_ROMJAVA_LIST_O = $(patsubst %.c,$(CVM_OBJDIR)/%.o,$(CVM_ROMJAVA_LIST_C_NODIR))$(CVM_OBJDIR)/$(CVM_ROMJAVA_O): $(CVM_ROMJAVA_LIST) \		$(CVM_TOP)/src/share/javavm/include/defs.h \		$(CVM_TOP)/src/share/javavm/include/objects.h \		$(CVM_TOP)/src/share/javavm/include/classes.h \		$(CVM_TOP)/src/share/javavm/include/interpreter.h \		$(CVM_TOP)/src/share/javavm/include/jni_impl.h \		$(CVM_TOP)/src/share/javavm/include/typeid.h \		$(CVM_TOP)/src/share/javavm/include/typeid_impl.h \		$(CVM_TOP)/src/share/javavm/include/string_impl.h \		$(CVM_TOP)/src/share/javavm/include/preloader_impl.h \		$(CVM_TOP)/src/share/javavm/include/porting/endianness.h	$(AT)$(MAKE) $(MAKE_NO_PRINT_DIRECTORY) $(CVM_ROMJAVA_LIST_O)	$(AT)echo Linking $@	$(AT)$(call TARGET_AR_CREATE,$@) $(call POSIX2HOST,$(CVM_ROMJAVA_LIST_O))	$(AT)$(call TARGET_AR_UPDATE,$@)################## JavaCodeCompact#################CVM_JCC_CLASSES0 = \	JavaCodeCompact.java \	runtime/CVMOffsetsHeader.java \	runtime/CNIHeader.java \	runtime/JNIHeader.java \	runtime/CVMWriter.javaCVM_JCC_CLASSES1 = $(patsubst %,$(CVM_JCC_SRCPATH)/%,$(CVM_JCC_CLASSES0))CVM_JCC_CLASSES  = $(subst /,$(CVM_FILESEP),$(CVM_JCC_CLASSES1))$(CVM_JCC_DEPEND) :: $(CVM_JCC_CLASSPATH)$(CVM_JCC_DEPEND) :: $(CVM_DERIVEDROOT)/javavm/runtime/opcodeconsts/OpcodeConst.java$(CVM_JCC_DEPEND) :: $(CVM_JCC_SRCPATH)/JavaCodeCompact.java \		 $(CVM_JCC_SRCPATH)/components/*.java \		 $(CVM_JCC_SRCPATH)/dependenceAnalyzer/*.java \		 $(CVM_JCC_SRCPATH)/jcc/*.java \		 $(CVM_JCC_SRCPATH)/runtime/*.java \		 $(CVM_JCC_SRCPATH)/text/*.java \		 $(CVM_JCC_SRCPATH)/util/*.java \		 $(CVM_JCC_SRCPATH)/vm/*.java \		 $(CVM_JCC_SRCPATH)/JCCMessage.properties	@echo "... $@"	@CLASSPATH=$(CVM_JCC_CLASSPATH)$(PS)$(CVM_JCC_SRCPATH)$(PS)$(CVM_DERIVEDROOT)/javavm/runtime; export CLASSPATH; \	$(CVM_JAVAC) $(JAVAC_OPTIONS) -d $(CVM_JCC_CLASSPATH) \	    $(CVM_JCC_CLASSES)	@rm -f $(CVM_JCC_CLASSPATH)/JCCMessage.properties; \	cp $(CVM_JCC_SRCPATH)/JCCMessage.properties $(CVM_JCC_CLASSPATH)/JCCMessage.properties

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?