Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Jun 2002 16:57:45 +0200
From:      Sheldon Hearn <sheldonh@starjuice.net>
To:        Szilveszter Adam <sziszi@bsd.hu>
Cc:        current@FreeBSD.ORG, taguchi@tohoku.iij.ad.jp
Subject:   Re: What's the right way to build XFree86-4 now? 
Message-ID:  <40690.1025103465@axl.seasidesoftware.co.za>
In-Reply-To: Your message of "Wed, 26 Jun 2002 13:25:57 %2B0200." <20020626112557.GA958@starjuice.net> 

next in thread | previous in thread | raw e-mail | index | archive | help


On Wed, 26 Jun 2002 13:25:57 +0200, Sheldon Hearn wrote:

> I think I have a handle on this now.  If you fix it before you hear back
> from me, let me know so I can stop wasting time on it.  XF84-4 test
> builds are slow. :-)

Okay, it looks like a bit of a mess.

I've copied the XFree86-4 maintainer.

I think there are three problems causing the XFree86-4 installation to
fail on -CURRENT:

*) Our imake-4 port doesn't arrange for a SharedDepCplusplusLibraryTarget
   rule.  I _think_ such a rule would, by default, add $(CXXLIB) to the
   deplist for -CURRENT.

*) Our imake-4 port doesn't arrange for a CXXLIB definition.  It should
   be -lstdc++ on at least -CURRENT.  The stock bsdLib.tmpl explicitly
   sets CplusplusLibC empty, Imake.tmpl sets it to /**/ if not defined
   and FreeBSD.cf doesn't set it at all.

*) The XFree86-4 distribution contains some bad C++ code.

Here's what I did to get XFree86-4 to build with the base system's
toolchain in -CURRENT:

a) ports/devel/imake-4:

   Replace files/patch-d and files/patch-xthreads with the attached
   patch-config::cf::FreeBSD.cf.

   Add the attached patch-config::cf::bsdLib.tmpl.

b) ports/x11/XFree86-4-libraries:

   Replace files/patch-z45 with the attached patch-z45.

   Note that this isn't quite right, because the linking gets done with
   cc as a front-end, not c++.  But the job gets done, all the same,
   and I'm not writing a SharedDepCplusplusLibraryTarget rule myself.
   :-)

c) ports/x11-servers/XFree86-4-Server:

   Add the attached patch-gcc31, taken from Motoyuki Konno's post to
   <freebsd-current@FreeBSD.ORG> with the following Message-ID:

	<200206041243.g54Chxc16331@sakura.mk.bsdclub.org>

That's all.

Ciao,
Sheldon.

-------- patch-config::cf::FreeBSD.cf

--- config/cf/FreeBSD.cf.orig	Wed Jun 26 15:44:29 2002
+++ config/cf/FreeBSD.cf	Wed Jun 26 16:21:18 2002
@@ -80,7 +80,6 @@
 /*
  * math.h uses _REENTRANT and stdio.h uses _THREAD_SAFE, so define both.
  */
-# define SystemMTDefines	-D_REENTRANT -D_THREAD_SAFE
 /*
  * FreeBSD has tread-safe api but no getpwnam_r yet.
  */
@@ -91,8 +90,12 @@
 # else
 #  define BuildThreadStubLibrary  YES 
 #  define NeedUIThrStubs          YES 
-#  define ThreadsCompileFlags	-pthread
-#  define ThreadsLibraries 	-pthread
+#  if (OSRelVersion >= 500016)
+#   define ThreadsLibraries 	-lc_r
+#  else
+#   define SystemMTDefines	-D_REENTRANT -D_THREAD_SAFE
+#   define ThreadsLibraries 	-pthread
+#  endif
 #  define SharedX11Reqs		$(LDPRELIB) $(XTHRSTUBLIB)
 #  define SharedXtReqs		$(LDPRELIB) $(XLIBONLY) $(SMLIB) $(ICELIB) $(XTHRSTUBLIB)
 # endif
@@ -151,6 +154,7 @@
 # define CcCmd			cc
 # define CplusplusCmd		c++
 #endif
+#define	CplusplusLibC		-lstdc++
 
 #define CppCmd			/usr/bin/cpp
 #define PreProcessCmd		CppCmd

-------- patch-config::cf::bsdLib.tmpl

--- config/cf/bsdLib.tmpl.orig	Wed Jun 26 16:19:42 2002
+++ config/cf/bsdLib.tmpl	Wed Jun 26 16:20:34 2002
@@ -39,7 +39,9 @@
 #define XawClientLibs $(XAWLIB) $(XMULIBONLY) $(XTOOLLIB) $(XPMLIB) $(XLIB)
 #endif
 
-#define CplusplusLibC
+#ifndef CplusplusLibC
+#define CplusplusLibC	$(CXX)
+#endif
 #define FrescoSysLibs	CplusplusLibC MathLibrary
 
 /* Allow for libpthread, as overridden by OS definitions */

-------- patch-z45

--- lib/GLU/Imakefile.orig	Wed Jun  6 01:03:20 2001
+++ lib/GLU/Imakefile	Wed Jun 26 15:27:14 2002
@@ -103,6 +103,7 @@
 #undef _LinkBuildLibrary
 #define _LinkBuildLibrary(lib) LinkBuildLibrary(lib)
 
+#if !defined(LibInstall) || LibInstall
 #if NormalLibGlu
 NormalDepLibraryTarget($(LIBNAME),$(SUBDIRS) $(DONES),$(STATIC_OBJS))
 InstallLibrary($(LIBNAME),$(USRLIBDIR))
@@ -110,9 +111,9 @@
 
 #if SharedLibGlu
 #ifdef SharedDepCplusplusLibraryTarget
-SharedDepCplusplusLibraryTarget($(LIBNAME),$(SOREV),$(SUBDIRS) $(DONES),$(SHARED_OBJS),.,.)
+SharedDepCplusplusLibraryTarget($(LIBNAME),$(SOREV),$(SUBDIRS) $(DONES),$(SHARED_OBJS) $(CXXLIB),.,.)
 #else
-SharedDepLibraryTarget($(LIBNAME),$(SOREV),$(SUBDIRS) $(DONES),$(SHARED_OBJS),.,.)
+SharedDepLibraryTarget($(LIBNAME),$(SOREV),$(SUBDIRS) $(DONES),$(SHARED_OBJS) $(CXXLIB),.,.)
 #endif
 InstallSharedLibrary($(LIBNAME),$(SOREV),$(SHLIBDIR))
 #endif
@@ -126,6 +127,7 @@
 ProfiledDepLibraryTarget($(LIBNAME),$(SUBDIRS) $(DONES),$(PROFILE_OBJS))
 InstallLibrary($(LIBNAME)_p,$(USRLIBDIR))
 #endif /* ProfileLibFont */
+#endif
 
 
 ForceSubdirs($(SUBDIRS))

-------- patch-gcc31

--- lib/XThrStub/UIThrStubs.c.old	Mon Nov 19 06:13:26 2001
+++ lib/XThrStub/UIThrStubs.c	Tue Jun  4 11:39:19 2002
@@ -99,6 +99,21 @@
 #else
 #include <pthread.h>
 typedef pthread_t xthread_t;
+#if __GNUC__ >= 3
+xthread_t pthread_self()    __attribute__ ((weak, alias ("_Xthr_self_stub_")));
+int pthread_mutex_init()    __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+int pthread_mutex_destroy() __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+int pthread_mutex_lock()    __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+int pthread_mutex_unlock()  __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+int pthread_cond_init()     __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+int pthread_cond_destroy()  __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+int pthread_cond_wait()     __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+int pthread_cond_signal()   __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+int pthread_cond_broadcast() __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+int pthread_key_create()    __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+void *pthread_getspecific()  __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+int pthread_setspecific()   __attribute__ ((weak, alias ("_Xthr_zero_stub_")));
+#else	/* __GNUC__ */
 #pragma weak pthread_self = _Xthr_self_stub_
 #pragma weak pthread_mutex_init = _Xthr_zero_stub_
 #pragma weak pthread_mutex_destroy = _Xthr_zero_stub_
@@ -113,6 +128,7 @@
 #pragma weak pthread_key_create = _Xthr_zero_stub_
 #pragma weak pthread_getspecific = _Xthr_zero_stub_
 #pragma weak pthread_setspecific = _Xthr_zero_stub_
+#endif	/* __GNUC__ */
 #if defined(_DECTHREADS_) || defined(linux)
 #pragma weak pthread_equal = _Xthr_equal_stub_	/* See Xthreads.h! */
 int

--------

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?40690.1025103465>