jarcode-foss / glava

GLava - OpenGL audio spectrum visualizer
GNU General Public License v3.0
1.17k stars 59 forks source link

Fix build from source on archlinux #171

Open UnkDevE opened 4 years ago

UnkDevE commented 4 years ago

While compiling from source, I ran into a few errors,

some header files were missing from glfft and there was a multiple definitions error with the function pointers in glava.h.

adding the headers missing and making the function pointers static fix the problem.

However there are warnings from the function pointers, so I'm unsure whether using static was the right option.

Here are the warnings:

/home/ethan/projects/C/glava/glava/glava.h:17:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   17 | __attribute__((noreturn, visibility("default"))) static void (*glava_abort)            (void);
      | ^~~~~~~~~~~~~
/home/ethan/projects/C/glava/glava/glava.h:18:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      | ^~~~~~~~~~~~~
/home/ethan/projects/C/glava/glava/glava.h:18:64: warning: ‘glava_return’ defined but not used [-Wunused-variable]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      |                                                                ^~~~~~~~~~~~
/home/ethan/projects/C/glava/glava/glava.h:17:64: warning: ‘glava_abort’ defined but not used [-Wunused-variable]
   17 | __attribute__((noreturn, visibility("default"))) static void (*glava_abort)            (void);
      |                                                                ^~~~~~~~~~~
[5/19] Compiling C object libglava.so.p/glava_glava.c.o
In file included from ../glava/render.h:8,
                 from ../glava/glava.c:18:
../glava/glava.h:17:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   17 | __attribute__((noreturn, visibility("default"))) static void (*glava_abort)            (void);
      | ^~~~~~~~~~~~~
../glava/glava.h:18:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      | ^~~~~~~~~~~~~
../glava/glava.c:79:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   79 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)     (void) = glava_return_builtin;
      | ^~~~~~~~~~~~~
../glava/glava.c:80:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   80 | __attribute__((noreturn, visibility("default"))) static void (*glava_abort)      (void) = glava_abort_builtin;
      | ^~~~~~~~~~~~~
[6/19] Compiling C object libglava.so.p/glava_xwin.c.o
In file included from ../glava/render.h:8,
                 from ../glava/xwin.c:29:
../glava/glava.h:17:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   17 | __attribute__((noreturn, visibility("default"))) static void (*glava_abort)            (void);
      | ^~~~~~~~~~~~~
../glava/glava.h:18:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      | ^~~~~~~~~~~~~
../glava/glava.h:18:64: warning: ‘glava_return’ defined but not used [-Wunused-variable]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      |                                                                ^~~~~~~~~~~~
[7/19] Compiling C object libglava.so.p/glava_glx_wcb.c.o
In file included from ../glava/render.h:8,
                 from ../glava/glx_wcb.c:25:
../glava/glava.h:17:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   17 | __attribute__((noreturn, visibility("default"))) static void (*glava_abort)            (void);
      | ^~~~~~~~~~~~~
../glava/glava.h:18:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      | ^~~~~~~~~~~~~
../glava/glava.h:18:64: warning: ‘glava_return’ defined but not used [-Wunused-variable]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      |                                                                ^~~~~~~~~~~~
[8/19] Compiling C object libglava-obs.so.p/glava-obs_entry.c.o
In file included from ../glava-obs/entry.c:7:
../glava-obs/../glava/glava.h:17:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   17 | __attribute__((noreturn, visibility("default"))) static void (*glava_abort)            (void);
      | ^~~~~~~~~~~~~
../glava-obs/../glava/glava.h:18:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      | ^~~~~~~~~~~~~
../glava-obs/../glava/glava.h:18:64: warning: ‘glava_return’ defined but not used [-Wunused-variable]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      |                                                                ^~~~~~~~~~~~
../glava-obs/../glava/glava.h:17:64: warning: ‘glava_abort’ defined but not used [-Wunused-variable]
   17 | __attribute__((noreturn, visibility("default"))) static void (*glava_abort)            (void);
      |                                                                ^~~~~~~~~~~
[10/19] Compiling C object libglava.so.p/glava_glsl_ext.c.o
In file included from ../glava/glsl_ext.c:16:
../glava/glava.h:17:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   17 | __attribute__((noreturn, visibility("default"))) static void (*glava_abort)            (void);
      | ^~~~~~~~~~~~~
../glava/glava.h:18:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      | ^~~~~~~~~~~~~
../glava/glava.h:18:64: warning: ‘glava_return’ defined but not used [-Wunused-variable]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      |                                                                ^~~~~~~~~~~~
[13/19] Compiling C object libglava.so.p/glava_render.c.o
In file included from ../glava/render.h:8,
                 from ../glava/render.c:20:
../glava/glava.h:17:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   17 | __attribute__((noreturn, visibility("default"))) static void (*glava_abort)            (void);
      | ^~~~~~~~~~~~~
../glava/glava.h:18:1: warning: ‘visibility’ attribute ignored [-Wattributes]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      | ^~~~~~~~~~~~~
../glava/glava.h:18:64: warning: ‘glava_return’ defined but not used [-Wunused-variable]
   18 | __attribute__((noreturn, visibility("default"))) static void (*glava_return)           (void);
      |                      
UnkDevE commented 2 years ago

Thanks!

On Fri, 10 Dec 2021, 09:26 Jonathan Wakely, @.***> wrote:

@.**** requested changes on this pull request.

This looks wrong, the variables should be extern and defined in exactly one .c file. #185 https://github.com/jarcode-foss/glava/pull/185 does it right.

For why a fix is needed for GCC 10, see the changes for -fno-common in the GCC 10 release notes https://gcc.gnu.org/gcc-10/changes.html#c and Porting to GCC 10 https://gcc.gnu.org/gcc-10/porting_to.html#common page.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/jarcode-foss/glava/pull/171#pullrequestreview-828641889, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACS4PRRKKQ5ARCCUT4ZF6CLUQHBVRANCNFSM4P2KRSZA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.