Thu, 19 Feb 2009 14:08:00 -0800
Added tag jdk7-b48 for changeset bcb33806d186
duke@435 | 1 | # |
xdono@631 | 2 | # Copyright 1998-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, Jvm_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 | GENERATED = ../generated |
duke@435 | 43 | VM = $(GAMMADIR)/src/share/vm |
duke@435 | 44 | Plat_File = $(Platform_file) |
duke@435 | 45 | CDG = cd $(GENERATED); |
duke@435 | 46 | |
duke@435 | 47 | # Pick up MakeDeps' sources and definitions |
kamg@526 | 48 | include $(GAMMADIR)/make/$(Platform_os_family)/makefiles/makedeps.make |
duke@435 | 49 | MakeDepsClass = MakeDeps.class |
duke@435 | 50 | MakeDeps = $(RUN.JAVA) -classpath . MakeDeps |
duke@435 | 51 | |
duke@435 | 52 | Include_DBs/GC = $(VM)/includeDB_gc \ |
duke@435 | 53 | $(VM)/includeDB_gc_parallel \ |
duke@435 | 54 | $(VM)/gc_implementation/includeDB_gc_parallelScavenge \ |
duke@435 | 55 | $(VM)/gc_implementation/includeDB_gc_concurrentMarkSweep \ |
duke@435 | 56 | $(VM)/gc_implementation/includeDB_gc_parNew \ |
ysr@777 | 57 | $(VM)/gc_implementation/includeDB_gc_g1 \ |
duke@435 | 58 | $(VM)/gc_implementation/includeDB_gc_serial \ |
duke@435 | 59 | $(VM)/gc_implementation/includeDB_gc_shared |
duke@435 | 60 | |
duke@435 | 61 | |
duke@435 | 62 | Include_DBs/KERNEL = $(VM)/includeDB_core $(VM)/includeDB_gc \ |
duke@435 | 63 | $(VM)/gc_implementation/includeDB_gc_serial \ |
duke@435 | 64 | $(VM)/includeDB_jvmti \ |
duke@435 | 65 | $(VM)/includeDB_compiler1 |
duke@435 | 66 | |
duke@435 | 67 | Include_DBs/CORE = $(VM)/includeDB_core $(Include_DBs/GC) \ |
duke@435 | 68 | $(VM)/includeDB_jvmti \ |
duke@435 | 69 | $(VM)/includeDB_features |
duke@435 | 70 | Include_DBs/COMPILER1 = $(Include_DBs/CORE) $(VM)/includeDB_compiler1 |
duke@435 | 71 | Include_DBs/COMPILER2 = $(Include_DBs/CORE) $(VM)/includeDB_compiler2 |
duke@435 | 72 | Include_DBs/TIERED = $(Include_DBs/CORE) $(VM)/includeDB_compiler1 \ |
duke@435 | 73 | $(VM)/includeDB_compiler2 |
duke@435 | 74 | |
duke@435 | 75 | Include_DBs = $(Include_DBs/$(TYPE)) |
duke@435 | 76 | |
duke@435 | 77 | Cached_plat = platform.current |
duke@435 | 78 | Cached_db = includeDB.current |
duke@435 | 79 | |
duke@435 | 80 | Incremental_Lists =$(GENERATED)/$(Cached_db) |
duke@435 | 81 | # list generation also creates $(GENERATED)/$(Cached_plat) |
duke@435 | 82 | |
duke@435 | 83 | |
duke@435 | 84 | AD_Dir = $(GENERATED)/adfiles |
duke@435 | 85 | ADLC = $(AD_Dir)/adlc |
kvn@868 | 86 | AD_Spec = $(GAMMADIR)/src/cpu/$(Platform_arch)/vm/$(Platform_arch_model).ad |
duke@435 | 87 | AD_Src = $(GAMMADIR)/src/share/vm/adlc |
kvn@868 | 88 | AD_Names = ad_$(Platform_arch_model).hpp ad_$(Platform_arch_model).cpp |
duke@435 | 89 | AD_Files = $(AD_Names:%=$(AD_Dir)/%) |
duke@435 | 90 | |
duke@435 | 91 | # AD_Files_If_Required/COMPILER1 = ad_stuff |
duke@435 | 92 | AD_Files_If_Required/COMPILER2 = ad_stuff |
duke@435 | 93 | AD_Files_If_Required/TIERED = ad_stuff |
duke@435 | 94 | AD_Files_If_Required = $(AD_Files_If_Required/$(TYPE)) |
duke@435 | 95 | |
duke@435 | 96 | # Wierd argument adjustment for "gnumake -j..." |
duke@435 | 97 | adjust-mflags = $(GENERATED)/adjust-mflags |
duke@435 | 98 | MFLAGS-adjusted = -r `$(adjust-mflags) "$(MFLAGS)" "$(HOTSPOT_BUILD_JOBS)"` |
duke@435 | 99 | |
duke@435 | 100 | |
duke@435 | 101 | # default target: make makeDeps, update lists, make vm |
duke@435 | 102 | # done in stages to force sequential order with parallel make |
duke@435 | 103 | # |
duke@435 | 104 | |
duke@435 | 105 | default: vm_build_preliminaries the_vm |
duke@435 | 106 | @echo All done. |
duke@435 | 107 | |
duke@435 | 108 | # This is an explicit dependency for the sake of parallel makes. |
duke@435 | 109 | vm_build_preliminaries: checks $(Incremental_Lists) $(AD_Files_If_Required) jvmti_stuff sa_stuff |
duke@435 | 110 | @# We need a null action here, so implicit rules don't get consulted. |
duke@435 | 111 | |
duke@435 | 112 | # make makeDeps: (and zap the cached db files to force a nonincremental run) |
duke@435 | 113 | |
duke@435 | 114 | $(GENERATED)/$(MakeDepsClass): $(MakeDepsSources) |
duke@435 | 115 | @$(COMPILE.JAVAC) -classpath $(GAMMADIR)/src/share/tools/MakeDeps -g -d $(GENERATED) $(MakeDepsSources) |
duke@435 | 116 | @echo Removing $(Incremental_Lists) to force regeneration. |
duke@435 | 117 | @rm -f $(Incremental_Lists) |
duke@435 | 118 | @$(CDG) echo >$(Cached_plat) |
duke@435 | 119 | |
duke@435 | 120 | # make incremental_lists, if cached files out of date, run makeDeps |
duke@435 | 121 | |
duke@435 | 122 | $(Incremental_Lists): $(Include_DBs) $(Plat_File) $(GENERATED)/$(MakeDepsClass) |
duke@435 | 123 | $(CDG) cat $(Include_DBs) > includeDB |
duke@435 | 124 | $(CDG) if [ ! -r incls ] ; then \ |
duke@435 | 125 | mkdir incls ; \ |
duke@435 | 126 | fi |
duke@435 | 127 | $(CDG) $(MakeDeps) diffs UnixPlatform $(Cached_plat) $(Cached_db) $(Plat_File) includeDB $(MakeDepsOptions) |
duke@435 | 128 | $(CDG) cp includeDB $(Cached_db) |
duke@435 | 129 | $(CDG) cp $(Plat_File) $(Cached_plat) |
duke@435 | 130 | |
duke@435 | 131 | # symbolic target for command lines |
duke@435 | 132 | lists: $(Incremental_Lists) |
duke@435 | 133 | @: lists are now up to date |
duke@435 | 134 | |
duke@435 | 135 | # make AD files as necessary |
duke@435 | 136 | ad_stuff: $(Incremental_Lists) $(adjust-mflags) |
duke@435 | 137 | @$(MAKE) -f adlc.make $(MFLAGS-adjusted) |
duke@435 | 138 | |
duke@435 | 139 | # generate JVMTI files from the spec |
duke@435 | 140 | jvmti_stuff: $(Incremental_Lists) $(adjust-mflags) |
duke@435 | 141 | @$(MAKE) -f jvmti.make $(MFLAGS-adjusted) |
duke@435 | 142 | |
duke@435 | 143 | # generate SA jar files and native header |
duke@435 | 144 | sa_stuff: |
duke@435 | 145 | @$(MAKE) -f sa.make $(MFLAGS-adjusted) |
duke@435 | 146 | |
duke@435 | 147 | # and the VM: must use other makefile with dependencies included |
duke@435 | 148 | |
duke@435 | 149 | # We have to go to great lengths to get control over the -jN argument |
duke@435 | 150 | # to the recursive invocation of vm.make. The problem is that gnumake |
duke@435 | 151 | # resets -jN to -j1 for recursive runs. (How helpful.) |
duke@435 | 152 | # Note that the user must specify the desired parallelism level via a |
duke@435 | 153 | # command-line or environment variable name HOTSPOT_BUILD_JOBS. |
kamg@526 | 154 | $(adjust-mflags): $(GAMMADIR)/make/$(Platform_os_family)/makefiles/adjust-mflags.sh |
duke@435 | 155 | @+rm -f $@ $@+ |
duke@435 | 156 | @+cat $< > $@+ |
duke@435 | 157 | @+chmod +x $@+ |
duke@435 | 158 | @+mv $@+ $@ |
duke@435 | 159 | |
duke@435 | 160 | the_vm: vm_build_preliminaries $(adjust-mflags) |
duke@435 | 161 | @$(MAKE) -f vm.make $(MFLAGS-adjusted) |
duke@435 | 162 | |
duke@435 | 163 | install: the_vm |
duke@435 | 164 | @$(MAKE) -f vm.make install |
duke@435 | 165 | |
duke@435 | 166 | # next rules support "make foo.[oi]" |
duke@435 | 167 | |
duke@435 | 168 | %.o %.i %.s: |
duke@435 | 169 | $(MAKE) -f vm.make $(MFLAGS) $@ |
duke@435 | 170 | #$(MAKE) -f vm.make $@ |
duke@435 | 171 | |
duke@435 | 172 | # this should force everything to be rebuilt |
duke@435 | 173 | clean: |
duke@435 | 174 | rm -f $(GENERATED)/*.class |
duke@435 | 175 | $(MAKE) $(MFLAGS) $(GENERATED)/$(MakeDepsClass) |
duke@435 | 176 | $(MAKE) -f vm.make $(MFLAGS) clean |
duke@435 | 177 | |
duke@435 | 178 | # just in case it doesn't, this should do it |
duke@435 | 179 | realclean: |
duke@435 | 180 | $(MAKE) -f vm.make $(MFLAGS) clean |
duke@435 | 181 | rm -fr $(GENERATED) |
duke@435 | 182 | |
duke@435 | 183 | .PHONY: default vm_build_preliminaries |
duke@435 | 184 | .PHONY: lists ad_stuff jvmti_stuff sa_stuff the_vm clean realclean |
duke@435 | 185 | .PHONY: checks check_os_version install |