1#
2# Copyright (c) 2011, 2016, 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
26WIN_VERIFY_LIB := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libverify/verify.lib
27
28# Hook to include the corresponding custom file, if present.
29$(eval $(call IncludeCustomExtension, jdk, lib/CoreLibraries.gmk))
30
31
32##########################################################################################
33# libfdlibm is statically linked with libjava below and not delivered into the
34# product on its own.
35
36BUILD_LIBFDLIBM_OPTIMIZATION := NONE
37
38ifeq ($(OPENJDK_TARGET_OS), solaris)
39  BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
40endif
41
42ifeq ($(OPENJDK_TARGET_OS), linux)
43  ifeq ($(OPENJDK_TARGET_CPU), ppc64)
44    BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
45  else ifeq ($(OPENJDK_TARGET_CPU), ppc64le)
46    BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
47  else ifeq ($(OPENJDK_TARGET_CPU), s390x)
48    BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
49  else ifeq ($(OPENJDK_TARGET_CPU), aarch64)
50    BUILD_LIBFDLIBM_OPTIMIZATION := HIGH
51  endif
52endif
53
54LIBFDLIBM_SRC := $(JDK_TOPDIR)/src/java.base/share/native/libfdlibm
55LIBFDLIBM_CFLAGS := -I$(LIBFDLIBM_SRC)
56
57ifneq ($(OPENJDK_TARGET_OS), macosx)
58  $(eval $(call SetupNativeCompilation,BUILD_LIBFDLIBM, \
59      STATIC_LIBRARY := fdlibm, \
60      OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \
61      SRC := $(LIBFDLIBM_SRC), \
62      OPTIMIZATION := $(BUILD_LIBFDLIBM_OPTIMIZATION), \
63      CFLAGS := $(CFLAGS_JDKLIB) $(LIBFDLIBM_CFLAGS), \
64      CFLAGS_windows_debug := -DLOGGING, \
65      CFLAGS_aix := -qfloat=nomaf, \
66      CFLAGS_linux_ppc64 := -ffp-contract=off, \
67      CFLAGS_linux_ppc64le := -ffp-contract=off, \
68      CFLAGS_linux_s390x := -ffp-contract=off, \
69      CFLAGS_linux_aarch64 := -ffp-contract=off, \
70      DISABLED_WARNINGS_gcc := sign-compare, \
71      DISABLED_WARNINGS_microsoft := 4146 4244 4018, \
72      ARFLAGS := $(ARFLAGS), \
73      OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \
74  ))
75
76else
77
78  # On macosx the old build does partial (incremental) linking of fdlibm instead of
79  # a plain static library.
80  $(eval $(call SetupNativeCompilation,BUILD_LIBFDLIBM_MAC, \
81      LIBRARY := fdlibm, \
82      OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \
83      SRC := $(LIBFDLIBM_SRC), \
84      CFLAGS := $(CFLAGS_JDKLIB) $(LIBFDLIBM_CFLAGS), \
85      LDFLAGS := -nostdlib -r -arch x86_64, \
86      OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \
87  ))
88
89  BUILD_LIBFDLIBM := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/$(LIBRARY_PREFIX)fdlibm$(STATIC_LIBRARY_SUFFIX)
90  $(BUILD_LIBFDLIBM): $(BUILD_LIBFDLIBM_MAC)
91	$(call install-file)
92
93endif
94
95##########################################################################################
96
97ifeq ($(OPENJDK_TARGET_OS), solaris)
98  ifneq ($(OPENJDK_TARGET_CPU), x86_64)
99    BUILD_LIBVERIFY_REORDER := $(JDK_TOPDIR)/make/mapfiles/libverify/reorder-$(OPENJDK_TARGET_CPU)
100  endif
101endif
102
103LIBVERIFY_OPTIMIZATION := HIGH
104ifneq ($(findstring $(OPENJDK_TARGET_OS), solaris linux), )
105  ifeq ($(COMPILE_WITH_DEBUG_SYMBOLS), true)
106    LIBVERIFY_OPTIMIZATION := LOW
107  endif
108endif
109
110$(eval $(call SetupNativeCompilation,BUILD_LIBVERIFY, \
111    LIBRARY := verify, \
112    OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
113    SRC := $(JDK_TOPDIR)/src/java.base/share/native/libverify, \
114    OPTIMIZATION := $(LIBVERIFY_OPTIMIZATION), \
115    CFLAGS := $(CFLAGS_JDKLIB), \
116    DISABLED_WARNINGS_microsoft := 4244 4267, \
117    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libverify/mapfile-vers, \
118    LDFLAGS := $(LDFLAGS_JDKLIB) \
119        $(call SET_SHARED_LIBRARY_ORIGIN), \
120    LIBS_unix := -ljvm -lc, \
121    LIBS_windows := jvm.lib, \
122    VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
123    RC_FLAGS := $(RC_FLAGS) \
124        -D "JDK_FNAME=verify.dll" \
125        -D "JDK_INTERNAL_NAME=verify" \
126        -D "JDK_FTYPE=0x2L", \
127    REORDER := $(BUILD_LIBVERIFY_REORDER), \
128    OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libverify, \
129))
130
131TARGETS += $(BUILD_LIBVERIFY)
132
133##########################################################################################
134
135LIBJAVA_SRC_DIRS := $(call FindSrcDirsForLib, java.base, java)
136
137LIBJAVA_CFLAGS := $(addprefix -I, $(LIBJAVA_SRC_DIRS)) \
138    -I$(JDK_TOPDIR)/src/java.base/share/native/libfdlibm \
139    -I$(SUPPORT_OUTPUTDIR)/headers/java.base \
140    -DARCHPROPNAME='"$(OPENJDK_TARGET_CPU_OSARCH)"'
141
142# Make it possible to override this variable
143LIBJAVA_MAPFILE ?= $(JDK_TOPDIR)/make/mapfiles/libjava/mapfile-vers
144
145ifeq ($(OPENJDK_TARGET_OS), macosx)
146  BUILD_LIBJAVA_java_props_md.c_CFLAGS := -x objective-c
147  BUILD_LIBJAVA_java_props_macosx.c_CFLAGS := -x objective-c
148endif
149
150ifeq ($(OPENJDK_TARGET_OS), solaris)
151  ifneq ($(OPENJDK_TARGET_CPU), x86_64)
152    LIBJAVA_REORDER := $(JDK_TOPDIR)/make/mapfiles/libjava/reorder-$(OPENJDK_TARGET_CPU)
153  endif
154endif
155
156$(eval $(call SetupNativeCompilation,BUILD_LIBJAVA, \
157    LIBRARY := java, \
158    OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
159    SRC := $(LIBJAVA_SRC_DIRS), \
160    OPTIMIZATION := HIGH, \
161    CFLAGS := $(CFLAGS_JDKLIB) \
162        $(LIBJAVA_CFLAGS), \
163    System.c_CFLAGS := $(VERSION_CFLAGS), \
164    jdk_util.c_CFLAGS := $(VERSION_CFLAGS), \
165    WARNINGS_AS_ERRORS_xlc := false, \
166    DISABLED_WARNINGS_gcc := unused-result, \
167    DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \
168    MAPFILE := $(LIBJAVA_MAPFILE), \
169    LDFLAGS := $(LDFLAGS_JDKLIB) \
170        $(call SET_SHARED_LIBRARY_ORIGIN), \
171    LDFLAGS_macosx := -L$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/, \
172    LDFLAGS_windows := -export:winFileHandleOpen -export:handleLseek \
173        -export:getLastErrorString \
174        -export:getErrorString -delayload:shell32.dll, \
175    LIBS_unix := -ljvm -lverify, \
176    LIBS_linux := $(LIBDL) $(BUILD_LIBFDLIBM), \
177    LIBS_solaris := -lsocket -lnsl -lscf $(LIBDL) $(BUILD_LIBFDLIBM) -lc, \
178    LIBS_aix := $(LIBDL) $(BUILD_LIBFDLIBM) $(LIBM),\
179    LIBS_macosx := -lfdlibm \
180        -framework CoreFoundation \
181        -framework Foundation \
182        -framework Security -framework SystemConfiguration, \
183    LIBS_windows := jvm.lib $(BUILD_LIBFDLIBM) $(WIN_VERIFY_LIB) \
184        shell32.lib delayimp.lib \
185        advapi32.lib version.lib, \
186    VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
187    RC_FLAGS := $(RC_FLAGS) \
188        -D "JDK_FNAME=java.dll" \
189        -D "JDK_INTERNAL_NAME=java" \
190        -D "JDK_FTYPE=0x2L", \
191    REORDER := $(LIBJAVA_REORDER), \
192    OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjava, \
193))
194
195TARGETS += $(BUILD_LIBJAVA)
196
197$(BUILD_LIBJAVA): $(BUILD_LIBVERIFY)
198
199$(BUILD_LIBJAVA): $(BUILD_LIBFDLIBM)
200
201##########################################################################################
202
203BUILD_LIBZIP_EXCLUDES :=
204ifeq ($(USE_EXTERNAL_LIBZ), true)
205  LIBZIP_EXCLUDES += zlib
206endif
207
208BUILD_LIBZIP_REORDER :=
209ifeq ($(OPENJDK_TARGET_OS), solaris)
210  ifneq ($(OPENJDK_TARGET_CPU), x86_64)
211    BUILD_LIBZIP_REORDER := $(JDK_TOPDIR)/make/mapfiles/libzip/reorder-$(OPENJDK_TARGET_CPU)
212  endif
213endif
214
215ifeq ($(LIBZIP_CAN_USE_MMAP), true)
216  BUILD_LIBZIP_MMAP := -DUSE_MMAP
217endif
218
219$(eval $(call SetupNativeCompilation,BUILD_LIBZIP, \
220    LIBRARY := zip, \
221    OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
222    OPTIMIZATION := LOW, \
223    SRC := $(JDK_TOPDIR)/src/java.base/share/native/libzip, \
224    EXCLUDES := $(LIBZIP_EXCLUDES), \
225    CFLAGS := $(CFLAGS_JDKLIB) \
226        $(ZLIB_CPPFLAGS) \
227        -I$(JDK_TOPDIR)/src/java.base/share/native/libjava \
228        -I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \
229        -I$(SUPPORT_OUTPUTDIR)/headers/java.base, \
230    CFLAGS_unix := $(BUILD_LIBZIP_MMAP) -UDEBUG, \
231    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libzip/mapfile-vers, \
232    REORDER := $(BUILD_LIBZIP_REORDER), \
233    LDFLAGS := $(LDFLAGS_JDKLIB) \
234        $(call SET_SHARED_LIBRARY_ORIGIN), \
235    LDFLAGS_windows := -export:ZIP_Open -export:ZIP_Close -export:ZIP_FindEntry \
236        -export:ZIP_ReadEntry -export:ZIP_GetNextEntry \
237        -export:ZIP_InflateFully -export:ZIP_CRC32 -export:ZIP_FreeEntry, \
238    LIBS_unix := -ljvm -ljava $(LIBZ), \
239    LIBS_solaris := -lc, \
240    LIBS_windows := jvm.lib $(WIN_JAVA_LIB), \
241    VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
242    RC_FLAGS := $(RC_FLAGS) \
243        -D "JDK_FNAME=zip.dll" \
244        -D "JDK_INTERNAL_NAME=zip" \
245        -D "JDK_FTYPE=0x2L", \
246    OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libzip, \
247))
248
249$(BUILD_LIBZIP): $(BUILD_LIBJAVA)
250
251TARGETS += $(BUILD_LIBZIP)
252
253##########################################################################################
254
255JIMAGELIB_CPPFLAGS := \
256    -I$(JDK_TOPDIR)/src/java.base/share/native/libjava \
257    -I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \
258    -I$(JDK_TOPDIR)/src/java.base/share/native/libjimage \
259    -I$(SUPPORT_OUTPUTDIR)/headers/java.base \
260    #
261
262$(eval $(call SetupNativeCompilation,BUILD_LIBJIMAGE, \
263    LIBRARY := jimage, \
264    TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
265    OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
266    OPTIMIZATION := LOW, \
267    SRC := $(JDK_TOPDIR)/src/java.base/share/native/libjimage \
268        $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjimage, \
269    EXCLUDES := $(LIBJIMAGE_EXCLUDES), \
270    CFLAGS := $(CFLAGS_JDKLIB) $(JIMAGELIB_CPPFLAGS), \
271    CXXFLAGS := $(CXXFLAGS_JDKLIB) $(JIMAGELIB_CPPFLAGS), \
272    CFLAGS_unix := -UDEBUG, \
273    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjimage/mapfile-vers, \
274    LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK) \
275        $(call SET_SHARED_LIBRARY_ORIGIN), \
276    LDFLAGS_windows := -export:JIMAGE_Open -export:JIMAGE_Close \
277        -export:JIMAGE_PackageToModule \
278        -export:JIMAGE_FindResource -export:JIMAGE_GetResource \
279        -export:JIMAGE_ResourceIterator -export:JIMAGE_ResourcePath, \
280    LIBS_unix := -ljvm -ldl $(LIBCXX), \
281    LIBS_solaris := -lc, \
282    LIBS_macosx := -lc++, \
283    LIBS_windows := jvm.lib, \
284    VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
285    RC_FLAGS := $(RC_FLAGS) \
286        -D "JDK_FNAME=jimage.dll" \
287        -D "JDK_INTERNAL_NAME=jimage" \
288        -D "JDK_FTYPE=0x2L", \
289    OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjimage, \
290))
291
292$(BUILD_LIBJIMAGE): $(BUILD_LIBJAVA)
293
294TARGETS += $(BUILD_LIBJIMAGE)
295
296##########################################################################################
297
298LIBJLI_SRC_DIRS := $(call FindSrcDirsForLib, java.base, jli)
299
300LIBJLI_CFLAGS := $(CFLAGS_JDKLIB)
301
302ifeq ($(call check-jvm-variant, zero zeroshark), true)
303  ERGO_FAMILY := zero
304else
305  ifeq ($(OPENJDK_TARGET_CPU_ARCH), x86)
306    ERGO_FAMILY := i586
307  else
308    ERGO_FAMILY := $(OPENJDK_TARGET_CPU_ARCH)
309  endif
310endif
311LIBJLI_ALL_ERGO := $(wildcard $(addsuffix /ergo_*.c, $(LIBJLI_SRC_DIRS)))
312LIBJLI_EXCLUDE_ERGO := $(filter-out %/ergo_$(ERGO_FAMILY).c, $(LIBJLI_ALL_ERGO))
313# If all specialized ergo files are excluded, use generic ergo
314ifeq ($(LIBJLI_ALL_ERGO), $(LIBJLI_EXCLUDE_ERGO))
315  LIBJLI_CFLAGS += -DUSE_GENERIC_ERGO
316endif
317LIBJLI_EXCLUDE_FILES += $(notdir $(LIBJLI_EXCLUDE_ERGO))
318
319ifeq ($(OPENJDK_TARGET_OS), macosx)
320  LIBJLI_EXCLUDE_FILES += java_md_solinux.c ergo.c ergo_i586.c
321
322  BUILD_LIBJLI_java_md_macosx.c_CFLAGS := -x objective-c
323  BUILD_LIBJLI_STATIC_java_md_macosx.c_CFLAGS := -x objective-c
324
325  LIBJLI_CFLAGS += -DPACKAGE_PATH=\"$(PACKAGE_PATH)\"
326endif
327
328ifeq ($(OPENJDK_TARGET_OS), windows)
329  # Staticically link with c runtime on windows.
330  LIBJLI_CFLAGS := $(filter-out -MD, $(LIBJLI_CFLAGS))
331  LIBJLI_OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE)
332  # Supply the name of the C runtime lib.
333  LIBJLI_CFLAGS += -DMSVCR_DLL_NAME='"$(notdir $(MSVCR_DLL))"'
334  ifneq ($(MSVCP_DLL), )
335    LIBJLI_CFLAGS += -DMSVCP_DLL_NAME='"$(notdir $(MSVCP_DLL))"'
336  endif
337else
338  LIBJLI_OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE)/jli
339endif
340
341LIBJLI_CFLAGS += $(addprefix -I, $(LIBJLI_SRC_DIRS))
342
343ifneq ($(USE_EXTERNAL_LIBZ), true)
344  LIBJLI_CFLAGS += $(ZLIB_CPPFLAGS)
345  LIBJLI_EXTRA_FILES += \
346      $(addprefix $(JDK_TOPDIR)/src/java.base/share/native/libzip/zlib/, \
347          inflate.c \
348          inftrees.c \
349          inffast.c \
350          zadler32.c \
351          zcrc32.c \
352          zutil.c \
353      )
354endif
355
356$(eval $(call SetupNativeCompilation,BUILD_LIBJLI, \
357    LIBRARY := jli, \
358    OUTPUT_DIR := $(LIBJLI_OUTPUT_DIR), \
359    SRC := $(LIBJLI_SRC_DIRS), \
360    EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
361    EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
362    OPTIMIZATION := HIGH, \
363    CFLAGS := $(LIBJLI_CFLAGS), \
364    DISABLED_WARNINGS_solstudio := \
365        E_ASM_DISABLES_OPTIMIZATION \
366        E_STATEMENT_NOT_REACHED, \
367    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjli/mapfile-vers, \
368    LDFLAGS := $(LDFLAGS_JDKLIB) \
369        $(call SET_SHARED_LIBRARY_ORIGIN), \
370    LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
371    LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
372    LDFLAGS_windows := \
373        -export:JLI_Launch \
374        -export:JLI_ManifestIterate \
375        -export:JLI_SetTraceLauncher \
376        -export:JLI_ReportErrorMessage \
377        -export:JLI_ReportErrorMessageSys \
378        -export:JLI_ReportMessage \
379        -export:JLI_ReportExceptionDescription \
380        -export:JLI_MemAlloc \
381        -export:JLI_CmdToArgs \
382        -export:JLI_GetStdArgc \
383        -export:JLI_GetStdArgs \
384        -export:JLI_List_new \
385        -export:JLI_List_add \
386        -export:JLI_StringDup \
387        -export:JLI_MemFree \
388        -export:JLI_InitArgProcessing \
389        -export:JLI_PreprocessArg \
390        -export:JLI_AddArgsFromEnvVar \
391        -export:JLI_GetAppArgIndex, \
392    LIBS_unix := $(LIBZ), \
393    LIBS_linux := $(LIBDL) -lc -lpthread, \
394    LIBS_solaris := $(LIBDL) -lc, \
395    LIBS_aix := $(LIBDL),\
396    LIBS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \
397    LIBS_windows := advapi32.lib comctl32.lib user32.lib, \
398    VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
399    RC_FLAGS := $(RC_FLAGS) \
400        -D "JDK_FNAME=jli.dll" \
401        -D "JDK_INTERNAL_NAME=jli" \
402        -D "JDK_FTYPE=0x2L", \
403    OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli, \
404))
405
406TARGETS += $(BUILD_LIBJLI)
407
408# On windows, the static library has the same suffix as the import library created by
409# with the shared library, so the static library is given a different name. No harm
410# in doing it for all platform to reduce complexity.
411ifeq ($(OPENJDK_TARGET_OS), windows)
412  $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \
413      STATIC_LIBRARY := jli_static, \
414      OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \
415      SRC := $(LIBJLI_SRC_DIRS), \
416      EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
417      EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
418      OPTIMIZATION := HIGH, \
419      CFLAGS := $(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS), \
420      ARFLAGS := $(ARFLAGS), \
421      OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static, \
422  ))
423
424  TARGETS += $(BUILD_LIBJLI_STATIC)
425
426else ifeq ($(OPENJDK_TARGET_OS), macosx)
427  #
428  # On macosx they do partial (incremental) linking of libjli_static.a
429  # code it here...rather than add support to NativeCompilation
430  # as this is first time I see it
431  $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \
432      LIBRARY := jli_static, \
433      OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \
434      SRC := $(LIBJLI_SRC_DIRS), \
435      EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
436      EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
437      OPTIMIZATION := HIGH, \
438      CFLAGS := $(CFLAGS_JDKLIB) $(LIBJLI_CFLAGS), \
439      LDFLAGS := -nostdlib -r, \
440      OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static, \
441  ))
442
443  ifeq ($(STATIC_BUILD), true)
444    TARGETS += $(BUILD_LIBJLI_STATIC)
445  else
446    $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static.a: $(BUILD_LIBJLI_STATIC)
447	$(call install-file)
448
449    TARGETS += $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static.a
450  endif
451
452else ifeq ($(OPENJDK_TARGET_OS), aix)
453  # AIX also requires a static libjli because the compiler doesn't support '-rpath'
454  $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \
455      STATIC_LIBRARY := jli_static, \
456      OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \
457      SRC := $(LIBJLI_SRC_DIRS), \
458      EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
459      EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
460      OPTIMIZATION := HIGH, \
461      CFLAGS := $(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS), \
462      ARFLAGS := $(ARFLAGS), \
463      OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static))
464
465  TARGETS += $(BUILD_LIBJLI_STATIC)
466
467endif
468