diff --git a/.github/workflows/bootstrap.yml b/.github/workflows/bootstrap.yml index a450943..d1a05b3 100644 --- a/.github/workflows/bootstrap.yml +++ b/.github/workflows/bootstrap.yml @@ -217,12 +217,12 @@ jobs: needs: common steps: - uses: actions/checkout@v2 - #- name: Set up cache - #uses: actions/cache@v2 - #with: - #path: | - #~/PawPawBuilds - #key: plugins-${{ matrix.target }}-v${{ env.CACHE_VERSION }} + - name: Set up cache + uses: actions/cache@v2 + with: + path: | + ~/PawPawBuilds + key: plugins-${{ matrix.target }}-v${{ env.CACHE_VERSION }} - name: (apt) Restore debian package cache if: ${{ matrix.installer == 'apt' }} run: | @@ -279,18 +279,18 @@ jobs: run: | cd ~/PawPawBuilds && \ tar xf common-${{ matrix.target }}.tar.gz - #- name: Run bootstrap - #shell: bash - #run: | - #./bootstrap-plugins.sh ${{ matrix.target }} && ./.cleanup.sh ${{ matrix.target }} - #- name: Pack bootstrap build - #shell: bash - #run: | - #tar -C ~/PawPawBuilds -czf plugins-${{ matrix.target }}.tar.gz builds targets - #- uses: actions/upload-artifact@v2 - #with: - #name: plugins-${{ matrix.target }} - #path: plugins-${{ matrix.target }}.tar.gz + - name: Run bootstrap + shell: bash + run: | + ./bootstrap-plugins.sh ${{ matrix.target }} && ./.cleanup.sh ${{ matrix.target }} + - name: Pack bootstrap build + shell: bash + run: | + tar -C ~/PawPawBuilds -czf plugins-${{ matrix.target }}.tar.gz builds targets + - uses: actions/upload-artifact@v2 + with: + name: plugins-${{ matrix.target }} + path: plugins-${{ matrix.target }}.tar.gz jack2: strategy: diff --git a/bootstrap-carla.sh b/bootstrap-carla.sh index 47c3961..6c3d32c 100755 --- a/bootstrap-carla.sh +++ b/bootstrap-carla.sh @@ -196,14 +196,6 @@ if [ "${WIN32}" -eq 0 ]; then build_autoconf file "${FILE_VERSION}" fi -# --------------------------------------------------------------------------------------------------------------------- -# libffi (for python, not needed in macOS) - -if [ "${MACOS}" -eq 0 ]; then - download libffi "${LIBFFI_VERSION}" "${LIBFFI_URL}" - build_autoconf libffi "${LIBFFI_VERSION}" -fi - # --------------------------------------------------------------------------------------------------------------------- # wine bootstrap for python (needed for cross-compilation) diff --git a/bootstrap-plugins.sh b/bootstrap-plugins.sh index 731d2d9..75f751b 100755 --- a/bootstrap-plugins.sh +++ b/bootstrap-plugins.sh @@ -61,31 +61,40 @@ if [ "${CROSS_COMPILING}" -eq 0 ]; then run_make fftwf "${FFTW_VERSION}" check fi +# --------------------------------------------------------------------------------------------------------------------- +# pcre + +if [ "${MACOS}" -eq 1 ] || [ "${WIN32}" -eq 1 ]; then + download pcre "${PCRE_VERSION}" "${PCRE_URL}" + build_autoconf pcre "${PCRE_VERSION}" +fi + +# --------------------------------------------------------------------------------------------------------------------- +# libffi + +if [ "${WIN32}" -eq 1 ]; then + download libffi "${LIBFFI_VERSION}" "${LIBFFI_URL}" + build_autoconf libffi "${LIBFFI_VERSION}" +fi + # --------------------------------------------------------------------------------------------------------------------- # glib if [ "${MACOS}" -eq 1 ] || [ "${WIN32}" -eq 1 ]; then + GLIB_EXTRAFLAGS="--disable-rebuilds" + if [ "${WIN32}" -eq 1 ]; then - GLIB_EXTRAFLAGS="--with-threads=win32" + GLIB_EXTRAFLAGS+=" --with-threads=win32" else - GLIB_EXTRAFLAGS="--with-threads=posix" + GLIB_EXTRAFLAGS+=" --with-threads=posix" fi - download glib ${GLIB_VERSION} "${GLIB_URL}" "${GLIB_TAR_EXT}" - - if [ "${MACOS}" -eq 1 ]; then - export EXTRA_LDFLAGS="-lresolv" - patch_file glib ${GLIB_VERSION} "glib/gconvert.c" '/#error/g' - - if [ "${MACOS_UNIVERSAL}" -eq 1 ]; then - patch_file glib ${GLIB_VERSION} "glib/gatomic.c" 's/G_ATOMIC_ARM/__aarch64__/' - patch_file glib ${GLIB_VERSION} "glib/gatomic.c" 's/G_ATOMIC_X86_64/__SSE2__/' - fi -# elif [ "${WIN32}" -eq 1 ] && [ -n "${EXE_WRAPPER}" ]; then -# patch_file glib ${GLIB_VERSION} "gobject/Makefile.in" "s|glib_genmarshal = ./glib-genmarshal|glib_genmarshal = ${EXE_WRAPPER} ./glib-genmarshal.exe|" + if [ "${WIN64}" -eq 1 ]; then + export EXTRA_CFLAGS="-Wno-format" fi - build_autoconfgen glib ${GLIB_VERSION} "--disable-rebuilds ${GLIB_EXTRAFLAGS}" + download glib ${GLIB_VERSION} "${GLIB_URL}" "tar.xz" + build_autoconfgen glib ${GLIB_VERSION} "${GLIB_EXTRAFLAGS}" fi # --------------------------------------------------------------------------------------------------------------------- @@ -112,15 +121,6 @@ if [ "${CROSS_COMPILING}" -eq 0 ]; then run_make liblo "${LIBLO_VERSION}" check fi -# --------------------------------------------------------------------------------------------------------------------- -# pcre (needed for sord_validate, only relevant if we can run the resulting binaries) - -# FIXME down at the moment -# if [ "${CROSS_COMPILING}" -eq 0 ] || [ -n "${EXE_WRAPPER}" ]; then -# download pcre "${PCRE_VERSION}" "${PCRE_URL}" -# build_autoconf pcre "${PCRE_VERSION}" -# fi - # --------------------------------------------------------------------------------------------------------------------- # lv2 diff --git a/patches/glib/01_skip-gettext.patch b/patches/glib/01_skip-gettext.patch index a1bb748..f4cc661 100644 --- a/patches/glib/01_skip-gettext.patch +++ b/patches/glib/01_skip-gettext.patch @@ -2,19 +2,19 @@ diff --git a/Makefile.in b/Makefile.in index 3402627..27210f1 100644 --- a/Makefile.in +++ b/Makefile.in -@@ -401,7 +401,7 @@ EXTRA_DIST = ChangeLog.pre-2-20 ChangeLog.pre-2-18 ChangeLog.pre-2-16 \ - gio-2.0-uninstalled.pc.in gio-unix-2.0-uninstalled.pc.in - TEST_PROGS = - AUTOMAKE_OPTIONS = 1.7 --SUBDIRS = . m4macros glib gmodule gthread gobject gio tests po docs +@@ -834,7 +834,7 @@ all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installe + + @ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) + ACLOCAL_AMFLAGS = -I m4macros ${ACLOCAL_FLAGS} +-SUBDIRS = . m4macros glib gmodule gthread gobject gio po docs tests +SUBDIRS = . m4macros glib gmodule gthread gobject gio po DIST_SUBDIRS = $(SUBDIRS) build bin_SCRIPTS = glib-gettextize AM_CPPFLAGS = \ -diff --git a/configure.in b/configure.in +diff --git a/configure.ac b/configure.ac index b9c3342..e421aa0 100644 ---- a/configure.in -+++ b/configure.in +--- a/configure.ac ++++ b/configure.ac @@ -465,13 +465,6 @@ ALL_LINGUAS="`grep -v '^#' "$srcdir/po/LINGUAS" | tr '\n' ' '`" AC_SUBST([CONFIG_STATUS_DEPENDENCIES],['$(top_srcdir)/po/LINGUAS']) GLIB_GNU_GETTEXT @@ -29,12 +29,122 @@ index b9c3342..e421aa0 100644 LIBS="$INTLLIBS $LIBS" GETTEXT_PACKAGE=glib20 -@@ -2682,8 +2675,6 @@ dnl ************************** - dnl *** Checks for gtk-doc *** - dnl ************************** +diff --git a/glib/ggettext.c b/glib/ggettext.c +index bf74ccb..b9e57ef 100644 +--- a/glib/ggettext.c ++++ b/glib/ggettext.c +@@ -40,7 +40,7 @@ + + #include + #include +-#include ++ + + #ifdef G_OS_WIN32 --GTK_DOC_CHECK([1.11]) +@@ -55,36 +55,7 @@ + gchar * + _glib_get_locale_dir (void) + { +- gchar *install_dir = NULL, *locale_dir; +- gchar *retval = NULL; +- +- if (glib_dll != NULL) +- install_dir = g_win32_get_package_installation_directory_of_module (glib_dll); +- +- if (install_dir) +- { +- /* +- * Append "/share/locale" or "/lib/locale" depending on whether +- * autoconfigury detected GNU gettext or not. +- */ +- const char *p = GLIB_LOCALE_DIR + strlen (GLIB_LOCALE_DIR); +- while (*--p != '/') +- ; +- while (*--p != '/') +- ; +- +- locale_dir = g_build_filename (install_dir, p, NULL); - - AC_ARG_ENABLE(man, - [AC_HELP_STRING([--enable-man], - [regenerate man pages from Docbook [default=no]])],enable_man=yes, +- retval = g_win32_locale_filename_from_utf8 (locale_dir); +- +- g_free (install_dir); +- g_free (locale_dir); +- } +- +- if (retval) +- return retval; +- else +- return g_strdup (""); ++ return g_strdup (""); + } + + #undef GLIB_LOCALE_DIR +@@ -92,27 +63,6 @@ _glib_get_locale_dir (void) + #endif /* G_OS_WIN32 */ + + +-static void +-ensure_gettext_initialized (void) +-{ +- static gsize initialised; +- +- if (g_once_init_enter (&initialised)) +- { +-#ifdef G_OS_WIN32 +- gchar *tmp = _glib_get_locale_dir (); +- bindtextdomain (GETTEXT_PACKAGE, tmp); +- g_free (tmp); +-#else +- bindtextdomain (GETTEXT_PACKAGE, GLIB_LOCALE_DIR); +-#endif +-# ifdef HAVE_BIND_TEXTDOMAIN_CODESET +- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); +-# endif +- g_once_init_leave (&initialised, TRUE); +- } +-} +- + /** + * glib_gettext: + * @str: The string to be translated +@@ -126,8 +76,6 @@ ensure_gettext_initialized (void) + const gchar * + glib_gettext (const gchar *str) + { +- ensure_gettext_initialized (); +- + return g_dgettext (GETTEXT_PACKAGE, str); + } + +@@ -150,8 +98,6 @@ const gchar * + glib_pgettext (const gchar *msgctxtid, + gsize msgidoffset) + { +- ensure_gettext_initialized (); +- + return g_dpgettext (GETTEXT_PACKAGE, msgctxtid, msgidoffset); + } + +diff --git a/glib/gi18n.h b/glib/gi18n.h +index f765c3d..a06507f 100644 +--- a/glib/gi18n.h ++++ b/glib/gi18n.h +@@ -20,13 +20,15 @@ + + #include + +-#include + #include + +-#define _(String) gettext (String) ++#define _(String) (String) + #define Q_(String) g_dpgettext (NULL, String, 0) + #define N_(String) (String) + #define C_(Context,String) g_dpgettext (NULL, Context "\004" String, strlen (Context) + 1) + #define NC_(Context, String) (String) + ++#define textdomain(...) ++#define bindtextdomain(...) ++ + #endif /* __G_I18N_H__ */ diff --git a/patches/glib/02_fix-stat32i64-usage.patch b/patches/glib/02_fix-stat32i64-usage.patch new file mode 100644 index 0000000..c429104 --- /dev/null +++ b/patches/glib/02_fix-stat32i64-usage.patch @@ -0,0 +1,36 @@ +From 4745c08220b90eac741ae3ca1913cbe90c9831ef Mon Sep 17 00:00:00 2001 +From: Benjamin Gilbert +Date: Sat, 26 Sep 2015 18:22:34 -0400 +Subject: [PATCH] win32: Fix link error with _wstat32i64() on 64-bit + +_wstat32i64() doesn't exist in msvcrt.dll. This doesn't cause a problem +on 32-bit Windows because mingw-w64 #defines _wstat32i64 to _wstati64, +but on 64-bit Windows we get a link error. + +In addition, _wstat32i64() takes a struct _stat32i64 *, but +GLocalFileStat is #defined to struct _stati64, which is not the same +type on 64-bit Windows. + +Fix by using _wstati64(). + +https://bugzilla.gnome.org/show_bug.cgi?id=749161 +--- + gio/glocalfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gio/glocalfile.c b/gio/glocalfile.c +index 327fe6fda..60b95609e 100644 +--- a/gio/glocalfile.c ++++ b/gio/glocalfile.c +@@ -2682,7 +2682,7 @@ g_local_file_measure_size_of_file (gint parent_fd, + (!g_path_is_absolute (filename) || len > g_path_skip_root (filename) - filename)) + wfilename[len] = '\0'; + +- retval = _wstat32i64 (wfilename, &buf); ++ retval = _wstati64 (wfilename, &buf); + save_errno = errno; + + g_free (wfilename); +-- +GitLab + diff --git a/patches/glib/macos-universal/01_aarch64-atomic-as-mutex.patch b/patches/glib/macos-universal/01_aarch64-atomic-as-mutex.patch deleted file mode 100644 index 6c48913..0000000 --- a/patches/glib/macos-universal/01_aarch64-atomic-as-mutex.patch +++ /dev/null @@ -1,131 +0,0 @@ ---- glib-2.22.5/glib/gatomic.c 2021-01-12 00:34:17.000000000 +0000 -+++ glib-2.22.5.mod/glib/gatomic.c 2021-01-12 00:31:22.000000000 +0000 -@@ -561,55 +561,33 @@ - # error "Your system has an unsupported pointer size" - # endif /* GLIB_SIZEOF_VOID_P */ - # elif defined (__aarch64__) --static volatile int atomic_spin = 0; -- --static int atomic_spin_trylock (void) --{ -- int result; -- -- asm volatile ( -- "swp %0, %1, [%2]\n" -- : "=&r,&r" (result) -- : "r,0" (1), "r,r" (&atomic_spin) -- : "memory"); -- if (result == 0) -- return 0; -- else -- return -1; --} -- --static void atomic_spin_lock (void) --{ -- while (atomic_spin_trylock()) -- sched_yield(); --} -- --static void atomic_spin_unlock (void) --{ -- atomic_spin = 0; --} -+#include -+static pthread_mutex_t g_atomic_lock = PTHREAD_MUTEX_INITIALIZER; - - gint - g_atomic_int_exchange_and_add (volatile gint G_GNUC_MAY_ALIAS *atomic, - gint val) - { -- gint result; -- -- atomic_spin_lock(); -- result = *atomic; -- *atomic += val; -- atomic_spin_unlock(); -+ guint oldval; - -- return result; -+ pthread_mutex_lock (&g_atomic_lock); -+ oldval = *atomic; -+ *atomic = oldval & val; -+ pthread_mutex_unlock (&g_atomic_lock); -+ -+ return oldval; - } - - void - g_atomic_int_add (volatile gint G_GNUC_MAY_ALIAS *atomic, - gint val) - { -- atomic_spin_lock(); -- *atomic += val; -- atomic_spin_unlock(); -+ guint oldval; -+ -+ pthread_mutex_lock (&g_atomic_lock); -+ oldval = *atomic; -+ *atomic = oldval & val; -+ pthread_mutex_unlock (&g_atomic_lock); - } - - gboolean -@@ -617,19 +595,16 @@ - gint oldval, - gint newval) - { -- gboolean result; -+ gboolean success; - -- atomic_spin_lock(); -- if (*atomic == oldval) -- { -- result = TRUE; -- *atomic = newval; -- } -- else -- result = FALSE; -- atomic_spin_unlock(); -+ pthread_mutex_lock (&g_atomic_lock); - -- return result; -+ if ((success = (*atomic == oldval))) -+ *atomic = newval; -+ -+ pthread_mutex_unlock (&g_atomic_lock); -+ -+ return success; - } - - gboolean -@@ -637,19 +612,17 @@ - gpointer oldval, - gpointer newval) - { -- gboolean result; -- -- atomic_spin_lock(); -- if (*atomic == oldval) -- { -- result = TRUE; -- *atomic = newval; -- } -- else -- result = FALSE; -- atomic_spin_unlock(); -+ gpointer *ptr = atomic; -+ gboolean success; - -- return result; -+ pthread_mutex_lock (&g_atomic_lock); -+ -+ if ((success = (*ptr == oldval))) -+ *ptr = newval; -+ -+ pthread_mutex_unlock (&g_atomic_lock); -+ -+ return success; - } - # elif defined (G_ATOMIC_CRIS) || defined (G_ATOMIC_CRISV32) - # ifdef G_ATOMIC_CRIS diff --git a/setup/env.sh b/setup/env.sh index 5ce98dc..0429abd 100644 --- a/setup/env.sh +++ b/setup/env.sh @@ -77,7 +77,10 @@ if [ "${MACOS}" -eq 1 ]; then BUILD_FLAGS+=" -DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_8 -mmacosx-version-min=10.8 -stdlib=libc++ -Wno-deprecated-declarations -arch x86_64" fi elif [ "${WIN32}" -eq 1 ]; then - BUILD_FLAGS+=" -DFLUIDSYNTH_NOT_A_DLL -DPTW32_STATIC_LIB -mstackrealign" + BUILD_FLAGS+=" -D__USE_MINGW_ANSI_STDIO=1" + BUILD_FLAGS+=" -DFLUIDSYNTH_NOT_A_DLL" + BUILD_FLAGS+=" -DPTW32_STATIC_LIB" + BUILD_FLAGS+=" -mstackrealign" fi # anything that talks to db should have this diff --git a/setup/versions.sh b/setup/versions.sh index ff38ec7..a8098c7 100644 --- a/setup/versions.sh +++ b/setup/versions.sh @@ -42,13 +42,10 @@ ZLIB_URL=https://github.com/madler/zlib.git FFTW_VERSION=3.3.10 FFTW_URL=http://www.fftw.org -GLIB_MVERSION=2.71 -GLIB_VERSION=2.71.0 +GLIB_MVERSION=2.45 +GLIB_VERSION=2.45.8 GLIB_URL=https://download.gnome.org/sources/glib/${GLIB_MVERSION} -# FIXME -GLIB_TAR_EXT=tar.xz - LIBLO_VERSION=0.31 LIBLO_URL=http://download.sourceforge.net/liblo