| # | |
| # Copyright (c) 2013, 2025, Oracle and/or its affiliates. All rights reserved. | |
| # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
| # | |
| # This code 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. Oracle designates this | |
| # particular file as subject to the "Classpath" exception as provided | |
| # by Oracle in the LICENSE file that accompanied this code. | |
| # | |
| # This code 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 in the LICENSE file that | |
| # accompanied this code). | |
| # | |
| # 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | |
| # or visit www.oracle.com if you need additional information or have any | |
| # questions. | |
| # | |
| ################################################################################ | |
| include MakeIncludeStart.gmk | |
| ifeq ($(INCLUDE), true) | |
| ################################################################################ | |
| # Setup CFLAGS and EXCLUDES for the libjvm compilation, depending on which | |
| # jvm features are selected for this jvm variant. | |
| ################################################################################ | |
| ifeq ($(call check-jvm-feature, compiler1), true) | |
| JVM_CFLAGS_FEATURES += -DCOMPILER1 | |
| else | |
| JVM_EXCLUDE_PATTERNS += c1_ c1/ | |
| endif | |
| ifeq ($(call check-jvm-feature, compiler2), true) | |
| JVM_CFLAGS_FEATURES += -DCOMPILER2 | |
| JVM_SRC_DIRS += $(JVM_VARIANT_OUTPUTDIR)/gensrc/adfiles | |
| else | |
| JVM_EXCLUDES += opto libadt | |
| JVM_EXCLUDE_FILES += bcEscapeAnalyzer.cpp ciTypeFlow.cpp | |
| JVM_EXCLUDE_PATTERNS += c2_ runtime_ /c2/ | |
| endif | |
| ifeq ($(call check-jvm-feature, zero), true) | |
| JVM_EXCLUDES += opto libadt | |
| JVM_EXCLUDE_PATTERNS += c1_ c1/ c2_ runtime_ /c2/ | |
| JVM_EXCLUDE_FILES += templateInterpreter.cpp \ | |
| templateInterpreterGenerator.cpp bcEscapeAnalyzer.cpp ciTypeFlow.cpp | |
| JVM_CFLAGS_FEATURES += -DZERO \ | |
| -DZERO_LIBARCH='"$(OPENJDK_TARGET_CPU_LEGACY_LIB)"' $(LIBFFI_CFLAGS) | |
| JVM_LIBS_FEATURES += $(LIBFFI_LIBS) | |
| ifeq ($(ENABLE_LIBFFI_BUNDLING), true) | |
| JVM_LDFLAGS_FEATURES += $(call SET_EXECUTABLE_ORIGIN,/..) | |
| endif | |
| else | |
| JVM_EXCLUDE_PATTERNS += /zero/ | |
| endif | |
| ifeq ($(JVM_VARIANT), core) | |
| JVM_CFLAGS_FEATURES += -DVMTYPE=\"Core\" | |
| endif | |
| ifeq ($(JVM_VARIANT), custom) | |
| JVM_CFLAGS_FEATURES += -DVMTYPE=\"Custom\" | |
| endif | |
| ifeq ($(call check-jvm-feature, minimal), true) | |
| JVM_CFLAGS_FEATURES += -DMINIMAL_JVM -DVMTYPE=\"Minimal\" | |
| ifeq ($(call isTargetOs, linux), true) | |
| # Override the default -g with a more liberal strip policy for the | |
| # minimal JVM | |
| JVM_STRIPFLAGS := --strip-unneeded | |
| endif | |
| endif | |
| ifeq ($(call check-jvm-feature, dtrace), true) | |
| JVM_CFLAGS_FEATURES += -DDTRACE_ENABLED | |
| endif | |
| ifneq ($(call check-jvm-feature, jvmti), true) | |
| JVM_CFLAGS_FEATURES += -DINCLUDE_JVMTI=0 | |
| JVM_EXCLUDE_FILES += jvmtiGetLoadedClasses.cpp jvmtiThreadState.cpp \ | |
| jvmtiExtensions.cpp jvmtiImpl.cpp jvmtiManageCapabilities.cpp \ | |
| jvmtiRawMonitor.cpp jvmtiUtil.cpp jvmtiTrace.cpp jvmtiCodeBlobEvents.cpp \ | |
| jvmtiEnv.cpp jvmtiRedefineClasses.cpp jvmtiEnvBase.cpp \ | |
| jvmtiEnvThreadState.cpp jvmtiTagMap.cpp jvmtiEventController.cpp \ | |
| evmCompat.cpp jvmtiEnter.xsl jvmtiExport.cpp \ | |
| jvmtiClassFileReconstituter.cpp jvmtiTagMapTable.cpp jvmtiAgent.cpp \ | |
| jvmtiAgentList.cpp jfrJvmtiAgent.cpp | |
| endif | |
| ifneq ($(call check-jvm-feature, jvmci), true) | |
| JVM_CFLAGS_FEATURES += -DINCLUDE_JVMCI=0 | |
| JVM_EXCLUDES += jvmci | |
| JVM_EXCLUDE_FILES += jvmciCodeInstaller_$(HOTSPOT_TARGET_CPU_ARCH).cpp | |
| endif | |
| ifneq ($(call check-jvm-feature, vm-structs), true) | |
| JVM_CFLAGS_FEATURES += -DINCLUDE_VM_STRUCTS=0 | |
| JVM_EXCLUDE_FILES += vmStructs.cpp | |
| endif | |
| ifneq ($(call check-jvm-feature, jni-check), true) | |
| JVM_CFLAGS_FEATURES += -DINCLUDE_JNI_CHECK=0 | |
| JVM_EXCLUDE_FILES += jniCheck.cpp | |
| endif | |
| ifneq ($(call check-jvm-feature, services), true) | |
| JVM_CFLAGS_FEATURES += -DINCLUDE_SERVICES=0 | |
| JVM_EXCLUDE_FILES += heapDumper.cpp heapInspection.cpp \ | |
| attachListener_$(HOTSPOT_TARGET_OS).cpp attachListener.cpp | |
| endif | |
| ifneq ($(call check-jvm-feature, management), true) | |
| JVM_CFLAGS_FEATURES += -DINCLUDE_MANAGEMENT=0 | |
| endif | |
| ifneq ($(call check-jvm-feature, cds), true) | |
| JVM_CFLAGS_FEATURES += -DINCLUDE_CDS=0 | |
| JVM_EXCLUDE_FILES += \ | |
| aotCodeCache.cpp \ | |
| classLoaderDataShared.cpp \ | |
| classLoaderExt.cpp \ | |
| systemDictionaryShared.cpp \ | |
| trainingData.cpp | |
| JVM_EXCLUDE_PATTERNS += cds/ | |
| endif | |
| ifneq ($(call check-jvm-feature, g1gc), true) | |
| JVM_CFLAGS_FEATURES += -DINCLUDE_G1GC=0 | |
| JVM_EXCLUDE_PATTERNS += gc/g1 | |
| endif | |
| ifneq ($(call check-jvm-feature, parallelgc), true) | |
| JVM_CFLAGS_FEATURES += -DINCLUDE_PARALLELGC=0 | |
| JVM_EXCLUDE_PATTERNS += gc/parallel | |
| endif | |
| ifneq ($(call check-jvm-feature, serialgc), true) | |
| JVM_CFLAGS_FEATURES += -DINCLUDE_SERIALGC=0 | |
| JVM_EXCLUDE_PATTERNS += gc/serial | |
| endif | |
| ifneq ($(call check-jvm-feature, epsilongc), true) | |
| JVM_CFLAGS_FEATURES += -DINCLUDE_EPSILONGC=0 | |
| JVM_EXCLUDE_PATTERNS += gc/epsilon | |
| endif | |
| ifneq ($(call check-jvm-feature, zgc), true) | |
| JVM_CFLAGS_FEATURES += -DINCLUDE_ZGC=0 | |
| JVM_EXCLUDE_PATTERNS += gc/z | |
| endif | |
| ifneq ($(call check-jvm-feature, shenandoahgc), true) | |
| JVM_CFLAGS_FEATURES += -DINCLUDE_SHENANDOAHGC=0 | |
| JVM_EXCLUDE_PATTERNS += gc/shenandoah | |
| endif | |
| ifneq ($(call check-jvm-feature, jfr), true) | |
| JVM_CFLAGS_FEATURES += -DINCLUDE_JFR=0 | |
| JVM_EXCLUDE_PATTERNS += jfr | |
| JVM_EXCLUDE_FILES += compilerEvent.cpp | |
| endif | |
| ################################################################################ | |
| ifeq ($(call check-jvm-feature, link-time-opt), true) | |
| # Set JVM_OPTIMIZATION directly so other jvm-feature flags can override it | |
| # later on if desired | |
| JVM_OPTIMIZATION := HIGHEST_JVM | |
| ifeq ($(call isCompiler, gcc), true) | |
| JVM_CFLAGS_FEATURES += -flto=auto -fuse-linker-plugin -fno-strict-aliasing \ | |
| -fno-fat-lto-objects | |
| JVM_LDFLAGS_FEATURES += $(CXX_O_FLAG_HIGHEST_JVM) -flto=auto \ | |
| -fuse-linker-plugin -fno-strict-aliasing | |
| else ifeq ($(call isCompiler, clang), true) | |
| JVM_CFLAGS_FEATURES += -flto -fno-strict-aliasing | |
| ifeq ($(call isBuildOs, aix), true) | |
| JVM_CFLAGS_FEATURES += -ffat-lto-objects | |
| endif | |
| JVM_LDFLAGS_FEATURES += $(CXX_O_FLAG_HIGHEST_JVM) -flto -fno-strict-aliasing | |
| else ifeq ($(call isCompiler, microsoft), true) | |
| JVM_CFLAGS_FEATURES += -GL | |
| JVM_LDFLAGS_FEATURES += -LTCG:INCREMENTAL | |
| endif | |
| else | |
| ifeq ($(call isCompiler, gcc), true) | |
| JVM_LDFLAGS_FEATURES += -O1 | |
| endif | |
| endif | |
| ifeq ($(call check-jvm-feature, opt-size), true) | |
| JVM_OPTIMIZATION := SIZE | |
| OPT_SPEED_SRC := \ | |
| allocation.cpp \ | |
| assembler.cpp \ | |
| barrierSet.cpp \ | |
| basicLock.cpp \ | |
| bytecode.cpp \ | |
| bytecodeInterpreter.cpp \ | |
| c1_Compilation.cpp \ | |
| c1_Compiler.cpp \ | |
| c1_GraphBuilder.cpp \ | |
| c1_LinearScan.cpp \ | |
| c1_LIR.cpp \ | |
| ciEnv.cpp \ | |
| ciObjectFactory.cpp \ | |
| codeBlob.cpp \ | |
| constantPool.cpp \ | |
| constMethod.cpp \ | |
| classLoader.cpp \ | |
| classLoaderData.cpp \ | |
| classFileParser.cpp \ | |
| classFileStream.cpp \ | |
| cpCache.cpp \ | |
| defNewGeneration.cpp \ | |
| frame_arm.cpp \ | |
| frame_aarch64.cpp \ | |
| frame_ppc.cpp \ | |
| frame_s390.cpp \ | |
| frame_x86.cpp \ | |
| generation.cpp \ | |
| growableArray.cpp \ | |
| handles.cpp \ | |
| heap.cpp \ | |
| icache.cpp \ | |
| icache_arm.cpp \ | |
| icache_aarch64.cpp \ | |
| icache_ppc.cpp \ | |
| icache_s390.cpp \ | |
| icache_x86.cpp \ | |
| instanceKlass.cpp \ | |
| invocationCounter.cpp \ | |
| iterator.cpp \ | |
| javaCalls.cpp \ | |
| javaClasses.cpp \ | |
| jniFastGetField_arm.cpp \ | |
| jvm.cpp \ | |
| linkResolver.cpp \ | |
| klass.cpp \ | |
| klassVtable.cpp \ | |
| memRegion.cpp \ | |
| memoryPool.cpp \ | |
| method.cpp \ | |
| methodHandles.cpp \ | |
| methodHandles_arm.cpp \ | |
| methodLiveness.cpp \ | |
| metaspace.cpp \ | |
| mutex.cpp \ | |
| mutexLocker.cpp \ | |
| nativeLookup.cpp \ | |
| objArrayKlass.cpp \ | |
| os_linux.cpp \ | |
| os_linux_arm.cpp \ | |
| resourceArea.cpp \ | |
| rewriter.cpp \ | |
| sharedRuntime.cpp \ | |
| signature.cpp \ | |
| space.cpp \ | |
| stackMapTable.cpp \ | |
| symbolTable.cpp \ | |
| systemDictionary.cpp \ | |
| symbol.cpp \ | |
| synchronizer.cpp \ | |
| timer.cpp \ | |
| typeArrayKlass.cpp \ | |
| unsafe.cpp \ | |
| utf8.cpp \ | |
| vmSymbols.cpp \ | |
| # | |
| $(foreach s, $(OPT_SPEED_SRC), \ | |
| $(eval BUILD_LIBJVM_$s_OPTIMIZATION := HIGHEST_JVM)) | |
| ifneq ($(filter $(TOOLCHAIN_TYPE), gcc clang), ) | |
| BUILD_LIBJVM_systemDictionary.cpp_CXXFLAGS := -fno-optimize-sibling-calls | |
| endif | |
| endif | |
| ################################################################################ | |
| endif # include guard | |
| include MakeIncludeEnd.gmk |