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 MODULE = base 33 PACKAGE = java.lang 34 LIBRARY = java 35 PRODUCT = java 36 include $(BUILDDIR)/common/Defs.gmk 37 38 # windows compiler flags 39 ifeq ($(PLATFORM),windows) 40 OTHER_CFLAGS = 41 # build directly into BINDIR... 42 LIB_LOCATION = $(BINDIR) 43 # Exported functions 44 OTHER_LCF = -export:winFileHandleOpen -export:handleLseek 45 endif 46 47 OTHER_CFLAGS += -DJDK_MAJOR_VERSION='"$(JDK_MAJOR_VERSION)"' \ 48 -DJDK_MINOR_VERSION='"$(JDK_MINOR_VERSION)"' \ 49 -DJDK_MICRO_VERSION='"$(JDK_MICRO_VERSION)"' \ 50 -DJDK_BUILD_NUMBER='"$(JDK_BUILD_NUMBER)"' 51 52 ifdef JDK_UPDATE_VERSION 53 OTHER_CFLAGS += -DJDK_UPDATE_VERSION='"$(JDK_UPDATE_VERSION)"' 54 endif 55 56 57 # 58 # Files to compile. 59 # 60 include FILES_c.gmk 61 include FILES_java.gmk 62 include Exportedfiles.gmk 63 64 ifeq ($(PLATFORM),windows) 65 FILES_java += java/io/Win32FileSystem.java \ 66 java/io/WinNTFileSystem.java \ 67 java/util/prefs/WindowsPreferences.java \ 68 java/util/prefs/WindowsPreferencesFactory.java 69 70 FILES_c += ProcessImpl_md.c \ 71 Win32FileSystem_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 # 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 include $(BUILDDIR)/common/Subdirs.gmk 222 223 all build: 224 $(SUBDIRS-loop) 225 clean clobber:: 226 $(SUBDIRS-loop) 227 228 include $(BUILDDIR)/common/Mapfile-vers.gmk 229 include $(BUILDDIR)/common/Library.gmk 230 231 ifeq ($(PLATFORM), solaris) 232 ifeq ($(CC_VER), 5.8) 233 ifndef REMOVE_ALL_WORKAROUNDS 234 CFLAGS_OPT/ObjectInputStream.o = -xO3 \ 235 $(warning "WARNING: Using workaround for SS11 bug 6346242, on $@") 236 endif 237 endif 238 endif 239 240 ifneq ($(PLATFORM),windows) 241 242 # UNIXProcess.java is different for solaris and linux. We need to copy 243 # the correct UNIXProcess.java over to $(GENSRCDIR)/java/lang/. 244 245 $(GENSRCDIR)/java/lang/UNIXProcess.java: \ 246 $(PLATFORM_SRC)/classes/java/lang/UNIXProcess.java.$(PLATFORM) 247 $(install-non-module-file) 248 249 clean:: 250 $(RM) $(GENSRCDIR)/java/lang/UNIXProcess.java 251 252 endif 253 254 255 # 256 # Because we can't link against ourselves! 257 # 258 JAVALIB = 259 260 # 261 # Special rules. 262 # 263 clean:: 264 $(RM) -r $(CLASSHDRDIR) 265 266 clobber:: 267 $(RM) -r $(CLASSBINDIR)/java/io $(CLASSBINDIR)/java/lang \ 268 $(CLASSBINDIR)/java/security $(CLASSBINDIR)/java/util \ 269 $(CLASSBINDIR)/sun/misc 270 271 # 272 # Additional rule from sun/net/GNUmakefile to copy content-type.properties 273 # file so that the MimeTable class won't complain while bootstrapping... 274 # 275 PROPS = content-types.properties 276 277 # 278 # Rule to copy calendars.properties file. 279 # 280 CAL_PROPS = calendars.properties 281 282 # 283 # Rule to copy tzmappings file on Windows 284 # 285 ifeq ($(PLATFORM), windows) 286 TZMAP = $(LIBDIR)/tzmappings 287 TZMAPFILE = $(PLATFORM_SRC)/lib/tzmappings 288 289 $(TZMAP): $(TZMAPFILE) 290 $(install-file) 291 $(call chmod-file, 444) 292 endif 293 294 build: $(LIBDIR)/$(PROPS) $(LIBDIR)/$(CAL_PROPS) $(TZMAP) 295 296 $(LIBDIR)/$(PROPS): $(PLATFORM_SRC)/lib/$(PROPS) 297 $(install-file) 298 299 $(LIBDIR)/$(CAL_PROPS): $(SHARE_SRC)/lib/$(CAL_PROPS) 300 $(install-file) 301 302 clean:: 303 $(RM) -r $(LIBDIR)/$(PROPS) $(TZMAP) 304 305 # 306 # Rules to create lib/currency.data 307 # 308 309 CURDATA = $(LIBDIR)/currency.data 310 GENERATECURRENCYDATA_JARFILE = $(BUILDTOOLJARDIR)/generatecurrencydata.jar 311 312 build: $(CURDATA) 313 314 $(CURDATA): \ 315 $(GENERATECURRENCYDATA_JARFILE) \ 316 $(SHARE_SRC)/classes/java/util/CurrencyData.properties 317 $(RM) $(CURDATA) 318 $(BOOT_JAVA_CMD) -jar $(GENERATECURRENCYDATA_JARFILE) -o $@.temp \ 319 < $(SHARE_SRC)/classes/java/util/CurrencyData.properties 320 $(MV) $@.temp $@ 321 $(install-module-file) 322 $(call chmod-file, 444) 323 324 clean:: 325 $(RM) $(CURDATA) 326 327 328 # 329 # Rules to create $(GENSRCDIR)/sun/lang/CharacterData*.java 330 # 331 CHARACTERDATA = $(BUILDDIR)/tools/GenerateCharacter 332 UNICODEDATA = $(BUILDDIR)/tools/UnicodeData 333 334 GENERATECHARACTER_JARFILE = $(BUILDTOOLJARDIR)/generatecharacter.jar 335 336 $(GENSRCDIR)/java/lang/CharacterDataLatin1.java \ 337 $(GENSRCDIR)/java/lang/CharacterData00.java \ 338 $(GENSRCDIR)/java/lang/CharacterData01.java \ 339 $(GENSRCDIR)/java/lang/CharacterData02.java \ 340 $(GENSRCDIR)/java/lang/CharacterData0E.java: \ 341 $(wildcard $(CHARACTERDATA)/*) \ 342 $(GENERATECHARACTER_JARFILE) 343 @$(prep-target) 344 $(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) \ 345 -template $(CHARACTERDATA)/CharacterDataLatin1.java.template \ 346 -spec $(UNICODEDATA)/UnicodeData.txt \ 347 -specialcasing $(UNICODEDATA)/SpecialCasing.txt \ 348 -o $(GENSRCDIR)/java/lang/CharacterDataLatin1.java -string \ 349 -usecharforbyte -latin1 8 350 $(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) -plane 0 \ 351 -template $(CHARACTERDATA)/CharacterData00.java.template \ 352 -spec $(UNICODEDATA)/UnicodeData.txt \ 353 -specialcasing $(UNICODEDATA)/SpecialCasing.txt \ 354 -o $(GENSRCDIR)/java/lang/CharacterData00.java -string \ 355 -usecharforbyte 11 4 1 356 $(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) -plane 1 \ 357 -template $(CHARACTERDATA)/CharacterData01.java.template \ 358 -spec $(UNICODEDATA)/UnicodeData.txt \ 359 -specialcasing $(UNICODEDATA)/SpecialCasing.txt \ 360 -o $(GENSRCDIR)/java/lang/CharacterData01.java -string \ 361 -usecharforbyte 11 4 1 362 $(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) -plane 2 \ 363 -template $(CHARACTERDATA)/CharacterData02.java.template \ 364 -spec $(UNICODEDATA)/UnicodeData.txt \ 365 -specialcasing $(UNICODEDATA)/SpecialCasing.txt \ 366 -o $(GENSRCDIR)/java/lang/CharacterData02.java -string \ 367 -usecharforbyte 11 4 1 368 $(BOOT_JAVA_CMD) -jar $(GENERATECHARACTER_JARFILE) -plane 14 \ 369 -template $(CHARACTERDATA)/CharacterData0E.java.template \ 370 -spec $(UNICODEDATA)/UnicodeData.txt \ 371 -specialcasing $(UNICODEDATA)/SpecialCasing.txt \ 372 -o $(GENSRCDIR)/java/lang/CharacterData0E.java -string \ 373 -usecharforbyte 11 4 1 374 375 $(GENSRCDIR)/java/lang/%.java : $(CHARACTERDATA)/%.java.template 376 $(install-non-module-file) 377 378 clean:: 379 $(RM) $(GENSRCDIR)/java/lang/CharacterDataLatin1.java 380 $(RM) $(GENSRCDIR)/java/lang/CharacterData00.java 381 $(RM) $(GENSRCDIR)/java/lang/CharacterData01.java 382 $(RM) $(GENSRCDIR)/java/lang/CharacterData02.java 383 $(RM) $(GENSRCDIR)/java/lang/CharacterData0E.java 384 $(RM) $(GENSRCDIR)/java/lang/CharacterDataUndefined.java 385 $(RM) $(GENSRCDIR)/java/lang/CharacterDataPrivateUse.java 386 387 # 388 # Rules to generate classes/java/lang/uniName.dat 389 # 390 391 392 393 UNINAME = $(CLASSBINDIR)/java/lang/uniName.dat 394 GENERATEUNINAME_JARFILE = $(BUILDTOOLJARDIR)/generatecharacter.jar 395 396 build: $(UNINAME) 397 398 $(UNINAME): $(UNICODEDATA)/UnicodeData.txt \ 399 $(GENERATECHARACTER_JARFILE) 400 @$(prep-target) 401 $(BOOT_JAVA_CMD) -classpath $(GENERATECHARACTER_JARFILE) \ 402 build.tools.generatecharacter.CharacterName \ 403 $(UNICODEDATA)/UnicodeData.txt $(UNINAME) 404 405 clean:: 406 $(RM) $(UNINAME) 407 408 # 409 # End of rules to create $(GENSRCDIR)/java/lang/CharacterDataXX.java 410 # 411 412 # 413 # Rule to precompile CoreResourceBundleControl.java 414 # 415 LOCALES_GEN_SH = localelist.sh 416 417 $(GENSRCDIR)/sun/util/CoreResourceBundleControl.java: \ 418 $(SHARE_SRC)/classes/sun/util/CoreResourceBundleControl-XLocales.java.template $(LOCALES_GEN_SH) 419 @$(prep-target) 420 NAWK="$(NAWK)" SED="$(SED)" $(SH) $(LOCALES_GEN_SH) "$(JRE_NONEXIST_LOCALES)" \ 421 $< $@ 422 clean:: 423 $(RM) $(GENSRCDIR)/sun/util/CoreResourceBundleControl.java 424