Skip to content

Commit 63009f9

Browse files
Aleksei VoitylovvidmikAlexander ScherbatiyAxel Siebenborn
committed
8247589: Implementation of Alpine Linux/x64 Port
Co-authored-by: Mikael Vidstedt <mikael@openjdk.org> Co-authored-by: Alexander Scherbatiy <alexsch@openjdk.org> Co-authored-by: Axel Siebenborn <asiebenborn@openjdk.org> Co-authored-by: Aleksei Voitylov <avoitylov@openjdk.org> Reviewed-by: alanb, erikj, dholmes
1 parent 9d230ea commit 63009f9

File tree

30 files changed

+386
-55
lines changed

30 files changed

+386
-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
@@ -30,6 +30,17 @@
3030
DIR=`dirname $0`
3131
OUT=`. $DIR/autoconf-config.guess`
3232

33+
# Detect C library.
34+
# Use '-gnu' suffix on systems that use glibc.
35+
# Use '-musl' suffix on systems that use the musl libc.
36+
echo $OUT | grep -- -linux- > /dev/null 2> /dev/null
37+
if test $? = 0; then
38+
libc_vendor=`ldd --version 2>&1 | sed -n '1s/.*\(musl\).*/\1/p'`
39+
if [ x"${libc_vendor}" = x"musl" ]; then
40+
OUT=`echo $OUT | sed 's/-gnu/-musl/'`
41+
fi
42+
fi
43+
3344
# Test and fix cygwin on x86_64
3445
echo $OUT | grep 86-pc-cygwin > /dev/null 2> /dev/null
3546
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
# Allow wsl
3338
if echo $* | grep x86_64-pc-wsl >/dev/null ; then
3439
echo $*

make/autoconf/buildjdk-spec.gmk.in

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

5555
OPENJDK_BUILD_CPU_LEGACY := @OPENJDK_BUILD_CPU_LEGACY@
5656
OPENJDK_BUILD_CPU_LEGACY_LIB := @OPENJDK_BUILD_CPU_LEGACY_LIB@
57+
OPENJDK_BUILD_LIBC := @OPENJDK_BUILD_LIBC@
5758
OPENJDK_TARGET_CPU := @OPENJDK_BUILD_CPU@
5859
OPENJDK_TARGET_CPU_ARCH := @OPENJDK_BUILD_CPU_ARCH@
5960
OPENJDK_TARGET_CPU_BITS := @OPENJDK_BUILD_CPU_BITS@
6061
OPENJDK_TARGET_CPU_ENDIAN := @OPENJDK_BUILD_CPU_ENDIAN@
6162
OPENJDK_TARGET_CPU_LEGACY := @OPENJDK_BUILD_CPU_LEGACY@
63+
OPENJDK_TARGET_LIBC := @OPENJDK_BUILD_LIBC@
6264
OPENJDK_TARGET_OS_INCLUDE_SUBDIR := @OPENJDK_BUILD_OS_INCLUDE_SUBDIR@
6365

6466
HOTSPOT_TARGET_OS := @HOTSPOT_BUILD_OS@
6567
HOTSPOT_TARGET_OS_TYPE := @HOTSPOT_BUILD_OS_TYPE@
6668
HOTSPOT_TARGET_CPU := @HOTSPOT_BUILD_CPU@
6769
HOTSPOT_TARGET_CPU_ARCH := @HOTSPOT_BUILD_CPU_ARCH@
6870
HOTSPOT_TARGET_CPU_DEFINE := @HOTSPOT_BUILD_CPU_DEFINE@
71+
HOTSPOT_TARGET_LIBC := @HOTSPOT_BUILD_LIBC@
6972

7073
CFLAGS_JDKLIB := @OPENJDK_BUILD_CFLAGS_JDKLIB@
7174
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
@@ -564,6 +564,11 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
564564
fi
565565
fi
566566
567+
OS_CFLAGS="$OS_CFLAGS -DLIBC=$OPENJDK_TARGET_LIBC"
568+
if test "x$OPENJDK_TARGET_LIBC" = xmusl; then
569+
OS_CFLAGS="$OS_CFLAGS -DMUSL_LIBC"
570+
fi
571+
567572
# Where does this really belong??
568573
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
569574
PICFLAG="-fPIC"

make/autoconf/platform.m4

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,24 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_OS],
220220
esac
221221
])
222222

223+
# Support macro for PLATFORM_EXTRACT_TARGET_AND_BUILD.
224+
# Converts autoconf style OS name to OpenJDK style, into
225+
# VAR_LIBC.
226+
AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_LIBC],
227+
[
228+
case "$1" in
229+
*linux*-musl)
230+
VAR_LIBC=musl
231+
;;
232+
*linux*-gnu)
233+
VAR_LIBC=gnu
234+
;;
235+
*)
236+
VAR_LIBC=default
237+
;;
238+
esac
239+
])
240+
223241
# Expects $host_os $host_cpu $build_os and $build_cpu
224242
# and $with_target_bits to have been setup!
225243
#
@@ -237,9 +255,10 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
237255
AC_SUBST(OPENJDK_TARGET_AUTOCONF_NAME)
238256
AC_SUBST(OPENJDK_BUILD_AUTOCONF_NAME)
239257
240-
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
258+
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU/LIBC variables.
241259
PLATFORM_EXTRACT_VARS_FROM_OS($build_os)
242260
PLATFORM_EXTRACT_VARS_FROM_CPU($build_cpu)
261+
PLATFORM_EXTRACT_VARS_FROM_LIBC($build_os)
243262
# ..and setup our own variables. (Do this explicitly to facilitate searching)
244263
OPENJDK_BUILD_OS="$VAR_OS"
245264
if test "x$VAR_OS_TYPE" != x; then
@@ -256,20 +275,28 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
256275
OPENJDK_BUILD_CPU_ARCH="$VAR_CPU_ARCH"
257276
OPENJDK_BUILD_CPU_BITS="$VAR_CPU_BITS"
258277
OPENJDK_BUILD_CPU_ENDIAN="$VAR_CPU_ENDIAN"
278+
OPENJDK_BUILD_LIBC="$VAR_LIBC"
259279
AC_SUBST(OPENJDK_BUILD_OS)
260280
AC_SUBST(OPENJDK_BUILD_OS_TYPE)
261281
AC_SUBST(OPENJDK_BUILD_OS_ENV)
262282
AC_SUBST(OPENJDK_BUILD_CPU)
263283
AC_SUBST(OPENJDK_BUILD_CPU_ARCH)
264284
AC_SUBST(OPENJDK_BUILD_CPU_BITS)
265285
AC_SUBST(OPENJDK_BUILD_CPU_ENDIAN)
286+
AC_SUBST(OPENJDK_BUILD_LIBC)
266287
267288
AC_MSG_CHECKING([openjdk-build os-cpu])
268289
AC_MSG_RESULT([$OPENJDK_BUILD_OS-$OPENJDK_BUILD_CPU])
269290
270-
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
291+
if test "x$OPENJDK_BUILD_OS" = "xlinux"; then
292+
AC_MSG_CHECKING([openjdk-build C library])
293+
AC_MSG_RESULT([$OPENJDK_BUILD_LIBC])
294+
fi
295+
296+
# Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU/LIBC variables.
271297
PLATFORM_EXTRACT_VARS_FROM_OS($host_os)
272298
PLATFORM_EXTRACT_VARS_FROM_CPU($host_cpu)
299+
PLATFORM_EXTRACT_VARS_FROM_LIBC($host_os)
273300
# ... and setup our own variables. (Do this explicitly to facilitate searching)
274301
OPENJDK_TARGET_OS="$VAR_OS"
275302
if test "x$VAR_OS_TYPE" != x; then
@@ -287,6 +314,7 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
287314
OPENJDK_TARGET_CPU_BITS="$VAR_CPU_BITS"
288315
OPENJDK_TARGET_CPU_ENDIAN="$VAR_CPU_ENDIAN"
289316
OPENJDK_TARGET_OS_UPPERCASE=`$ECHO $OPENJDK_TARGET_OS | $TR 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
317+
OPENJDK_TARGET_LIBC="$VAR_LIBC"
290318
291319
AC_SUBST(OPENJDK_TARGET_OS)
292320
AC_SUBST(OPENJDK_TARGET_OS_TYPE)
@@ -296,9 +324,15 @@ AC_DEFUN([PLATFORM_EXTRACT_TARGET_AND_BUILD],
296324
AC_SUBST(OPENJDK_TARGET_CPU_ARCH)
297325
AC_SUBST(OPENJDK_TARGET_CPU_BITS)
298326
AC_SUBST(OPENJDK_TARGET_CPU_ENDIAN)
327+
AC_SUBST(OPENJDK_TARGET_LIBC)
299328
300329
AC_MSG_CHECKING([openjdk-target os-cpu])
301330
AC_MSG_RESULT([$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU])
331+
332+
if test "x$OPENJDK_TARGET_OS" = "xlinux"; then
333+
AC_MSG_CHECKING([openjdk-target C library])
334+
AC_MSG_RESULT([$OPENJDK_TARGET_LIBC])
335+
fi
302336
])
303337

304338
# Check if a reduced build (32-bit on 64-bit platforms) is requested, and modify behaviour
@@ -420,7 +454,13 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS_HELPER],
420454
else
421455
OPENJDK_$1_CPU_BUNDLE="$OPENJDK_$1_CPU"
422456
fi
423-
OPENJDK_$1_BUNDLE_PLATFORM="${OPENJDK_$1_OS_BUNDLE}-${OPENJDK_$1_CPU_BUNDLE}"
457+
458+
OPENJDK_$1_LIBC_BUNDLE=""
459+
if test "x$OPENJDK_$1_LIBC" = "xmusl"; then
460+
OPENJDK_$1_LIBC_BUNDLE="-$OPENJDK_$1_LIBC"
461+
fi
462+
463+
OPENJDK_$1_BUNDLE_PLATFORM="${OPENJDK_$1_OS_BUNDLE}-${OPENJDK_$1_CPU_BUNDLE}${OPENJDK_$1_LIBC_BUNDLE}"
424464
AC_SUBST(OPENJDK_$1_BUNDLE_PLATFORM)
425465
426466
if test "x$COMPILE_TYPE" = "xcross"; then
@@ -493,6 +533,9 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS_HELPER],
493533
fi
494534
AC_SUBST(HOTSPOT_$1_CPU_DEFINE)
495535
536+
HOTSPOT_$1_LIBC=$OPENJDK_$1_LIBC
537+
AC_SUBST(HOTSPOT_$1_LIBC)
538+
496539
# For historical reasons, the OS include directories have odd names.
497540
OPENJDK_$1_OS_INCLUDE_SUBDIR="$OPENJDK_TARGET_OS"
498541
if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
@@ -518,9 +561,11 @@ AC_DEFUN([PLATFORM_SET_RELEASE_FILE_OS_VALUES],
518561
RELEASE_FILE_OS_NAME="AIX"
519562
fi
520563
RELEASE_FILE_OS_ARCH=${OPENJDK_TARGET_CPU}
564+
RELEASE_FILE_LIBC=${OPENJDK_TARGET_LIBC}
521565
522566
AC_SUBST(RELEASE_FILE_OS_NAME)
523567
AC_SUBST(RELEASE_FILE_OS_ARCH)
568+
AC_SUBST(RELEASE_FILE_LIBC)
524569
])
525570

526571
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
@@ -80,6 +80,8 @@ OPENJDK_TARGET_CPU_ARCH:=@OPENJDK_TARGET_CPU_ARCH@
8080
OPENJDK_TARGET_CPU_BITS:=@OPENJDK_TARGET_CPU_BITS@
8181
OPENJDK_TARGET_CPU_ENDIAN:=@OPENJDK_TARGET_CPU_ENDIAN@
8282

83+
OPENJDK_TARGET_LIBC:=@OPENJDK_TARGET_LIBC@
84+
8385
COMPILE_TYPE:=@COMPILE_TYPE@
8486

8587
# Legacy support
@@ -95,6 +97,8 @@ HOTSPOT_TARGET_CPU := @HOTSPOT_TARGET_CPU@
9597
HOTSPOT_TARGET_CPU_ARCH := @HOTSPOT_TARGET_CPU_ARCH@
9698
HOTSPOT_TARGET_CPU_DEFINE := @HOTSPOT_TARGET_CPU_DEFINE@
9799

100+
HOTSPOT_TARGET_LIBC := @HOTSPOT_TARGET_LIBC@
101+
98102
OPENJDK_TARGET_BUNDLE_PLATFORM:=@OPENJDK_TARGET_BUNDLE_PLATFORM@
99103
JDK_ARCH_ABI_PROP_NAME := @JDK_ARCH_ABI_PROP_NAME@
100104

@@ -109,6 +113,8 @@ OPENJDK_BUILD_CPU_ARCH:=@OPENJDK_BUILD_CPU_ARCH@
109113
OPENJDK_BUILD_CPU_BITS:=@OPENJDK_BUILD_CPU_BITS@
110114
OPENJDK_BUILD_CPU_ENDIAN:=@OPENJDK_BUILD_CPU_ENDIAN@
111115

116+
OPENJDK_BUILD_LIBC:=@OPENJDK_BUILD_LIBC@
117+
112118
OPENJDK_BUILD_OS_INCLUDE_SUBDIR:=@OPENJDK_TARGET_OS_INCLUDE_SUBDIR@
113119

114120
# Target platform value in ModuleTarget class file attribute.
@@ -117,6 +123,7 @@ OPENJDK_MODULE_TARGET_PLATFORM:=@OPENJDK_MODULE_TARGET_PLATFORM@
117123
# OS_* properties in release file
118124
RELEASE_FILE_OS_NAME:=@RELEASE_FILE_OS_NAME@
119125
RELEASE_FILE_OS_ARCH:=@RELEASE_FILE_OS_ARCH@
126+
RELEASE_FILE_LIBC:=@RELEASE_FILE_LIBC@
120127

121128
SOURCE_DATE := @SOURCE_DATE@
122129
ENABLE_REPRODUCIBLE_BUILD := @ENABLE_REPRODUCIBLE_BUILD@

0 commit comments

Comments
 (0)