From c245b576aad09ac5faeb800de7f7c4fef87c6363 Mon Sep 17 00:00:00 2001
From: Tom Callaway <spot@fedoraproject.org>
Date: Fri, 31 Jan 2020 12:40:45 +0000
Subject: [PATCH] Fix build with gcc 10 (which has -fno-common enabled by
 default).

EFL failed to build from source in Fedora Rawhide as a result of the update to GCC 10. GCC 10 enables -fno-common by default, and this found three issues in EFL:

  # The eina benchmark code defined int key_size in a header that was included in multiple places.
  #/usr/bin/ld: bin/elementary/elementary_test-test_ui_clock.o:(.bss.dt1+0x0): multiple definition of `dt1'; bin/elementary/elementary_test-test_datetime.o:(.bss.dt1+0x0): first defined here
 The elementary test code defines the "dt1", "dt2", "dt3" vars in two code files which are compiled together (but these variables do not appear to be used globally)
  # The eio test code defines the "ee" var in two code files which are compiled together (but this variable does not appear to be used globally)

I've fixed these issues and confirmed locally that the code builds again in Fedora.

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11259

Patch taken from upstream: https://github.com/Enlightenment/efl/commit/c245b576aad09ac5faeb800de7f7c4fef87c6363
Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
---
 src/benchmarks/eina/eina_bench.h          |  2 +-
 src/benchmarks/eina/eina_bench_crc_hash.c |  1 +
 src/bin/elementary/test_ui_clock.c        | 90 +++++++++++------------
 src/tests/eio/eio_test_map.c              | 10 +--
 4 files changed, 52 insertions(+), 51 deletions(-)

diff --git a/src/benchmarks/eina/eina_bench.h b/src/benchmarks/eina/eina_bench.h
index a38d70433e..747ac6f39f 100644
--- a/src/benchmarks/eina/eina_bench.h
+++ b/src/benchmarks/eina/eina_bench.h
@@ -21,7 +21,7 @@
 
 #include "eina_benchmark.h"
 
-int key_size;
+extern int key_size;
 
 void eina_bench_hash(Eina_Benchmark *bench);
 void eina_bench_crc_hash_short(Eina_Benchmark *bench);
diff --git a/src/benchmarks/eina/eina_bench_crc_hash.c b/src/benchmarks/eina/eina_bench_crc_hash.c
index b6734489a3..7750233ed4 100644
--- a/src/benchmarks/eina/eina_bench_crc_hash.c
+++ b/src/benchmarks/eina/eina_bench_crc_hash.c
@@ -26,6 +26,7 @@
 uint64_t CityHash64(const char *buf, size_t len);
 #endif
 
+int key_size;
 char *key_str=NULL;
 
 void repchar(int n)
diff --git a/src/bin/elementary/test_ui_clock.c b/src/bin/elementary/test_ui_clock.c
index 79e9074ead..9973b25cd3 100644
--- a/src/bin/elementary/test_ui_clock.c
+++ b/src/bin/elementary/test_ui_clock.c
@@ -6,7 +6,7 @@
 
 /* A simple test, just displaying clock in its default format */
 
-Evas_Object *dt1, *dt2, *dt3, *dt4;
+Evas_Object *uicdt1, *uicdt2, *uicdt3, *uicdt4;
 
 static void
 _changed_cb(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
@@ -28,19 +28,19 @@ _bt_clicked(void *data EINA_UNUSED, const Efl_Event *ev)
    new_time.tm_mday = 26;
    new_time.tm_hour = 9;
    new_time.tm_min = 0;
-   efl_ui_clock_field_visible_set(dt1, EFL_UI_CLOCK_TYPE_HOUR, EINA_TRUE);
-   efl_ui_clock_field_visible_set(dt1, EFL_UI_CLOCK_TYPE_MINUTE, EINA_TRUE);
-   efl_ui_clock_field_visible_set(dt1, EFL_UI_CLOCK_TYPE_AMPM, EINA_TRUE);
-   efl_ui_clock_field_visible_set(dt1, EFL_UI_CLOCK_TYPE_SECOND, EINA_TRUE);
-   efl_ui_clock_field_visible_set(dt1, EFL_UI_CLOCK_TYPE_DAY, EINA_TRUE);
-   efl_ui_clock_time_set(dt1, new_time);
-
-   elm_object_disabled_set(dt1, EINA_TRUE);
+   efl_ui_clock_field_visible_set(uicdt1, EFL_UI_CLOCK_TYPE_HOUR, EINA_TRUE);
+   efl_ui_clock_field_visible_set(uicdt1, EFL_UI_CLOCK_TYPE_MINUTE, EINA_TRUE);
+   efl_ui_clock_field_visible_set(uicdt1, EFL_UI_CLOCK_TYPE_AMPM, EINA_TRUE);
+   efl_ui_clock_field_visible_set(uicdt1, EFL_UI_CLOCK_TYPE_SECOND, EINA_TRUE);
+   efl_ui_clock_field_visible_set(uicdt1, EFL_UI_CLOCK_TYPE_DAY, EINA_TRUE);
+   efl_ui_clock_time_set(uicdt1, new_time);
+
+   elm_object_disabled_set(uicdt1, EINA_TRUE);
    elm_object_disabled_set(ev->object, EINA_TRUE);
 
-   efl_del(dt2);
-   efl_del(dt3);
-   dt2 = dt3 = NULL;
+   efl_del(uicdt2);
+   efl_del(uicdt3);
+   uicdt2 = uicdt3 = NULL;
 }
 
 void
@@ -56,33 +56,33 @@ test_ui_clock(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_
                 efl_content_set(win, efl_added),
                 efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(360, 240)));
 
-   dt1 = efl_add(EFL_UI_CLOCK_CLASS, bx,
-                 efl_gfx_hint_weight_set(efl_added, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND),
-                 efl_gfx_hint_fill_set(efl_added, EINA_TRUE, EINA_FALSE),
-                 efl_ui_clock_field_visible_set(efl_added, EFL_UI_CLOCK_TYPE_HOUR, EINA_FALSE),
-                 efl_ui_clock_field_visible_set(efl_added, EFL_UI_CLOCK_TYPE_MINUTE, EINA_FALSE),
-                 efl_ui_clock_field_visible_set(efl_added, EFL_UI_CLOCK_TYPE_AMPM, EINA_FALSE),
-                 efl_ui_clock_field_visible_set(efl_added, EFL_UI_CLOCK_TYPE_SECOND, EINA_FALSE),
-                 efl_ui_clock_field_visible_set(efl_added, EFL_UI_CLOCK_TYPE_DAY, EINA_FALSE),
-                 efl_ui_clock_pause_set(efl_added, EINA_TRUE),
-                 efl_event_callback_add(efl_added, EFL_UI_CLOCK_EVENT_CHANGED, _changed_cb, NULL),
-                 efl_pack(bx, efl_added));
-
-   dt2 = efl_add(EFL_UI_CLOCK_CLASS, bx,
-                 efl_gfx_hint_weight_set(efl_added, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND),
-                 efl_gfx_hint_fill_set(efl_added, EINA_TRUE, EINA_FALSE),
-                 efl_ui_clock_field_visible_set(efl_added, EFL_UI_CLOCK_TYPE_YEAR, EINA_FALSE),
-                 efl_ui_clock_field_visible_set(efl_added, EFL_UI_CLOCK_TYPE_MONTH, EINA_FALSE),
-                 efl_ui_clock_field_visible_set(efl_added, EFL_UI_CLOCK_TYPE_DATE, EINA_FALSE),
-                 efl_ui_clock_field_visible_set(efl_added, EFL_UI_CLOCK_TYPE_SECOND, EINA_FALSE),
-                 efl_ui_clock_pause_set(efl_added, EINA_TRUE),
-                 efl_pack(bx, efl_added));
-   elm_object_disabled_set(dt2, EINA_TRUE);
-
-   dt3 = efl_add(EFL_UI_CLOCK_CLASS, bx,
-                 efl_gfx_hint_weight_set(efl_added, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND),
-                 efl_gfx_hint_fill_set(efl_added, EINA_TRUE, EINA_FALSE),
-                 efl_pack(bx, efl_added));
+   uicdt1 = efl_add(EFL_UI_CLOCK_CLASS, bx,
+                    efl_gfx_hint_weight_set(efl_added, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND),
+                    efl_gfx_hint_fill_set(efl_added, EINA_TRUE, EINA_FALSE),
+                    efl_ui_clock_field_visible_set(efl_added, EFL_UI_CLOCK_TYPE_HOUR, EINA_FALSE),
+                    efl_ui_clock_field_visible_set(efl_added, EFL_UI_CLOCK_TYPE_MINUTE, EINA_FALSE),
+                    efl_ui_clock_field_visible_set(efl_added, EFL_UI_CLOCK_TYPE_AMPM, EINA_FALSE),
+                    efl_ui_clock_field_visible_set(efl_added, EFL_UI_CLOCK_TYPE_SECOND, EINA_FALSE),
+                    efl_ui_clock_field_visible_set(efl_added, EFL_UI_CLOCK_TYPE_DAY, EINA_FALSE),
+                    efl_ui_clock_pause_set(efl_added, EINA_TRUE),
+                    efl_event_callback_add(efl_added, EFL_UI_CLOCK_EVENT_CHANGED, _changed_cb, NULL),
+                    efl_pack(bx, efl_added));
+
+   uicdt2 = efl_add(EFL_UI_CLOCK_CLASS, bx,
+                    efl_gfx_hint_weight_set(efl_added, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND),
+                    efl_gfx_hint_fill_set(efl_added, EINA_TRUE, EINA_FALSE),
+                    efl_ui_clock_field_visible_set(efl_added, EFL_UI_CLOCK_TYPE_YEAR, EINA_FALSE),
+                    efl_ui_clock_field_visible_set(efl_added, EFL_UI_CLOCK_TYPE_MONTH, EINA_FALSE),
+                    efl_ui_clock_field_visible_set(efl_added, EFL_UI_CLOCK_TYPE_DATE, EINA_FALSE),
+                    efl_ui_clock_field_visible_set(efl_added, EFL_UI_CLOCK_TYPE_SECOND, EINA_FALSE),
+                    efl_ui_clock_pause_set(efl_added, EINA_TRUE),
+                    efl_pack(bx, efl_added));
+   elm_object_disabled_set(uicdt2, EINA_TRUE);
+
+   uicdt3 = efl_add(EFL_UI_CLOCK_CLASS, bx,
+                    efl_gfx_hint_weight_set(efl_added, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND),
+                    efl_gfx_hint_fill_set(efl_added, EINA_TRUE, EINA_FALSE),
+                    efl_pack(bx, efl_added));
 
    efl_add(EFL_UI_TEXTBOX_CLASS, bx,
            efl_text_set(efl_added, "Editable Clock:"),
@@ -92,12 +92,12 @@ test_ui_clock(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_
            efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(100, 25)),
            efl_pack(bx, efl_added));
 
-   dt4 = efl_add(EFL_UI_CLOCK_CLASS, bx,
-                 efl_gfx_hint_weight_set(efl_added, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND),
-                 efl_gfx_hint_fill_set(efl_added, EINA_TRUE, EINA_FALSE),
-                 efl_ui_clock_edit_mode_set(efl_added, EINA_TRUE),
-                 efl_ui_clock_pause_set(efl_added, EINA_TRUE),
-                 efl_pack(bx, efl_added));
+   uicdt4 = efl_add(EFL_UI_CLOCK_CLASS, bx,
+                    efl_gfx_hint_weight_set(efl_added, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND),
+                    efl_gfx_hint_fill_set(efl_added, EINA_TRUE, EINA_FALSE),
+                    efl_ui_clock_edit_mode_set(efl_added, EINA_TRUE),
+                    efl_ui_clock_pause_set(efl_added, EINA_TRUE),
+                    efl_pack(bx, efl_added));
 
    efl_add(EFL_UI_BUTTON_CLASS, win,
            efl_text_set(efl_added, "Back to the future..."),
diff --git a/src/tests/eio/eio_test_map.c b/src/tests/eio/eio_test_map.c
index fdb0631a9d..f794f73d73 100644
--- a/src/tests/eio/eio_test_map.c
+++ b/src/tests/eio/eio_test_map.c
@@ -14,7 +14,7 @@
 
 #include "eio_suite.h"
 
-Eina_File *ee;
+Eina_File *eie;
 
 static void
 _done_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED)
@@ -25,7 +25,7 @@ _done_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED)
 static void
 _open_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, Eina_File *ef)
 {
-   ee = ef;
+   eie = ef;
    ecore_main_loop_quit();
 }
 
@@ -70,17 +70,17 @@ EFL_START_TEST(eio_test_map_simple)
    ecore_main_loop_begin();
    fail_if(!ef);
 
-   ef = eio_file_map_all(ee, EINA_FILE_POPULATE, _filter_cb, _map_cb,
+   ef = eio_file_map_all(eie, EINA_FILE_POPULATE, _filter_cb, _map_cb,
                     _error_cb, data);
    ecore_main_loop_begin();
    fail_if(!ef);
 
-   ef = eio_file_map_new(ee, EINA_FILE_WILLNEED, 0, strlen(data), _filter_cb,
+   ef = eio_file_map_new(eie, EINA_FILE_WILLNEED, 0, strlen(data), _filter_cb,
                          _map_cb, _error_cb, data);
    ecore_main_loop_begin();
    fail_if(!ef);
 
-   ef = eio_file_close(ee, _done_cb, _error_cb, NULL);
+   ef = eio_file_close(eie, _done_cb, _error_cb, NULL);
    ecore_main_loop_begin();
    fail_if(!ef);
 
-- 
2.20.1

