make/common/Defs.gmk

Sat, 01 Dec 2007 00:00:00 +0000

author
duke
date
Sat, 01 Dec 2007 00:00:00 +0000
changeset 1
55540e827aef
child 114
1c130e7b7a2e
permissions
-rw-r--r--

Initial load

     1 #
     2 # Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
     3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4 #
     5 # This code is free software; you can redistribute it and/or modify it
     6 # under the terms of the GNU General Public License version 2 only, as
     7 # published by the Free Software Foundation.  Sun designates this
     8 # particular file as subject to the "Classpath" exception as provided
     9 # by Sun in the LICENSE file that accompanied this code.
    10 #
    11 # This code is distributed in the hope that it will be useful, but WITHOUT
    12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    13 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    14 # version 2 for more details (a copy is included in the LICENSE file that
    15 # accompanied this code).
    16 #
    17 # You should have received a copy of the GNU General Public License version
    18 # 2 along with this work; if not, write to the Free Software Foundation,
    19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    20 #
    21 # Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
    22 # CA 95054 USA or visit www.sun.com if you need additional information or
    23 # have any questions.
    24 #
    26 #
    27 # Common variables used by all the Java makefiles.  This file should
    28 # not contain rules.
    29 #
    31 #
    32 # On Solaris, the 'make' utility from Sun will not work with these makefiles.
    33 #    This little rule is only understood by Sun's make, and is harmless
    34 #    when seen by the GNU make tool. If using Sun's make, this causes the
    35 #    make command to fail.
    36 #
    37 SUN_MAKE_TEST:sh = echo "ERROR: PLEASE USE GNU VERSION OF MAKE"; exit 33
    39 include $(BUILDDIR)/common/shared/Platform.gmk
    41 TOPDIR=$(BUILDDIR)/..
    43 include $(TOPDIR)/make/common/CancelImplicits.gmk
    45 # Historically PLATFORM_SRC used to be src/$(PLATFORM), but we switched it to
    46 # src/solaris so if you want to build on Linux you didn't need a src/linux
    47 # directory.  In an ideal world it would be called src/genunix but we are not
    48 # there yet.
    49 #
    50 ifndef SHARE_SRC
    51   SHARE_SRC    = $(TOPDIR)/src/share
    52 endif
    54 _OUTPUTDIR=$(TOPDIR)/build/$(PLATFORM)-$(ARCH)
    56 #
    57 # Get platform definitions
    58 #
    60 include $(TOPDIR)/make/common/Defs-$(PLATFORM).gmk
    62 #
    63 # Localizations for the different parts of the product beyond English
    64 #
    66 JRE_LOCALES   = de es fr it ja ko sv zh_CN zh_TW zh_HK
    67 PLUGIN_LOCALES = de es fr it ja ko sv zh_CN zh_TW zh_HK
    68 JDK_LOCALES  = ja zh_CN
    70 #
    71 # A list of locales we support but don't have resource files.
    72 # This is defined to optimize the search of resource bundles.
    73 #
    74 JRE_NONEXIST_LOCALES = en en_US de_DE es_ES fr_FR it_IT ja_JP ko_KR sv_SE zh
    76 #
    77 # All libraries except libjava and libjvm itself link against libjvm and
    78 # libjava, the latter for its exported common utilities.  libjava only links
    79 # against libjvm.  Programs' makefiles take their own responsibility for
    80 # adding other libs.
    81 #
    82 ifdef PACKAGE
    83 # put JAVALIB first, but do not lose any platform specific values....
    84   LDLIBS_COMMON = $(JAVALIB)
    85 endif # PACKAGE
    87 #
    88 # Libraries that must appear ahead of libc.so on the link command line
    89 #
    90 ifdef PROGRAM
    92   ifeq ($(PLATFORM), solaris)
    93     LDLIBS_COMMON = -lthread -ldl
    94   endif
    96   ifeq ($(PLATFORM), linux)
    97     LDLIBS_COMMON = -ldl
    98   endif
   100 endif # PROGRAM
   102 LDLIBS_COMMON += $(EXTRA_LIBS)
   104 #
   105 # Default is to build, not import native binaries
   106 #
   107 ifndef IMPORT_NATIVE_BINARIES
   108   IMPORT_NATIVE_BINARIES=false
   109 endif
   110 # If importing libraries in, no incremental builds
   111 ifeq ($(IMPORT_NATIVE_BINARIES),true)
   112  INCREMENTAL_BUILD=false
   113 endif
   115 # for generated libraries
   116 LIBDIR              = $(OUTPUTDIR)/lib
   117 ABS_LIBDIR          = $(ABS_OUTPUTDIR)/lib
   118 # Optional place to save the windows .lib files
   119 LIBFILES_DIR        = $(OUTPUTDIR)/libfiles
   120 # for ext jre files
   121 EXTDIR              = $(LIBDIR)/ext
   122 # for generated include files
   123 INCLUDEDIR          = $(OUTPUTDIR)/include
   124 # for generated class files
   125 CLASSBINDIR         = $(OUTPUTDIR)/classes
   126 DEMOCLASSDIR        = $(OUTPUTDIR)/democlasses
   127 # for generated tool class files
   128 BUILDTOOLCLASSDIR   = $(OUTPUTDIR)/btclasses
   129 # for build tool jar files
   130 BUILDTOOLJARDIR     = $(OUTPUTDIR)/btjars
   131 ABS_BUILDTOOLJARDIR = $(ABS_OUTPUTDIR)/btjars
   132 # for generated java source files
   133 GENSRCDIR           = $(OUTPUTDIR)/gensrc
   134 # for generated C source files (not javah)
   135 GENNATIVESRCDIR     = $(OUTPUTDIR)/gennativesrc
   136 # for imported source files
   137 IMPORTSRCDIR        = $(OUTPUTDIR)/impsrc
   138 # for imported documents
   139 IMPORTDOCDIR        = $(OUTPUTDIR)/impdoc
   140 # for generated demo
   141 DEMODIR             = $(OUTPUTDIR)/demo
   142 # for sample code
   143 SAMPLEDIR           = $(OUTPUTDIR)/sample
   144 # for generated documentation
   145 DOCSDIR             = $(OUTPUTDIR)/docs$(DOCSDIRSUFFIX)
   146 DOCSDIRSUFFIX       =
   148 # An attempt is made to generate unique enough directories for the
   149 # generated files to not have name collisisons. Most build units
   150 # defines PRODUCT (except Release.gmk), but then they may or may 
   151 # not define PACKAGE, THREADIR (only HPI uses this), PROGRAM, and 
   152 # LIBRARY. This code chunk attempts to generate a unique 
   153 # OBJDIR/CLASSHDRDIR for each build unit based on which of those 
   154 # values are set within each build unit.
   156 UNIQUE_LOCATION_STRING = tmp
   158 ifneq ($(PRODUCT),)
   159   UNIQUE_LOCATION_STRING += /$(PRODUCT)
   160 endif
   162 ifneq ($(PACKAGE),)
   163   UNIQUE_LOCATION_STRING += /$(PACKAGE)
   164 endif
   166 ifneq ($(PROGRAM),)
   167   UNIQUE_LOCATION_STRING += /$(PROGRAM)
   168 endif
   170 ifneq ($(LIBRARY),)
   171   ifneq ($(LIBRARY_OUTPUT),)
   172     UNIQUE_LOCATION_STRING += /$(LIBRARY_OUTPUT)
   173   else
   174     UNIQUE_LOCATION_STRING += /$(LIBRARY)
   175   endif
   176 endif
   178 ifneq ($(THREADDIR),)
   179   UNIQUE_LOCATION_STRING += /$(THREADDIR)
   180 endif
   182 # the use of += above makes a space separated list which we need to 
   183 # remove for filespecs.
   184 #
   185 NULLSTRING :=
   186 ONESPACE := $(NULLSTRING) # space before this comment is required.
   187 UNIQUE_PATH = $(subst $(ONESPACE),,$(UNIQUE_LOCATION_STRING))
   189 # TEMPDIR is a unique general purpose directory
   190 # need to use 'override' because GNU Make on Linux exports the wrong
   191 # value.
   192 override TEMPDIR      = $(OUTPUTDIR)/$(UNIQUE_PATH)
   193 override ABS_TEMPDIR  = $(ABS_OUTPUTDIR)/$(UNIQUE_PATH)
   195 # This must be created right away for pattern rules in Sanity.gmk to work.
   196 dummy1:=$(shell $(MKDIR) -p $(TEMPDIR))
   197 dummy2:=$(shell $(MKDIR) -p $(TEMP_DISK))
   199 # OBJDIRNAME is the name of the directory where the object code is to
   200 #   be placed. It's name depends on whether the data model architecture 
   201 #   is 32-bit or not.
   202 ifneq ($(ARCH_DATA_MODEL), 32)
   203   OBJDIRNAME  = obj$(ARCH_DATA_MODEL)$(OBJDIRNAME_SUFFIX)
   204 else
   205   OBJDIRNAME  = obj$(OBJDIRNAME_SUFFIX)
   206 endif
   207 OBJDIR      = $(TEMPDIR)/$(OBJDIRNAME)
   209 # CLASSHDRDIR is where the generated C Class Header files go.
   210 CLASSHDRDIR = $(TEMPDIR)/CClassHeaders
   212 #
   213 # CLASSDESTDIR can be used to specify the directory where generated classes
   214 # are to be placed. The default is CLASSBINDIR.
   215 #
   216 ifndef CLASSDESTDIR
   217 CLASSDESTDIR = $(CLASSBINDIR)
   218 endif
   220 INCLUDES = -I. -I$(CLASSHDRDIR) \
   221 	$(patsubst %,-I%,$(subst $(CLASSPATH_SEPARATOR), ,$(VPATH.h))) $(OTHER_INCLUDES)
   222 OTHER_CPPFLAGS = $(INCLUDES)
   225 #
   226 # vpaths.  These are the default locations searched for source files.
   227 # GNUmakefiles of individual areas often override the default settings.
   228 # There are no longer default vpath entries for C and assembler files
   229 # so we can ensure that libraries don't get their hands on JVM files.
   230 #
   231 # We define an intermediate variable for Java files because
   232 # we use its value later to help define $SOURCEPATH
   234 VPATH0.java = $(GENSRCDIR)$(CLASSPATH_SEPARATOR)$(PLATFORM_SRC)/classes$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/classes
   235 VPATH.java = $(VPATH0.java)
   236 vpath %.java $(VPATH.java)
   237 vpath %.class $(CLASSBINDIR)
   238 vpath %.$(OBJECT_SUFFIX) $(OBJDIR)
   240 #
   241 # VPATH.h is used elsewhere to generate include flags.  By default, 
   242 # anyone has access to the include files that the JVM area exports,
   243 # namely jni.h, jvm.h, and jni_utils.h, plus their platform-specific
   244 # relatives.
   245 #
   246 ifeq ($(PLATFORM), windows)
   247   VPATH.h = $(BOOTDIR)/include;$(BOOTDIR)/include/$(PLATFORM_INCLUDE_NAME)
   248 else
   249   VPATH.h = $(PLATFORM_SRC)/javavm/export$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/javavm/export$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/javavm/include$(CLASSPATH_SEPARATOR)$(PLATFORM_SRC)/javavm/include
   250 endif
   251 vpath %.h   $(VPATH.h)
   253 #
   254 # Used in two ways: helps link against libjava.so. Also if overridden
   255 # determines where your shared library is installed.
   256 #
   257 ifndef LIB_LOCATION
   258   LIB_LOCATION    =  $(LIBDIR)/$(LIBARCH)
   259 endif
   261 #
   262 # Java header and stub variables
   263 #
   264 CLASSHDRS     = $(patsubst %,$(CLASSHDRDIR)/%.h,$(subst .,_,$(CLASSES.export)))
   265 CLASSSTUBOBJS = classstubs.$(OBJECT_SUFFIX)
   266 STUBPREAMBLE  = $(INCLUDEDIR)/StubPreamble.h
   268 #
   269 # Classpath seen by javac (different from the one seen by the VM
   270 # running javac), and useful variables.
   271 #
   272 SOURCEPATH	= $(VPATH.java)
   273 PKG		= $(shell $(EXPR) $(PACKAGE) : '\([a-z]*\)')
   274 PKGDIR		= $(subst .,/,$(PACKAGE))
   276 #
   277 # The java/javac/jdk variables (JAVAC_CMD, JAVA_CMD, etc.)
   278 #
   279 include $(BUILDDIR)/common/shared/Defs-java.gmk
   281 #
   282 # Set opt level to ALT_OPT if set otherwise _OPT
   283 #
   284 POPT = $(_OPT$(ALT_OPT))$(ALT_OPT)
   286 #
   287 # Convenient macros
   288 #
   290 # Prepare $@ target, remove old one and making sure directory exists
   291 define prep-target
   292 $(MKDIR) -p $(@D)
   293 $(RM) $@
   294 endef
   296 # Simple install of $< file to $@
   297 define install-file
   298 $(prep-target)
   299 $(CP) $< $@
   300 endef
   302 # Cleanup rule for after debug java run (hotspot.log file is left around)
   303 #   (This could be an old leftover file in a read-only area, use the @- prefix)
   304 HOTSPOT_LOG_NAME = hotspot.log
   305 define java-vm-cleanup
   306 if [ -w $(HOTSPOT_LOG_NAME) ] ; then $(RM) $(HOTSPOT_LOG_NAME); fi
   307 endef
   309 # Default make settings for processing SUBDIRS with clobber or clean names
   310 SUBDIRS_MAKEFLAGS-clobber = INCREMENTAL_BUILD=false
   311 SUBDIRS_MAKEFLAGS-clean   = INCREMENTAL_BUILD=false
   313 # Current directory
   314 CURRENT_DIRECTORY := $(shell $(PWD))
   316 # If no timing wanted, we need to define these as empty
   317 ifdef NO_TIMING
   319 TIMING_ID:=NA
   321 define TIMING_start
   322 t=0:0:0:0
   323 endef
   325 define TIMING_end
   326 time_used=0
   327 endef
   329 else # NO_TIMING
   331 # Default timing id
   332 TIMING_ID:=$(shell $(BASENAME) $(CURRENT_DIRECTORY))
   334 # Timing start (must be used in same shell, e.g. same command line)
   335 #    Defines the shell variable $1 to have the start time.
   336 define TIMING_start
   337 $1=`$(DATE) +%j:%H:%M:%S`
   338 endef
   340 # Timing end (must be used in same shell, e.g. same command line)
   341 #    Expects shell variable $1 to have been defined as the start time.
   342 #    Expects shell variable $2 to have timing id string
   343 #    Sets total_seconds shell variable as the total seconds used.
   344 #    Sets time_used shell variable to contain format "%dh%dm%ds"
   345 define TIMING_end
   346 begTime="$${$1}"; \
   347 timing_id="$${$2}"; \
   348 endTime=`$(DATE) +%j:%H:%M:%S`; \
   349 d1=`$(ECHO) $${begTime} | $(CUT) -d':' -f1 | $(SED) -e 's@^0*@@'`; \
   350 if [ "$${d1}" = "" ] ; then d1=0; fi; \
   351 h1=`$(ECHO) $${begTime} | $(CUT) -d':' -f2 | $(SED) -e 's@^0*@@'`; \
   352 if [ "$${h1}" = "" ] ; then h1=0; fi; \
   353 m1=`$(ECHO) $${begTime} | $(CUT) -d':' -f3 | $(SED) -e 's@^0*@@'`; \
   354 if [ "$${m1}" = "" ] ; then m1=0; fi; \
   355 s1=`$(ECHO) $${begTime} | $(CUT) -d':' -f4 | $(SED) -e 's@^0*@@'`; \
   356 if [ "$${s1}" = "" ] ; then s1=0; fi; \
   357 d2=`$(ECHO) $${endTime} | $(CUT) -d':' -f1 | $(SED) -e 's@^0*@@'`; \
   358 if [ "$${d2}" = "" ] ; then d2=0; fi; \
   359 h2=`$(ECHO) $${endTime} | $(CUT) -d':' -f2 | $(SED) -e 's@^0*@@'`; \
   360 if [ "$${h2}" = "" ] ; then h2=0; fi; \
   361 m2=`$(ECHO) $${endTime} | $(CUT) -d':' -f3 | $(SED) -e 's@^0*@@'`; \
   362 if [ "$${m2}" = "" ] ; then m2=0; fi; \
   363 s2=`$(ECHO) $${endTime} | $(CUT) -d':' -f4 | $(SED) -e 's@^0*@@'`; \
   364 if [ "$${s2}" = "" ] ; then s2=0; fi; \
   365 t1_secs=`$(EXPR) $${d1} '*' 60 '*' 60 '*' 24 '+' $${h1} '*' 60 '*' 60 \
   366 		 '+' $${m1} '*' 60 '+' $${s1}`; \
   367 t2_secs=`$(EXPR) $${d2} '*' 60 '*' 60 '*' 24 '+' $${h2} '*' 60 '*' 60 \
   368 		 '+' $${m2} '*' 60 '+' $${s2}`; \
   369 total_seconds=`$(EXPR) $${t2_secs} '-' $${t1_secs}`; \
   370 if [ "$${total_seconds}" -lt 0 ] ; then total_seconds=0; fi; \
   371 t_hour=`$(EXPR) $${total_seconds} '/' '(' 60 '*' 60 ')'`h; \
   372 t_min=`$(EXPR) '(' $${total_seconds} '%' '(' 60 '*' 60 ')' ')' '/' 60`m; \
   373 t_sec=`$(EXPR) $${total_seconds} '%' 60`s; \
   374 time_used=$${t_sec}; \
   375 if [ "$${t_hour}" != "0h" ] ; then \
   376 time_used=$${t_hour}$${t_min}$${t_sec}; \
   377 elif [ "$${t_min}" != "0m" ] ; then \
   378 time_used=$${t_min}$${t_sec}; \
   379 else \
   380 time_used=$${t_sec}; \
   381 fi; \
   382 $(PRINTF) "  Timing: %05d seconds or %s for %s\n" \
   383     $${total_seconds} $${time_used} $${timing_id}
   384 endef
   386 endif # NO_TIMING
   388 # Given a SUBDIRS list, cd into them and make them
   389 #   SUBDIRS_MAKEFLAGS      Make settings for a subdir make
   390 #   SUBDIRS_MAKEFLAGS-$@   Make settings specific to this target
   391 define SUBDIRS-loop
   392 @$(ECHO) "Begin Processing SUBDIRS: $(SUBDIRS)"
   393 @for i in DUMMY $(SUBDIRS) ; do \
   394   if [ "$$i" != "DUMMY" ] ; then \
   395     $(ECHO) ">>>Recursively making "$$i" "$@" @ `$(DATE)` ..."; \
   396     timing_id="$(TIMING_ID)-`$(BASENAME) $${i}`"; \
   397     $(call TIMING_start,startTime); \
   398     curDir=$(CURRENT_DIRECTORY); \
   399     $(CD) $$i; $(MAKE) $@ TIMING_ID=$${timing_id} \
   400 			  $(SUBDIRS_MAKEFLAGS) \
   401 			  $(SUBDIRS_MAKEFLAGS-$@) \
   402 			  FULL_VERSION=$(FULL_VERSION) \
   403 			  RELEASE=$(RELEASE) || exit 1; \
   404 	       $(CD) $${curDir}; \
   405     $(call TIMING_end,startTime,timing_id); \
   406     $(ECHO) "<<<Finished Recursively making "$$i" "$@" @ `$(DATE)`." ; \
   407   fi ; \
   408 done
   409 @$(ECHO) "Done Processing SUBDIRS: $(SUBDIRS)"
   410 endef
   412 # Given a OTHERSUBDIRS list, cd into them and make them (extra loop define)
   413 #   OTHERSUBDIRS_MAKEFLAGS      Make settings for a subdir make
   414 define OTHERSUBDIRS-loop
   415 @$(ECHO) "Begin Processing OTHERSUBDIRS: $(OTHERSUBDIRS)"
   416 @for i in DUMMY $(OTHERSUBDIRS) ; do \
   417   if [ "$$i" != "DUMMY" ] ; then \
   418     $(ECHO) ">>>Recursively making "$$i" "$@" @ `$(DATE)` ..."; \
   419     timing_id="$(TIMING_ID)-`$(BASENAME) $${i}`"; \
   420     $(call TIMING_start,startTime); \
   421     curDir=$(CURRENT_DIRECTORY); \
   422     $(CD) $$i; $(MAKE) $@ TIMING_ID=$${timing_id} \
   423 		          $(OTHERSUBDIRS_MAKEFLAGS) \
   424 			  FULL_VERSION=$(FULL_VERSION) \
   425 			  RELEASE=$(RELEASE) || exit 1; \
   426 	       $(CD) $${curDir}; \
   427     $(call TIMING_end,startTime,timing_id); \
   428     $(ECHO) "<<<Finished Recursively making "$$i" "$@" @ `$(DATE)`." ; \
   429   fi ; \
   430 done
   431 @$(ECHO) "Done Processing OTHERSUBDIRS: $(OTHERSUBDIRS)"
   432 endef
   434 #
   435 # Create BYFILE OPT and DBG settings, if CFLAGS_OPT/foobar.o is set then it is
   436 #    used for this file, otherwise the default settings are used.
   437 #
   438 CFLAGS_$(VARIANT)/BYFILE    = $(CFLAGS_$(VARIANT)/$(@F)) \
   439                               $(CFLAGS_$(VARIANT)$(CFLAGS_$(VARIANT)/$(@F)))
   440 CXXFLAGS_$(VARIANT)/BYFILE  = $(CXXFLAGS_$(VARIANT)/$(@F)) \
   441                               $(CXXFLAGS_$(VARIANT)$(CXXFLAGS_$(VARIANT)/$(@F)))
   443 #
   444 # Tool flags
   445 #
   446 ASFLAGS         = $(ASFLAGS_$(VARIANT)) $(ASFLAGS_COMMON) $(OTHER_ASFLAGS)
   447 CFLAGS          = $(CFLAGS_$(VARIANT)/BYFILE)   $(CFLAGS_COMMON) $(OTHER_CFLAGS)
   448 CXXFLAGS        = $(CXXFLAGS_$(VARIANT)/BYFILE) $(CXXFLAGS_COMMON) $(OTHER_CXXFLAGS)
   449 CPPFLAGS        = $(CPPFLAGS_$(VARIANT)) $(CPPFLAGS_COMMON) $(OTHER_CPPFLAGS) \
   450 		  $(DEFINES) $(OPTIONS:%=-D%)
   451 LDFLAGS         = $(LDFLAGS_$(VARIANT)) $(LDFLAGS_COMMON) $(OTHER_LDFLAGS)
   452 LDLIBS          = $(OTHER_LDLIBS) $(LDLIBS_$(VARIANT)) $(LDLIBS_COMMON)
   453 LINTFLAGS       = $(LINTFLAGS_$(VARIANT)) $(LINTFLAGS_COMMON) \
   454 		  $(OTHER_LINTFLAGS)
   456 # this should be moved into Defs-<platform>.gmk.....
   457 ifeq ($(PLATFORM), windows)
   458   VERSION_DEFINES = -DRELEASE="\"$(RELEASE)\""
   459 else
   460   VERSION_DEFINES = -DRELEASE='"$(RELEASE)"'
   461 endif
   463 # Note: As a rule, GNU Make rules should not appear in any of the 
   464 # Defs*.gmk files. These were added for Kestrel-Solaris and do address
   465 # a TeamWare bug. They should be moved elsewhere for Merlin.
   466 # 
   467 #  Override gnumake built-in rules which do sccs get operations badly.
   468 #  (They put the checked out code in the current directory, not in the
   469 #  directory of the original file.) 
   470 # Since this is a symptom of a teamware failure, complain and die on the spot.
   472 # This message immediately goes to stdout and the build terminates.
   473 define SCCS-trouble
   474 $(error  \
   475 "ERROR: File $@ referenced while building in $(CURRENT_DIRECTORY) \
   476  is out of date with respect to its SCCS file $<. \
   477  This can happen from an unresolved Teamware conflict, a file movement, or \
   478  a failure in which SCCS files are updated but the 'sccs get' was not done. \
   479  You should double check for other out of date files in your workspace. \
   480  Or run: cd $(TOPDIR) && $(MAKE) sccs_get")
   481 endef
   483 %:: s.%
   484 	@$(SCCS-trouble)
   485 %:: SCCS/s.%
   486 	@$(SCCS-trouble)
   487 	@$(ECHO) "         is out of date with respect to its SCCS file." >> $(WARNING_FILE)
   488 	@$(ECHO) "         This file may be from an unresolved Teamware conflict." >> $(WARNING_FILE)
   489 	@$(ECHO) "         This is also a symptom of a Teamware bringover/putback failure" >> $(WARNING_FILE)
   490 	@$(ECHO) "         in which SCCS files are updated but not checked out." >> $(WARNING_FILE)
   491 	@$(ECHO) "         Check for other out of date files in your workspace." >> $(WARNING_FILE)
   492 	@$(ECHO) "" >> $(WARNING_FILE)
   493 	@#exit 666
   495 ifdef INSANE
   496   export INSANE
   497 endif
   499 ifdef ALT_COPYRIGHT_YEAR
   500   COPYRIGHT_YEAR = $(ALT_COPYRIGHT_YEAR)
   501 else
   502   COPYRIGHT_YEAR = $(shell $(DATE) '+%Y')
   503 endif
   505 # Install of imported file (JDK_IMPORT_PATH, or some other external location)
   506 define install-import-file
   507 @$(ECHO) "ASSEMBLY_IMPORT: $@"
   508 $(install-file)
   509 endef
   511 .PHONY: all build clean clobber

mercurial