1 #
   2 # Copyright (c) 1995, 2008, 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 # Freetype logic is applicable to OpenJDK only
 120 #
 121 ifdef OPENJDK
 122 
 123 #if we use system lib we do not need to copy it to build tree
 124 USING_SYSTEM_FT_LIB=false
 125 
 126 ifeq ($(PLATFORM), windows)
 127   DEVTOOLS_FT_DIR=$(JDK_DEVTOOLS_DIR)/win32/freetype-$(ARCH)
 128 endif
 129 ifeq ($(PLATFORM), linux)
 130   DEVTOOLS_FT_DIR=$(JDK_DEVTOOLS_DIR)/$(PLATFORM)/freetype-$(ARCH)
 131 endif
 132 ifeq ($(PLATFORM), solaris)
 133   # historically for Solaris we have slightly different devtools 
 134   # naming conventions
 135   DEVTOOLS_FT_DIR=$(JDK_DEVTOOLS_DIR)/$(ARCH_FAMILY)/freetype-$(ARCH)
 136 endif
 137 
 138 DEVTOOLS_FT_DIR_EXISTS = $(shell \
 139   if [ -f $(DEVTOOLS_FT_DIR)/include/ft2build.h ] ; then \
 140     echo true; \
 141   else \
 142     echo false; \
 143   fi)
 144 
 145   ifdef ALT_FREETYPE_LIB_PATH
 146     FREETYPE_LIB_PATH = $(ALT_FREETYPE_LIB_PATH)
 147   else
 148     ifeq ($(DEVTOOLS_FT_DIR_EXISTS), true)
 149       FREETYPE_LIB_PATH = $(DEVTOOLS_FT_DIR)/lib
 150     else
 151       FREETYPE_LIB_PATH = /usr/lib
 152       USING_SYSTEM_FT_LIB=true
 153     endif
 154   endif 
 155 
 156   ifdef ALT_FREETYPE_HEADERS_PATH
 157     FREETYPE_HEADERS_PATH = $(ALT_FREETYPE_HEADERS_PATH)
 158   else
 159     ifeq ($(DEVTOOLS_FT_DIR_EXISTS), true)
 160       FREETYPE_HEADERS_PATH = $(DEVTOOLS_FT_DIR)/include
 161     else
 162       FREETYPE_HEADERS_PATH = /usr/include
 163     endif
 164   endif
 165 endif
 166 
 167 #
 168 # zlib version
 169 #
 170 ZLIB_VERSION = 1.2.3
 171 
 172 
 173 #
 174 # Localizations for the different parts of the product beyond English
 175 #
 176 
 177 JRE_LOCALES   = de es fr it ja ko pt_BR sv zh_CN zh_TW zh_HK
 178 PLUGIN_LOCALES = de es fr it ja ko pt_BR sv zh_CN zh_TW zh_HK
 179 JDK_LOCALES  = ja zh_CN
 180 
 181 #
 182 # A list of locales we support but don't have resource files.
 183 # This is defined to optimize the search of resource bundles.
 184 #
 185 JRE_NONEXIST_LOCALES = en en_US de_DE es_ES fr_FR it_IT ja_JP ko_KR sv_SE zh
 186 
 187 #
 188 # All libraries except libjava and libjvm itself link against libjvm and
 189 # libjava, the latter for its exported common utilities.  libjava only links
 190 # against libjvm.  Programs' makefiles take their own responsibility for
 191 # adding other libs.
 192 #
 193 ifdef PACKAGE
 194 # put JAVALIB first, but do not lose any platform specific values....
 195   LDLIBS_COMMON = $(JAVALIB)
 196 endif # PACKAGE
 197 
 198 #
 199 # Libraries that must appear ahead of libc.so on the link command line
 200 #
 201 ifdef PROGRAM
 202 
 203   ifeq ($(PLATFORM), solaris)
 204     LDLIBS_COMMON = -lthread -ldl
 205   endif
 206 
 207   ifeq ($(PLATFORM), linux)
 208     LDLIBS_COMMON = -ldl
 209   endif
 210 
 211 endif # PROGRAM
 212 
 213 LDLIBS_COMMON += $(EXTRA_LIBS)
 214 
 215 # for generated libraries
 216 LIBDIR              = $(OUTPUTDIR)/lib
 217 ABS_LIBDIR          = $(ABS_OUTPUTDIR)/lib
 218 # Optional place to save the windows .lib files
 219 LIBFILES_DIR        = $(OUTPUTDIR)/libfiles
 220 # for ext jre files
 221 EXTDIR              = $(LIBDIR)/ext
 222 # for generated include files
 223 INCLUDEDIR          = $(OUTPUTDIR)/include
 224 # for generated class files
 225 CLASSBINDIR         = $(OUTPUTDIR)/classes
 226 DEMOCLASSDIR        = $(OUTPUTDIR)/democlasses
 227 # for modules
 228 MODULES_DIR         = $(OUTPUTDIR)/modules
 229 ABS_MODULES_DIR     = $(ABS_OUTPUTDIR)/modules
 230 # for generated tool class files
 231 BUILDTOOLCLASSDIR   = $(OUTPUTDIR)/btclasses
 232 # for build tool jar files
 233 BUILDTOOLJARDIR     = $(OUTPUTDIR)/btjars
 234 ABS_BUILDTOOLJARDIR = $(ABS_OUTPUTDIR)/btjars
 235 # for generated tool class files
 236 BUILDTOOLBINDIR     = $(OUTPUTDIR)/btbins
 237 # for generated java source files
 238 GENSRCDIR           = $(OUTPUTDIR)/gensrc
 239 # for generated C source files (not javah)
 240 GENNATIVESRCDIR     = $(OUTPUTDIR)/gennativesrc
 241 # for imported source files
 242 IMPORTSRCDIR        = $(OUTPUTDIR)/impsrc
 243 # for imported documents
 244 IMPORTDOCDIR        = $(OUTPUTDIR)/impdoc
 245 # for generated demo
 246 DEMODIR             = $(OUTPUTDIR)/demo
 247 # for sample code
 248 SAMPLEDIR           = $(OUTPUTDIR)/sample
 249 # for generated documentation
 250 DOCSDIR             = $(OUTPUTDIR)/docs$(DOCSDIRSUFFIX)
 251 DOCSDIRSUFFIX       =
 252 
 253 # The MESSAGE, WARNING and ERROR files are used to store sanityck and 
 254 # warnings and errors. 
 255 ifndef ERROR_FILE
 256   ERROR_FILE   = $(OUTPUTDIR)/sanityCheckErrors.txt
 257 endif
 258 ifndef WARNING_FILE
 259   WARNING_FILE = $(OUTPUTDIR)/sanityCheckWarnings.txt
 260 endif
 261 ifndef MESSAGE_FILE
 262   MESSAGE_FILE = $(OUTPUTDIR)/sanityCheckMessages.txt
 263 endif
 264 
 265 JDK_IMAGE_DIR = $(ABS_OUTPUTDIR)/j2sdk-image
 266 JRE_IMAGE_DIR = $(ABS_OUTPUTDIR)/j2re-image
 267 
 268 #where the demo source can be found
 269 DEMOSRCDIR          = $(SHARE_SRC)/demo
 270 
 271 # An attempt is made to generate unique enough directories for the
 272 # generated files to not have name collisisons. Most build units
 273 # defines PRODUCT (except Release.gmk), but then they may or may 
 274 # not define PACKAGE, THREADIR (only HPI uses this), PROGRAM, and 
 275 # LIBRARY. This code chunk attempts to generate a unique 
 276 # OBJDIR/CLASSHDRDIR for each build unit based on which of those 
 277 # values are set within each build unit.
 278 
 279 UNIQUE_LOCATION_STRING = tmp
 280 
 281 ifneq ($(PRODUCT),)
 282   UNIQUE_LOCATION_STRING += /$(PRODUCT)
 283 endif
 284 
 285 ifneq ($(PACKAGE),)
 286   UNIQUE_LOCATION_STRING += /$(PACKAGE)
 287 endif
 288 
 289 ifneq ($(PROGRAM),)
 290   UNIQUE_LOCATION_STRING += /$(PROGRAM)
 291 endif
 292 
 293 ifneq ($(LIBRARY),)
 294   ifneq ($(LIBRARY_OUTPUT),)
 295     UNIQUE_LOCATION_STRING += /$(LIBRARY_OUTPUT)
 296   else
 297     UNIQUE_LOCATION_STRING += /$(LIBRARY)
 298   endif
 299 endif
 300 
 301 ifneq ($(THREADDIR),)
 302   UNIQUE_LOCATION_STRING += /$(THREADDIR)
 303 endif
 304 
 305 #
 306 # Build units may or may not define MODULE.  Default to "other".
 307 #
 308 # MODULE variable defines the lowest-level module name that
 309 # might or might not be the name of the modules created in
 310 # the modules build (see make/modules/modules.config and
 311 # modules.group).
 312 #
 313 MODULES_TEMPDIR     = $(OUTPUTDIR)/tmp/modules
 314 ABS_MODULES_TEMPDIR = $(ABS_OUTPUTDIR)/tmp/modules
 315 
 316 ifndef MODULE
 317   MODULE = other
 318 endif
 319 override MODULE_DEST_DIR = $(MODULES_TEMPDIR)/$(MODULE)
 320 
 321 # the use of += above makes a space separated list which we need to 
 322 # remove for filespecs.
 323 #
 324 NULLSTRING :=
 325 ONESPACE := $(NULLSTRING) # space before this comment is required.
 326 UNIQUE_PATH = $(subst $(ONESPACE),,$(UNIQUE_LOCATION_STRING))
 327 
 328 # TEMPDIR is a unique general purpose directory
 329 # need to use 'override' because GNU Make on Linux exports the wrong
 330 # value.
 331 override TEMPDIR      = $(OUTPUTDIR)/$(UNIQUE_PATH)
 332 override ABS_TEMPDIR  = $(ABS_OUTPUTDIR)/$(UNIQUE_PATH)
 333 
 334 # This must be created right away for pattern rules in Sanity.gmk to work.
 335 dummy1:=$(shell $(MKDIR) -p $(TEMPDIR))
 336 dummy2:=$(shell $(MKDIR) -p $(TEMP_DISK))
 337 
 338 # OBJDIRNAME is the name of the directory where the object code is to
 339 #   be placed. It's name depends on whether the data model architecture 
 340 #   is 32-bit or not.
 341 ifneq ($(ARCH_DATA_MODEL), 32)
 342   OBJDIRNAME  = obj$(ARCH_DATA_MODEL)$(OBJDIRNAME_SUFFIX)
 343 else
 344   OBJDIRNAME  = obj$(OBJDIRNAME_SUFFIX)
 345 endif
 346 OBJDIR      = $(TEMPDIR)/$(OBJDIRNAME)
 347 
 348 # CLASSHDRDIR is where the generated C Class Header files go.
 349 CLASSHDRDIR = $(TEMPDIR)/CClassHeaders
 350 
 351 #
 352 # CLASSDESTDIR can be used to specify the directory where generated classes
 353 # are to be placed. The default is CLASSBINDIR.
 354 #
 355 ifndef CLASSDESTDIR
 356 CLASSDESTDIR = $(CLASSBINDIR)
 357 endif
 358 
 359 INCLUDES = -I. -I$(CLASSHDRDIR) \
 360         $(patsubst %,-I%,$(subst $(CLASSPATH_SEPARATOR), ,$(VPATH.h))) $(OTHER_INCLUDES)
 361 OTHER_CPPFLAGS = $(INCLUDES)
 362 
 363 
 364 #
 365 # vpaths.  These are the default locations searched for source files.
 366 # GNUmakefiles of individual areas often override the default settings.
 367 # There are no longer default vpath entries for C and assembler files
 368 # so we can ensure that libraries don't get their hands on JVM files.
 369 #
 370 # We define an intermediate variable for Java files because
 371 # we use its value later to help define $SOURCEPATH
 372 
 373 VPATH0.java = $(GENSRCDIR)$(CLASSPATH_SEPARATOR)$(PLATFORM_SRC)/classes$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/classes
 374 ifdef OPENJDK
 375   VPATH.java = $(VPATH0.java)
 376 else
 377   #
 378   # If filenames are duplicated between open/closed workspaces, prefer
 379   # the closed files.
 380   #
 381   # Source ordering is important: some targets depend on closed files
 382   # replacing open ones, and thus the closed file sources must be found
 383   # before the open ones.
 384   #
 385   # Don't reorder without consulting the teams that depend on this behavior.
 386   #
 387   VPATH.java = $(CLOSED_PLATFORM_SRC)/classes$(CLASSPATH_SEPARATOR)$(CLOSED_SHARE_SRC)/classes$(CLASSPATH_SEPARATOR)$(VPATH0.java)
 388 endif
 389 vpath %.java $(VPATH.java)
 390 vpath %.class $(CLASSBINDIR)
 391 vpath %.$(OBJECT_SUFFIX) $(OBJDIR)
 392 
 393 #
 394 # VPATH.h is used elsewhere to generate include flags.  By default, 
 395 # anyone has access to the include files that the JVM area exports,
 396 # namely jni.h, jvm.h, and jni_utils.h, plus their platform-specific
 397 # relatives.
 398 #
 399 VPATH.h =   $(PLATFORM_SRC)/javavm/export$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/javavm/export
 400 vpath %.h   $(VPATH.h)
 401 
 402 #
 403 # Used in two ways: helps link against libjava.so. Also if overridden
 404 # determines where your shared library is installed.
 405 #
 406 ifndef LIB_LOCATION
 407   LIB_LOCATION    =  $(LIBDIR)/$(LIBARCH)
 408 endif
 409 
 410 #
 411 # Java header and stub variables
 412 #
 413 CLASSHDRS     = $(patsubst %,$(CLASSHDRDIR)/%.h,$(subst .,_,$(CLASSES.export)))
 414 CLASSSTUBOBJS = classstubs.$(OBJECT_SUFFIX)
 415 STUBPREAMBLE  = $(INCLUDEDIR)/StubPreamble.h
 416 
 417 #
 418 # Classpath seen by javac (different from the one seen by the VM
 419 # running javac), and useful variables.
 420 #
 421 SOURCEPATH      = $(VPATH.java)
 422 PKG             = $(shell $(EXPR) $(PACKAGE) : '\([a-z]*\)')
 423 PKGDIR          = $(subst .,/,$(PACKAGE))
 424 
 425 #
 426 # The java/javac/jdk variables (JAVAC_CMD, JAVA_CMD, etc.)
 427 #
 428 include $(JDK_MAKE_SHARED_DIR)/Defs-java.gmk
 429 
 430 #
 431 # Macros to find the module that $@ belongs to
 432 #
 433 
 434 UNIQUE_PATH_PATTERN = $(subst /,.,$(UNIQUE_PATH))
 435 MODULE_PATH_PATTERN = -e 's%.*\/classes\/%classes\/%' \
 436                       -e 's%.*\/$(UNIQUE_PATH_PATTERN)\/%classes\/%' \
 437                       -e 's%.*\/lib\/%lib\/%' \
 438                       -e 's%.*\/bin\/%bin\/%' \
 439                       -e 's%.*\/include\/%include\/%' \
 440                       -e 's%.*\/demo\/%demo\/%' \
 441                       -e 's%.*\/sample\/%sample\/%'
 442 
 443 # Install a file to its module
 444 define install-module-file
 445 dest=`echo $(@D)/ | $(SED) $(MODULE_PATH_PATTERN)` ; \
 446 $(MKDIR) -p $(MODULE_DEST_DIR)/$$dest; \
 447 $(CP) -f $@ $(MODULE_DEST_DIR)/$$dest
 448 endef
 449 
 450 # Install all files from the directory to its module
 451 define install-module-dir
 452 dest=`echo $(@D)/ | $(SED) $(MODULE_PATH_PATTERN)` ; \
 453 $(MKDIR) -p $(MODULE_DEST_DIR)/$$dest; \
 454 $(CP) -rf $(@D)/* $(MODULE_DEST_DIR)/$$dest
 455 endef
 456 
 457 # chmod the file in its module
 458 define chmod-module-file
 459 dest=`echo $@ | $(SED) $(MODULE_PATH_PATTERN)` ; \
 460 $(CHMOD) $1 $(MODULE_DEST_DIR)/$$dest
 461 endef
 462 
 463 # install a sym link in its module
 464 define install-module-sym-link
 465 dest=`echo $@ | $(SED) $(MODULE_PATH_PATTERN)` ; \
 466 $(LN) -sf $1 $(MODULE_DEST_DIR)/$$dest
 467 endef
 468 
 469 
 470 # Run MAKE $@ for a launcher:
 471 #   $(call make-launcher, name, mainclass, java-args, main-args)
 472 define make-launcher
 473 $(CD) $(BUILDDIR)/launchers && \
 474 $(MAKE) -f Makefile.launcher \
 475         MODULE=$(MODULE) \
 476         PROGRAM=$(strip $1) \
 477         MAIN_CLASS=$(strip $2) \
 478         MAIN_JAVA_ARGS="$(strip $3)" \
 479         MAIN_ARGS="$(strip $4)"
 480 endef
 481 
 482 #
 483 # Convenient macros
 484 #
 485 
 486 # Prepare $@ target, remove old one and making sure directory exists
 487 define prep-target
 488 $(MKDIR) -p $(@D)
 489 $(RM) $@
 490 endef
 491 
 492 # Simple install of $< file to $@
 493 define install-file
 494 $(prep-target)
 495 $(CP) $< $@
 496 @$(install-module-file)
 497 endef
 498 
 499 define chmod-file
 500 $(CHMOD) $1 $@
 501 @$(call chmod-module-file, $1)
 502 endef
 503 
 504 define install-sym-link
 505 $(LN) -s $1 $@
 506 @$(call install-module-sym-link, $1)
 507 endef
 508 
 509 #
 510 # Marcos for files not belonging to any module 
 511 define install-non-module-file
 512 $(prep-target)
 513 $(CP) $< $@
 514 endef
 515 
 516 define install-manifest-file
 517 $(install-non-module-file)
 518 endef
 519 
 520 # Cleanup rule for after debug java run (hotspot.log file is left around)
 521 #   (This could be an old leftover file in a read-only area, use the @- prefix)
 522 HOTSPOT_LOG_NAME = hotspot.log
 523 define java-vm-cleanup
 524 if [ -w $(HOTSPOT_LOG_NAME) ] ; then $(RM) $(HOTSPOT_LOG_NAME); fi
 525 endef
 526 
 527 # Current directory
 528 CURRENT_DIRECTORY := $(shell $(PWD))
 529 
 530 #
 531 # Create BYFILE OPT and DBG settings, if CFLAGS_OPT/foobar.o is set then it is
 532 #    used for this file, otherwise the default settings are used.
 533 #
 534 CFLAGS_$(VARIANT)/BYFILE    = $(CFLAGS_$(VARIANT)/$(@F)) \
 535                               $(CFLAGS_$(VARIANT)$(CFLAGS_$(VARIANT)/$(@F)))
 536 CXXFLAGS_$(VARIANT)/BYFILE  = $(CXXFLAGS_$(VARIANT)/$(@F)) \
 537                               $(CXXFLAGS_$(VARIANT)$(CXXFLAGS_$(VARIANT)/$(@F)))
 538 
 539 #
 540 # Tool flags
 541 #
 542 ASFLAGS         = $(ASFLAGS_$(VARIANT)) $(ASFLAGS_COMMON) $(OTHER_ASFLAGS)
 543 CFLAGS          = $(CFLAGS_$(VARIANT)/BYFILE)   $(CFLAGS_COMMON) $(OTHER_CFLAGS)
 544 CXXFLAGS        = $(CXXFLAGS_$(VARIANT)/BYFILE) $(CXXFLAGS_COMMON) $(OTHER_CXXFLAGS)
 545 CPPFLAGS        = $(CPPFLAGS_$(VARIANT)) $(CPPFLAGS_COMMON) $(OTHER_CPPFLAGS) \
 546                   $(DEFINES) $(OPTIONS:%=-D%)
 547 LDFLAGS         = $(LDFLAGS_$(VARIANT)) $(LDFLAGS_COMMON) $(OTHER_LDFLAGS)
 548 LDLIBS          = $(OTHER_LDLIBS) $(LDLIBS_$(VARIANT)) $(LDLIBS_COMMON)
 549 LINTFLAGS       = $(LINTFLAGS_$(VARIANT)) $(LINTFLAGS_COMMON) \
 550                   $(OTHER_LINTFLAGS)
 551 
 552 VERSION_DEFINES = -DRELEASE='"$(RELEASE)"'
 553 
 554 ifdef INSANE
 555   export INSANE
 556 endif
 557 
 558 ifdef ALT_COPYRIGHT_YEAR
 559   COPYRIGHT_YEAR = $(ALT_COPYRIGHT_YEAR)
 560 else
 561   COPYRIGHT_YEAR := $(shell $(DATE) '+%Y')
 562 endif
 563 
 564 # Install of imported file (JDK_IMPORT_PATH, or some other external location)
 565 define install-importonly-file
 566 @$(ECHO) "ASSEMBLY_IMPORT: $@"
 567 $(prep-target)
 568 $(CP) $< $@
 569 @if [ "$(PLATFORM)" = "linux" -a "$(@F)" = "libjvm.so" ] ; then     \
 570   if [ -x /usr/sbin/selinuxenabled ] ; then                         \
 571     /usr/sbin/selinuxenabled;                                       \
 572     if [ $$? = 0 ] ; then                                           \
 573       $(ECHO) "/usr/bin/chcon -t textrel_shlib_t $@";               \
 574       /usr/bin/chcon -t textrel_shlib_t $@;                         \
 575       if [ $$? != 0 ]; then                                         \
 576         echo "ERROR: Cannot chcon $@";                              \
 577       fi;                                                           \
 578     fi;                                                             \
 579   fi;                                                               \
 580 fi
 581 endef
 582 
 583 define install-import-file
 584 $(install-importonly-file)
 585 @$(install-module-file)
 586 endef
 587 
 588 .PHONY: all build clean clobber