dfx 0.1.0
Linux-based dynamic dataflow executor
Loading...
Searching...
No Matches
ArchDetection.hpp
1// SPDX-FileCopyrightText: 2025 Vincent Leroy
2// SPDX-License-Identifier: MIT
3//
4// This file is part of dfx.
5//
6// Licensed under the MIT License. See the LICENSE file in the project root
7// for full license information.
8
9#pragma once
10
11#if defined(__x86_64__)
12#define PLATFORM_ARCH_X86_64
13#elif defined(__i386__)
14#define PLATFORM_ARCH_X86_32
15#elif defined(__aarch64__)
16#define PLATFORM_ARCH_ARM_64
17#elif defined(__arm__)
18#define PLATFORM_ARCH_ARM_32
19#else
20#error "Unsupported architecture"
21#endif
22
23#if defined(__x86_64__) || defined(__aarch64__)
24#define PLATFORM_64BIT
25#elif defined(__i386__) || defined(__arm__)
26#define PLATFORM_32BIT
27#else
28#error "Cannot determine pointer size"
29#endif
30
31#if defined(__clang__)
32#define PLATFORM_COMPILER_CLANG
33#elif defined(__GNUC__)
34#define PLATFORM_COMPILER_GCC
35#else
36#error "Unsupported compiler"
37#endif
38
39#if defined(PLATFORM_COMPILER_CLANG) || defined(PLATFORM_COMPILER_GCC)
40#define PLATFORM_COMPILER_CLANG_OR_GCC
41#endif
42
43#if defined(PLATFORM_ARCH_X86_64) || defined(PLATFORM_ARCH_X86_32)
44#define PLATFORM_ARCH_X86
45#endif
46
47#if defined(PLATFORM_ARCH_ARM_64) || defined(PLATFORM_ARCH_ARM_32)
48#define PLATFORM_ARCH_ARM
49#endif