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