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