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