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