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