1- # DOCKER_BUILDKIT=0 docker build . -f win32.Dockerfile --tag=llvm-mingw
1+ # docker build . -f win32.Dockerfile --tag=llvm-mingw
22# docker run -it --rm --name llvm-mingw llvm-mingw
3- # docker cp get_fluidsynth_deps.sh llvm-mingw:/build/get_fluidsynth_deps.sh && docker exec llvm-mingw /build/get_fluidsynth_deps.sh
3+ ARG UBUNTU_VER=22.04
44
5- FROM mstorsjo/llvm-mingw
6- RUN dpkg --add-architecture i386 && \
7- apt-get update -qq && \
5+ FROM ubuntu:$UBUNTU_VER AS wgetter
6+ RUN apt-get update -qq && \
87apt-get install -qqy --no-install-recommends \
9- zstd libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libfreetype6-dev wine-stable wine32 && \
8+ wget ca-certificates && \
109apt-get clean -y && \
1110rm -rf /var/lib/apt/lists/*
12- COPY win32_cross_compile/clone_fluidsynth.sh clone_fluidsynth.sh
13- RUN /build/clone_fluidsynth.sh
14- COPY win32_cross_compile/install.sh install.sh
15- COPY win32_cross_compile/get_fluidsynth_deps.sh get_fluidsynth_deps.sh
16- RUN /build/get_fluidsynth_deps.sh
17- COPY win32_cross_compile/x86_64_toolchain.cmake x86_64_toolchain.cmake
18- COPY win32_cross_compile/i686_toolchain.cmake i686_toolchain.cmake
19- COPY win32_cross_compile/aarch64_toolchain.cmake aarch64_toolchain.cmake
20- COPY win32_cross_compile/make_minimal_fluidsynth.sh make_minimal_fluidsynth.sh
21- RUN /build/make_minimal_fluidsynth.sh
11+
12+ FROM wgetter AS get_llvm_mingw
13+ COPY win32_cross_compile/download_llvm_mingw.sh download_llvm_mingw.sh
14+ ARG LLVM_MINGW_VER=20220209
15+ RUN LLVM_MINGW_VER=$LLVM_MINGW_VER ./download_llvm_mingw.sh download_llvm_mingw.sh
16+
17+ FROM ubuntu:$UBUNTU_VER AS gitter
18+ RUN apt-get update -qq && \
19+ apt-get install -qqy --no-install-recommends \
20+ git ca-certificates && \
21+ apt-get clean -y && \
22+ rm -rf /var/lib/apt/lists/*
23+
24+ FROM gitter AS get_juce
2225COPY win32_cross_compile/clone_juce.sh clone_juce.sh
23- RUN /build/clone_juce.sh
26+ RUN ./clone_juce.sh
27+
28+ FROM gitter AS get_fluidsynth
29+ COPY win32_cross_compile/clone_fluidsynth.sh clone_fluidsynth.sh
30+ RUN ./clone_fluidsynth.sh
31+
32+ FROM ubuntu:$UBUNTU_VER AS toolchain
33+ RUN apt-get update -qq && \
34+ apt-get install -qqy --no-install-recommends \
35+ xz-utils cmake build-essential pkg-config && \
36+ apt-get clean -y && \
37+ rm -rf /var/lib/apt/lists/*
38+ COPY --from=get_llvm_mingw llvm-mingw.tar.xz llvm-mingw.tar.xz
39+ # here's how to merge it into existing /bin, but that could have unintended clashes
40+ # RUN tar -xvf llvm-mingw.tar.xz --strip-components=1 -k && rm llvm-mingw.tar.xz
41+ RUN mkdir -p /opt/llvm-mingw && tar -xvf llvm-mingw.tar.xz --strip-components=1 -C /opt/llvm-mingw && rm llvm-mingw.tar.xz
42+ ENV PATH="/opt/llvm-mingw/bin:$PATH"
43+ COPY win32_cross_compile/x86_64_toolchain.cmake /x86_64_toolchain.cmake
44+ COPY win32_cross_compile/i686_toolchain.cmake /i686_toolchain.cmake
45+ COPY win32_cross_compile/aarch64_toolchain.cmake /aarch64_toolchain.cmake
46+
47+ FROM ubuntu:$UBUNTU_VER AS make_juce
48+ RUN apt-get update -qq && \
49+ apt-get install -qqy --no-install-recommends \
50+ cmake build-essential pkg-config libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libfreetype6-dev && \
51+ apt-get clean -y && \
52+ rm -rf /var/lib/apt/lists/*
53+ COPY --from=get_juce JUCE JUCE
2454COPY win32_cross_compile/make_juce.sh make_juce.sh
25- RUN /build/make_juce.sh
55+ RUN ./make_juce.sh
56+
57+ FROM wgetter AS msys2_deps
58+ RUN apt-get update -qq && \
59+ apt-get install -qqy --no-install-recommends \
60+ zstd && \
61+ apt-get clean -y && \
62+ rm -rf /var/lib/apt/lists/*
63+ COPY win32_cross_compile/get_fluidsynth_deps.sh get_fluidsynth_deps.sh
64+ RUN ./get_fluidsynth_deps.sh
65+
66+ FROM toolchain AS make_fluidsynth_x86
67+ COPY --from=msys2_deps clang32 clang32
68+ COPY --from=get_fluidsynth fluidsynth fluidsynth
69+ COPY win32_cross_compile/configure_fluidsynth.sh configure_fluidsynth.sh
70+ RUN ./configure_fluidsynth.sh x86
71+ COPY win32_cross_compile/build_fluidsynth.sh build_fluidsynth.sh
72+ RUN ./build_fluidsynth.sh x86
73+
74+ FROM toolchain AS make_fluidsynth_x64
75+ COPY --from=msys2_deps clang64 clang64
76+ COPY --from=get_fluidsynth fluidsynth fluidsynth
77+ COPY win32_cross_compile/configure_fluidsynth.sh configure_fluidsynth.sh
78+ RUN ./configure_fluidsynth.sh x64
79+ COPY win32_cross_compile/build_fluidsynth.sh build_fluidsynth.sh
80+ RUN ./build_fluidsynth.sh x64
81+
82+ FROM toolchain AS juicysfplugin_common
83+ RUN apt-get update -qq && \
84+ apt-get install -qqy --no-install-recommends \
85+ libfreetype6-dev && \
86+ apt-get clean -y && \
87+ rm -rf /var/lib/apt/lists/*
88+ COPY --from=make_juce /linux_native/ /linux_native/
89+ COPY --from=msys2_deps /clang32/ /clang32/
90+ COPY --from=msys2_deps /clang64/ /clang64/
91+ COPY --from=make_fluidsynth_x64 /clang64/include/fluidsynth.h /clang64/include/fluidsynth.h
92+ COPY --from=make_fluidsynth_x64 /clang64/include/fluidsynth/ /clang64/include/fluidsynth/
93+ COPY --from=make_fluidsynth_x64 /clang64/lib/pkgconfig/fluidsynth.pc /clang64/lib/pkgconfig/fluidsynth.pc
94+ COPY --from=make_fluidsynth_x64 /clang64/lib/libfluidsynth.a /clang64/lib/libfluidsynth.a
95+ COPY --from=make_fluidsynth_x86 /clang32/include/fluidsynth.h /clang32/include/fluidsynth.h
96+ COPY --from=make_fluidsynth_x86 /clang32/include/fluidsynth/ /clang32/include/fluidsynth/
97+ COPY --from=make_fluidsynth_x86 /clang32/lib/pkgconfig/fluidsynth.pc /clang32/lib/pkgconfig/fluidsynth.pc
98+ COPY --from=make_fluidsynth_x86 /clang32/lib/libfluidsynth.a /clang32/lib/libfluidsynth.a
99+ COPY win32_cross_compile/fix_mingw_headers.sh fix_mingw_headers.sh
100+ RUN ./fix_mingw_headers.sh
101+ COPY win32_cross_compile/attrib_noop.sh /usr/local/bin/attrib
26102WORKDIR juicysfplugin
27103COPY VST2_SDK/ /VST2_SDK/
28104COPY resources/Logo512.png resources/Logo512.png
@@ -31,7 +107,19 @@ COPY Source/ Source/
31107COPY JuceLibraryCode/JuceHeader.h JuceLibraryCode/JuceHeader.h
32108COPY CMakeLists.txt CMakeLists.txt
33109COPY win32_cross_compile/configure_juicysfplugin.sh configure_juicysfplugin.sh
34- RUN /build/juicysfplugin/configure_juicysfplugin.sh
35- COPY win32_cross_compile/attrib.sh /usr/local/bin/attrib
110+
111+ FROM juicysfplugin_common AS juicysfplugin_x86
112+ RUN /juicysfplugin/configure_juicysfplugin.sh x86
113+ COPY win32_cross_compile/make_juicysfplugin.sh make_juicysfplugin.sh
114+ RUN /juicysfplugin/make_juicysfplugin.sh x86
115+
116+ FROM juicysfplugin_common AS juicysfplugin_x64
117+ RUN /juicysfplugin/configure_juicysfplugin.sh x64
36118COPY win32_cross_compile/make_juicysfplugin.sh make_juicysfplugin.sh
37- RUN /build/juicysfplugin/make_juicysfplugin.sh
119+ RUN /juicysfplugin/make_juicysfplugin.sh x64
120+
121+ FROM ubuntu:$UBUNTU_VER AS distribute
122+ # x86 build fails in JUCE 6.1.5; problem compiling UUIDGetter
123+ # https://gist.github.com/Birch-san/a36b10155e51bd814ecc7109501e1e64
124+ # COPY --from=juicysfplugin_x86 /juicysfplugin/build_x86/JuicySFPlugin_artefacts/ /x86/
125+ COPY --from=juicysfplugin_x64 /juicysfplugin/build_x64/JuicySFPlugin_artefacts/ /x64/
0 commit comments