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