Skip to content

Commit 2faa216

Browse files
Aleksei VoitylovAlexander Scherbatiy
authored andcommitted
8247589: Implementation of Alpine Linux/x64 Port
Reviewed-by: sgehwolf, clanger Backport-of: 63009f9
1 parent 19761f5 commit 2faa216

File tree

29 files changed

+380
-55
lines changed

29 files changed

+380
-55
lines changed

make/ReleaseFile.gmk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ define create-info-file
5353
$(call info-file-item, "JAVA_VERSION_DATE", "$(VERSION_DATE)")
5454
$(call info-file-item, "OS_NAME", "$(RELEASE_FILE_OS_NAME)")
5555
$(call info-file-item, "OS_ARCH", "$(RELEASE_FILE_OS_ARCH)")
56+
$(call info-file-item, "LIBC", "$(RELEASE_FILE_LIBC)")
5657
endef
5758

5859
# Param 1 - The file containing the MODULES list

make/autoconf/build-aux/config.guess

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,17 @@ if test $? = 0; then
4747
OUT=$REAL_CPU`echo $OUT | sed -e 's/[^-]*//'`
4848
fi
4949

50+
# Detect C library.
51+
# Use '-gnu' suffix on systems that use glibc.
52+
# Use '-musl' suffix on systems that use the musl libc.
53+
echo $OUT | grep -- -linux- > /dev/null 2> /dev/null
54+
if test $? = 0; then
55+
libc_vendor=`ldd --version 2>&1 | sed -n '1s/.*\(musl\).*/\1/p'`
56+
if [ x"${libc_vendor}" = x"musl" ]; then
57+
OUT=`echo $OUT | sed 's/-gnu/-musl/'`
58+
fi
59+
fi
60+
5061
# Test and fix cygwin on x86_64
5162
echo $OUT | grep 86-pc-cygwin > /dev/null 2> /dev/null
5263
if test $? != 0; then

make/autoconf/build-aux/config.sub

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@
2929

3030
DIR=`dirname $0`
3131

32+
if echo $* | grep linux-musl >/dev/null ; then
33+
echo $*
34+
exit
35+
fi
36+
3237
# First, filter out everything that doesn't begin with "aarch64-"
3338
if ! echo $* | grep '^aarch64-' >/dev/null ; then
3439
. $DIR/autoconf-config.sub "$@"

make/autoconf/buildjdk-spec.gmk.in

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,18 +50,21 @@ IMAGES_OUTPUTDIR := $(patsubst $(OUTPUTDIR)%,$(BUILDJDK_OUTPUTDIR)%,$(IMAGES_OUT
5050

5151
OPENJDK_BUILD_CPU_LEGACY := @OPENJDK_BUILD_CPU_LEGACY@
5252
OPENJDK_BUILD_CPU_LEGACY_LIB := @OPENJDK_BUILD_CPU_LEGACY_LIB@
53+
OPENJDK_BUILD_LIBC := @OPENJDK_BUILD_LIBC@
5354
OPENJDK_TARGET_CPU := @OPENJDK_BUILD_CPU@
5455
OPENJDK_TARGET_CPU_ARCH := @OPENJDK_BUILD_CPU_ARCH@
5556
OPENJDK_TARGET_CPU_BITS := @OPENJDK_BUILD_CPU_BITS@
5657
OPENJDK_TARGET_CPU_ENDIAN := @OPENJDK_BUILD_CPU_ENDIAN@
5758
OPENJDK_TARGET_CPU_LEGACY := @OPENJDK_BUILD_CPU_LEGACY@
59+
OPENJDK_TARGET_LIBC := @OPENJDK_BUILD_LIBC@
5860
OPENJDK_TARGET_OS_INCLUDE_SUBDIR := @OPENJDK_BUILD_OS_INCLUDE_SUBDIR@
5961

6062
HOTSPOT_TARGET_OS := @HOTSPOT_BUILD_OS@
6163
HOTSPOT_TARGET_OS_TYPE := @HOTSPOT_BUILD_OS_TYPE@
6264
HOTSPOT_TARGET_CPU := @HOTSPOT_BUILD_CPU@
6365
HOTSPOT_TARGET_CPU_ARCH := @HOTSPOT_BUILD_CPU_ARCH@
6466
HOTSPOT_TARGET_CPU_DEFINE := @HOTSPOT_BUILD_CPU_DEFINE@
67+
HOTSPOT_TARGET_LIBC := @HOTSPOT_BUILD_LIBC@
6568

6669
CFLAGS_JDKLIB := @OPENJDK_BUILD_CFLAGS_JDKLIB@
6770
CXXFLAGS_JDKLIB := @OPENJDK_BUILD_CXXFLAGS_JDKLIB@

make/autoconf/flags-cflags.m4

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -585,6 +585,11 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
585585
fi
586586
fi
587587
588+
OS_CFLAGS="$OS_CFLAGS -DLIBC=$OPENJDK_TARGET_LIBC"
589+
if test "x$OPENJDK_TARGET_LIBC" = xmusl; then
590+
OS_CFLAGS="$OS_CFLAGS -DMUSL_LIBC"
591+
fi
592+
588593
# Where does this really belong??
589594
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
590595
PICFLAG="-fPIC"

make/autoconf/platform.m4

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,24 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_OS],
208208
esac
209209
])
210210

211+
# Support macro for PLATFORM_EXTRACT_TARGET_AND_BUILD.
212+
# Converts autoconf style OS name to OpenJDK style, into
213+
# VAR_LIBC.
214+
AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_LIBC],
215+
[
216+
case "$1" in
217+
*linux*-musl)
218+
VAR_LIBC=musl
219+
;;
220+
*linux*-gnu)
221+
VAR_LIBC=gnu
222+
;;
223+
*)
224+
VAR_LIBC=default
225+
;;
226+
esac
227+
])
228+
211229
# Support macro for PLATFORM_EXTRACT_TARGET_AND_BUILD.
212230
# Converts autoconf style OS name to OpenJDK style, into
213231
# VAR_ABI.
@@ -252,9 +270,10 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
252270
AC_SUBST(OPENJDK_TARGET_AUTOCONF_NAME)
253271
AC_SUBST(OPENJDK_BUILD_AUTOCONF_NAME)
254272
255-
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
273+
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU/LIBC variables.
256274
PLATFORM_EXTRACT_VARS_FROM_OS($build_os)
257275
PLATFORM_EXTRACT_VARS_FROM_CPU($build_cpu)
276+
PLATFORM_EXTRACT_VARS_FROM_LIBC($build_os)
258277
PLATFORM_EXTRACT_VARS_FROM_ABI($build_os)
259278
# ..and setup our own variables. (Do this explicitly to facilitate searching)
260279
OPENJDK_BUILD_OS="$VAR_OS"
@@ -273,6 +292,7 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
273292
OPENJDK_BUILD_CPU_BITS="$VAR_CPU_BITS"
274293
OPENJDK_BUILD_CPU_ENDIAN="$VAR_CPU_ENDIAN"
275294
OPENJDK_BUILD_CPU_AUTOCONF="$build_cpu"
295+
OPENJDK_BUILD_LIBC="$VAR_LIBC"
276296
OPENJDK_BUILD_ABI="$VAR_ABI"
277297
AC_SUBST(OPENJDK_BUILD_OS)
278298
AC_SUBST(OPENJDK_BUILD_OS_TYPE)
@@ -282,14 +302,21 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
282302
AC_SUBST(OPENJDK_BUILD_CPU_BITS)
283303
AC_SUBST(OPENJDK_BUILD_CPU_ENDIAN)
284304
AC_SUBST(OPENJDK_BUILD_CPU_AUTOCONF)
305+
AC_SUBST(OPENJDK_BUILD_LIBC)
285306
AC_SUBST(OPENJDK_BUILD_ABI)
286307
287308
AC_MSG_CHECKING([openjdk-build os-cpu])
288309
AC_MSG_RESULT([$OPENJDK_BUILD_OS-$OPENJDK_BUILD_CPU])
289310
290-
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
311+
if test "x$OPENJDK_BUILD_OS" = "xlinux"; then
312+
AC_MSG_CHECKING([openjdk-build C library])
313+
AC_MSG_RESULT([$OPENJDK_BUILD_LIBC])
314+
fi
315+
316+
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU/LIBC variables.
291317
PLATFORM_EXTRACT_VARS_FROM_OS($host_os)
292318
PLATFORM_EXTRACT_VARS_FROM_CPU($host_cpu)
319+
PLATFORM_EXTRACT_VARS_FROM_LIBC($host_os)
293320
PLATFORM_EXTRACT_VARS_FROM_ABI($host_os)
294321
# ... and setup our own variables. (Do this explicitly to facilitate searching)
295322
OPENJDK_TARGET_OS="$VAR_OS"
@@ -309,6 +336,7 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
309336
OPENJDK_TARGET_CPU_ENDIAN="$VAR_CPU_ENDIAN"
310337
OPENJDK_TARGET_CPU_AUTOCONF="$host_cpu"
311338
OPENJDK_TARGET_OS_UPPERCASE=`$ECHO $OPENJDK_TARGET_OS | $TR 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
339+
OPENJDK_TARGET_LIBC="$VAR_LIBC"
312340
OPENJDK_TARGET_ABI="$VAR_ABI"
313341
314342
AC_SUBST(OPENJDK_TARGET_OS)
@@ -320,10 +348,16 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
320348
AC_SUBST(OPENJDK_TARGET_CPU_BITS)
321349
AC_SUBST(OPENJDK_TARGET_CPU_ENDIAN)
322350
AC_SUBST(OPENJDK_TARGET_CPU_AUTOCONF)
351+
AC_SUBST(OPENJDK_TARGET_LIBC)
323352
AC_SUBST(OPENJDK_TARGET_ABI)
324353
325354
AC_MSG_CHECKING([openjdk-target os-cpu])
326355
AC_MSG_RESULT([$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU])
356+
357+
if test "x$OPENJDK_TARGET_OS" = "xlinux"; then
358+
AC_MSG_CHECKING([openjdk-target C library])
359+
AC_MSG_RESULT([$OPENJDK_TARGET_LIBC])
360+
fi
327361
])
328362

329363
# Check if a reduced build (32-bit on 64-bit platforms) is requested, and modify behaviour
@@ -458,7 +492,13 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS_HELPER],
458492
else
459493
OPENJDK_$1_CPU_BUNDLE="$OPENJDK_$1_CPU"
460494
fi
461-
OPENJDK_$1_BUNDLE_PLATFORM="${OPENJDK_$1_OS_BUNDLE}-${OPENJDK_$1_CPU_BUNDLE}"
495+
496+
OPENJDK_$1_LIBC_BUNDLE=""
497+
if test "x$OPENJDK_$1_LIBC" = "xmusl"; then
498+
OPENJDK_$1_LIBC_BUNDLE="-$OPENJDK_$1_LIBC"
499+
fi
500+
501+
OPENJDK_$1_BUNDLE_PLATFORM="${OPENJDK_$1_OS_BUNDLE}-${OPENJDK_$1_CPU_BUNDLE}${OPENJDK_$1_LIBC_BUNDLE}"
462502
AC_SUBST(OPENJDK_$1_BUNDLE_PLATFORM)
463503
464504
if test "x$COMPILE_TYPE" = "xcross"; then
@@ -529,6 +569,9 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS_HELPER],
529569
fi
530570
AC_SUBST(HOTSPOT_$1_CPU_DEFINE)
531571
572+
HOTSPOT_$1_LIBC=$OPENJDK_$1_LIBC
573+
AC_SUBST(HOTSPOT_$1_LIBC)
574+
532575
# For historical reasons, the OS include directories have odd names.
533576
OPENJDK_$1_OS_INCLUDE_SUBDIR="$OPENJDK_TARGET_OS"
534577
if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
@@ -557,9 +600,11 @@ AC_DEFUN([PLATFORM_SET_RELEASE_FILE_OS_VALUES],
557600
RELEASE_FILE_OS_NAME="AIX"
558601
fi
559602
RELEASE_FILE_OS_ARCH=${OPENJDK_TARGET_CPU}
603+
RELEASE_FILE_LIBC=${OPENJDK_TARGET_LIBC}
560604
561605
AC_SUBST(RELEASE_FILE_OS_NAME)
562606
AC_SUBST(RELEASE_FILE_OS_ARCH)
607+
AC_SUBST(RELEASE_FILE_LIBC)
563608
])
564609

565610
AC_DEFUN([PLATFORM_SET_MODULE_TARGET_OS_VALUES],

make/autoconf/spec.gmk.in

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ OPENJDK_TARGET_CPU_ARCH:=@OPENJDK_TARGET_CPU_ARCH@
7575
OPENJDK_TARGET_CPU_BITS:=@OPENJDK_TARGET_CPU_BITS@
7676
OPENJDK_TARGET_CPU_ENDIAN:=@OPENJDK_TARGET_CPU_ENDIAN@
7777

78+
OPENJDK_TARGET_LIBC:=@OPENJDK_TARGET_LIBC@
79+
7880
COMPILE_TYPE:=@COMPILE_TYPE@
7981

8082
# Legacy support
@@ -91,6 +93,8 @@ HOTSPOT_TARGET_CPU := @HOTSPOT_TARGET_CPU@
9193
HOTSPOT_TARGET_CPU_ARCH := @HOTSPOT_TARGET_CPU_ARCH@
9294
HOTSPOT_TARGET_CPU_DEFINE := @HOTSPOT_TARGET_CPU_DEFINE@
9395

96+
HOTSPOT_TARGET_LIBC := @HOTSPOT_TARGET_LIBC@
97+
9498
OPENJDK_TARGET_BUNDLE_PLATFORM:=@OPENJDK_TARGET_BUNDLE_PLATFORM@
9599
JDK_ARCH_ABI_PROP_NAME := @JDK_ARCH_ABI_PROP_NAME@
96100

@@ -105,6 +109,8 @@ OPENJDK_BUILD_CPU_ARCH:=@OPENJDK_BUILD_CPU_ARCH@
105109
OPENJDK_BUILD_CPU_BITS:=@OPENJDK_BUILD_CPU_BITS@
106110
OPENJDK_BUILD_CPU_ENDIAN:=@OPENJDK_BUILD_CPU_ENDIAN@
107111

112+
OPENJDK_BUILD_LIBC:=@OPENJDK_BUILD_LIBC@
113+
108114
OPENJDK_BUILD_OS_INCLUDE_SUBDIR:=@OPENJDK_TARGET_OS_INCLUDE_SUBDIR@
109115

110116
# Target platform value in ModuleTarget class file attribute.
@@ -113,6 +119,7 @@ OPENJDK_MODULE_TARGET_PLATFORM:=@OPENJDK_MODULE_TARGET_PLATFORM@
113119
# OS_* properties in release file
114120
RELEASE_FILE_OS_NAME:=@RELEASE_FILE_OS_NAME@
115121
RELEASE_FILE_OS_ARCH:=@RELEASE_FILE_OS_ARCH@
122+
RELEASE_FILE_LIBC:=@RELEASE_FILE_LIBC@
116123

117124
LIBM:=@LIBM@
118125
LIBDL:=@LIBDL@

0 commit comments

Comments
 (0)