[glib: 1/4] Revert "Revert "Rename objective-c files from .c to .m""



commit ead46cdc7e70db6bd5c1535a0d2574e4b14803b8
Author: Xavier Claessens <xavier claessens collabora com>
Date:   Wed May 23 09:16:27 2018 -0400

    Revert "Revert "Rename objective-c files from .c to .m""
    
    This reverts commit 2e9f3a9afe4c5cb1ebdda5e33e6fd3552bf56d38.

 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]