1 #
   2 # Copyright (c) 1995, 2011, Oracle and/or its affiliates. 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.  Oracle designates this
   8 # particular file as subject to the "Classpath" exception as provided
   9 # by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22 # or visit www.oracle.com if you need additional information or have any
  23 # questions.
  24 #
  25 
  26 #
  27 # Common variables used by all the Java makefiles.  This file should
  28 # not contain rules.
  29 #
  30 
  31 # WARNING: This file is shared with other workspaces.
  32 #          So when it includes other files, it must use JDK_TOPDIR.
  33 #
  34 
  35 # Check for strange explicit settings (change to empty or true)
  36 ifdef OPENJDK
  37   ifneq ($(OPENJDK),true)
  38     x:=$(error "OPENJDK (if defined) can only be set to true")
  39   endif
  40 endif
  41 
  42 #
  43 # On Solaris, the 'make' utility from Sun will not work with these makefiles.
  44 #    This little rule is only understood by Sun's make, and is harmless
  45 #    when seen by the GNU make tool. If using Sun's make, this causes the
  46 #    make command to fail.
  47 #
  48 SUN_MAKE_TEST:sh = echo "ERROR: PLEASE USE GNU VERSION OF MAKE"; exit 33
  49 
  50 ifndef JDK_TOPDIR
  51   ifdef BUILDDIR
  52     JDK_TOPDIR=$(BUILDDIR)/..
  53   else
  54     JDK_TOPDIR:=$(error "ERROR: Cannot define top of jdk repository")
  55   endif
  56 endif
  57 ifndef BUILDDIR
  58   # Hack, due to deploy repository using this file.
  59   BUILDDIR=$(JDK_TOPDIR)/make
  60 endif
  61 ifndef JDK_MAKE_SHARED_DIR
  62   JDK_MAKE_SHARED_DIR=$(JDK_TOPDIR)/make/common/shared
  63 endif
  64 
  65 include $(JDK_MAKE_SHARED_DIR)/Platform.gmk
  66 
  67 TOPDIR=$(BUILDDIR)/..
  68 
  69 include $(JDK_TOPDIR)/make/common/CancelImplicits.gmk
  70 
  71 # Historically PLATFORM_SRC used to be src/$(PLATFORM), but we switched it to
  72 # src/solaris so if you want to build on Linux you didn't need a src/linux
  73 # directory.  In an ideal world it would be called src/genunix but we are not
  74 # there yet.
  75 #
  76 ifndef SHARE_SRC
  77   SHARE_SRC    = $(BUILDDIR)/../src/share
  78 endif
  79 
  80 # Files that cannot be included in the OpenJDK distribution are
  81 # collected under a parent directory which contains just those files.
  82 ifndef CLOSED_SRC
  83   CLOSED_SRC  = $(BUILDDIR)/../src/closed
  84 endif
  85 
  86 # If CLOSE_SRC_INCLUDED isn't set to true, check if there's any
  87 # closed directory.
  88 ifneq ($(CLOSED_SRC_INCLUDED), true)
  89   CLOSED_SRC_INCLUDED := $(shell \
  90     if [ -d $(CLOSED_SRC) ] ; then \
  91       echo true; \
  92     else \
  93       echo false; \
  94     fi)
  95 endif
  96 
  97 # Set OPENJDK based on CLOSED_SRC_INCLUDED
  98 ifeq ($(CLOSED_SRC_INCLUDED), false)
  99   OPENJDK = true
 100 endif
 101 
 102 # Define where closed directories are
 103 ifdef OPENJDK
 104   CLOSED_SRC =
 105   CLOSED_SHARE_SRC =
 106 else
 107   ifndef CLOSED_SHARE_SRC
 108     CLOSED_SHARE_SRC    = $(CLOSED_SRC)/share
 109   endif
 110 endif
 111 
 112 #
 113 # Get platform definitions
 114 #
 115 
 116 include $(JDK_TOPDIR)/make/common/Defs-$(PLATFORM).gmk
 117 
 118 #
 119 # SE-Embedded support, if enabled
 120 #
 121 
 122 include $(JDK_TOPDIR)/make/common/Defs-embedded.gmk
 123 
 124 #
 125 # Cross-compilation Settings
 126 #
 127 ifdef CROSS_COMPILE_ARCH
 128   # Can't run the tools we just built
 129   USE_ONLY_BOOTDIR_TOOLS = true
 130 
 131   # When cross-compiling CC generates code for the target, but
 132   # some parts of the build generate C code that has to be compiled
 133   # and executed on the build host - HOST_CC is the 'local' compiler.
 134   # For linux the default is /usr/bin/gcc; other platforms need to
 135   # set it explicitly
 136   ifeq ($(PLATFORM), linux)
 137     ifndef HOST_CC
 138       HOST_CC = $(USRBIN_PATH)gcc
 139     endif
 140   endif
 141 else
 142   # Must set HOST_CC if not already set
 143   ifndef HOST_CC
 144     HOST_CC = $(CC)
 145   endif
 146 endif
 147 
 148 # Reset the VM name for client-only builds
 149 ifdef BUILD_CLIENT_ONLY
 150   VM_NAME = client
 151 endif
 152 
 153 #
 154 # Freetype logic is applicable to OpenJDK only
 155 #
 156 ifdef OPENJDK
 157 
 158 #if we use system lib we do not need to copy it to build tree
 159 USING_SYSTEM_FT_LIB=false
 160 
 161 ifeq ($(PLATFORM), windows)
 162   DEVTOOLS_FT_DIR=$(JDK_DEVTOOLS_DIR)/win32/freetype-$(ARCH)
 163 endif
 164 ifeq ($(PLATFORM), linux)
 165   DEVTOOLS_FT_DIR=$(JDK_DEVTOOLS_DIR)/$(PLATFORM)/freetype-$(ARCH)
 166 endif
 167 ifeq ($(PLATFORM), solaris)
 168   # historically for Solaris we have slightly different devtools 
 169   # naming conventions
 170   DEVTOOLS_FT_DIR=$(JDK_DEVTOOLS_DIR)/$(ARCH_FAMILY)/freetype-$(ARCH)
 171 endif
 172 
 173 DEVTOOLS_FT_DIR_EXISTS = $(shell \
 174   if [ -f $(DEVTOOLS_FT_DIR)/include/ft2build.h ] ; then \
 175     echo true; \
 176   else \
 177     echo false; \
 178   fi)
 179 
 180   ifdef ALT_FREETYPE_LIB_PATH
 181     FREETYPE_LIB_PATH = $(ALT_FREETYPE_LIB_PATH)
 182   else
 183     ifeq ($(DEVTOOLS_FT_DIR_EXISTS), true)
 184       FREETYPE_LIB_PATH = $(DEVTOOLS_FT_DIR)/lib
 185     else
 186       FREETYPE_LIB_PATH = /usr/lib
 187       USING_SYSTEM_FT_LIB=true
 188     endif
 189   endif 
 190 
 191   ifdef ALT_FREETYPE_HEADERS_PATH
 192     FREETYPE_HEADERS_PATH = $(ALT_FREETYPE_HEADERS_PATH)
 193   else
 194     ifeq ($(DEVTOOLS_FT_DIR_EXISTS), true)
 195       FREETYPE_HEADERS_PATH = $(DEVTOOLS_FT_DIR)/include
 196     else
 197       FREETYPE_HEADERS_PATH = /usr/include
 198     endif
 199   endif
 200 endif
 201 
 202 #
 203 # zlib version
 204 #
 205 ZLIB_VERSION = 1.2.5
 206 
 207 
 208 #
 209 # Localizations for the different parts of the product beyond English
 210 #
 211 
 212 JRE_LOCALES   = de es fr it ja ko pt_BR sv zh_CN zh_TW zh_HK
 213 PLUGIN_LOCALES = de es fr it ja ko pt_BR sv zh_CN zh_TW zh_HK
 214 JDK_LOCALES  = ja zh_CN
 215 
 216 #
 217 # A list of locales we support but don't have resource files.
 218 # This is defined to optimize the search of resource bundles.
 219 #
 220 JRE_NONEXIST_LOCALES = en en_US de_DE es_ES fr_FR it_IT ja_JP ko_KR sv_SE zh
 221 
 222 #
 223 # For now, most libraries except libjava and libjvm itself link against libjvm
 224 # and libjava, the latter for its exported common utilities. libjava only
 225 # links against libjvm. Programs' makefiles take their own responsibility for
 226 # adding other libs.
 227 #
 228 # The makefiles for these packages do not link against libjvm and libjava.
 229 # This list will eventually go away and each Programs' makefiles
 230 # will have to explicitly declare that they want to link to libjava/libjvm
 231 #
 232 NO_JAVALIB_PKGS = \
 233                 sun.security.mscapi \
 234                 sun.security.krb5 \
 235                 sun.security.pkcs11 \
 236                 sun.security.jgss \
 237                 sun.security.jgss.wrapper \
 238                 sun.security.ec \
 239                 sun.security.smartcardio \
 240                 com.sun.security.auth.module
 241 
 242 ifdef PACKAGE
 243 # put JAVALIB first, but do not lose any platform specific values....
 244   ifeq (,$(findstring $(PACKAGE),$(NO_JAVALIB_PKGS)))
 245     LDLIBS_COMMON = $(JAVALIB)
 246   endif
 247 endif # PACKAGE
 248 
 249 #
 250 # Libraries that must appear ahead of libc.so on the link command line
 251 #
 252 ifdef PROGRAM
 253 
 254   ifeq ($(PLATFORM), solaris)
 255     LDLIBS_COMMON = -lthread -ldl
 256   endif
 257 
 258   ifeq ($(PLATFORM), linux)
 259     LDLIBS_COMMON = -ldl
 260   endif
 261 
 262 endif # PROGRAM
 263 
 264 LDLIBS_COMMON += $(EXTRA_LIBS)
 265 
 266 # for generated libraries
 267 LIBDIR              = $(OUTPUTDIR)/lib
 268 ABS_LIBDIR          = $(ABS_OUTPUTDIR)/lib
 269 # Optional place to save the windows .lib files
 270 LIBFILES_DIR        = $(OUTPUTDIR)/libfiles
 271 # for ext jre files
 272 EXTDIR              = $(LIBDIR)/ext
 273 # for generated include files
 274 INCLUDEDIR          = $(OUTPUTDIR)/include
 275 # for generated class files
 276 CLASSBINDIR         = $(OUTPUTDIR)/classes
 277 DEMOCLASSDIR        = $(OUTPUTDIR)/democlasses
 278 # for generated tool class files
 279 BUILDTOOLCLASSDIR   = $(OUTPUTDIR)/btclasses
 280 # for build tool jar files
 281 BUILDTOOLJARDIR     = $(OUTPUTDIR)/btjars
 282 ABS_BUILDTOOLJARDIR = $(ABS_OUTPUTDIR)/btjars
 283 # for generated tool class files
 284 BUILDTOOLBINDIR     = $(OUTPUTDIR)/btbins
 285 # for generated java source files
 286 GENSRCDIR           = $(OUTPUTDIR)/gensrc
 287 # for generated C source files (not javah)
 288 GENNATIVESRCDIR     = $(OUTPUTDIR)/gennativesrc
 289 # for imported source files
 290 IMPORTSRCDIR        = $(OUTPUTDIR)/impsrc
 291 # for imported documents
 292 IMPORTDOCDIR        = $(OUTPUTDIR)/impdoc
 293 # for generated demo
 294 DEMODIR             = $(OUTPUTDIR)/demo
 295 # for sample code
 296 SAMPLEDIR           = $(OUTPUTDIR)/sample
 297 # for generated documentation
 298 DOCSDIR             = $(OUTPUTDIR)/docs$(DOCSDIRSUFFIX)
 299 DOCSDIRSUFFIX       =
 300 
 301 # The MESSAGE, WARNING and ERROR files are used to store sanityck and 
 302 # warnings and errors. 
 303 ifndef ERROR_FILE
 304   ERROR_FILE   = $(OUTPUTDIR)/sanityCheckErrors.txt
 305 endif
 306 ifndef WARNING_FILE
 307   WARNING_FILE = $(OUTPUTDIR)/sanityCheckWarnings.txt
 308 endif
 309 ifndef MESSAGE_FILE
 310   MESSAGE_FILE = $(OUTPUTDIR)/sanityCheckMessages.txt
 311 endif
 312 
 313 JDK_LEGACY_IMAGE_DIR = $(ABS_OUTPUTDIR)/j2sdk-image
 314 JRE_LEGACY_IMAGE_DIR = $(ABS_OUTPUTDIR)/j2re-image
 315 
 316 #where the demo source can be found
 317 DEMOSRCDIR          = $(SHARE_SRC)/demo
 318 
 319 #where the sample source can be found
 320 SAMPLESRCDIR          = $(SHARE_SRC)/sample
 321 
 322 # An attempt is made to generate unique enough directories for the
 323 # generated files to not have name collisisons. Most build units
 324 # defines PRODUCT (except Release.gmk), but then they may or may 
 325 # not define PACKAGE, PROGRAM, and LIBRARY. This code attempts to
 326 # generate a unique OBJDIR/CLASSHDRDIR for each build unit based
 327 # on which of those values are set within each build unit.
 328 
 329 UNIQUE_LOCATION_STRING = tmp
 330 
 331 ifneq ($(PRODUCT),)
 332   UNIQUE_LOCATION_STRING += /$(PRODUCT)
 333 endif
 334 
 335 ifneq ($(PACKAGE),)
 336   UNIQUE_LOCATION_STRING += /$(PACKAGE)
 337 endif
 338 
 339 ifneq ($(PROGRAM),)
 340   UNIQUE_LOCATION_STRING += /$(PROGRAM)
 341 endif
 342 
 343 ifneq ($(LIBRARY),)
 344   ifneq ($(LIBRARY_OUTPUT),)
 345     UNIQUE_LOCATION_STRING += /$(LIBRARY_OUTPUT)
 346   else
 347     UNIQUE_LOCATION_STRING += /$(LIBRARY)
 348   endif
 349 endif
 350 
 351 # the use of += above makes a space separated list which we need to 
 352 # remove for filespecs.
 353 #
 354 NULLSTRING :=
 355 ONESPACE := $(NULLSTRING) # space before this comment is required.
 356 UNIQUE_PATH = $(subst $(ONESPACE),,$(UNIQUE_LOCATION_STRING))
 357 
 358 # TEMPDIR is a unique general purpose directory
 359 # need to use 'override' because GNU Make on Linux exports the wrong
 360 # value.
 361 override TEMPDIR      = $(OUTPUTDIR)/$(UNIQUE_PATH)
 362 override ABS_TEMPDIR  = $(ABS_OUTPUTDIR)/$(UNIQUE_PATH)
 363 
 364 # This must be created right away for pattern rules in Sanity.gmk to work.
 365 dummy1:=$(shell $(MKDIR) -p $(TEMPDIR))
 366 dummy2:=$(shell $(MKDIR) -p $(TEMP_DISK))
 367 
 368 # OBJDIRNAME is the name of the directory where the object code is to
 369 #   be placed. It's name depends on whether the data model architecture 
 370 #   is 32-bit or not.
 371 ifneq ($(ARCH_DATA_MODEL), 32)
 372   OBJDIRNAME  = obj$(ARCH_DATA_MODEL)$(OBJDIRNAME_SUFFIX)
 373 else
 374   OBJDIRNAME  = obj$(OBJDIRNAME_SUFFIX)
 375 endif
 376 OBJDIR      = $(TEMPDIR)/$(OBJDIRNAME)
 377 
 378 # CLASSHDRDIR is where the generated C Class Header files go.
 379 CLASSHDRDIR = $(TEMPDIR)/CClassHeaders
 380 
 381 #
 382 # CLASSDESTDIR can be used to specify the directory where generated classes
 383 # are to be placed. The default is CLASSBINDIR.
 384 #
 385 ifndef CLASSDESTDIR
 386 CLASSDESTDIR = $(CLASSBINDIR)
 387 endif
 388 
 389 INCLUDES = -I. -I$(CLASSHDRDIR) \
 390         $(patsubst %,-I%,$(subst $(CLASSPATH_SEPARATOR), ,$(VPATH.h))) $(OTHER_INCLUDES)
 391 OTHER_CPPFLAGS += $(INCLUDES)
 392 
 393 #
 394 # vpaths.  These are the default locations searched for source files.
 395 # GNUmakefiles of individual areas often override the default settings.
 396 # There are no longer default vpath entries for C and assembler files
 397 # so we can ensure that libraries don't get their hands on JVM files.
 398 #
 399 # We define an intermediate variable for Java files because
 400 # we use its value later to help define $SOURCEPATH
 401 
 402 VPATH0.java = $(GENSRCDIR)$(CLASSPATH_SEPARATOR)$(PLATFORM_SRC)/classes$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/classes
 403 ifdef OPENJDK
 404   VPATH.java = $(VPATH0.java)
 405 else
 406   #
 407   # If filenames are duplicated between open/closed workspaces, prefer
 408   # the closed files.
 409   #
 410   # Source ordering is important: some targets depend on closed files
 411   # replacing open ones, and thus the closed file sources must be found
 412   # before the open ones.
 413   #
 414   # Don't reorder without consulting the teams that depend on this behavior.
 415   #
 416   VPATH.java = $(CLOSED_PLATFORM_SRC)/classes$(CLASSPATH_SEPARATOR)$(CLOSED_SHARE_SRC)/classes$(CLASSPATH_SEPARATOR)$(VPATH0.java)
 417 endif
 418 vpath %.java $(VPATH.java)
 419 vpath %.class $(CLASSBINDIR)
 420 vpath %.$(OBJECT_SUFFIX) $(OBJDIR)
 421 
 422 #
 423 # VPATH.h is used elsewhere to generate include flags.  By default, 
 424 # anyone has access to the include files that the JVM area exports,
 425 # namely jni.h, jvm.h, and jni_utils.h, plus their platform-specific
 426 # relatives.
 427 #
 428 VPATH.h =   $(PLATFORM_SRC)/javavm/export$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/javavm/export
 429 vpath %.h   $(VPATH.h)
 430 
 431 #
 432 # Used in two ways: helps link against libjava.so. Also if overridden
 433 # determines where your shared library is installed.
 434 #
 435 ifndef LIB_LOCATION
 436   LIB_LOCATION    =  $(LIBDIR)/$(LIBARCH)
 437 endif
 438 
 439 #
 440 # Java header and stub variables
 441 #
 442 CLASSHDRS     = $(patsubst %,$(CLASSHDRDIR)/%.h,$(subst .,_,$(CLASSES.export)))
 443 CLASSSTUBOBJS = classstubs.$(OBJECT_SUFFIX)
 444 STUBPREAMBLE  = $(INCLUDEDIR)/StubPreamble.h
 445 
 446 #
 447 # Classpath seen by javac (different from the one seen by the VM
 448 # running javac), and useful variables.
 449 #
 450 SOURCEPATH      = $(VPATH.java)
 451 PKG             = $(shell $(EXPR) $(PACKAGE) : '\([a-z]*\)')
 452 PKGDIR          = $(subst .,/,$(PACKAGE))
 453 
 454 #
 455 # The java/javac/jdk variables (JAVAC_CMD, JAVA_CMD, etc.)
 456 #
 457 include $(JDK_MAKE_SHARED_DIR)/Defs-java.gmk
 458 UNIQUE_PATH_PATTERN = $(subst /,.,$(UNIQUE_PATH))
 459 
 460 #
 461 # The modules variables
 462 #
 463 include $(JDK_TOPDIR)/make/common/Defs-modules.gmk
 464 
 465 # Install a file to its module
 466 define install-module-file
 467 dest=$(call GetModuleDest, $(@D)/) ; \
 468 $(MKDIR) -p $$dest; \
 469 $(CP) -f $@ $$dest; \
 470 $(TouchModule)
 471 endef
 472 
 473 # Install all files from the directory to its module
 474 define install-module-dir
 475 dest=$(call GetModuleDest, $(@D)/) ; \
 476 $(MKDIR) -p $$dest; \
 477 $(CP) -rf $(@D)/* $$dest; \
 478 $(TouchModule)
 479 endef
 480 
 481 # chmod the file in its module
 482 define chmod-module-file
 483 dest=$(call GetModuleDest, $@) ; \
 484 $(CHMOD) $1 $$dest
 485 endef
 486 
 487 # install a sym link in its module
 488 define install-module-sym-link
 489 dest=$(call GetModuleDest, $@) ; \
 490 $(LN) -sf $1 $$dest
 491 endef
 492 
 493 
 494 # Run MAKE $@ for a launcher:
 495 #   $(call make-launcher, name, mainclass, java-args, main-args)
 496 define make-launcher
 497 $(CD) $(BUILDDIR)/launchers && \
 498 $(MAKE) -f Makefile.launcher \
 499         PROGRAM=$(strip $1) \
 500         MAIN_CLASS=$(strip $2) \
 501         MAIN_JAVA_ARGS="$(strip $3)" \
 502         MAIN_ARGS="$(strip $4)" \
 503         MODULE="tools.$(strip $1)" \
 504         PROGRAM_MODULE="jdk.$(strip $1)"
 505 endef
 506 
 507 #
 508 # Convenient macros
 509 #
 510 
 511 # Prepare $@ target, remove old one and making sure directory exists
 512 define prep-target
 513 $(MKDIR) -p $(@D)
 514 $(RM) $@
 515 endef
 516 
 517 # Simple install of $< file to $@
 518 # and also install $< file to its module directory
 519 define install-file
 520 $(prep-target)
 521 $(CP) $< $@
 522 @$(install-module-file)
 523 endef
 524 
 525 # Include header files always belongs the base module
 526 define install-include-file
 527 $(prep-target)
 528 $(CP) $< $@
 529 dest=$(call GetBaseModuleDest, $(@D)/) ; \
 530 $(MKDIR) -p $$dest; \
 531 $(CP) -f $@ $$dest
 532 endef
 533 
 534 define chmod-file
 535 $(CHMOD) $1 $@
 536 @$(call chmod-module-file, $1)
 537 endef
 538 
 539 define install-sym-link
 540 $(LN) -s $1 $@
 541 @$(call install-module-sym-link, $1)
 542 endef
 543 
 544 #
 545 # Marcos for files not belonging to any module 
 546 define install-non-module-file
 547 $(prep-target)
 548 $(CP) $< $@
 549 endef
 550 
 551 define install-manifest-file
 552 $(install-non-module-file)
 553 endef
 554 
 555 # Cleanup rule for after debug java run (hotspot.log file is left around)
 556 #   (This could be an old leftover file in a read-only area, use the @- prefix)
 557 HOTSPOT_LOG_NAME = hotspot.log
 558 define java-vm-cleanup
 559 if [ -w $(HOTSPOT_LOG_NAME) ] ; then $(RM) $(HOTSPOT_LOG_NAME); fi
 560 endef
 561 
 562 # Current directory
 563 CURRENT_DIRECTORY := $(shell $(PWD))
 564 
 565 #
 566 # Create BYFILE OPT and DBG settings, if CFLAGS_OPT/foobar.o is set then it is
 567 #    used for this file, otherwise the default settings are used.
 568 #
 569 CFLAGS_$(VARIANT)/BYFILE    = $(CFLAGS_$(VARIANT)/$(@F)) \
 570                               $(CFLAGS_$(VARIANT)$(CFLAGS_$(VARIANT)/$(@F)))
 571 CXXFLAGS_$(VARIANT)/BYFILE  = $(CXXFLAGS_$(VARIANT)/$(@F)) \
 572                               $(CXXFLAGS_$(VARIANT)$(CXXFLAGS_$(VARIANT)/$(@F)))
 573 
 574 #
 575 # Tool flags
 576 #
 577 # EXTRA_CFLAGS are used to define cross-compilation options
 578 #
 579 ASFLAGS         = $(ASFLAGS_$(VARIANT)) $(ASFLAGS_COMMON) $(OTHER_ASFLAGS)
 580 CFLAGS          = $(CFLAGS_$(VARIANT)/BYFILE)   $(CFLAGS_COMMON) $(OTHER_CFLAGS) $(EXTRA_CFLAGS)
 581 CXXFLAGS        = $(CXXFLAGS_$(VARIANT)/BYFILE) $(CXXFLAGS_COMMON) $(OTHER_CXXFLAGS) $(EXTRA_CFLAGS)
 582 CPPFLAGS        = $(CPPFLAGS_$(VARIANT)) $(CPPFLAGS_COMMON) $(OTHER_CPPFLAGS) \
 583                   $(DEFINES) $(OPTIONS:%=-D%)
 584 LDFLAGS         = $(LDFLAGS_$(VARIANT)) $(LDFLAGS_COMMON) $(OTHER_LDFLAGS)
 585 LDLIBS          = $(OTHER_LDLIBS) $(LDLIBS_$(VARIANT)) $(LDLIBS_COMMON)
 586 LINTFLAGS       = $(LINTFLAGS_$(VARIANT)) $(LINTFLAGS_COMMON) \
 587                   $(OTHER_LINTFLAGS)
 588 
 589 VERSION_DEFINES = -DRELEASE='"$(RELEASE)"'
 590 
 591 ifdef INSANE
 592   export INSANE
 593 endif
 594 
 595 ifdef ALT_COPYRIGHT_YEAR
 596   COPYRIGHT_YEAR = $(ALT_COPYRIGHT_YEAR)
 597 else
 598   COPYRIGHT_YEAR := $(shell $(DATE) '+%Y')
 599 endif
 600 
 601 ifndef OPENJDK
 602 include $(JDK_TOPDIR)/make/closed/common/Defs.gmk
 603 endif
 604 
 605 # Install of imported file (JDK_IMPORT_PATH, or some other external location)
 606 define install-importonly-file
 607 @$(ECHO) "ASSEMBLY_IMPORT: $@"
 608 $(prep-target)
 609 $(CP) $< $@
 610 @if [ "$(PLATFORM)" = "linux" -a "$(@F)" = "libjvm.so" ] ; then     \
 611   if [ -x /usr/sbin/selinuxenabled ] ; then                         \
 612     /usr/sbin/selinuxenabled;                                       \
 613     if [ $$? = 0 ] ; then                                           \
 614       $(ECHO) "/usr/bin/chcon -t textrel_shlib_t $@";               \
 615       /usr/bin/chcon -t textrel_shlib_t $@;                         \
 616       if [ $$? != 0 ]; then                                         \
 617         echo "ERROR: Cannot chcon $@";                              \
 618       fi;                                                           \
 619     fi;                                                             \
 620   fi;                                                               \
 621 fi
 622 endef
 623 
 624 define install-import-file
 625 $(install-importonly-file)
 626 @$(install-module-file)
 627 endef
 628 
 629 .PHONY: all build clean clobber