View Issue Details

IDProjectCategoryView StatusLast Update
0009673ardourotherpublic2024-04-16 22:51
Reporterpsr3739 Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status newResolutionopen 
PlatformApple MacintoshOSMacOSOS Version10.12 or later
Product Version8.4 
Summary0009673: waf build script of patched GTK+ does not meat macOS requirements
DescriptionThe DISABLE_VISIBILITY flag must be defined to build the patched GTK+ included in the repository, but it is not described in the wscript, so Ardour is not buildable on MacOS. I patched like below it works fine.

From c6300e0a430fe07a6d6efe78acab831245a0b390 Mon Sep 17 00:00:00 2001
From: paseri3739 <tael43@icloud.com>
Date: Tue, 5 Mar 2024 11:10:34 +0900
Subject: [PATCH] fix compiler flags in ytk and ydk on OSX (define
 DISABLE_VISIBILITY)

---
 libs/tk/ydk/wscript | 1 +
 libs/tk/ytk/wscript | 1 +
 2 files changed, 2 insertions(+)

diff --git a/libs/tk/ydk/wscript b/libs/tk/ydk/wscript
index 45e04326b3..e2eb99ee32 100644
--- a/libs/tk/ydk/wscript
+++ b/libs/tk/ydk/wscript
@@ -188,6 +188,7 @@ def build(bld):
         obj.cflags += ['-xobjective-c']
         obj.uselib += ' OSX' # -framework Cocoa -framework CoreFoundation -framework ApplicationServices
         obj.includes += ['ydk/quartz', 'ydk/quartz/gdk', 'ydk/gdk/quartz']
+ obj.defines += ['DISABLE_VISIBILITY']
         obj.export_includes += ['ydk/gdk']
         obj.export_includes += ['ydk/quartz']
     elif bld.env['build_target'] == 'mingw':
diff --git a/libs/tk/ytk/wscript b/libs/tk/ytk/wscript
index a921a79863..3701fcf02a 100644
--- a/libs/tk/ytk/wscript
+++ b/libs/tk/ytk/wscript
@@ -300,6 +300,7 @@ def build(bld):
         obj.source = libytk_sources + libytk_quartz_sources
         obj.cflags += ['-xobjective-c']
         obj.uselib += ' OSX' # -framework Cocoa -framework CoreFoundation -framework ApplicationServices
+ obj.defines += ['DISABLE_VISIBILITY']
     elif bld.env['build_target'] == 'mingw':
         obj.source = libytk_sources + libytk_win32_sources
         obj.defines += [ 'INSIDE_GTK_WIN32', 'DLL_EXPORT', 'PIC' ]
--
2.39.3 (Apple Git-145)

Steps To Reproducerun
CC=clang CXX=clang++ ./waf configure --arm64 --strict --ptformat --libjack=weak --optimize
TagsNo tags attached.

Activities

x42

2024-03-20 13:08

administrator   ~0028602

What is the actual error you get?

We build Ardour on macOS just fine on various systems, not to mention the official Binaries.

psr3739

2024-03-20 13:40

reporter   ~0028603

../libs/tk/ydk/gdkaliasdef.c:2376:70: error: aliases are not supported on darwin
extern __typeof (gdk_draw_rgb_image) gdk_draw_rgb_image __attribute((alias("IA__gdk_draw_rgb_image"), visibility("default")));
                                                                     ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.

../libs/temporal/tempo.cc:2612:11: warning: unused variable 'beats_delta' [-Wunused-variable]
                                Beats beats_delta = _meters.front().to_quarters (delta);
                                      ^
../libs/temporal/tempo.cc:3837:6: warning: variable 'cnt' set but not used [-Wunused-but-set-variable]
        int cnt = 0;
            ^
2 warnings generated.

Waf: Leaving directory `/Users/masato/Desktop/ardour/build'
Build failed
 -> task in 'libydk' failed with exit status 1 (run with -v to display more information)
 -> task in 'libydk' failed with exit status 1 (run with -v to display more information)


This error appears when not using --no-ytk build option (build GTK+ from source)

When building GTK+ from source on mac you must need --disable-visibility option in make command or define DISABLE_VISIBILITY variable in another build system like waf.
Reference also:
https://discourse.ardour.org/t/mac-library-build-gtk-2-24-23-fails/109598/4
https://gitlab.gnome.org/GNOME/gtk-osx/-/issues/20
https://developer-old.gnome.org/gtk2/stable/gtk-building.html

x42

2024-03-20 18:42

administrator   ~0028604

It seems this is a conflict with some system-wide installed libraries (GTK?) on your machine. Though it is unclear where this message "aliases are not supported on darwin" comes from.

With your patch the GTK symbols would be in the global namespace, which is never a good idea.
If at all, we could make this an option for some specific systems like yours.

x42

2024-03-20 18:47

administrator   ~0028605

I do not get this error on macOS BigSur 10.0 (Ardour nightly builder), and also not on macOS Ventura 14.4 (clang 15.0, XCode 15.3; current latest version).

Various other developers have also not reported this, so this is likely due to some library conflict on your system.

psr3739

2024-03-20 22:33

reporter   ~0028606

Version: Sonoma 14.3.1
zsh ~/Desktop/ardour $ uname -v
Darwin Kernel Version 23.3.0: Wed Dec 20 21:33:31 PST 2023; root:xnu-10002.81.5~7/RELEASE_ARM64_T8112
zsh ~/Desktop/ardour $ clang --version
Apple clang version 15.0.0 (clang-1500.3.9.4)
Target: arm64-apple-darwin23.3.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

Official Build Log:
https://nightly.ardour.org/i/A_MAC_arm64/build_log.txt

Ardour Configuration
 * Will build against private GTK dependency stack in /Users/ardour/gtk/inst : yes
 * Will use explicit linkage against libintl in /Users/ardour/gtk/inst : yes
 * Will build against private Ardour dependency stack : no
No Carbon support available for this build

Ardour Configuration of me:
 * Will build against private GTK dependency stack : no
 * Will use explicit linkage against libintl in /Users/masato/gtk/inst : yes
 * Will build against private Ardour dependency stack : no
No Carbon support available for this build

My configuration is slightly different from the official build log. I found gtk/inst/ is hard-coded in the root wscript and the log above shows official build environment have gtk/inst.
I don't have the structure because I've never build Ardour before.
I believe that the developers who have already participated in the project are using the previous builds and environment that have ~/gtk/inst/, so this error does not occur I think.

matt2000

2024-04-16 22:47

reporter   ~0028659

I am also experiencing this issue. I'm on Sonoma 14.4.1 and I have glib2 @2.80.0 via MacPorts.

x42

2024-04-16 22:50

administrator   ~0028660

We do not support building Ardour with macPorts or homebrew. You're on your own there, I'm sorry.

x42

2024-04-16 22:51

administrator   ~0028661

PS. I build Ardour on macOS 14.4.1 on daily basis just fine with dependencies listed at https://nightly.ardour.org/list.php#build_deps

Issue History

Date Modified Username Field Change
2024-03-20 07:22 psr3739 New Issue
2024-03-20 13:08 x42 Note Added: 0028602
2024-03-20 13:40 psr3739 Note Added: 0028603
2024-03-20 18:42 x42 Note Added: 0028604
2024-03-20 18:47 x42 Note Added: 0028605
2024-03-20 22:33 psr3739 Note Added: 0028606
2024-03-20 22:33 psr3739 File Added: Screenshot 2024-03-21 at 7.00.13.png
2024-04-16 22:47 matt2000 Note Added: 0028659
2024-04-16 22:50 x42 Note Added: 0028660
2024-04-16 22:51 x42 Note Added: 0028661