On 13 Jul, Pedro Giffuni wrote:
>
>
> On 07/13/15 11:29, Don Lewis wrote:
> ...
>> OpenOffice has a clang patch that was not catching this.
>> I hacked it for FreeBSD now:
>> http://svn.apache.org/viewvc?view=revision&revision=1690740
>>
>> But there is certainly something wrong as clang is not being detected.
>> I think clang defines __GNUC__, so with the existing clang patch we
>> were still using the original typedef. If the compiler didn't croak
>> there, then we would have redefined the typedef again in the __clang__
>> section.
> Yes, clang reports itself as gcc 4.2, so it sets __GNUC__ and
> __clang__.
>
> The patch I committed should be a no-op (except for gcc).
>> <http://stackoverflow.com/questions/28166565/detect-gcc-as-opposed-to-msvc-clang-with-macro>
>>
>>
>> #if defined(__FreeBSD__) && defined(__GNUC__)
>> typedef typeof(SIG_DFL) CoinSighandler_t;
>> # define CoinSighandler_t_defined
>> #endif
>>
>> //-----------------------------------------------------------------------------
>>
>> ...
> <some lines later>
>> ...
>> //-----------------------------------------------------------------------------
>>
>> #if defined(__clang__)
>> typedef void(*CoinSighandler_t)(int);
>> # define CoinSighandler_t_defined
>> #elif defined(__MACH__) && defined(__GNUC__)
>> typedef typeof(SIG_DFL) CoinSighandler_t;
>> # define CoinSighandler_t_defined
>> #endif
>>
> Ugh.. the problem is I am only looking at diffs, not at the code so
> I missed this mess.
>
> Second try:
>
> http://svn.apache.org/viewvc?view=revision&revision=1690755
This part doesn't look right:
#if defined(__FreeBSD__) && defined(__GNUC__)
- typedef __decltype(SIG_DFL) CoinSighandler_t;
+ typedef typeof(SIG_DFL) CoinSighandler_t;
# define CoinSighandler_t_defined
#endif
patching file CoinMP-1.7.6/Osi/ltmain.sh
patching file CoinMP-1.7.6/CoinUtils/src/CoinSignal.hpp
/usr/local/bin/gpatch: **** malformed patch at line 1230: @@ -95,7 +95,10 @@
dmake: Error code 2, while making './unxfbsdx.pro/misc/build/so_patched_coinmp'
1 module(s):
coinmp
need(s) to be rebuilt
Reason(s):
I patched the patch with this patch and got a successful coinmp build:
Index: ext_libraries/coinmp/coinmp-1.7.6-clang.patch
===================================================================
--- ext_libraries/coinmp/coinmp-1.7.6-clang.patch (revision 1690824)
+++ ext_libraries/coinmp/coinmp-1.7.6-clang.patch (working copy)
@@ -1,22 +1,25 @@
---- misc/CoinMP-1.7.6/CoinUtils/src/CoinSignal.hpp 2011-01-03
20:31:00.000000000 -0300
-+++ misc/build/CoinMP-1.7.6/CoinUtils/src/CoinSignal.hpp 2014-02-01
02:02:10.596696644 -0300
-@@ -44,7 +44,7 @@
+--- misc/CoinMP-1.7.6/CoinUtils/src/CoinSignal.hpp 2011-01-03
23:31:00.000000000 +0000
++++ misc/build/CoinMP-1.7.6/CoinUtils/src/CoinSignal.hpp 2015-07-14
00:18:26.105360000 +0000
+@@ -43,7 +43,7 @@
+
//-----------------------------------------------------------------------------
- #if defined(__FreeBSD__) && defined(__GNUC__)
-- typedef __decltype(SIG_DFL) CoinSighandler_t;
-+ typedef typeof(SIG_DFL) CoinSighandler_t;
+-#if defined(__FreeBSD__) && defined(__GNUC__)
++#if defined(__FreeBSD__) && defined(__GNUC__) && !defined(__clang__)
+ typedef typeof(SIG_DFL) CoinSighandler_t;
# define CoinSighandler_t_defined
#endif
-@@ -95,7 +95,10 @@
+@@ -100,6 +100,13 @@
+ # define CoinSighandler_t_defined
+ #endif
-
//-----------------------------------------------------------------------------
++//-----------------------------------------------------------------------------
++
++#if defined(__clang__)
++ typedef __decltype(SIG_DFL) CoinSighandler_t;
++# define CoinSighandler_t_defined
++#endif
++
+
//#############################################################################
--#if defined(__MACH__) && defined(__GNUC__)
-+#if !defined(__FreeBSD__) && defined(__clang__)
-+ typedef void(*CoinSighandler_t)(int);
-+# define CoinSighandler_t_defined
-+#elif defined(__MACH__) && defined(__GNUC__)
- typedef typeof(SIG_DFL) CoinSighandler_t;
- # define CoinSighandler_t_defined
- #endif
+ #ifndef CoinSighandler_t_defined
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]