Skip to content

Commit 093b058

Browse files
committed
Initial build script
1 parent 521cad0 commit 093b058

File tree

1 file changed

+167
-0
lines changed

1 file changed

+167
-0
lines changed

.github/workflows/build.yml

+167
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
name: Build Wine
2+
on:
3+
push:
4+
branches:
5+
- '7.7'
6+
workflow_dispatch:
7+
8+
jobs:
9+
build:
10+
runs-on: macos-13
11+
steps:
12+
- uses: actions/checkout@v4
13+
14+
- name: Install Homebrew Packages
15+
run: |
16+
REQUIRED_PACKAGES=(
17+
# Build Dependencies
18+
"bison"
19+
"pkg-config"
20+
"mingw-w64"
21+
22+
# Utilities (DXVK)
23+
"jq"
24+
25+
# Dependencies
26+
"freetype"
27+
"gettext"
28+
"gnutls"
29+
"gstreamer"
30+
"sdl2"
31+
"molten-vk"
32+
)
33+
34+
brew install "${REQUIRED_PACKAGES[@]}"
35+
36+
- name: Link bison
37+
run: |
38+
echo "BISON=\"/usr/local/opt/bison/bin/bison\"" >> $GITHUB_ENV
39+
40+
- name: Build Environment Varrables
41+
run: |
42+
HOMEBREW_PATH=$(brew --prefix)
43+
44+
PACKAGES=(
45+
"freetype"
46+
"gettext"
47+
"gnutls"
48+
"gstreamer"
49+
"sdl2"
50+
"molten-vk"
51+
)
52+
53+
54+
LDFLAGS="$LDFLAGS"
55+
CFLAGS="$CFLAGS"
56+
57+
# Create environment
58+
for PACKAGE in ${PACKAGES[@]}; do
59+
LDFLAGS="-L$HOMEBREW_PATH/opt/$PACKAGE/lib $LDFLAGS"
60+
CFLAGS="-I$HOMEBREW_PATH/opt/$PACKAGE/include $CPPFLAGS"
61+
done
62+
63+
# Additional flags
64+
LDFLAGS="-Wl,-rpath,$HOMEBREW_PATH/lib $LDFLAGS"
65+
LDFLAGS="-Wl,-rpath,@executable_path/../lib/external $LDFLAGS"
66+
67+
CFLAGS="-O3 -Wno-deprecated-declarations -Wno-incompatible-pointer-types $CFLAGS"
68+
69+
# Return the environment
70+
echo "LDFLAGS=\"$LDFLAGS\"" >> $GITHUB_ENV
71+
echo "CPPFLAGS=\"$CPPFLAGS\"" >> $GITHUB_ENV
72+
echo "MACOSX_DEPLOYMENT_TARGET=10.14" >> $GITHUB_ENV
73+
74+
- name: Create the Build Directory
75+
run: |
76+
BUILD_DIR=$(mktemp -d)
77+
WINE_FINAL_DIR="$GITHUB_WORKSPACE/wine"
78+
WINE64_BUILD_DIR="$GITHUB_WORKSPACE/wine64"
79+
DXVK_BUILD_DIR="$GITHUB_WORKSPACE/dxvk"
80+
FINAL_DIR="$GITHUB_WORKSPACE/Libraries"
81+
82+
mkdir -p "$WINE_FINAL_DIR"
83+
mkdir -p "$WINE64_BUILD_DIR"
84+
mkdir -p "$DXVK_BUILD_DIR"
85+
mkdir -p "$WINETRICKS_DATA_DIR"
86+
mkdir -p "$FINAL_DIR"
87+
88+
echo "BUILD_DIR=\"$BUILD_DIR\"" >> $GITHUB_ENV
89+
echo "WINE_FINAL_DIR=\"$WINE_FINAL_DIR\"" >> $GITHUB_ENV
90+
echo "WINE64_BUILD_DIR=\"$WINE64_BUILD_DIR\"" >> $GITHUB_ENV
91+
echo "DXVK_BUILD_DIR=\"$DXVK_BUILD_DIR\"" >> $GITHUB_ENV
92+
echo "FINAL_DIR=\"$FINAL_DIR\"" >> $GITHUB_ENV
93+
94+
- name: Set Variables
95+
run: |
96+
WINE_CONFIGURE_FLAGS=(
97+
"--disable-option-checking"
98+
"--disable-tests"
99+
"--enable-win64"
100+
"--enable-archs=i386,x86_64"
101+
"--prefix=$WINE_FINAL_DIR"
102+
"--without-alsa"
103+
"--without-capi"
104+
"--with-coreaudio" # Required Package: NONE - Built-in
105+
"--with-cups" # Required Package: NONE - Built-in
106+
"--without-dbus"
107+
"--without-fontconfig"
108+
"--with-freetype" # Required Package: freetype - Homebrew
109+
"--with-gettext" # Required Package: gettext - Homebrew
110+
"--without-gettextpo"
111+
"--without-gphoto"
112+
"--with-gnutls" # Required Package: gnutls - Homebrew
113+
"--without-gssapi"
114+
"--with-gstreamer" # Required Package: gstreamer - Homebrew
115+
"--without-krb5"
116+
"--with-mingw" # Required Package: mingw-w64 - Homebrew
117+
"--without-netapi"
118+
"--with-opencl" # Required Package: none - Built-in
119+
"--with-opengl" # Required Package: none - Built-in
120+
"--without-oss"
121+
"--with-pcap" # Required Package: none - Built-in
122+
"--with-pthread" # Required Package: none - Built-in
123+
"--without-pulse"
124+
"--without-sane"
125+
"--with-sdl" # Required Package: sdl2 - Homebrew
126+
"--without-udev"
127+
"--with-unwind" # Required Package: None - Built-in
128+
"--without-usb"
129+
"--without-v4l2"
130+
"--with-vulkan" # Required Package: molten-vk - Homebrew
131+
"--without-x"
132+
)
133+
134+
echo "WINE_CONFIGURE_FLAGS=\"${WINE_CONFIGURE_FLAGS[@]}\"" >> $GITHUB_ENV
135+
echo "SOURCE_DIR=\"$GITHUB_WORKSPACE\""
136+
137+
- name: Build Wine64
138+
run: |
139+
cd $WINE64_BUILD_DIR
140+
$SOURCE_DIR/configure $WINE_CONFIGURE_FLAGS $WINE_ADDITIONAL_CONFIG_64
141+
make -j$(sysctl -n hw.logicalcpu)
142+
if [ $? -ne 0 ]; then
143+
echo "Failed to build Wine64... Exiting."
144+
exit 1
145+
fi
146+
make install-lib
147+
148+
- name: Install DXVK
149+
run: |
150+
cd $DXVK_BUILD_DIR
151+
DXVK_URL=$(curl -s https://api.github.com/repos/Gcenx/DXVK-MacOS/releases/latest | jq -r '.assets[] | select(.browser_download_url | contains("dxvk-macos")) | .browser_download_url')
152+
curl -L -o dxvk.tar.gz $DXVK_URL
153+
154+
- name: Homebrew Libs [DEBUG]
155+
run: |
156+
ls $(brew --prefix)/lib
157+
158+
- name: Zip Everything [DEBUG]
159+
run: |
160+
zip -r -j Libraries.zip $GITHUB_WORKSPACE/*
161+
162+
- name: Upload Libraries [DEBUG]
163+
uses: actions/upload-artifact@v4
164+
with:
165+
name: Libraries
166+
path: Libraries.zip
167+

0 commit comments

Comments
 (0)