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