Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/jdk17u
Path: blob/master/make/devkit/createWindowsDevkit.sh
66638 views
1
#!/bin/bash
2
#
3
# Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved.
4
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5
#
6
# This code is free software; you can redistribute it and/or modify it
7
# under the terms of the GNU General Public License version 2 only, as
8
# published by the Free Software Foundation. Oracle designates this
9
# particular file as subject to the "Classpath" exception as provided
10
# by Oracle in the LICENSE file that accompanied this code.
11
#
12
# This code is distributed in the hope that it will be useful, but WITHOUT
13
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15
# version 2 for more details (a copy is included in the LICENSE file that
16
# accompanied this code).
17
#
18
# You should have received a copy of the GNU General Public License version
19
# 2 along with this work; if not, write to the Free Software Foundation,
20
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
21
#
22
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
23
# or visit www.oracle.com if you need additional information or have any
24
# questions.
25
#
26
27
# This script copies parts of a Visual Studio installation into a devkit
28
# suitable for building OpenJDK and OracleJDK. Needs to run in Cygwin or WSL.
29
# [email protected]
30
31
usage_and_exit() {
32
echo "Usage: createWindowsDevkit.sh <2019 | 2022>"
33
exit 1
34
}
35
36
if [ ! $# = 1 ]; then
37
usage_and_exit
38
fi
39
40
VS_VERSION="$1"
41
42
VS_DLL_VERSION="140"
43
SDK_VERSION="10"
44
45
SCRIPT_DIR="$(cd "$(dirname $0)" > /dev/null && pwd)"
46
BUILD_DIR="${SCRIPT_DIR}/../../build/devkit"
47
48
################################################################################
49
# Prepare settings
50
51
UNAME_SYSTEM=`uname -s`
52
UNAME_RELEASE=`uname -r`
53
54
# Detect cygwin or WSL
55
IS_CYGWIN=`echo $UNAME_SYSTEM | grep -i CYGWIN`
56
IS_WSL=`echo $UNAME_RELEASE | grep Microsoft`
57
if test "x$IS_CYGWIN" != "x"; then
58
BUILD_ENV="cygwin"
59
elif test "x$IS_WSL" != "x"; then
60
BUILD_ENV="wsl"
61
else
62
echo "Unknown environment; only Cygwin and WSL are supported."
63
exit 1
64
fi
65
66
if test "x$BUILD_ENV" = "xcygwin"; then
67
WINDOWS_PATH_TO_UNIX_PATH="cygpath -u"
68
elif test "x$BUILD_ENV" = "xwsl"; then
69
WINDOWS_PATH_TO_UNIX_PATH="wslpath -u"
70
fi
71
72
# Work around the insanely named ProgramFiles(x86) env variable
73
PROGRAMFILES_X86="$($WINDOWS_PATH_TO_UNIX_PATH "$(cmd.exe /c set | sed -n 's/^ProgramFiles(x86)=//p' | tr -d '\r')")"
74
PROGRAMFILES="$($WINDOWS_PATH_TO_UNIX_PATH "$PROGRAMFILES")"
75
76
case $VS_VERSION in
77
2019)
78
MSVC_PROGRAMFILES_DIR="${PROGRAMFILES_X86}"
79
MSVC_CRT_DIR="Microsoft.VC142.CRT"
80
VS_VERSION_NUM_NODOT="160"
81
;;
82
83
2022)
84
MSVC_PROGRAMFILES_DIR="${PROGRAMFILES}"
85
MSVC_CRT_DIR="Microsoft.VC143.CRT"
86
VS_VERSION_NUM_NODOT="170"
87
;;
88
*)
89
echo "Unexpected VS version: $VS_VERSION"
90
usage_and_exit
91
;;
92
esac
93
94
95
# Find Visual Studio installation dir
96
VSNNNCOMNTOOLS=`cmd.exe /c echo %VS${VS_VERSION_NUM_NODOT}COMNTOOLS% | tr -d '\r'`
97
if [ -d "$VSNNNCOMNTOOLS" ]; then
98
VS_INSTALL_DIR="$($WINDOWS_PATH_TO_UNIX_PATH "$VSNNNCOMNTOOLS/../..")"
99
else
100
VS_INSTALL_DIR="${MSVC_PROGRAMFILES_DIR}/Microsoft Visual Studio/$VS_VERSION"
101
VS_INSTALL_DIR="$(ls -d "${VS_INSTALL_DIR}/"{Community,Professional,Enterprise} 2>/dev/null | head -n1)"
102
fi
103
echo "VS_INSTALL_DIR: $VS_INSTALL_DIR"
104
105
# Extract semantic version
106
POTENTIAL_INI_FILES="Common7/IDE/wdexpress.isolation.ini Common7/IDE/devenv.isolation.ini"
107
for f in $POTENTIAL_INI_FILES; do
108
if [ -f "$VS_INSTALL_DIR/$f" ]; then
109
VS_VERSION_SP="$(grep ^SemanticVersion= "$VS_INSTALL_DIR/$f")"
110
# Remove SemnaticVersion=
111
VS_VERSION_SP="${VS_VERSION_SP#*=}"
112
# Remove suffix of too detailed numbering starting with +
113
VS_VERSION_SP="${VS_VERSION_SP%+*}"
114
break
115
fi
116
done
117
if [ -z "$VS_VERSION_SP" ]; then
118
echo "Failed to find SP version"
119
exit 1
120
fi
121
echo "Found Version SP: $VS_VERSION_SP"
122
123
# Setup output dirs
124
DEVKIT_ROOT="${BUILD_DIR}/VS${VS_VERSION}-${VS_VERSION_SP}-devkit"
125
DEVKIT_BUNDLE="${DEVKIT_ROOT}.tar.gz"
126
127
echo "Creating devkit in $DEVKIT_ROOT"
128
129
MSVCR_DLL=${MSVC_CRT_DIR}/vcruntime${VS_DLL_VERSION}.dll
130
VCRUNTIME_1_DLL=${MSVC_CRT_DIR}/vcruntime${VS_DLL_VERSION}_1.dll
131
MSVCP_DLL=${MSVC_CRT_DIR}/msvcp${VS_DLL_VERSION}.dll
132
133
################################################################################
134
# Copy Visual Studio files
135
136
TOOLS_VERSION="$(ls "$VS_INSTALL_DIR/VC/Tools/MSVC" | sort -r -n | head -n1)"
137
echo "Found Tools version: $TOOLS_VERSION"
138
VC_SUBDIR="VC/Tools/MSVC/$TOOLS_VERSION"
139
REDIST_VERSION="$(ls "$VS_INSTALL_DIR/VC/Redist/MSVC" | sort -r -n | head -n1)"
140
echo "Found Redist version: $REDIST_VERSION"
141
REDIST_SUBDIR="VC/Redist/MSVC/$REDIST_VERSION"
142
echo "Copying VC..."
143
rm -rf $DEVKIT_ROOT/VC
144
mkdir -p $DEVKIT_ROOT/VC/bin
145
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/bin/Hostx64/arm64" $DEVKIT_ROOT/VC/bin/
146
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/bin/Hostx64/x64" $DEVKIT_ROOT/VC/bin/
147
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/bin/Hostx86/x86" $DEVKIT_ROOT/VC/bin/
148
mkdir -p $DEVKIT_ROOT/VC/lib
149
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/lib/arm64" $DEVKIT_ROOT/VC/lib/
150
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/lib/x64" $DEVKIT_ROOT/VC/lib/
151
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/lib/x86" $DEVKIT_ROOT/VC/lib/
152
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/include" $DEVKIT_ROOT/VC/
153
mkdir -p $DEVKIT_ROOT/VC/atlmfc/lib
154
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/atlmfc/lib/arm64" $DEVKIT_ROOT/VC/atlmfc/lib/
155
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/atlmfc/lib/x64" $DEVKIT_ROOT/VC/atlmfc/lib/
156
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/atlmfc/lib/x86" $DEVKIT_ROOT/VC/atlmfc/lib/
157
cp -r "$VS_INSTALL_DIR/${VC_SUBDIR}/atlmfc/include" $DEVKIT_ROOT/VC/atlmfc/
158
mkdir -p $DEVKIT_ROOT/VC/Auxiliary
159
cp -r "$VS_INSTALL_DIR/VC/Auxiliary/Build" $DEVKIT_ROOT/VC/Auxiliary/
160
mkdir -p $DEVKIT_ROOT/VC/redist
161
cp -r "$VS_INSTALL_DIR/$REDIST_SUBDIR/arm64" $DEVKIT_ROOT/VC/redist/
162
cp -r "$VS_INSTALL_DIR/$REDIST_SUBDIR/x64" $DEVKIT_ROOT/VC/redist/
163
cp -r "$VS_INSTALL_DIR/$REDIST_SUBDIR/x86" $DEVKIT_ROOT/VC/redist/
164
165
# The redist runtime libs are needed to run the compiler but may not be
166
# installed on the machine where the devkit will be used.
167
cp $DEVKIT_ROOT/VC/redist/x86/$MSVCR_DLL $DEVKIT_ROOT/VC/bin/x86
168
cp $DEVKIT_ROOT/VC/redist/x86/$MSVCP_DLL $DEVKIT_ROOT/VC/bin/x86
169
cp $DEVKIT_ROOT/VC/redist/x64/$MSVCR_DLL $DEVKIT_ROOT/VC/bin/x64
170
cp $DEVKIT_ROOT/VC/redist/x64/$MSVCP_DLL $DEVKIT_ROOT/VC/bin/x64
171
cp $DEVKIT_ROOT/VC/redist/arm64/$MSVCR_DLL $DEVKIT_ROOT/VC/bin/arm64
172
cp $DEVKIT_ROOT/VC/redist/arm64/$MSVCP_DLL $DEVKIT_ROOT/VC/bin/arm64
173
174
################################################################################
175
# Copy SDK files
176
177
SDK_INSTALL_DIR="$PROGRAMFILES_X86/Windows Kits/$SDK_VERSION"
178
echo "SDK_INSTALL_DIR: $SDK_INSTALL_DIR"
179
180
SDK_FULL_VERSION="$(ls "$SDK_INSTALL_DIR/bin" | sort -r -n | head -n1)"
181
echo "Found SDK version: $SDK_FULL_VERSION"
182
UCRT_VERSION="$(ls "$SDK_INSTALL_DIR/Redist" | grep $SDK_VERSION | sort -r -n | head -n1)"
183
echo "Found UCRT version: $UCRT_VERSION"
184
echo "Copying SDK..."
185
rm -rf $DEVKIT_ROOT/$SDK_VERSION
186
mkdir -p $DEVKIT_ROOT/$SDK_VERSION/bin
187
cp -r "$SDK_INSTALL_DIR/bin/$SDK_FULL_VERSION/x64" $DEVKIT_ROOT/$SDK_VERSION/bin/
188
cp -r "$SDK_INSTALL_DIR/bin/$SDK_FULL_VERSION/x86" $DEVKIT_ROOT/$SDK_VERSION/bin/
189
mkdir -p $DEVKIT_ROOT/$SDK_VERSION/lib
190
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/um/arm64" $DEVKIT_ROOT/$SDK_VERSION/lib/
191
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/um/x64" $DEVKIT_ROOT/$SDK_VERSION/lib/
192
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/um/x86" $DEVKIT_ROOT/$SDK_VERSION/lib/
193
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/ucrt/arm64" $DEVKIT_ROOT/$SDK_VERSION/lib/
194
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/ucrt/x64" $DEVKIT_ROOT/$SDK_VERSION/lib/
195
cp -r "$SDK_INSTALL_DIR/lib/$SDK_FULL_VERSION/ucrt/x86" $DEVKIT_ROOT/$SDK_VERSION/lib/
196
mkdir -p $DEVKIT_ROOT/$SDK_VERSION/Redist
197
cp -r "$SDK_INSTALL_DIR/Redist/$UCRT_VERSION/ucrt" $DEVKIT_ROOT/$SDK_VERSION/Redist/
198
mkdir -p $DEVKIT_ROOT/$SDK_VERSION/include
199
cp -r "$SDK_INSTALL_DIR/include/$SDK_FULL_VERSION/"* $DEVKIT_ROOT/$SDK_VERSION/include/
200
201
################################################################################
202
# Generate devkit.info
203
204
echo-info() {
205
echo "$1" >> $DEVKIT_ROOT/devkit.info
206
}
207
208
echo "Generating devkit.info..."
209
rm -f $DEVKIT_ROOT/devkit.info
210
echo-info "# This file describes to configure how to interpret the contents of this devkit"
211
echo-info "DEVKIT_NAME=\"Microsoft Visual Studio $VS_VERSION $VS_VERSION_SP (devkit)\""
212
echo-info "DEVKIT_VS_VERSION=\"$VS_VERSION\""
213
echo-info ""
214
echo-info "DEVKIT_TOOLCHAIN_PATH_x86=\"\$DEVKIT_ROOT/VC/bin/x86:\$DEVKIT_ROOT/$SDK_VERSION/bin/x86\""
215
echo-info "DEVKIT_VS_INCLUDE_x86=\"\$DEVKIT_ROOT/VC/include;\$DEVKIT_ROOT/VC/atlmfc/include;\$DEVKIT_ROOT/$SDK_VERSION/include/shared;\$DEVKIT_ROOT/$SDK_VERSION/include/ucrt;\$DEVKIT_ROOT/$SDK_VERSION/include/um;\$DEVKIT_ROOT/$SDK_VERSION/include/winrt\""
216
echo-info "DEVKIT_VS_LIB_x86=\"\$DEVKIT_ROOT/VC/lib/x86;\$DEVKIT_ROOT/VC/atlmfc/lib/x86;\$DEVKIT_ROOT/$SDK_VERSION/lib/x86\""
217
echo-info "DEVKIT_MSVCR_DLL_x86=\"\$DEVKIT_ROOT/VC/redist/x86/$MSVCR_DLL\""
218
echo-info "DEVKIT_MSVCP_DLL_x86=\"\$DEVKIT_ROOT/VC/redist/x86/$MSVCP_DLL\""
219
echo-info "DEVKIT_UCRT_DLL_DIR_x86=\"\$DEVKIT_ROOT/10/Redist/ucrt/DLLs/x86\""
220
echo-info ""
221
echo-info "DEVKIT_TOOLCHAIN_PATH_x86_64=\"\$DEVKIT_ROOT/VC/bin/x64:\$DEVKIT_ROOT/$SDK_VERSION/bin/x64:\$DEVKIT_ROOT/$SDK_VERSION/bin/x86\""
222
echo-info "DEVKIT_VS_INCLUDE_x86_64=\"\$DEVKIT_ROOT/VC/include;\$DEVKIT_ROOT/VC/atlmfc/include;\$DEVKIT_ROOT/$SDK_VERSION/include/shared;\$DEVKIT_ROOT/$SDK_VERSION/include/ucrt;\$DEVKIT_ROOT/$SDK_VERSION/include/um;\$DEVKIT_ROOT/$SDK_VERSION/include/winrt\""
223
echo-info "DEVKIT_VS_LIB_x86_64=\"\$DEVKIT_ROOT/VC/lib/x64;\$DEVKIT_ROOT/VC/atlmfc/lib/x64;\$DEVKIT_ROOT/$SDK_VERSION/lib/x64\""
224
echo-info "DEVKIT_MSVCR_DLL_x86_64=\"\$DEVKIT_ROOT/VC/redist/x64/$MSVCR_DLL\""
225
echo-info "DEVKIT_VCRUNTIME_1_DLL_x86_64=\"\$DEVKIT_ROOT/VC/redist/x64/$VCRUNTIME_1_DLL\""
226
echo-info "DEVKIT_MSVCP_DLL_x86_64=\"\$DEVKIT_ROOT/VC/redist/x64/$MSVCP_DLL\""
227
echo-info "DEVKIT_UCRT_DLL_DIR_x86_64=\"\$DEVKIT_ROOT/10/Redist/ucrt/DLLs/x64\""
228
echo-info ""
229
echo-info "DEVKIT_TOOLCHAIN_PATH_aarch64=\"\$DEVKIT_ROOT/VC/bin/arm64:\$DEVKIT_ROOT/$SDK_VERSION/bin/x64:\$DEVKIT_ROOT/$SDK_VERSION/bin/x86\""
230
echo-info "DEVKIT_VS_INCLUDE_aarch64=\"\$DEVKIT_ROOT/VC/include;\$DEVKIT_ROOT/VC/atlmfc/include;\$DEVKIT_ROOT/$SDK_VERSION/include/shared;\$DEVKIT_ROOT/$SDK_VERSION/include/ucrt;\$DEVKIT_ROOT/$SDK_VERSION/include/um;\$DEVKIT_ROOT/$SDK_VERSION/include/winrt\""
231
echo-info "DEVKIT_VS_LIB_aarch64=\"\$DEVKIT_ROOT/VC/lib/arm64;\$DEVKIT_ROOT/VC/atlmfc/lib/arm64;\$DEVKIT_ROOT/$SDK_VERSION/lib/arm64\""
232
echo-info "DEVKIT_MSVCR_DLL_aarch64=\"\$DEVKIT_ROOT/VC/redist/arm64/$MSVCR_DLL\""
233
echo-info "DEVKIT_VCRUNTIME_1_DLL_aarch64=\"\$DEVKIT_ROOT/VC/redist/arm64/$VCRUNTIME_1_DLL\""
234
echo-info "DEVKIT_MSVCP_DLL_aarch64=\"\$DEVKIT_ROOT/VC/redist/arm64/$MSVCP_DLL\""
235
echo-info "DEVKIT_UCRT_DLL_DIR_aarch64=\"\$DEVKIT_ROOT/10/Redist/ucrt/DLLs/arm64\""
236
echo-info ""
237
echo-info "DEVKIT_TOOLS_VERSION=\"$TOOLS_VERSION\""
238
echo-info "DEVKIT_REDIST_VERSION=\"$REDIST_VERSION\""
239
echo-info "DEVKIT_SDK_VERSION=\"$SDK_FULL_VERSION\""
240
echo-info "DEVKIT_UCRT_VERSION=\"$UCRT_VERSION\""
241
242
################################################################################
243
# Copy this script
244
245
echo "Copying this script..."
246
cp $0 $DEVKIT_ROOT/
247
248
################################################################################
249
# Create bundle
250
251
echo "Creating bundle: $DEVKIT_BUNDLE"
252
(cd "$DEVKIT_ROOT" && tar zcf "$DEVKIT_BUNDLE" .)
253
254