gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Error while compiling on FreeBSD


From: Lundberg, Johannes
Subject: Re: Error while compiling on FreeBSD
Date: Tue, 2 Dec 2014 09:21:30 +0900

Hi

Are you building from ports?

I haven't tried building from source outside ports in quite some time now. What I have to build with this change is the normal 1.24.6 gnustep-base port to which I added 3 patches and it builds fine for me on FreeBSD 11.0-CURRENT (amd64).

Here they are:



/usr/ports/lang/gnustep-base/files/patch-Headers__GNUstepBase__config.h.in

--- ./Headers/GNUstepBase/config.h.in.orig    2013-09-10 16:24:29.000000000 +0900
+++ ./Headers/GNUstepBase/config.h.in    2014-04-23 18:27:40.000000000 +0900
@@ -817,6 +817,9 @@
 /* Define if using the libffi library for invocations */
 #undef USE_LIBFFI
 
+/* Define if using setname functions of pthread */
+#undef PTHREAD_SETNAME
+
 /* Enable extensions on AIX 3, Interix.  */
 #ifndef _ALL_SOURCE
 # undef _ALL_SOURCE




/usr/ports/lang/gnustep-base/files/patch-Source__NSThread.m

--- ./Source/NSThread.m.orig    2013-08-12 17:56:18.000000000 +0900
+++ ./Source/NSThread.m    2014-04-23 18:33:38.000000000 +0900
@@ -28,7 +28,7 @@
    Boston, MA 02111 USA.
 
    <title>NSThread class reference</title>
-   $Date: 2013-08-12 09:56:18 +0100 (Mon, 12 Aug 2013) $ $Revision: 36966 $
+   $Date: 2013-08-12 17:56:18 +0900 (Mon, 12 Aug 2013) $ $Revision: 36966 $
 */
 
 #import "common.h"
@@ -93,6 +93,47 @@
 #endif
 
 
+/*
+ NSThread setName: method for windows
+ */
+#if defined(__MINGW__) && defined(HAVE_WINDOWS_H)
+// Usage: SetThreadName (-1, "MainThread");
+#include <windows.h>
+const DWORD MS_VC_EXCEPTION=0x406D1388;
+
+#pragma pack(push,8)
+typedef struct tagTHREADNAME_INFO
+{
+  DWORD dwType; // Must be 0x1000.
+  LPCSTR szName; // Pointer to name (in user addr space).
+  DWORD dwThreadID; // Thread ID (-1=caller thread).
+  DWORD dwFlags; // Reserved for future use, must be zero.
+} THREADNAME_INFO;
+#pragma pack(pop)
+
+static void SetThreadName( DWORD dwThreadID, char* threadName)
+{
+  THREADNAME_INFO info;
+  info.dwType = 0x1000;
+  info.szName = threadName;
+  info.dwThreadID = dwThreadID;
+  info.dwFlags = 0;
+   
+  __try
+  {   
+    RaiseException( MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(ULONG_PTR), (ULONG_PTR*)&info );
+  }
+  __except(EXCEPTION_EXECUTE_HANDLER)
+  {
+  }
+}
+
+#define PTHREAD_SETNAME(a,b)  SetThreadName(-1, b)
+
+#endif
+
+
+
 // Some older BSD systems used a non-standard range of thread priorities.
 // Use these if they exist, otherwise define standard ones.
 #ifndef PTHREAD_MAX_PRIORITY
@@ -752,6 +793,14 @@
 - (void) setName: (NSString*)aName
 {
   ASSIGN(_name, aName);
+#ifdef PTHREAD_SETNAME
+  [self performSelector:@selector(setNameOnCurrentThread:) onThread:self withObject:aName waitUntilDone:NO];
+#endif
+}
+
+- (void) setNameOnCurrentThread: (NSString *)aName
+{
+  PTHREAD_SETNAME(pthread_self(), [aName cStringUsingEncoding:NSUTF8StringEncoding]);
 }
 
 - (void) setStackSize: (NSUInteger)stackSize





/usr/ports/lang/gnustep-base/files/patch-configure.ac

--- ./configure.ac.orig    2013-11-27 07:55:47.000000000 +0900
+++ ./configure.ac    2014-04-23 18:27:40.000000000 +0900
@@ -1780,6 +1780,23 @@
 CFLAGS=$saved_CFLAGS
 
 #--------------------------------------------------------------------
+# Check if we can name pthreads
+#--------------------------------------------------------------------
+
+AC_CHECK_FUNC(pthread_setname_np, pthread_setname_ok=yes, pthread_setname_ok=no)
+if test $pthread_setname_ok = yes ; then
+   case "$target_os" in
+       darwin*)     AC_DEFINE(PTHREAD_SETNAME(a,b), pthread_setname_np(b),   [Description: Define set name function for pthread]);;
+    *)         AC_DEFINE(PTHREAD_SETNAME(a,b), pthread_setname_np(a,b), [Description: Define set name function for pthread]);;
+   esac
+fi
+
+AC_CHECK_FUNC(pthread_set_name_np, pthread_set_name_ok=yes, pthread_set_name_ok=no)
+if test $pthread_set_name_ok = yes ; then
+   AC_DEFINE(PTHREAD_SETNAME(a,b), pthread_set_name_np(a,b), [Description: Define set name function for pthread])
+fi
+
+#--------------------------------------------------------------------
 # Check whether Objective-C /really/ works
 #--------------------------------------------------------------------
 AC_MSG_CHECKING(whether objc really works)



And then I added this to the port makefile to have it reconf

post-patch:
    cd ${WRKSRC} && /usr/local/bin/autoreconf


Hope this helps..



--
Johannes Lundberg
BRILLIANTSERVICE CO., LTD.

On Tue, Dec 2, 2014 at 9:47 AM, Riccardo Mottola <address@hidden> wrote:
Hi,

I just tried compiling on FreeBSD 10.0 clang:

 Compiling file NSThread.m ...
NSThread.m:810:14: error: assigning to 'int' from incompatible type 'void'
      result = PTHREAD_SETNAME(pthread_self(),
             ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

Ideas? It looks it is Johannes' change here.

Riccardo

_______________________________________________
Gnustep-dev mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/gnustep-dev


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
秘密保持について:この電子メールは、名宛人に送信したものであり、秘匿特権の対象となる情報を含んでいます。
もし、名宛人以外の方が受信された場合、このメールの破棄、およびこのメールに関する一切の開示、
複写、配布、その他の利用、または記載内容に基づくいかなる行動もされないようお願い申し上げます。
---
CONFIDENTIALITY NOTE: The information in this email is confidential
and intended solely for the addressee.
Disclosure, copying, distribution or any other action of use of this
email by person other than intended recipient, is prohibited.
If you are not the intended recipient and have received this email in
error, please destroy the original message.
reply via email to

[Prev in Thread] Current Thread [Next in Thread]