Wed, 14 Oct 2020 17:44:48 +0800
Merge
never@3156 | 1 | # |
sla@5237 | 2 | # Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. |
never@3156 | 3 | # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
never@3156 | 4 | # |
never@3156 | 5 | # This code is free software; you can redistribute it and/or modify it |
never@3156 | 6 | # under the terms of the GNU General Public License version 2 only, as |
never@3156 | 7 | # published by the Free Software Foundation. |
never@3156 | 8 | # |
never@3156 | 9 | # This code is distributed in the hope that it will be useful, but WITHOUT |
never@3156 | 10 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
never@3156 | 11 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
never@3156 | 12 | # version 2 for more details (a copy is included in the LICENSE file that |
never@3156 | 13 | # accompanied this code). |
never@3156 | 14 | # |
never@3156 | 15 | # You should have received a copy of the GNU General Public License version |
never@3156 | 16 | # 2 along with this work; if not, write to the Free Software Foundation, |
never@3156 | 17 | # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
never@3156 | 18 | # |
never@3156 | 19 | # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
never@3156 | 20 | # or visit www.oracle.com if you need additional information or have any |
never@3156 | 21 | # questions. |
never@3156 | 22 | # |
never@3156 | 23 | # |
never@3156 | 24 | |
never@3156 | 25 | # top.make is included in the Makefile in the build directories. |
never@3156 | 26 | # It DOES NOT include the vm dependency info in order to be faster. |
never@3156 | 27 | # Its main job is to implement the incremental form of make lists. |
never@3156 | 28 | # It also: |
never@3156 | 29 | # -builds and runs adlc via adlc.make |
never@3156 | 30 | # -generates JVMTI source and docs via jvmti.make (JSR-163) |
never@3156 | 31 | # -generate sa-jdi.jar (JDI binding to core files) |
never@3156 | 32 | |
never@3156 | 33 | # It assumes the following flags are set: |
never@3156 | 34 | # CFLAGS Platform_file, Src_Dirs_I, Src_Dirs_V, SYSDEFS, AOUT, Obj_Files |
never@3156 | 35 | |
never@3156 | 36 | # -- D. Ungar (5/97) from a file by Bill Bush |
never@3156 | 37 | |
never@3156 | 38 | # Don't override the built-in $(MAKE). |
never@3156 | 39 | # Instead, use "gmake" (or "gnumake") from the command line. --Rose |
never@3156 | 40 | #MAKE = gmake |
never@3156 | 41 | |
never@3156 | 42 | include $(GAMMADIR)/make/altsrc.make |
never@3156 | 43 | |
never@3156 | 44 | TOPDIR = $(shell echo `pwd`) |
never@3156 | 45 | GENERATED = $(TOPDIR)/../generated |
never@3156 | 46 | VM = $(GAMMADIR)/src/share/vm |
never@3156 | 47 | Plat_File = $(Platform_file) |
never@3156 | 48 | CDG = cd $(GENERATED); |
never@3156 | 49 | |
stefank@3325 | 50 | ifneq ($(USE_PRECOMPILED_HEADER),0) |
stefank@3325 | 51 | UpdatePCH = $(MAKE) -f vm.make $(PRECOMPILED_HEADER) $(MFLAGS) |
never@3156 | 52 | else |
stefank@3325 | 53 | UpdatePCH = \# precompiled header is not used |
never@3156 | 54 | endif |
never@3156 | 55 | |
never@3156 | 56 | Cached_plat = $(GENERATED)/platform.current |
never@3156 | 57 | |
never@3156 | 58 | AD_Dir = $(GENERATED)/adfiles |
never@3156 | 59 | ADLC = $(AD_Dir)/adlc |
never@3156 | 60 | AD_Spec = $(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(Platform_arch)/vm/$(Platform_arch_model).ad) |
never@3156 | 61 | AD_Src = $(call altsrc-replace,$(HS_COMMON_SRC)/share/vm/adlc) |
never@3156 | 62 | AD_Names = ad_$(Platform_arch_model).hpp ad_$(Platform_arch_model).cpp |
never@3156 | 63 | AD_Files = $(AD_Names:%=$(AD_Dir)/%) |
never@3156 | 64 | |
never@3156 | 65 | # AD_Files_If_Required/COMPILER1 = ad_stuff |
never@3156 | 66 | AD_Files_If_Required/COMPILER2 = ad_stuff |
never@3156 | 67 | AD_Files_If_Required/TIERED = ad_stuff |
never@3156 | 68 | AD_Files_If_Required = $(AD_Files_If_Required/$(TYPE)) |
never@3156 | 69 | |
never@3156 | 70 | # Wierd argument adjustment for "gnumake -j..." |
never@3156 | 71 | adjust-mflags = $(GENERATED)/adjust-mflags |
never@3156 | 72 | MFLAGS-adjusted = -r `$(adjust-mflags) "$(MFLAGS)" "$(HOTSPOT_BUILD_JOBS)"` |
never@3156 | 73 | |
never@3156 | 74 | |
never@3156 | 75 | # default target: update lists, make vm |
never@3156 | 76 | # done in stages to force sequential order with parallel make |
never@3156 | 77 | # |
never@3156 | 78 | |
never@3156 | 79 | default: vm_build_preliminaries the_vm |
never@3156 | 80 | @echo All done. |
never@3156 | 81 | |
never@3156 | 82 | # This is an explicit dependency for the sake of parallel makes. |
apetushkov@9858 | 83 | vm_build_preliminaries: checks $(Cached_plat) $(AD_Files_If_Required) jvmti_stuff jfr_stuff sa_stuff dtrace_stuff |
never@3156 | 84 | @# We need a null action here, so implicit rules don't get consulted. |
never@3156 | 85 | |
never@3156 | 86 | $(Cached_plat): $(Plat_File) |
never@3156 | 87 | $(CDG) cp $(Plat_File) $(Cached_plat) |
never@3156 | 88 | |
never@3156 | 89 | # make AD files as necessary |
never@3156 | 90 | ad_stuff: $(Cached_plat) $(adjust-mflags) |
never@3156 | 91 | @$(MAKE) -f adlc.make $(MFLAGS-adjusted) |
never@3156 | 92 | |
never@3156 | 93 | # generate JVMTI files from the spec |
never@3156 | 94 | jvmti_stuff: $(Cached_plat) $(adjust-mflags) |
never@3156 | 95 | @$(MAKE) -f jvmti.make $(MFLAGS-adjusted) |
never@3156 | 96 | |
apetushkov@9858 | 97 | # generate JFR files |
apetushkov@9858 | 98 | jfr_stuff: $(Cached_plat) $(adjust-mflags) |
apetushkov@9858 | 99 | @$(MAKE) -f jfr.make $(MFLAGS-adjusted) |
sla@5237 | 100 | |
dcubed@3202 | 101 | ifeq ($(OS_VENDOR), Darwin) |
dcubed@3202 | 102 | # generate dtrace header files |
dcubed@3202 | 103 | dtrace_stuff: $(Cached_plat) $(adjust-mflags) |
dcubed@3202 | 104 | @$(MAKE) -f dtrace.make dtrace_stuff $(MFLAGS-adjusted) GENERATED=$(GENERATED) |
dcubed@3202 | 105 | else |
dcubed@3202 | 106 | dtrace_stuff: |
dcubed@3202 | 107 | @# We need a null action here, so implicit rules don't get consulted. |
dcubed@3202 | 108 | endif |
dcubed@3202 | 109 | |
never@3156 | 110 | # generate SA jar files and native header |
never@3156 | 111 | sa_stuff: |
never@3156 | 112 | @$(MAKE) -f sa.make $(MFLAGS-adjusted) |
never@3156 | 113 | |
never@3156 | 114 | # and the VM: must use other makefile with dependencies included |
never@3156 | 115 | |
never@3156 | 116 | # We have to go to great lengths to get control over the -jN argument |
never@3156 | 117 | # to the recursive invocation of vm.make. The problem is that gnumake |
never@3156 | 118 | # resets -jN to -j1 for recursive runs. (How helpful.) |
never@3156 | 119 | # Note that the user must specify the desired parallelism level via a |
never@3156 | 120 | # command-line or environment variable name HOTSPOT_BUILD_JOBS. |
never@3156 | 121 | $(adjust-mflags): $(GAMMADIR)/make/$(Platform_os_family)/makefiles/adjust-mflags.sh |
never@3156 | 122 | @+rm -f $@ $@+ |
never@3156 | 123 | @+cat $< > $@+ |
never@3156 | 124 | @+chmod +x $@+ |
never@3156 | 125 | @+mv $@+ $@ |
never@3156 | 126 | |
never@3156 | 127 | the_vm: vm_build_preliminaries $(adjust-mflags) |
never@3156 | 128 | @$(UpdatePCH) |
never@3156 | 129 | @$(MAKE) -f vm.make $(MFLAGS-adjusted) |
never@3156 | 130 | |
twisti@3567 | 131 | install gamma: the_vm |
twisti@3567 | 132 | @$(MAKE) -f vm.make $@ |
never@3156 | 133 | |
never@3156 | 134 | # next rules support "make foo.[ois]" |
never@3156 | 135 | |
never@3156 | 136 | %.o %.i %.s: |
never@3156 | 137 | $(UpdatePCH) |
never@3156 | 138 | $(MAKE) -f vm.make $(MFLAGS) $@ |
never@3156 | 139 | #$(MAKE) -f vm.make $@ |
never@3156 | 140 | |
never@3156 | 141 | # this should force everything to be rebuilt |
never@3156 | 142 | clean: |
never@3156 | 143 | rm -f $(GENERATED)/*.class |
never@3156 | 144 | $(MAKE) -f vm.make $(MFLAGS) clean |
never@3156 | 145 | |
never@3156 | 146 | # just in case it doesn't, this should do it |
never@3156 | 147 | realclean: |
never@3156 | 148 | $(MAKE) -f vm.make $(MFLAGS) clean |
never@3156 | 149 | rm -fr $(GENERATED) |
never@3156 | 150 | |
never@3156 | 151 | .PHONY: default vm_build_preliminaries |
never@3156 | 152 | .PHONY: lists ad_stuff jvmti_stuff sa_stuff the_vm clean realclean |
never@3156 | 153 | .PHONY: checks check_os_version install |