[haiku-commits] haiku: hrev47580 - build/jam

  • From: zooey@xxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 27 Jul 2014 16:02:24 +0200 (CEST)

hrev47580 adds 1 changeset to branch 'master'
old head: ad3d3335df11c4460cd0cf159710003914572956
new head: 36f3164c3ec5f536550e443aeec4b0d58a8746b1
overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=36f3164+%5Ead3d333

----------------------------------------------------------------------------

36f3164: Fix #11076 - build failing on Haiku.
  
  * Haiku does not currently provide crtbeginS.o and crtendS.o, so
    we fall back to crtbegin.o and crtend.o.
    
  This should not have any ill-effects, as the available compilers on
  Haiku do not use __cxa_atexit() yet.

                                    [ Oliver Tappe <zooey@xxxxxxxxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev47580
Commit:      36f3164c3ec5f536550e443aeec4b0d58a8746b1
URL:         http://cgit.haiku-os.org/haiku/commit/?id=36f3164
Author:      Oliver Tappe <zooey@xxxxxxxxxxxxxxx>
Date:        Sun Jul 27 14:00:53 2014 UTC

Ticket:      https://dev.haiku-os.org/ticket/11076

----------------------------------------------------------------------------

1 file changed, 29 insertions(+), 7 deletions(-)
build/jam/ArchitectureRules | 36 +++++++++++++++++++++++++++++-------

----------------------------------------------------------------------------

diff --git a/build/jam/ArchitectureRules b/build/jam/ArchitectureRules
index cf98620..f4e3427 100644
--- a/build/jam/ArchitectureRules
+++ b/build/jam/ArchitectureRules
@@ -206,6 +206,18 @@ rule ArchitectureSetup architecture
        }
 
        # library and executable glue code
+       local crtBegin ;
+       local crtEnd ;
+       # TODO: use crtbeginS.o and crtendS.o unconditionally once we have
+       #       switched to new compiler packages
+       if [ Glob $(HAIKU_GCC_LIB_DIR_$(architecture)) : crtbeginS.o ] {
+               crtBegin = <$(architecture)>crtbeginS.o ;
+               crtEnd = <$(architecture)>crtendS.o ;
+       } else {
+               crtBegin = <$(architecture)>crtbegin.o ;
+               crtEnd = <$(architecture)>crtend.o ;
+       }
+
        local commonGlueCode =
                <src!system!glue!$(architecture)>init_term_dyn.o
                <src!system!glue!arch!$(HAIKU_ARCH)!$(architecture)>crti.o
@@ -213,24 +225,23 @@ rule ArchitectureSetup architecture
                ;
        HAIKU_LIBRARY_BEGIN_GLUE_CODE_$(architecture) =
                <src!system!glue!arch!$(HAIKU_ARCH)!$(architecture)>crti.o
-               <$(architecture)>crtbeginS.o
+               $(crtBegin)
                <src!system!glue!$(architecture)>init_term_dyn.o
                ;
        HAIKU_LIBRARY_END_GLUE_CODE_$(architecture) =
-               <$(architecture)>crtendS.o
+               $(crtEnd)
                <src!system!glue!arch!$(HAIKU_ARCH)!$(architecture)>crtn.o
                ;
        HAIKU_EXECUTABLE_BEGIN_GLUE_CODE_$(architecture) =
                <src!system!glue!arch!$(HAIKU_ARCH)!$(architecture)>crti.o
-               <$(architecture)>crtbeginS.o
+               $(crtBegin)
                <src!system!glue!$(architecture)>start_dyn.o
                <src!system!glue!$(architecture)>init_term_dyn.o
                ;
        HAIKU_EXECUTABLE_END_GLUE_CODE_$(architecture)
                = $(HAIKU_LIBRARY_END_GLUE_CODE_$(architecture)) ;
 
-       SEARCH on <$(architecture)>crtbeginS.o <$(architecture)>crtendS.o
-               = $(HAIKU_GCC_LIB_DIR_$(architecture)) ;
+       SEARCH on $(crtBegin) $(crtEnd) = $(HAIKU_GCC_LIB_DIR_$(architecture)) ;
 
        # init library name map
        local libraryGrist = "" ;
@@ -472,10 +483,21 @@ rule KernelArchitectureSetup architecture
                # compiling (part of) the boot loader.
 
        # kernel add-on glue code
-       HAIKU_KERNEL_ADDON_BEGIN_GLUE_CODE = <$(architecture)>crtbeginS.o
+       local crtBegin ;
+       local crtEnd ;
+       # TODO: use crtbeginS.o and crtendS.o unconditionally once we have
+       #       switched to new compiler packages
+       if [ Glob $(HAIKU_GCC_LIB_DIR_$(architecture)) : crtbeginS.o ] {
+               crtBegin = <$(architecture)>crtbeginS.o ;
+               crtEnd = <$(architecture)>crtendS.o ;
+       } else {
+               crtBegin = <$(architecture)>crtbegin.o ;
+               crtEnd = <$(architecture)>crtend.o ;
+       }
+       HAIKU_KERNEL_ADDON_BEGIN_GLUE_CODE = $(crtBegin)
                <src!system!glue!$(architecture)>haiku_version_glue.o ;
        HAIKU_KERNEL_ADDON_END_GLUE_CODE
-               = $(HAIKU_GCC_LIBGCC_$(architecture)) 
<$(architecture)>crtendS.o ;
+               = $(HAIKU_GCC_LIBGCC_$(architecture)) $(crtEnd) ;
 }
 
 


Other related posts:

  • » [haiku-commits] haiku: hrev47580 - build/jam - zooey