make/common/Defs.gmk

changeset 194
0f60cf26c5b5
parent 158
91006f157c46
child 240
f90b3e014e83
equal deleted inserted replaced
185:519daea48888 194:0f60cf26c5b5
71 # A list of locales we support but don't have resource files. 71 # A list of locales we support but don't have resource files.
72 # This is defined to optimize the search of resource bundles. 72 # This is defined to optimize the search of resource bundles.
73 # 73 #
74 JRE_NONEXIST_LOCALES = en en_US de_DE es_ES fr_FR it_IT ja_JP ko_KR sv_SE zh 74 JRE_NONEXIST_LOCALES = en en_US de_DE es_ES fr_FR it_IT ja_JP ko_KR sv_SE zh
75 75
76 #
77 # All libraries except libjava and libjvm itself link against libjvm and
78 # libjava, the latter for its exported common utilities. libjava only links
79 # against libjvm. Programs' makefiles take their own responsibility for
80 # adding other libs.
81 #
82 ifdef PACKAGE
83 # put JAVALIB first, but do not lose any platform specific values....
84 LDLIBS_COMMON = $(JAVALIB)
85 endif # PACKAGE
86
87 #
88 # Libraries that must appear ahead of libc.so on the link command line
89 #
90 ifdef PROGRAM
91
92 ifeq ($(PLATFORM), solaris)
93 LDLIBS_COMMON = -lthread -ldl
94 endif
95
96 ifeq ($(PLATFORM), linux)
97 LDLIBS_COMMON = -ldl
98 endif
99
100 endif # PROGRAM
101
102 LDLIBS_COMMON += $(EXTRA_LIBS)
103
104 #
105 # Default is to build, not import native binaries
106 #
107 ifndef IMPORT_NATIVE_BINARIES
108 IMPORT_NATIVE_BINARIES=false
109 endif
110 # If importing libraries in, no incremental builds
111 ifeq ($(IMPORT_NATIVE_BINARIES),true)
112 INCREMENTAL_BUILD=false
113 endif
114
115 # for generated libraries
116 LIBDIR = $(OUTPUTDIR)/lib 76 LIBDIR = $(OUTPUTDIR)/lib
117 ABS_LIBDIR = $(ABS_OUTPUTDIR)/lib 77 ABS_LIBDIR = $(ABS_OUTPUTDIR)/lib
118 # Optional place to save the windows .lib files
119 LIBFILES_DIR = $(OUTPUTDIR)/libfiles
120 # for ext jre files 78 # for ext jre files
121 EXTDIR = $(LIBDIR)/ext 79 EXTDIR = $(LIBDIR)/ext
122 # for generated include files
123 INCLUDEDIR = $(OUTPUTDIR)/include
124 # for generated class files 80 # for generated class files
125 CLASSBINDIR = $(OUTPUTDIR)/classes 81 CLASSBINDIR = $(OUTPUTDIR)/classes
126 DEMOCLASSDIR = $(OUTPUTDIR)/democlasses 82 DEMOCLASSDIR = $(OUTPUTDIR)/democlasses
127 # for generated tool class files 83 # for generated tool class files
128 BUILDTOOLCLASSDIR = $(OUTPUTDIR)/btclasses 84 BUILDTOOLCLASSDIR = $(OUTPUTDIR)/btclasses
129 # for build tool jar files 85 # for build tool jar files
130 BUILDTOOLJARDIR = $(OUTPUTDIR)/btjars 86 BUILDTOOLJARDIR = $(OUTPUTDIR)/btjars
131 ABS_BUILDTOOLJARDIR = $(ABS_OUTPUTDIR)/btjars 87 ABS_BUILDTOOLJARDIR = $(ABS_OUTPUTDIR)/btjars
132 # for generated java source files 88 # for generated java source files
133 GENSRCDIR = $(OUTPUTDIR)/gensrc 89 GENSRCDIR = $(OUTPUTDIR)/gensrc
134 # for generated C source files (not javah)
135 GENNATIVESRCDIR = $(OUTPUTDIR)/gennativesrc
136 # for imported source files 90 # for imported source files
137 IMPORTSRCDIR = $(OUTPUTDIR)/impsrc 91 IMPORTSRCDIR = $(OUTPUTDIR)/impsrc
138 # for imported documents 92 # for imported documents
139 IMPORTDOCDIR = $(OUTPUTDIR)/impdoc 93 IMPORTDOCDIR = $(OUTPUTDIR)/impdoc
140 # for generated demo 94 # for generated demo
194 148
195 # This must be created right away for pattern rules in Sanity.gmk to work. 149 # This must be created right away for pattern rules in Sanity.gmk to work.
196 dummy1:=$(shell $(MKDIR) -p $(TEMPDIR)) 150 dummy1:=$(shell $(MKDIR) -p $(TEMPDIR))
197 dummy2:=$(shell $(MKDIR) -p $(TEMP_DISK)) 151 dummy2:=$(shell $(MKDIR) -p $(TEMP_DISK))
198 152
199 # OBJDIRNAME is the name of the directory where the object code is to
200 # be placed. It's name depends on whether the data model architecture
201 # is 32-bit or not.
202 ifneq ($(ARCH_DATA_MODEL), 32)
203 OBJDIRNAME = obj$(ARCH_DATA_MODEL)$(OBJDIRNAME_SUFFIX)
204 else
205 OBJDIRNAME = obj$(OBJDIRNAME_SUFFIX)
206 endif
207 OBJDIR = $(TEMPDIR)/$(OBJDIRNAME)
208
209 # CLASSHDRDIR is where the generated C Class Header files go.
210 CLASSHDRDIR = $(TEMPDIR)/CClassHeaders
211
212 # 153 #
213 # CLASSDESTDIR can be used to specify the directory where generated classes 154 # CLASSDESTDIR can be used to specify the directory where generated classes
214 # are to be placed. The default is CLASSBINDIR. 155 # are to be placed. The default is CLASSBINDIR.
215 # 156 #
216 ifndef CLASSDESTDIR 157 ifndef CLASSDESTDIR
217 CLASSDESTDIR = $(CLASSBINDIR) 158 CLASSDESTDIR = $(CLASSBINDIR)
218 endif 159 endif
219
220 INCLUDES = -I. -I$(CLASSHDRDIR) \
221 $(patsubst %,-I%,$(subst $(CLASSPATH_SEPARATOR), ,$(VPATH.h))) $(OTHER_INCLUDES)
222 OTHER_CPPFLAGS = $(INCLUDES)
223
224 160
225 # 161 #
226 # vpaths. These are the default locations searched for source files. 162 # vpaths. These are the default locations searched for source files.
227 # GNUmakefiles of individual areas often override the default settings. 163 # GNUmakefiles of individual areas often override the default settings.
228 # There are no longer default vpath entries for C and assembler files 164 # There are no longer default vpath entries for C and assembler files
233 169
234 VPATH0.java = $(GENSRCDIR)$(CLASSPATH_SEPARATOR)$(PLATFORM_SRC)/classes$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/classes 170 VPATH0.java = $(GENSRCDIR)$(CLASSPATH_SEPARATOR)$(PLATFORM_SRC)/classes$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/classes
235 VPATH.java = $(VPATH0.java) 171 VPATH.java = $(VPATH0.java)
236 vpath %.java $(VPATH.java) 172 vpath %.java $(VPATH.java)
237 vpath %.class $(CLASSBINDIR) 173 vpath %.class $(CLASSBINDIR)
238 vpath %.$(OBJECT_SUFFIX) $(OBJDIR)
239
240 #
241 # VPATH.h is used elsewhere to generate include flags. By default,
242 # anyone has access to the include files that the JVM area exports,
243 # namely jni.h, jvm.h, and jni_utils.h, plus their platform-specific
244 # relatives.
245 #
246 ifeq ($(PLATFORM), windows)
247 VPATH.h = $(BOOTDIR)/include;$(BOOTDIR)/include/$(PLATFORM_INCLUDE_NAME)
248 else
249 VPATH.h = $(PLATFORM_SRC)/javavm/export$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/javavm/export$(CLASSPATH_SEPARATOR)$(SHARE_SRC)/javavm/include$(CLASSPATH_SEPARATOR)$(PLATFORM_SRC)/javavm/include
250 endif
251 vpath %.h $(VPATH.h)
252
253 #
254 # Used in two ways: helps link against libjava.so. Also if overridden
255 # determines where your shared library is installed.
256 #
257 ifndef LIB_LOCATION
258 LIB_LOCATION = $(LIBDIR)/$(LIBARCH)
259 endif
260
261 #
262 # Java header and stub variables
263 #
264 CLASSHDRS = $(patsubst %,$(CLASSHDRDIR)/%.h,$(subst .,_,$(CLASSES.export)))
265 CLASSSTUBOBJS = classstubs.$(OBJECT_SUFFIX)
266 STUBPREAMBLE = $(INCLUDEDIR)/StubPreamble.h
267 174
268 # 175 #
269 # Classpath seen by javac (different from the one seen by the VM 176 # Classpath seen by javac (different from the one seen by the VM
270 # running javac), and useful variables. 177 # running javac), and useful variables.
271 # 178 #
336 RELEASE=$(RELEASE) || exit 1; \ 243 RELEASE=$(RELEASE) || exit 1; \
337 fi ; \ 244 fi ; \
338 done 245 done
339 endef 246 endef
340 247
341 #
342 # Create BYFILE OPT and DBG settings, if CFLAGS_OPT/foobar.o is set then it is
343 # used for this file, otherwise the default settings are used.
344 #
345 CFLAGS_$(VARIANT)/BYFILE = $(CFLAGS_$(VARIANT)/$(@F)) \
346 $(CFLAGS_$(VARIANT)$(CFLAGS_$(VARIANT)/$(@F)))
347 CXXFLAGS_$(VARIANT)/BYFILE = $(CXXFLAGS_$(VARIANT)/$(@F)) \
348 $(CXXFLAGS_$(VARIANT)$(CXXFLAGS_$(VARIANT)/$(@F)))
349
350 #
351 # Tool flags
352 #
353 ASFLAGS = $(ASFLAGS_$(VARIANT)) $(ASFLAGS_COMMON) $(OTHER_ASFLAGS)
354 CFLAGS = $(CFLAGS_$(VARIANT)/BYFILE) $(CFLAGS_COMMON) $(OTHER_CFLAGS)
355 CXXFLAGS = $(CXXFLAGS_$(VARIANT)/BYFILE) $(CXXFLAGS_COMMON) $(OTHER_CXXFLAGS)
356 CPPFLAGS = $(CPPFLAGS_$(VARIANT)) $(CPPFLAGS_COMMON) $(OTHER_CPPFLAGS) \
357 $(DEFINES) $(OPTIONS:%=-D%)
358 LDFLAGS = $(LDFLAGS_$(VARIANT)) $(LDFLAGS_COMMON) $(OTHER_LDFLAGS)
359 LDLIBS = $(OTHER_LDLIBS) $(LDLIBS_$(VARIANT)) $(LDLIBS_COMMON)
360 LINTFLAGS = $(LINTFLAGS_$(VARIANT)) $(LINTFLAGS_COMMON) \
361 $(OTHER_LINTFLAGS)
362
363 # this should be moved into Defs-<platform>.gmk.....
364 ifeq ($(PLATFORM), windows)
365 VERSION_DEFINES = -DRELEASE="\"$(RELEASE)\""
366 else
367 VERSION_DEFINES = -DRELEASE='"$(RELEASE)"'
368 endif
369
370 # Prevent the use of many default suffix rules we do not need 248 # Prevent the use of many default suffix rules we do not need
371 .SUFFIXES: 249 .SUFFIXES:
372 .SUFFIXES: .c .o .h .obj .cpp .hpp .java .class 250 .SUFFIXES: .java .class
373 251
374 # Make sure we are all insane 252 # Make sure we are all insane
375 ifdef INSANE 253 ifdef INSANE
376 export INSANE 254 export INSANE
377 endif 255 endif

mercurial