1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
Author: Gábor Németh <homar@riseup.net>
Subject: Dance around GCC oddity in arm32 builds
Forwarded: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1077657
GCC on armel/hf (as of 14.2) does not accept a forward-declared std::vector
element type in -O1 and above. See https://bugs.debian.org/1077657 for details.
--- a/src/libblock/Makefile.am
+++ b/src/libblock/Makefile.am
@@ -1,4 +1,5 @@
AM_CPPFLAGS = -I$(srcdir)/../libcgencommon -I$(srcdir)/../libgvgen -I$(srcdir)/.. -I../libcgencommon
+AM_CPPFLAGS += -include arm_vector.h
EXTRA_DIST = block_lang.yy preamble_compile.yy preamble_csh.yy
--- a/src/libcgencommon/Makefile.am
+++ b/src/libcgencommon/Makefile.am
@@ -1,4 +1,5 @@
AM_CPPFLAGS = -I$(srcdir)/../imported/miniz $(LIBPNG_CFLAGS) $(TINYXML_CFLAGS)
+AM_CPPFLAGS += -include arm_vector.h
noinst_LIBRARIES = libcgencommon.a
@@ -46,3 +47,13 @@ version.h: $(top_srcdir)/configure.ac
echo "#define LIBMSCGEN_SUPERMINOR $${BASH_REMATCH[4]:-0}";\
} >$@ \
|| echo 'gen_version_h error: I need the version as [v]<num>.<num>[.<num>]'
+
+BUILT_SOURCES += arm_vector.h
+arm_vector.h:
+ { echo '#if __arm__ == 1 && defined __cplusplus';\
+ echo '#warning Turning off optimization for <vector> to circumvent odd GCC behavior; cf. https://bugs.debian.org/1077657';\
+ echo '#pragma GCC optimize "O0"';\
+ echo '#include <vector>';\
+ echo '#pragma GCC reset_options';\
+ echo '#endif';\
+ } >$@
--- a/src/libdbg/Makefile.am
+++ b/src/libdbg/Makefile.am
@@ -1,4 +1,5 @@
AM_CPPFLAGS = -I$(srcdir)/../libcgencommon -I$(srcdir)/.. -I../libcgencommon
+AM_CPPFLAGS += -include arm_vector.h
noinst_LIBRARIES = libdbg.a
-libdbg_a_SOURCES = dbgchart.cpp dbgchart.h
+libdbg_a_SOURCES = dbgchart.cpp dbgchart.h
--- a/src/libflow/Makefile.am
+++ b/src/libflow/Makefile.am
@@ -1,4 +1,5 @@
AM_CPPFLAGS = -I$(srcdir)/../libcgencommon -I$(srcdir)/.. -I../libcgencommon
+AM_CPPFLAGS += -include arm_vector.h
EXTRA_DIST = flow_lang.yy preamble_compile.yy preamble_csh.yy
--- a/src/libgui/Makefile.am
+++ b/src/libgui/Makefile.am
@@ -9,6 +9,7 @@ AM_CPPFLAGS = $(foreach d,libcgencommon libgvgen libblock libxxx libflow libmscg
-I$(srcdir)/../imported/imgui \
-I$(srcdir)/../imported/file_dialog \
-DCUSTOM_IMGUIFILEDIALOG_CONFIG=\"MscGenImGuiFileDialogConfig.h\"
+AM_CPPFLAGS += -include arm_vector.h
noinst_PROGRAMS = binary_to_compressed_c gen_designs_c
binary_to_compressed_c_SOURCES = ../imported/imgui/misc/fonts/binary_to_compressed_c.cpp
--- a/src/libgvgen/Makefile.am
+++ b/src/libgvgen/Makefile.am
@@ -1,4 +1,5 @@
AM_CPPFLAGS = -I$(srcdir)/../libcgencommon -I$(srcdir)/.. -I../libcgencommon
+AM_CPPFLAGS += -include arm_vector.h
EXTRA_DIST = graph_lang.yy preamble_compile.yy preamble_csh.yy
--- a/src/libmscgen/Makefile.am
+++ b/src/libmscgen/Makefile.am
@@ -1,4 +1,5 @@
AM_CPPFLAGS = -I$(srcdir)/../libcgencommon -I$(srcdir)/../libgvgen -I$(srcdir)/.. -I../libcgencommon
+AM_CPPFLAGS += -include arm_vector.h
EXTRA_DIST = msc_lang.yy preamble_compile.yy preamble_csh.yy
--- a/src/libxxx/Makefile.am
+++ b/src/libxxx/Makefile.am
@@ -1,4 +1,5 @@
AM_CPPFLAGS = -I$(srcdir)/../libcgencommon -I$(srcdir)/../libgvgen -I$(srcdir)/.. -I../libcgencommon
+AM_CPPFLAGS += -include arm_vector.h
EXTRA_DIST = xxx_lang.yy preamble_compile.yy preamble_csh.yy
--- a/src/unix-msc-gen/Makefile.am
+++ b/src/unix-msc-gen/Makefile.am
@@ -5,6 +5,7 @@ endif
SUBLIBS += libxxx libflow libblock libgvgen libmscgen libcgencommon
AM_CPPFLAGS = $(foreach d,$(SUBLIBS) Msc-generator-GUI/res,-I$(srcdir)/../$d) -I../libcgencommon
+AM_CPPFLAGS += -include arm_vector.h
bin_PROGRAMS = msc-gen
noinst_PROGRAMS = gen_designs_c
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -2,6 +2,7 @@ check_PROGRAMS = pngdiff contours
dist_check_SCRIPTS = hint.sh ppt2png.sh
AM_CPPFLAGS = -I$(top_srcdir)/src/libcgencommon -I$(top_builddir)/src/libcgencommon
+AM_CPPFLAGS += -include arm_vector.h
AM_CXXFLAGS += $(CAIRO_CFLAGS)
AM_DEFAULT_SOURCE_EXT = .cpp
|