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