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