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
135# Allow a custom makefile to add extra src dirs
136LIBJAVA_SRC_DIRS += $(call FindSrcDirsForLib, java.base, java)
137
138LIBJAVA_CFLAGS := $(addprefix -I, $(LIBJAVA_SRC_DIRS)) \
139    -I$(JDK_TOPDIR)/src/java.base/share/native/libfdlibm \
140    -I$(SUPPORT_OUTPUTDIR)/headers/java.base \
141    -DARCHPROPNAME='"$(OPENJDK_TARGET_CPU_OSARCH)"'
142
143# Make it possible to override this variable
144LIBJAVA_MAPFILE ?= $(JDK_TOPDIR)/make/mapfiles/libjava/mapfile-vers
145
146ifeq ($(OPENJDK_TARGET_OS), macosx)
147  BUILD_LIBJAVA_java_props_md.c_CFLAGS := -x objective-c
148  BUILD_LIBJAVA_java_props_macosx.c_CFLAGS := -x objective-c
149endif
150
151ifeq ($(OPENJDK_TARGET_OS), solaris)
152  ifneq ($(OPENJDK_TARGET_CPU), x86_64)
153    LIBJAVA_REORDER := $(JDK_TOPDIR)/make/mapfiles/libjava/reorder-$(OPENJDK_TARGET_CPU)
154  endif
155endif
156
157$(eval $(call SetupNativeCompilation,BUILD_LIBJAVA, \
158    LIBRARY := java, \
159    OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
160    SRC := $(LIBJAVA_SRC_DIRS), \
161    OPTIMIZATION := HIGH, \
162    CFLAGS := $(CFLAGS_JDKLIB) \
163        $(LIBJAVA_CFLAGS), \
164    System.c_CFLAGS := $(VERSION_CFLAGS), \
165    jdk_util.c_CFLAGS := $(VERSION_CFLAGS), \
166    WARNINGS_AS_ERRORS_xlc := false, \
167    DISABLED_WARNINGS_gcc := unused-result, \
168    DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \
169    MAPFILE := $(LIBJAVA_MAPFILE), \
170    LDFLAGS := $(LDFLAGS_JDKLIB) \
171        $(call SET_SHARED_LIBRARY_ORIGIN), \
172    LDFLAGS_macosx := -L$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/, \
173    LDFLAGS_windows := -export:winFileHandleOpen -export:handleLseek \
174        -export:getLastErrorString \
175        -export:getErrorString -delayload:shell32.dll, \
176    LIBS_unix := -ljvm -lverify, \
177    LIBS_linux := $(LIBDL) $(BUILD_LIBFDLIBM), \
178    LIBS_solaris := -lsocket -lnsl -lscf $(LIBDL) $(BUILD_LIBFDLIBM) -lc, \
179    LIBS_aix := $(LIBDL) $(BUILD_LIBFDLIBM) $(LIBM),\
180    LIBS_macosx := -lfdlibm \
181        -framework CoreFoundation \
182        -framework Foundation \
183        -framework Security -framework SystemConfiguration, \
184    LIBS_windows := jvm.lib $(BUILD_LIBFDLIBM) $(WIN_VERIFY_LIB) \
185        shell32.lib delayimp.lib \
186        advapi32.lib version.lib, \
187    VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
188    RC_FLAGS := $(RC_FLAGS) \
189        -D "JDK_FNAME=java.dll" \
190        -D "JDK_INTERNAL_NAME=java" \
191        -D "JDK_FTYPE=0x2L", \
192    REORDER := $(LIBJAVA_REORDER), \
193    OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjava, \
194))
195
196TARGETS += $(BUILD_LIBJAVA)
197
198$(BUILD_LIBJAVA): $(BUILD_LIBVERIFY)
199
200$(BUILD_LIBJAVA): $(BUILD_LIBFDLIBM)
201
202##########################################################################################
203
204BUILD_LIBZIP_EXCLUDES :=
205ifeq ($(USE_EXTERNAL_LIBZ), true)
206  LIBZIP_EXCLUDES += zlib
207endif
208
209BUILD_LIBZIP_REORDER :=
210ifeq ($(OPENJDK_TARGET_OS), solaris)
211  ifneq ($(OPENJDK_TARGET_CPU), x86_64)
212    BUILD_LIBZIP_REORDER := $(JDK_TOPDIR)/make/mapfiles/libzip/reorder-$(OPENJDK_TARGET_CPU)
213  endif
214endif
215
216ifeq ($(LIBZIP_CAN_USE_MMAP), true)
217  BUILD_LIBZIP_MMAP := -DUSE_MMAP
218endif
219
220$(eval $(call SetupNativeCompilation,BUILD_LIBZIP, \
221    LIBRARY := zip, \
222    OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
223    OPTIMIZATION := LOW, \
224    SRC := $(JDK_TOPDIR)/src/java.base/share/native/libzip, \
225    EXCLUDES := $(LIBZIP_EXCLUDES), \
226    CFLAGS := $(CFLAGS_JDKLIB) \
227        $(ZLIB_CPPFLAGS) \
228        -I$(JDK_TOPDIR)/src/java.base/share/native/libjava \
229        -I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \
230        -I$(SUPPORT_OUTPUTDIR)/headers/java.base, \
231    CFLAGS_unix := $(BUILD_LIBZIP_MMAP) -UDEBUG, \
232    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libzip/mapfile-vers, \
233    REORDER := $(BUILD_LIBZIP_REORDER), \
234    LDFLAGS := $(LDFLAGS_JDKLIB) \
235        $(call SET_SHARED_LIBRARY_ORIGIN), \
236    LDFLAGS_windows := -export:ZIP_Open -export:ZIP_Close -export:ZIP_FindEntry \
237        -export:ZIP_ReadEntry -export:ZIP_GetNextEntry \
238        -export:ZIP_InflateFully -export:ZIP_CRC32 -export:ZIP_FreeEntry, \
239    LIBS_unix := -ljvm -ljava $(LIBZ), \
240    LIBS_solaris := -lc, \
241    LIBS_windows := jvm.lib $(WIN_JAVA_LIB), \
242    VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
243    RC_FLAGS := $(RC_FLAGS) \
244        -D "JDK_FNAME=zip.dll" \
245        -D "JDK_INTERNAL_NAME=zip" \
246        -D "JDK_FTYPE=0x2L", \
247    OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libzip, \
248))
249
250$(BUILD_LIBZIP): $(BUILD_LIBJAVA)
251
252TARGETS += $(BUILD_LIBZIP)
253
254##########################################################################################
255
256JIMAGELIB_CPPFLAGS := \
257    -I$(JDK_TOPDIR)/src/java.base/share/native/libjava \
258    -I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \
259    -I$(JDK_TOPDIR)/src/java.base/share/native/libjimage \
260    -I$(SUPPORT_OUTPUTDIR)/headers/java.base \
261    #
262
263$(eval $(call SetupNativeCompilation,BUILD_LIBJIMAGE, \
264    LIBRARY := jimage, \
265    TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
266    OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
267    OPTIMIZATION := LOW, \
268    SRC := $(JDK_TOPDIR)/src/java.base/share/native/libjimage \
269        $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjimage, \
270    EXCLUDES := $(LIBJIMAGE_EXCLUDES), \
271    CFLAGS := $(CFLAGS_JDKLIB) $(JIMAGELIB_CPPFLAGS), \
272    CXXFLAGS := $(CXXFLAGS_JDKLIB) $(JIMAGELIB_CPPFLAGS), \
273    CFLAGS_unix := -UDEBUG, \
274    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjimage/mapfile-vers, \
275    LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK) \
276        $(call SET_SHARED_LIBRARY_ORIGIN), \
277    LDFLAGS_windows := -export:JIMAGE_Open -export:JIMAGE_Close \
278        -export:JIMAGE_PackageToModule \
279        -export:JIMAGE_FindResource -export:JIMAGE_GetResource \
280        -export:JIMAGE_ResourceIterator -export:JIMAGE_ResourcePath, \
281    LIBS_unix := -ljvm -ldl $(LIBCXX), \
282    LIBS_solaris := -lc, \
283    LIBS_macosx := -lc++, \
284    LIBS_windows := jvm.lib, \
285    VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
286    RC_FLAGS := $(RC_FLAGS) \
287        -D "JDK_FNAME=jimage.dll" \
288        -D "JDK_INTERNAL_NAME=jimage" \
289        -D "JDK_FTYPE=0x2L", \
290    OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjimage, \
291))
292
293$(BUILD_LIBJIMAGE): $(BUILD_LIBJAVA)
294
295TARGETS += $(BUILD_LIBJIMAGE)
296
297##########################################################################################
298
299LIBJLI_SRC_DIRS := $(call FindSrcDirsForLib, java.base, jli)
300
301LIBJLI_CFLAGS := $(CFLAGS_JDKLIB)
302
303ifeq ($(call check-jvm-variant, zero zeroshark), true)
304  ERGO_FAMILY := zero
305else
306  ifeq ($(OPENJDK_TARGET_CPU_ARCH), x86)
307    ERGO_FAMILY := i586
308  else
309    ERGO_FAMILY := $(OPENJDK_TARGET_CPU_ARCH)
310  endif
311endif
312LIBJLI_ALL_ERGO := $(wildcard $(addsuffix /ergo_*.c, $(LIBJLI_SRC_DIRS)))
313LIBJLI_EXCLUDE_ERGO := $(filter-out %/ergo_$(ERGO_FAMILY).c, $(LIBJLI_ALL_ERGO))
314# If all specialized ergo files are excluded, use generic ergo
315ifeq ($(LIBJLI_ALL_ERGO), $(LIBJLI_EXCLUDE_ERGO))
316  LIBJLI_CFLAGS += -DUSE_GENERIC_ERGO
317endif
318LIBJLI_EXCLUDE_FILES += $(notdir $(LIBJLI_EXCLUDE_ERGO))
319
320ifeq ($(OPENJDK_TARGET_OS), macosx)
321  LIBJLI_EXCLUDE_FILES += java_md_solinux.c ergo.c ergo_i586.c
322
323  BUILD_LIBJLI_java_md_macosx.c_CFLAGS := -x objective-c
324  BUILD_LIBJLI_STATIC_java_md_macosx.c_CFLAGS := -x objective-c
325
326  LIBJLI_CFLAGS += -DPACKAGE_PATH=\"$(PACKAGE_PATH)\"
327endif
328
329ifeq ($(OPENJDK_TARGET_OS), windows)
330  # Staticically link with c runtime on windows.
331  LIBJLI_CFLAGS := $(filter-out -MD, $(LIBJLI_CFLAGS))
332  LIBJLI_OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE)
333  # Supply the name of the C runtime lib.
334  LIBJLI_CFLAGS += -DMSVCR_DLL_NAME='"$(notdir $(MSVCR_DLL))"'
335  ifneq ($(MSVCP_DLL), )
336    LIBJLI_CFLAGS += -DMSVCP_DLL_NAME='"$(notdir $(MSVCP_DLL))"'
337  endif
338else
339  LIBJLI_OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE)/jli
340endif
341
342LIBJLI_CFLAGS += $(addprefix -I, $(LIBJLI_SRC_DIRS))
343
344ifneq ($(USE_EXTERNAL_LIBZ), true)
345  LIBJLI_CFLAGS += $(ZLIB_CPPFLAGS)
346  LIBJLI_EXTRA_FILES += \
347      $(addprefix $(JDK_TOPDIR)/src/java.base/share/native/libzip/zlib/, \
348          inflate.c \
349          inftrees.c \
350          inffast.c \
351          zadler32.c \
352          zcrc32.c \
353          zutil.c \
354      )
355endif
356
357$(eval $(call SetupNativeCompilation,BUILD_LIBJLI, \
358    LIBRARY := jli, \
359    OUTPUT_DIR := $(LIBJLI_OUTPUT_DIR), \
360    SRC := $(LIBJLI_SRC_DIRS), \
361    EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
362    EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
363    OPTIMIZATION := HIGH, \
364    CFLAGS := $(LIBJLI_CFLAGS), \
365    DISABLED_WARNINGS_solstudio := \
366        E_ASM_DISABLES_OPTIMIZATION \
367        E_STATEMENT_NOT_REACHED, \
368    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjli/mapfile-vers, \
369    LDFLAGS := $(LDFLAGS_JDKLIB) \
370        $(call SET_SHARED_LIBRARY_ORIGIN), \
371    LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
372    LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
373    LDFLAGS_windows := \
374        -export:JLI_Launch \
375        -export:JLI_ManifestIterate \
376        -export:JLI_SetTraceLauncher \
377        -export:JLI_ReportErrorMessage \
378        -export:JLI_ReportErrorMessageSys \
379        -export:JLI_ReportMessage \
380        -export:JLI_ReportExceptionDescription \
381        -export:JLI_MemAlloc \
382        -export:JLI_CmdToArgs \
383        -export:JLI_GetStdArgc \
384        -export:JLI_GetStdArgs \
385        -export:JLI_List_new \
386        -export:JLI_List_add \
387        -export:JLI_StringDup \
388        -export:JLI_MemFree \
389        -export:JLI_InitArgProcessing \
390        -export:JLI_PreprocessArg \
391        -export:JLI_AddArgsFromEnvVar \
392        -export:JLI_GetAppArgIndex, \
393    LIBS_unix := $(LIBZ), \
394    LIBS_linux := $(LIBDL) -lc -lpthread, \
395    LIBS_solaris := $(LIBDL) -lc, \
396    LIBS_aix := $(LIBDL),\
397    LIBS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \
398    LIBS_windows := advapi32.lib comctl32.lib user32.lib, \
399    VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
400    RC_FLAGS := $(RC_FLAGS) \
401        -D "JDK_FNAME=jli.dll" \
402        -D "JDK_INTERNAL_NAME=jli" \
403        -D "JDK_FTYPE=0x2L", \
404    OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli, \
405))
406
407TARGETS += $(BUILD_LIBJLI)
408
409# On windows, the static library has the same suffix as the import library created by
410# with the shared library, so the static library is given a different name. No harm
411# in doing it for all platform to reduce complexity.
412ifeq ($(OPENJDK_TARGET_OS), windows)
413  $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \
414      STATIC_LIBRARY := jli_static, \
415      OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \
416      SRC := $(LIBJLI_SRC_DIRS), \
417      EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
418      EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
419      OPTIMIZATION := HIGH, \
420      CFLAGS := $(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS), \
421      ARFLAGS := $(ARFLAGS), \
422      OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static, \
423  ))
424
425  TARGETS += $(BUILD_LIBJLI_STATIC)
426
427else ifeq ($(OPENJDK_TARGET_OS), macosx)
428  #
429  # On macosx they do partial (incremental) linking of libjli_static.a
430  # code it here...rather than add support to NativeCompilation
431  # as this is first time I see it
432  $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \
433      LIBRARY := jli_static, \
434      OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \
435      SRC := $(LIBJLI_SRC_DIRS), \
436      EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
437      EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
438      OPTIMIZATION := HIGH, \
439      CFLAGS := $(CFLAGS_JDKLIB) $(LIBJLI_CFLAGS), \
440      LDFLAGS := -nostdlib -r, \
441      OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static, \
442  ))
443
444  ifeq ($(STATIC_BUILD), true)
445    TARGETS += $(BUILD_LIBJLI_STATIC)
446  else
447    $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static.a: $(BUILD_LIBJLI_STATIC)
448	$(call install-file)
449
450    TARGETS += $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static.a
451  endif
452
453else ifeq ($(OPENJDK_TARGET_OS), aix)
454  # AIX also requires a static libjli because the compiler doesn't support '-rpath'
455  $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \
456      STATIC_LIBRARY := jli_static, \
457      OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \
458      SRC := $(LIBJLI_SRC_DIRS), \
459      EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \
460      EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \
461      OPTIMIZATION := HIGH, \
462      CFLAGS := $(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS), \
463      ARFLAGS := $(ARFLAGS), \
464      OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static))
465
466  TARGETS += $(BUILD_LIBJLI_STATIC)
467
468endif
469