Thu, 23 Oct 2008 10:13:01 -0700
Added tag jdk7-b38 for changeset d9bc824aa078
duke@435 | 1 | # |
xdono@631 | 2 | # Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. |
duke@435 | 3 | # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
duke@435 | 4 | # |
duke@435 | 5 | # This code is free software; you can redistribute it and/or modify it |
duke@435 | 6 | # under the terms of the GNU General Public License version 2 only, as |
duke@435 | 7 | # published by the Free Software Foundation. |
duke@435 | 8 | # |
duke@435 | 9 | # This code is distributed in the hope that it will be useful, but WITHOUT |
duke@435 | 10 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
duke@435 | 11 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
duke@435 | 12 | # version 2 for more details (a copy is included in the LICENSE file that |
duke@435 | 13 | # accompanied this code). |
duke@435 | 14 | # |
duke@435 | 15 | # You should have received a copy of the GNU General Public License version |
duke@435 | 16 | # 2 along with this work; if not, write to the Free Software Foundation, |
duke@435 | 17 | # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
duke@435 | 18 | # |
duke@435 | 19 | # Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, |
duke@435 | 20 | # CA 95054 USA or visit www.sun.com if you need additional information or |
duke@435 | 21 | # have any questions. |
duke@435 | 22 | # |
duke@435 | 23 | # |
duke@435 | 24 | |
duke@435 | 25 | # top.make is included in the Makefile in the build directories. |
duke@435 | 26 | # It DOES NOT include the vm dependency info in order to be faster. |
duke@435 | 27 | # It's main job is to implement the incremental form of make lists. |
duke@435 | 28 | # It also: |
duke@435 | 29 | # -builds and runs adlc via adlc.make |
duke@435 | 30 | # -generates JVMTI source and docs via jvmti.make (JSR-163) |
duke@435 | 31 | # -generate sa-jdi.jar (JDI binding to core files) |
duke@435 | 32 | |
duke@435 | 33 | # It assumes the following flags are set: |
duke@435 | 34 | # CFLAGS Platform_file, Src_Dirs, SYSDEFS, AOUT, Obj_Files |
duke@435 | 35 | |
duke@435 | 36 | # -- D. Ungar (5/97) from a file by Bill Bush |
duke@435 | 37 | |
duke@435 | 38 | # Don't override the built-in $(MAKE). |
duke@435 | 39 | # Instead, use "gmake" (or "gnumake") from the command line. --Rose |
duke@435 | 40 | #MAKE = gmake |
duke@435 | 41 | |
duke@435 | 42 | TOPDIR = $(shell echo `pwd`) |
duke@435 | 43 | GENERATED = $(TOPDIR)/../generated |
duke@435 | 44 | VM = $(GAMMADIR)/src/share/vm |
duke@435 | 45 | Plat_File = $(Platform_file) |
duke@435 | 46 | CDG = cd $(GENERATED); |
duke@435 | 47 | |
duke@435 | 48 | # Pick up MakeDeps' sources and definitions |
kamg@526 | 49 | include $(GAMMADIR)/make/$(Platform_os_family)/makefiles/makedeps.make |
duke@435 | 50 | MakeDepsClass = MakeDeps.class |
duke@435 | 51 | |
duke@435 | 52 | ifdef USE_PRECOMPILED_HEADER |
duke@435 | 53 | PrecompiledOption = -DUSE_PRECOMPILED_HEADER |
duke@435 | 54 | UpdatePCH = $(MAKE) -f vm.make $(PRECOMPILED_HEADER) $(MFLAGS) |
duke@435 | 55 | else |
duke@435 | 56 | UpdatePCH = \# precompiled header is not used |
duke@435 | 57 | PrecompiledOption = |
duke@435 | 58 | endif |
duke@435 | 59 | |
duke@435 | 60 | MakeDeps = $(RUN.JAVA) $(PrecompiledOption) -classpath $(GENERATED) MakeDeps |
duke@435 | 61 | |
duke@435 | 62 | Include_DBs/GC = $(VM)/includeDB_gc \ |
duke@435 | 63 | $(VM)/includeDB_gc_parallel \ |
duke@435 | 64 | $(VM)/gc_implementation/includeDB_gc_parallelScavenge \ |
duke@435 | 65 | $(VM)/gc_implementation/includeDB_gc_concurrentMarkSweep \ |
duke@435 | 66 | $(VM)/gc_implementation/includeDB_gc_parNew \ |
duke@435 | 67 | $(VM)/gc_implementation/includeDB_gc_serial \ |
duke@435 | 68 | $(VM)/gc_implementation/includeDB_gc_shared |
duke@435 | 69 | |
duke@435 | 70 | Include_DBs/CORE = $(VM)/includeDB_core $(Include_DBs/GC) \ |
duke@435 | 71 | $(VM)/includeDB_jvmti \ |
duke@435 | 72 | $(VM)/includeDB_features |
duke@435 | 73 | Include_DBs/COMPILER1 = $(Include_DBs/CORE) $(VM)/includeDB_compiler1 |
duke@435 | 74 | Include_DBs/COMPILER2 = $(Include_DBs/CORE) $(VM)/includeDB_compiler2 |
duke@435 | 75 | Include_DBs/TIERED = $(Include_DBs/CORE) $(VM)/includeDB_compiler1 $(VM)/includeDB_compiler2 |
duke@435 | 76 | Include_DBs = $(Include_DBs/$(TYPE)) |
duke@435 | 77 | |
duke@435 | 78 | Cached_plat = $(GENERATED)/platform.current |
duke@435 | 79 | Cached_db = $(GENERATED)/includeDB.current |
duke@435 | 80 | |
duke@435 | 81 | Incremental_Lists = $(Cached_db) |
duke@435 | 82 | # list generation also creates $(GENERATED)/$(Cached_plat) |
duke@435 | 83 | |
duke@435 | 84 | |
duke@435 | 85 | AD_Dir = $(GENERATED)/adfiles |
duke@435 | 86 | ADLC = $(AD_Dir)/adlc |
duke@435 | 87 | AD_Spec = $(GAMMADIR)/src/cpu/$(Platform_arch)/vm/$(Platform_arch).ad |
duke@435 | 88 | AD_Src = $(GAMMADIR)/src/share/vm/adlc |
duke@435 | 89 | AD_Names = ad_$(Platform_arch).hpp ad_$(Platform_arch).cpp |
duke@435 | 90 | AD_Files = $(AD_Names:%=$(AD_Dir)/%) |
duke@435 | 91 | |
duke@435 | 92 | # AD_Files_If_Required/COMPILER1 = ad_stuff |
duke@435 | 93 | AD_Files_If_Required/COMPILER2 = ad_stuff |
duke@435 | 94 | AD_Files_If_Required/TIERED = ad_stuff |
duke@435 | 95 | AD_Files_If_Required = $(AD_Files_If_Required/$(TYPE)) |
duke@435 | 96 | |
duke@435 | 97 | # Wierd argument adjustment for "gnumake -j..." |
duke@435 | 98 | adjust-mflags = $(GENERATED)/adjust-mflags |
duke@435 | 99 | MFLAGS-adjusted = -r `$(adjust-mflags) "$(MFLAGS)" "$(HOTSPOT_BUILD_JOBS)"` |
duke@435 | 100 | |
duke@435 | 101 | |
duke@435 | 102 | # default target: make makeDeps, update lists, make vm |
duke@435 | 103 | # done in stages to force sequential order with parallel make |
duke@435 | 104 | # |
duke@435 | 105 | |
duke@435 | 106 | default: vm_build_preliminaries the_vm |
duke@435 | 107 | @echo All done. |
duke@435 | 108 | |
duke@435 | 109 | # This is an explicit dependency for the sake of parallel makes. |
duke@435 | 110 | vm_build_preliminaries: checks $(Incremental_Lists) $(AD_Files_If_Required) jvmti_stuff sa_stuff |
duke@435 | 111 | @# We need a null action here, so implicit rules don't get consulted. |
duke@435 | 112 | |
duke@435 | 113 | # make makeDeps: (and zap the cached db files to force a nonincremental run) |
duke@435 | 114 | |
duke@435 | 115 | $(GENERATED)/$(MakeDepsClass): $(MakeDepsSources) |
duke@435 | 116 | @$(REMOTE) $(COMPILE.JAVAC) -classpath $(GAMMADIR)/src/share/tools/MakeDeps -g -d $(GENERATED) $(MakeDepsSources) |
duke@435 | 117 | @echo Removing $(Incremental_Lists) to force regeneration. |
duke@435 | 118 | @rm -f $(Incremental_Lists) |
duke@435 | 119 | @$(CDG) echo >$(Cached_plat) |
duke@435 | 120 | |
duke@435 | 121 | # make incremental_lists, if cached files out of date, run makeDeps |
duke@435 | 122 | |
duke@435 | 123 | $(Incremental_Lists): $(Include_DBs) $(Plat_File) $(GENERATED)/$(MakeDepsClass) |
duke@435 | 124 | $(CDG) cat $(Include_DBs) > $(GENERATED)/includeDB |
duke@435 | 125 | $(CDG) if [ ! -r incls ] ; then \ |
duke@435 | 126 | mkdir incls ; \ |
duke@435 | 127 | fi |
duke@435 | 128 | $(CDG) (echo $(CDG) echo $(MakeDeps) diffs UnixPlatform $(Cached_plat) $(Cached_db) $(Plat_File) $(GENERATED)/includeDB $(MakeDepsOptions)) > makeDeps.sh |
duke@435 | 129 | $(CDG) $(REMOTE) sh $(GENERATED)/makeDeps.sh |
duke@435 | 130 | $(CDG) cp includeDB $(Cached_db) |
duke@435 | 131 | $(CDG) cp $(Plat_File) $(Cached_plat) |
duke@435 | 132 | |
duke@435 | 133 | # symbolic target for command lines |
duke@435 | 134 | lists: $(Incremental_Lists) |
duke@435 | 135 | @: lists are now up to date |
duke@435 | 136 | |
duke@435 | 137 | # make AD files as necessary |
duke@435 | 138 | ad_stuff: $(Incremental_Lists) $(adjust-mflags) |
duke@435 | 139 | @$(MAKE) -f adlc.make $(MFLAGS-adjusted) |
duke@435 | 140 | |
duke@435 | 141 | # generate JVMTI files from the spec |
duke@435 | 142 | jvmti_stuff: $(Incremental_Lists) $(adjust-mflags) |
duke@435 | 143 | @$(MAKE) -f jvmti.make $(MFLAGS-adjusted) |
duke@435 | 144 | |
duke@435 | 145 | # generate SA jar files and native header |
duke@435 | 146 | sa_stuff: |
duke@435 | 147 | @$(MAKE) -f sa.make $(MFLAGS-adjusted) |
duke@435 | 148 | |
duke@435 | 149 | # and the VM: must use other makefile with dependencies included |
duke@435 | 150 | |
duke@435 | 151 | # We have to go to great lengths to get control over the -jN argument |
duke@435 | 152 | # to the recursive invocation of vm.make. The problem is that gnumake |
duke@435 | 153 | # resets -jN to -j1 for recursive runs. (How helpful.) |
duke@435 | 154 | # Note that the user must specify the desired parallelism level via a |
duke@435 | 155 | # command-line or environment variable name HOTSPOT_BUILD_JOBS. |
kamg@526 | 156 | $(adjust-mflags): $(GAMMADIR)/make/$(Platform_os_family)/makefiles/adjust-mflags.sh |
duke@435 | 157 | @+rm -f $@ $@+ |
duke@435 | 158 | @+cat $< > $@+ |
duke@435 | 159 | @+chmod +x $@+ |
duke@435 | 160 | @+mv $@+ $@ |
duke@435 | 161 | |
duke@435 | 162 | the_vm: vm_build_preliminaries $(adjust-mflags) |
duke@435 | 163 | @$(UpdatePCH) |
duke@435 | 164 | @$(MAKE) -f vm.make $(MFLAGS-adjusted) |
duke@435 | 165 | |
duke@435 | 166 | install: the_vm |
duke@435 | 167 | @$(MAKE) -f vm.make install |
duke@435 | 168 | |
duke@435 | 169 | # next rules support "make foo.[oi]" |
duke@435 | 170 | |
duke@435 | 171 | %.o %.i %.s: |
duke@435 | 172 | $(UpdatePCH) |
duke@435 | 173 | $(MAKE) -f vm.make $(MFLAGS) $@ |
duke@435 | 174 | #$(MAKE) -f vm.make $@ |
duke@435 | 175 | |
duke@435 | 176 | # this should force everything to be rebuilt |
duke@435 | 177 | clean: |
duke@435 | 178 | rm -f $(GENERATED)/*.class |
duke@435 | 179 | $(MAKE) $(MFLAGS) $(GENERATED)/$(MakeDepsClass) |
duke@435 | 180 | $(MAKE) -f vm.make $(MFLAGS) clean |
duke@435 | 181 | |
duke@435 | 182 | # just in case it doesn't, this should do it |
duke@435 | 183 | realclean: |
duke@435 | 184 | $(MAKE) -f vm.make $(MFLAGS) clean |
duke@435 | 185 | rm -fr $(GENERATED) |
duke@435 | 186 | |
duke@435 | 187 | .PHONY: default vm_build_preliminaries |
duke@435 | 188 | .PHONY: lists ad_stuff jvmti_stuff sa_stuff the_vm clean realclean |
duke@435 | 189 | .PHONY: checks check_os_version install |