diff --git a/build/jam/BuildSetup b/build/jam/BuildSetup index 7c8ae46f60..194d88aa4f 100644 --- a/build/jam/BuildSetup +++ b/build/jam/BuildSetup @@ -181,15 +181,25 @@ switch $(HAIKU_DISTRO_COMPATIBILITY) { # analyze the gcc machine spec to determine HAIKU_CPU switch $(HAIKU_GCC_MACHINE) { - case i386-* : HAIKU_CPU = x86 ; - case i486-* : HAIKU_CPU = x86 ; - case i586-* : HAIKU_CPU = x86 ; - case i686-* : HAIKU_CPU = x86 ; + case i?86-* : HAIKU_CPU = x86 ; case powerpc-* : HAIKU_CPU = ppc ; - case m68k-* : HAIKU_CPU = m68k ; + case m68k-* : HAIKU_CPU = m68k ; case mipsel-* : HAIKU_CPU = mipsel ; - case arm-* : HAIKU_CPU = arm ; - case * : Exit "Unsupported gcc target machine:" $(HAIKU_GCC_MACHINE) ; + case arm-* : HAIKU_CPU = arm ; + case * : Exit "Unsupported gcc target machine:" + $(HAIKU_GCC_MACHINE) ; +} + +# determine the endianness of the host +switch $(HOST_GCC_MACHINE) { + case i?86-* : HAIKU_HOST_IS_BIG_ENDIAN = 0 ; + case x86_64-* : HAIKU_HOST_IS_BIG_ENDIAN = 0 ; + case powerpc-* : HAIKU_HOST_IS_BIG_ENDIAN = 1 ; + # the following are rather unlikely as hosts ... + case m68k-* : HAIKU_HOST_IS_BIG_ENDIAN = 1 ; + case mipsel-* : HAIKU_HOST_IS_BIG_ENDIAN = 0 ; + case arm-* : HAIKU_HOST_IS_BIG_ENDIAN = 0 ; + case * : Exit "Unsupported gcc host machine:" $(HOST_GCC_MACHINE) ; } switch $(HAIKU_CPU) { diff --git a/src/libs/icu/source/data/Jamfile b/src/libs/icu/source/data/Jamfile index dcca8d90bf..5ef27e25e3 100644 --- a/src/libs/icu/source/data/Jamfile +++ b/src/libs/icu/source/data/Jamfile @@ -3,11 +3,18 @@ SubDir HAIKU_TOP src libs icu source data ; ICU_UNICODE_VERSION = 5.1 ; ICU_CLDR_VERSION = $(ICU_GENRB_CLDR_VERSION) ; ICU_DAT_FILES = pnames.icu unames.icu cnvalias.icu ucadata.icu invuca.icu ; -ICU_DATA_DIR = [ FDirName $(HOST_COMMON_DEBUG_OBJECT_DIR) icudt42l ] ; ICU_VERSION = 42.1 ; ICU_DATA_SYMBOL = icudt42 ; -ICU_ENDIANNESS_INDICATOR = l ; # TODO: little endian is hardcoded, for now +# ICU is endianness-aware, so we need to set the endianness indicator such +# that it matches the endianness of the host platform +if $(HAIKU_HOST_IS_BIG_ENDIAN) = 1 { + ICU_ENDIANNESS_INDICATOR = b ; +} else { + ICU_ENDIANNESS_INDICATOR = l ; +} ICU_DATA_VERSION = icudt42$(ICU_ENDIANNESS_INDICATOR) ; +ICU_DATA_DIR + = [ FDirName $(HOST_COMMON_DEBUG_OBJECT_DIR) $(ICU_DATA_VERSION) ] ; rule MakeLocateICUData files : subdir {