1 #
   2 # Copyright (c) 1997, 2013, 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 # Makefile for core Java libraries
  28 # (java.lang, java.lang.ref, java.lang.reflect, java.io, java.util)
  29 #
  30 
  31 BUILDDIR = ../..
  32 PACKAGE = java.lang
  33 LIBRARY = java
  34 PRODUCT = java
  35 SUBDIRS_MAKEFLAGS += JAVAC_MAX_WARNINGS=true
  36 SUBDIRS_MAKEFLAGS += JAVAC_WARNINGS_FATAL=true
  37 JAVAC_MAX_WARNINGS=true
  38 include $(BUILDDIR)/common/Defs.gmk
  39 
  40 AUTO_FILES_JAVA_DIRS = java/util/function
  41 
  42 # windows compiler flags
  43 ifeq ($(PLATFORM),windows)
  44   OTHER_CFLAGS =
  45   # build directly into BINDIR...
  46   LIB_LOCATION = $(BINDIR)
  47   # Exported functions
  48   OTHER_LCF = -export:winFileHandleOpen -export:handleLseek
  49 endif
  50 
  51 OTHER_CFLAGS += -DJDK_MAJOR_VERSION='"$(JDK_MAJOR_VERSION)"' \
  52                 -DJDK_MINOR_VERSION='"$(JDK_MINOR_VERSION)"' \
  53                 -DJDK_MICRO_VERSION='"$(JDK_MICRO_VERSION)"' \
  54                 -DJDK_BUILD_NUMBER='"$(JDK_BUILD_NUMBER)"' 
  55 
  56 ifdef JDK_UPDATE_VERSION
  57 OTHER_CFLAGS += -DJDK_UPDATE_VERSION='"$(JDK_UPDATE_VERSION)"'
  58 endif
  59 
  60 
  61 #
  62 # Files to compile.
  63 #
  64 include FILES_c.gmk
  65 include FILES_java.gmk
  66 include Exportedfiles.gmk
  67 
  68 ifeq ($(PLATFORM),windows)
  69 FILES_java +=   java/io/WinNTFileSystem.java \
  70                 java/util/prefs/WindowsPreferences.java \
  71                 java/util/prefs/WindowsPreferencesFactory.java
  72 
  73 FILES_c    +=   ProcessImpl_md.c \
  74                 WinNTFileSystem_md.c \
  75                 canonicalize_md.c \
  76                 dirent_md.c \
  77                 TimeZone.c \
  78                 TimeZone_md.c \
  79                 WindowsPreferences.c \
  80                 sun/security/provider/WinCAPISeedGenerator.c \
  81                 sun/io/Win32ErrorMode.c
  82 
  83 else # PLATFORM
  84 FILES_java +=   java/lang/UNIXProcess.java \
  85                 java/io/UnixFileSystem.java \
  86                 java/util/prefs/FileSystemPreferences.java \
  87                 java/util/prefs/FileSystemPreferencesFactory.java \
  88 
  89 FILES_c    +=   UNIXProcess_md.c \
  90                 childproc.c \
  91                 UnixFileSystem_md.c \
  92                 canonicalize_md.c \
  93                 TimeZone.c \
  94                 TimeZone_md.c \
  95                 FileSystemPreferences.c
  96 
  97 INIT += $(GENSRCDIR)/java/lang/UNIXProcess.java
  98 
  99 endif # PLATFORM
 100 
 101 ifeq ($(PLATFORM), macosx)
 102 FILES_c    +=   java_props_macosx.c
 103 FILES_java +=   java/util/prefs/MacOSXPreferences.java \
 104                 java/util/prefs/MacOSXPreferencesFile.java \
 105                 java/util/prefs/MacOSXPreferencesFactory.java
 106 
 107 CFLAGS_$(VARIANT)/java_props_md.o = -Os -x objective-c
 108 CFLAGS_$(VARIANT)/java_props_macosx.o = -Os -x objective-c
 109 endif
 110 
 111 #
 112 # Make sure first rule does 'all'
 113 #
 114 default_rule: all
 115 
 116 #
 117 # Source files to generate before we try to compile anything
 118 #
 119 
 120 #
 121 # genlocales.gmk define rules to generate LocaleDataMetaInfo.java
 122 # which contains locale string list for sun.text.resources and
 123 # sun.util.resources.
 124 #
 125 include genlocales.gmk
 126 
 127 CLASSES_INIT = gencharsrc niosrc rbcontrolsrc genlocales
 128 
 129 niosrc: ; ($(CD) ../nio; $(MAKE) sources)
 130 
 131 gencharsrc: $(GENSRCDIR)/java/lang/CharacterData00.java \
 132     $(GENSRCDIR)/java/lang/CharacterData01.java \
 133     $(GENSRCDIR)/java/lang/CharacterData02.java \
 134     $(GENSRCDIR)/java/lang/CharacterData0E.java \
 135     $(GENSRCDIR)/java/lang/CharacterDataLatin1.java \
 136     $(GENSRCDIR)/java/lang/CharacterDataUndefined.java \
 137     $(GENSRCDIR)/java/lang/CharacterDataPrivateUse.java
 138 
 139 rbcontrolsrc: $(GENSRCDIR)/sun/util/CoreResourceBundleControl.java
 140 
 141 #
 142 # Add to the default C file search paths
 143 #
 144 vpath %.c $(PLATFORM_SRC)/native/java/lang:$(SHARE_SRC)/native/java/lang
 145 vpath %.c $(SHARE_SRC)/native/java/lang/ref
 146 vpath %.c $(SHARE_SRC)/native/java/lang/reflect
 147 vpath %.c $(SHARE_SRC)/native/java/io
 148 vpath %.c $(PLATFORM_SRC)/native/java/io
 149 vpath %.c $(SHARE_SRC)/native/java/nio
 150 vpath %.c $(SHARE_SRC)/native/java/security
 151 vpath %.c $(SHARE_SRC)/native/common
 152 vpath %.c $(SHARE_SRC)/native/sun/misc
 153 vpath %.c $(SHARE_SRC)/native/sun/reflect
 154 vpath %.c $(SHARE_SRC)/native/java/sql
 155 vpath %.c $(SHARE_SRC)/native/java/util
 156 vpath %.c $(SHARE_SRC)/native/java/util/concurrent/atomic
 157 vpath %.c $(PLATFORM_SRC)/native/common
 158 vpath %.c $(PLATFORM_SRC)/native/java/util
 159 vpath %.c $(PLATFORM_SRC)/native/sun/security/provider
 160 vpath %.c $(PLATFORM_SRC)/native/sun/io
 161 ifeq ($(PLATFORM),macosx)
 162 vpath %.c $(PLATFORM_SRC_MACOS)/native/sun/util/locale/provider
 163 else # PLATFORM
 164 vpath %.c $(PLATFORM_SRC)/native/sun/util/locale/provider
 165 endif # PLATFORM
 166 
 167 #
 168 # Includes the fdlibm header file.
 169 #
 170 OTHER_INCLUDES += -I$(SHARE_SRC)/native/java/lang/fdlibm/include
 171 
 172 #
 173 # Also include the io_util.h header file.
 174 #
 175 OTHER_INCLUDES += -I$(SHARE_SRC)/native/java/io
 176 OTHER_INCLUDES += -I$(PLATFORM_SRC)/native/java/io
 177 
 178 #
 179 # Also include the TimeZone_md.h header file.
 180 #
 181 OTHER_INCLUDES += -I$(PLATFORM_SRC)/native/java/util
 182 
 183 #
 184 # Is the altzone extern documented in ctime(3C) available?
 185 #
 186 ifneq ($(PLATFORM), windows)
 187 ifneq ($(PLATFORM), macosx)
 188 HAVE_ALTZONE=true
 189 endif
 190 endif
 191 
 192 ifeq ($(HAVE_ALTZONE),true)
 193 OTHER_CPPFLAGS += -DHAVE_ALTZONE
 194 endif
 195 
 196 #
 197 # System.c needs RELEASE.
 198 # java_props_md.c needs ARCH on non-Solaris platforms.
 199 #
 200 OTHER_CPPFLAGS += $(VERSION_DEFINES)
 201 
 202 #
 203 # Include name of LIBARCH
 204 #
 205 OTHER_CPPFLAGS += -DARCHPROPNAME='"$(ARCHPROP)"'
 206 
 207 #
 208 # Is the key in the call nl_langinfo(CODESET) called something other than
 209 # CODESET?
 210 #
 211 ifdef ALT_CODESET_KEY
 212 OTHER_CPPFLAGS += -DALT_CODESET_KEY=$(ALT_CODESET_KEY)
 213 endif
 214 
 215 #
 216 # Install .lib file.
 217 #
 218 INSTALL_DOT_LIB = true
 219 
 220 #
 221 # What to link?
 222 # On Windows, shell32 is not normally required and so it is delay loaded.
 223 #
 224 ifeq ($(PLATFORM),windows)
 225 OTHER_LDLIBS += $(JVMLIB) -libpath:$(OBJDIR)/../../../fdlibm/$(OBJDIRNAME) fdlibm.lib \
 226                        -libpath:$(OBJDIR)/../../../verify/$(OBJDIRNAME) verify.lib \
 227                        shell32.lib delayimp.lib /DELAYLOAD:shell32.dll
 228 else
 229 OTHER_LDLIBS += $(JVMLIB) -lverify $(LIBSOCKET) $(LIBNSL) $(LIBSCF) $(LIBDL) \
 230                 -L$(OBJDIR)/../../../fdlibm/$(OBJDIRNAME) -lfdlibm.$(ARCH)
 231 ifeq ($(PLATFORM), macosx)
 232 OTHER_LDLIBS += \
 233         -framework CoreFoundation \
 234         -framework Security \
 235         -framework SystemConfiguration
 236 endif
 237 endif
 238 
 239 #
 240 # Rules.
 241 #
 242 ifeq ($(PLATFORM), solaris)
 243   ifneq ($(ARCH), amd64)
 244     FILES_reorder += reorder-$(ARCH)
 245   endif
 246 endif
 247 
 248 SUBDIRS = reflect
 249 include $(BUILDDIR)/common/Subdirs.gmk
 250 
 251 all build:
 252         $(SUBDIRS-loop)
 253 clean clobber::
 254         $(SUBDIRS-loop)
 255 
 256 include $(BUILDDIR)/common/Mapfile-vers.gmk
 257 include $(BUILDDIR)/common/Library.gmk
 258 
 259 ifeq ($(PLATFORM), solaris)
 260   ifeq ($(CC_VER), 5.8)
 261     ifndef REMOVE_ALL_WORKAROUNDS
 262       CFLAGS_OPT/ObjectInputStream.o = -xO3 \
 263           $(warning  "WARNING: Using workaround for SS11 bug 6346242, on $@")
 264     endif
 265   endif
 266 endif
 267 
 268 ifneq ($(PLATFORM),windows)
 269 
 270 # UNIXProcess.java is different for solaris and linux. We need to copy
 271 # the correct UNIXProcess.java over to $(GENSRCDIR)/java/lang/.
 272 
 273 ifeq ($(PLATFORM), macosx)
 274 PLATFORM_UNIX_PROCESS = \
 275     $(PLATFORM_SRC)/classes/java/lang/UNIXProcess.java.bsd
 276 else
 277 PLATFORM_UNIX_PROCESS = \
 278     $(PLATFORM_SRC)/classes/java/lang/UNIXProcess.java.$(PLATFORM)
 279 endif
 280 
 281 $(GENSRCDIR)/java/lang/UNIXProcess.java: $(PLATFORM_UNIX_PROCESS)
 282         $(install-file)
 283 
 284 clean:: 
 285         $(RM) $(GENSRCDIR)/java/lang/UNIXProcess.java
 286 
 287 endif
 288 
 289 
 290 #
 291 # Because we can't link against ourselves!
 292 #
 293 JAVALIB =
 294 
 295 #
 296 # Special rules.
 297 #
 298 clean:: 
 299         $(RM) -r $(CLASSHDRDIR)
 300 
 301 clobber:: 
 302         $(RM) -r $(CLASSBINDIR)/java/io $(CLASSBINDIR)/java/lang \
 303                 $(CLASSBINDIR)/java/security $(CLASSBINDIR)/java/util \
 304                 $(CLASSBINDIR)/sun/misc
 305 
 306 #
 307 # Additional rule from sun/net/GNUmakefile to copy content-type.properties
 308 # file so that the MimeTable class won't complain while bootstrapping...
 309 #
 310 PROPS = content-types.properties
 311 
 312 #
 313 # Rule to copy calendars.properties file.
 314 #
 315 CAL_PROPS = calendars.properties
 316 
 317 #
 318 # Rule to copy Hijrah-umalqura calendar properties file.
 319 #
 320 HIJRAH_UMALQURA_PROPS = hijrah-config-umalqura.properties
 321 
 322 
 323 #
 324 # Rule to copy tzmappings file on Windows
 325 #
 326 ifeq ($(PLATFORM), windows)
 327 TZMAP = $(LIBDIR)/tzmappings
 328 TZMAPFILE = $(PLATFORM_SRC)/lib/tzmappings
 329 
 330 $(TZMAP): $(TZMAPFILE)
 331         $(install-file)
 332         $(call chmod-file, 444)
 333 endif
 334 
 335 build: $(LIBDIR)/$(PROPS) $(LIBDIR)/$(CAL_PROPS) $(LIBDIR)/$(HIJRAH_UMALQURA_PROPS) $(TZMAP)
 336 
 337 $(LIBDIR)/$(PROPS): $(PLATFORM_SRC)/lib/$(PROPS)
 338         $(install-file)
 339 
 340 $(LIBDIR)/$(CAL_PROPS): $(SHARE_SRC)/lib/$(CAL_PROPS)
 341         $(install-file)
 342 
 343 $(LIBDIR)/$(HIJRAH_UMALQURA_PROPS): $(SHARE_SRC)/lib/$(HIJRAH_UMALQURA_PROPS)
 344         $(install-file)
 345 
 346 clean:: 
 347         $(RM) -r $(LIBDIR)/$(PROPS) $(TZMAP)
 348 
 349 #
 350 # Rules to create lib/currency.data
 351 #
 352 
 353 CURDATA = $(LIBDIR)/currency.data
 354 GENERATECURRENCYDATA_JARFILE = $(BUILDTOOLJARDIR)/generatecurrencydata.jar
 355 
 356 build: $(CURDATA)
 357 
 358 $(CURDATA): \
 359   $(GENERATECURRENCYDATA_JARFILE) \
 360   $(SHARE_SRC)/classes/java/util/CurrencyData.properties
 361         $(RM) $(CURDATA)
 362         $(BOOT_JAVA_CMD) -jar $(GENERATECURRENCYDATA_JARFILE) -o $@.temp \
 363                 < $(SHARE_SRC)/classes/java/util/CurrencyData.properties
 364         $(MV) $@.temp $@
 365         $(call chmod-file, 444)
 366 
 367 clean:: 
 368         $(RM) $(CURDATA)
 369 
 370 
 371 #
 372 # Rules to create $(GENSRCDIR)/sun/lang/CharacterData*.java 
 373 #
 374 CHARACTERDATA = $(BUILDDIR)/tools/GenerateCharacter
 375 UNICODEDATA   = $(BUILDDIR)/tools/UnicodeData
 376 
 377 GENERATECHARACTER_JARFILE = $(BUILDTOOLJARDIR)/generatecharacter.jar
 378 
 379 $(GENSRCDIR)/java/lang/CharacterDataLatin1.java \
 380   $(GENSRCDIR)/java/lang/CharacterData00.java \
 381   $(GENSRCDIR)/java/lang/CharacterData01.java \
 382   $(GENSRCDIR)/java/lang/CharacterData02.java \
 383   $(GENSRCDIR)/java/lang/CharacterData0E.java: \
 384     $(wildcard $(CHARACTERDATA)/*) \
 385     $(GENERATECHARACTER_JARFILE)
 386         @$(prep-target)
 387         $(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) \
 388                 -template $(CHARACTERDATA)/CharacterDataLatin1.java.template \
 389                 -spec $(UNICODEDATA)/UnicodeData.txt \
 390                 -specialcasing $(UNICODEDATA)/SpecialCasing.txt \
 391                 -proplist $(UNICODEDATA)/PropList.txt \
 392                 -o $(GENSRCDIR)/java/lang/CharacterDataLatin1.java -string \
 393                 -usecharforbyte -latin1 8
 394         $(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) -plane 0 \
 395                 -template $(CHARACTERDATA)/CharacterData00.java.template \
 396                 -spec $(UNICODEDATA)/UnicodeData.txt \
 397                 -specialcasing $(UNICODEDATA)/SpecialCasing.txt \
 398                 -proplist $(UNICODEDATA)/PropList.txt \
 399                 -o $(GENSRCDIR)/java/lang/CharacterData00.java -string \
 400                 -usecharforbyte 11 4 1
 401         $(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) -plane 1 \
 402                 -template $(CHARACTERDATA)/CharacterData01.java.template \
 403                 -spec $(UNICODEDATA)/UnicodeData.txt \
 404                 -specialcasing $(UNICODEDATA)/SpecialCasing.txt \
 405                 -proplist $(UNICODEDATA)/PropList.txt \
 406                 -o $(GENSRCDIR)/java/lang/CharacterData01.java -string \
 407                 -usecharforbyte  11 4 1
 408         $(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) -plane 2 \
 409                 -template $(CHARACTERDATA)/CharacterData02.java.template \
 410                 -spec $(UNICODEDATA)/UnicodeData.txt \
 411                 -specialcasing $(UNICODEDATA)/SpecialCasing.txt \
 412                 -proplist $(UNICODEDATA)/PropList.txt \
 413                 -o $(GENSRCDIR)/java/lang/CharacterData02.java -string \
 414                 -usecharforbyte 11 4 1
 415         $(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) -plane 14 \
 416                 -template $(CHARACTERDATA)/CharacterData0E.java.template \
 417                 -spec $(UNICODEDATA)/UnicodeData.txt \
 418                 -specialcasing $(UNICODEDATA)/SpecialCasing.txt \
 419                 -proplist $(UNICODEDATA)/PropList.txt \
 420                 -o $(GENSRCDIR)/java/lang/CharacterData0E.java -string \
 421                 -usecharforbyte 11 4 1
 422 
 423 $(GENSRCDIR)/java/lang/%.java : $(CHARACTERDATA)/%.java.template
 424         $(install-file)
 425 
 426 clean::
 427         $(RM) $(GENSRCDIR)/java/lang/CharacterDataLatin1.java 
 428         $(RM) $(GENSRCDIR)/java/lang/CharacterData00.java
 429         $(RM) $(GENSRCDIR)/java/lang/CharacterData01.java 
 430         $(RM) $(GENSRCDIR)/java/lang/CharacterData02.java
 431         $(RM) $(GENSRCDIR)/java/lang/CharacterData0E.java
 432         $(RM) $(GENSRCDIR)/java/lang/CharacterDataUndefined.java 
 433         $(RM) $(GENSRCDIR)/java/lang/CharacterDataPrivateUse.java
 434 
 435 #
 436 # Rules to generate classes/java/lang/uniName.dat
 437 #
 438 
 439 
 440 
 441 UNINAME = $(CLASSBINDIR)/java/lang/uniName.dat
 442 GENERATEUNINAME_JARFILE = $(BUILDTOOLJARDIR)/generatecharacter.jar
 443 
 444 build: $(UNINAME)
 445 
 446 $(UNINAME): $(UNICODEDATA)/UnicodeData.txt \
 447         $(GENERATECHARACTER_JARFILE)
 448         @$(prep-target)
 449         $(BOOT_JAVA_CMD) -classpath $(GENERATECHARACTER_JARFILE) \
 450         build.tools.generatecharacter.CharacterName \
 451                 $(UNICODEDATA)/UnicodeData.txt $(UNINAME)
 452 
 453 clean:: 
 454         $(RM) $(UNINAME)
 455 
 456 #
 457 # End of rules to create $(GENSRCDIR)/java/lang/CharacterDataXX.java
 458 #
 459 
 460 #
 461 # Rule to precompile CoreResourceBundleControl.java 
 462 #
 463 LOCALES_GEN_SH = localelist.sh
 464 
 465 $(GENSRCDIR)/sun/util/CoreResourceBundleControl.java: \
 466         $(SHARE_SRC)/classes/sun/util/CoreResourceBundleControl-XLocales.java.template $(LOCALES_GEN_SH)
 467         @$(prep-target) 
 468         NAWK="$(NAWK)" SED="$(SED)" $(SH) $(LOCALES_GEN_SH) "$(JRE_NONEXIST_LOCALES)" \
 469                 $< $@ 
 470 clean::
 471         $(RM) $(GENSRCDIR)/sun/util/CoreResourceBundleControl.java
 472 
 473 
 474 HELPER_EXE = $(LIBDIR)/$(LIBARCH)/jspawnhelper
 475 BUILDHELPER =
 476 ifeq ($(PLATFORM), solaris)
 477     BUILDHELPER = 1
 478 endif
 479 ifeq ($(PLATFORM), macosx)
 480     HELPER_EXE = $(LIBDIR)/jspawnhelper
 481     BUILDHELPER = 1
 482 endif
 483 
 484 ARCHFLAG = 
 485 ifeq ($(ARCH_DATA_MODEL), 64)
 486 ARCHFLAG = -m64
 487 endif
 488 
 489 ifdef BUILDHELPER
 490 
 491 HELPER_EXE_FILES_c = jspawnhelper.c
 492 HELPER_EXE_FILES_o = $(OBJDIR)/jspawnhelper.o \
 493                 $(OBJDIR)/childproc.o
 494 
 495 $(HELPER_EXE): $(HELPER_EXE_FILES_o)
 496         $(CC) $(ARCHFLAG) $(HELPER_EXE_FILES_o) \
 497                 -o $(TEMPDIR)/jspawnhelper
 498         $(CP) $(TEMPDIR)/jspawnhelper $(HELPER_EXE)
 499 
 500 build: $(HELPER_EXE)
 501 
 502 clean clobber:: 
 503         $(RM) $(HELPER_EXE_FILES_o) $(HELPER_EXE)
 504 
 505 endif #BUILDHELPER