[glib] Rename objective-c files from .c to .m



commit e400af99d436b003b93479e4892623f336f58a6b
Author: Xavier Claessens <xavier claessens collabora com>
Date:   Thu May 17 15:15:22 2018 -0400

    Rename objective-c files from .c to .m
    
    Those files got renamed to .c to work around an automake issue, but
    Meson needs them to have .m extension. Better rename them at build time
    in Makefile.am since that's where the workaround is needed.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=672777

 gio/Makefile.am                                    | 23 ++++++++++++++++++----
 ...cationbackend.c => gcocoanotificationbackend.m} |  0
 ...ettingsbackend.c => gnextstepsettingsbackend.m} |  0
 gio/{gosxappinfo.c => gosxappinfo.m}               |  0
 gio/{gosxcontenttype.c => gosxcontenttype.m}       |  0
 gio/meson.build                                    | 12 ++++-------
 6 files changed, 23 insertions(+), 12 deletions(-)
---
diff --git a/gio/Makefile.am b/gio/Makefile.am
index df4f24014..bf2b40fd0 100644
--- a/gio/Makefile.am
+++ b/gio/Makefile.am
@@ -602,10 +602,25 @@ libgio_2_0_la_LDFLAGS = $(GLIB_LINK_FLAGS) \
        -export-dynamic $(no_undefined)
 
 if OS_COCOA
-# Let's avoid polluting the CFLAGS of libgio with -xobjective-c
-# We cannot simply rename the ObjC files to .m because it plays
-# tricks with Automake. For further reference, see:
-# https://bugzilla.gnome.org/show_bug.cgi?id=672777
+# We cannot build .m files because it would require adding AC_PROG_OBJC in
+# configure.ac, and it cannot be added conditionally. That means we would always
+# depend on an objective-c compiler even when not needed. To work around that
+# limitation we rename .m files to .c and compile them separately with
+# -xobjective-c into an intermediary library. Note that we cannot rename those
+# files to .c directly in the source tree because Meson needs the .m extension.
+# See https://bugzilla.gnome.org/show_bug.cgi?id=672777.
+OBJC_FILES = \
+       gnextstepsettingsbackend.m \
+       gosxcontenttype.m \
+       gosxappinfo.m \
+       gcocoanotificationbackend.m \
+       $(NULL)
+OBJC_C_FILES = $(OBJC_FILES:.m=.c)
+BUILT_SOURCES += $(OBJC_C_FILES)
+CLEANFILES += $(OBJC_C_FILES)
+$(OBJC_C_FILES): %.c: %.m Makefile
+       cp $< $@
+
 libgio_objc_2_0_la_CFLAGS = $(libgio_2_0_la_CFLAGS) -xobjective-c
 libgio_objc_2_0_la_CPPFLAGS = $(libgio_2_0_la_CPPFLAGS)
 libgio_objc_2_0_la_LDFLAGS = $(libgio_2_0_la_LDFLAGS) -Wl,-framework,Foundation -Wl,-framework,AppKit
diff --git a/gio/gcocoanotificationbackend.c b/gio/gcocoanotificationbackend.m
similarity index 100%
rename from gio/gcocoanotificationbackend.c
rename to gio/gcocoanotificationbackend.m
diff --git a/gio/gnextstepsettingsbackend.c b/gio/gnextstepsettingsbackend.m
similarity index 100%
rename from gio/gnextstepsettingsbackend.c
rename to gio/gnextstepsettingsbackend.m
diff --git a/gio/gosxappinfo.c b/gio/gosxappinfo.m
similarity index 100%
rename from gio/gosxappinfo.c
rename to gio/gosxappinfo.m
diff --git a/gio/gosxcontenttype.c b/gio/gosxcontenttype.m
similarity index 100%
rename from gio/gosxcontenttype.c
rename to gio/gosxcontenttype.m
diff --git a/gio/meson.build b/gio/meson.build
index 42f67715d..8d542bcfe 100644
--- a/gio/meson.build
+++ b/gio/meson.build
@@ -292,11 +292,6 @@ if host_system == 'windows'
   settings_sources += files('gregistrysettingsbackend.c')
 endif
 
-# FIXME:
-#if OS_COCOA
-#settings_sources += files('gnextstepsettingsbackend.c')
-#endif
-
 application_headers = files(
   'gapplication.h',
   'gapplicationcommandline.h',
@@ -412,10 +407,11 @@ if host_system != 'windows'
   )
 
   if glib_have_cocoa
-    contenttype_sources += files('gosxcontenttype.c')
-    appinfo_sources += files('gosxappinfo.c')
+    settings_sources += files('gnextstepsettingsbackend.m')
+    contenttype_sources += files('gosxcontenttype.m')
+    appinfo_sources += files('gosxappinfo.m')
     if glib_have_os_x_9_or_later
-      unix_sources += files('gcocoanotificationbackend.c')
+      unix_sources += files('gcocoanotificationbackend.m')
     endif
   else
     contenttype_sources += files('gcontenttype.c')


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]