* More consequent handling of libsupc++. configure looks it up now and

provides it via BuildConfig. We link everything against it.
* Temporarily pass --no-undefined to the linker. Should be in the
  compiler specs, but isn't in the gcc 4 I built.
* Define _BEOS_R5_COMPATIBLE_ macro when building with gcc 2. Can be
  used in headers for instance.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14913 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2005-11-14 13:47:52 +00:00
parent 31c5d829c9
commit c89fc8752d
3 changed files with 27 additions and 11 deletions
+13 -7
View File
@@ -160,10 +160,12 @@ for level in $(HAIKU_DEBUG_LEVELS[2-]) {
HAIKU_KERNEL_DEBUG_$(level)_C++FLAGS = $(flags) ;
}
# gcc version dependent defines
# if $(HAIKU_GCC_VERSION[1]) >= 3 {
# HAIKU_DEFINES += __FUNCTION__=__func__ ;
# }
if $(HAIKU_GCC_VERSION[1]) >= 3 {
# TODO: Temporary work-around. Should be defined in the compiler specs
HAIKU_LINKFLAGS += -Xlinker --no-undefined ;
} else {
HAIKU_DEFINES += _BEOS_R5_COMPATIBLE_ ;
}
# private kernel headers do be used when compiling kernel code
HAIKU_PRIVATE_KERNEL_HEADERS =
@@ -185,10 +187,12 @@ if $(HAIKU_SHARED_LIBSTDC++) {
}
# the C++ support library
if $(HAIKU_GCC_VERSION[1]) < 3 {
HAIKU_LIBSUPC++ = ;
if $(HAIKU_SHARED_LIBSUPC++) {
HAIKU_LIBSUPC++ = $(HAIKU_SHARED_LIBSUPC++) ;
} else if $(HAIKU_STATIC_LIBSUPC++) {
HAIKU_LIBSUPC++ = $(HAIKU_STATIC_LIBSUPC++) ;
} else {
HAIKU_LIBSUPC++ = supc++ ;
HAIKU_LIBSTDC++ = ;
}
# library and executable glue code
@@ -203,6 +207,8 @@ HAIKU_LIBRARY_BEGIN_GLUE_CODE =
<src!system!glue>init_term_dyn.o
;
HAIKU_LIBRARY_END_GLUE_CODE =
# TODO: For the time being always link against libsupc++.a.
$(HAIKU_STATIC_LIBSUPC++)
crtend.o
<src!system!glue!arch!$(HAIKU_ARCH)>crtn.o
;
+1 -3
View File
@@ -42,9 +42,7 @@ rule KernelLd
if $(3) { LINKFLAGS on $(1) += --script=$(3) ; }
# Remove any preset LINKLIBS, but link against libgcc.a
LINKLIBS on $(1) = -l$(TARGET_LIBSUPC++) $(TARGET_GCC_LIBGCC) ;
# TODO: Linking against TARGET_LIBSUPC++ is OK, but doing it like
# this is not so nice.
LINKLIBS on $(1) = $(TARGET_STATIC_LIBSUPC++) $(TARGET_GCC_LIBGCC) ;
# TODO: Do we really want to invoke SetupKernel here? The objects should
# have been compiled with KernelObjects anyway, so we're doing that twice.