X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fshared%2Farchitecture.h;h=6a3f0b2d4b51f9d436bbaed33f25606c522a9a29;hp=58a8164a757b77e3eab3cdf5af05064def8c77f9;hb=613e3a26c1209a30c0643159fdd7283cbcfc51f6;hpb=9bd9f43fceff79796f6d2a3fb19f7a711a3f3ec5 diff --git a/src/shared/architecture.h b/src/shared/architecture.h index 58a8164a7..6a3f0b2d4 100644 --- a/src/shared/architecture.h +++ b/src/shared/architecture.h @@ -23,11 +23,15 @@ #include "util.h" +/* A cleaned up architecture definition */ + typedef enum Architecture { ARCHITECTURE_X86 = 0, ARCHITECTURE_X86_64, ARCHITECTURE_PPC, + ARCHITECTURE_PPC_LE, ARCHITECTURE_PPC64, + ARCHITECTURE_PPC64_LE, ARCHITECTURE_IA64, ARCHITECTURE_PARISC, ARCHITECTURE_PARISC64, @@ -36,7 +40,9 @@ typedef enum Architecture { ARCHITECTURE_SPARC, ARCHITECTURE_SPARC64, ARCHITECTURE_MIPS, + ARCHITECTURE_MIPS_LE, ARCHITECTURE_MIPS64, + ARCHITECTURE_MIPS64_LE, ARCHITECTURE_ALPHA, ARCHITECTURE_ARM, ARCHITECTURE_ARM_BE, @@ -45,58 +51,123 @@ typedef enum Architecture { ARCHITECTURE_SH, ARCHITECTURE_SH64, ARCHITECTURE_M68K, + ARCHITECTURE_TILEGX, + ARCHITECTURE_CRIS, _ARCHITECTURE_MAX, _ARCHITECTURE_INVALID = -1 } Architecture; Architecture uname_architecture(void); +/* + * LIB_ARCH_TUPLE should resolve to the local library path + * architecture tuple systemd is built for, according to the Debian + * tuple list: + * + * https://wiki.debian.org/Multiarch/Tuples + * + * This is used in library search paths that should understand + * Debian's paths on all distributions. + */ + #if defined(__x86_64__) # define native_architecture() ARCHITECTURE_X86_64 +# define LIB_ARCH_TUPLE "x86_64-linux-gnu" #elif defined(__i386__) # define native_architecture() ARCHITECTURE_X86 +# define LIB_ARCH_TUPLE "i386-linux-gnu" #elif defined(__powerpc64__) -# define native_architecture() ARCHITECTURE_PPC64 +# if defined(WORDS_BIGENDIAN) +# define native_architecture() ARCHITECTURE_PPC64 +# define LIB_ARCH_TUPLE "ppc64-linux-gnu" +# else +# define native_architecture() ARCHITECTURE_PPC64_LE +# error "Missing LIB_ARCH_TUPLE for PPC64LE" +# endif #elif defined(__powerpc__) -# define native_architecture() ARCHITECTURE_PPC +# if defined(WORDS_BIGENDIAN) +# define native_architecture() ARCHITECTURE_PPC +# define LIB_ARCH_TUPLE "powerpc-linux-gnu" +# else +# define native_architecture() ARCHITECTURE_PPC_LE +# error "Missing LIB_ARCH_TUPLE for PPCLE" +# endif #elif defined(__ia64__) # define native_architecture() ARCHITECTURE_IA64 +# define LIB_ARCH_TUPLE "ia64-linux-gnu" #elif defined(__hppa64__) # define native_architecture() ARCHITECTURE_PARISC64 +# error "Missing LIB_ARCH_TUPLE for HPPA64" #elif defined(__hppa__) # define native_architecture() ARCHITECTURE_PARISC +# define LIB_ARCH_TUPLE "hppa‑linux‑gnu" #elif defined(__s390x__) # define native_architecture() ARCHITECTURE_S390X +# define LIB_ARCH_TUPLE "s390x-linux-gnu" #elif defined(__s390__) # define native_architecture() ARCHITECTURE_S390 +# define LIB_ARCH_TUPLE "s390-linux-gnu" #elif defined(__sparc64__) # define native_architecture() ARCHITECTURE_SPARC64 +# define LIB_ARCH_TUPLE "sparc64-linux-gnu" #elif defined(__sparc__) # define native_architecture() ARCHITECTURE_SPARC +# define LIB_ARCH_TUPLE "sparc-linux-gnu" #elif defined(__mips64__) -# define native_architecture() ARCHITECTURE_MIPS64 +# if defined(WORDS_BIGENDIAN) +# define native_architecture() ARCHITECTURE_MIPS64 +# error "Missing LIB_ARCH_TUPLE for MIPS64" +# else +# define native_architecture() ARCHITECTURE_MIPS64_LE +# error "Missing LIB_ARCH_TUPLE for MIPS64_LE" +# endif #elif defined(__mips__) -# define native_architecture() ARCHITECTURE_MIPS +# if defined(WORDS_BIGENDIAN) +# define native_architecture() ARCHITECTURE_MIPS +# define LIB_ARCH_TUPLE "mips-linux-gnu" +# else +# define native_architecture() ARCHITECTURE_MIPS_LE +# define LIB_ARCH_TUPLE "mipsel-linux-gnu" +#endif #elif defined(__alpha__) # define native_architecture() ARCHITECTURE_ALPHA +# define LIB_ARCH_TUPLE "alpha-linux-gnu" #elif defined(__aarch64__) # if defined(WORDS_BIGENDIAN) # define native_architecture() ARCHITECTURE_ARM64_BE +# define LIB_ARCH_TUPLE "aarch64_be-linux-gnu" # else # define native_architecture() ARCHITECTURE_ARM64 +# define LIB_ARCH_TUPLE "aarch64-linux-gnu" # endif #elif defined(__arm__) # if defined(WORDS_BIGENDIAN) # define native_architecture() ARCHITECTURE_ARM_BE +# error "Missing LIB_ARCH_TUPLE for ARM_BE" # else -# define native_architecture() ARCHITECTURE_ARM +# if defined(__ARM_PCS_VFP) +# define native_architecture() ARCHITECTURE_ARM +# define LIB_ARCH_TUPLE "arm-linux-gnueabihf" +# else +# define native_architecture() ARCHITECTURE_ARM +# define LIB_ARCH_TUPLE "arm-linux-gnueabi" +# endif # endif #elif defined(__sh64__) # define native_architecture() ARCHITECTURE_SH64 +# error "Missing LIB_ARCH_TUPLE for SH64" #elif defined(__sh__) # define native_architecture() ARCHITECTURE_SH +# define LIB_ARCH_TUPLE "sh4-linux-gnu" #elif defined(__m68k__) # define native_architecture() ARCHITECTURE_M68K +# define LIB_ARCH_TUPLE "m68k-linux-gnu" +#elif defined(__tilegx__) +# define native_architecture() ARCHITECTURE_TILEGX +# error "Missing LIB_ARCH_TUPLE for TILEGX" +#elif defined(__cris__) +# define native_architecture() ARCHITECTURE_CRIS +# error "Missing LIB_ARCH_TUPLE for CRIS" #else #error "Please register your architecture here!" #endif