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