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