diff --git a/include/cpuinfo_aarch64.h b/include/cpuinfo_aarch64.h index b8826ed..a7d2201 100644 --- a/include/cpuinfo_aarch64.h +++ b/include/cpuinfo_aarch64.h @@ -62,4 +62,8 @@ const char* GetAarch64FeaturesEnumName(Aarch64FeaturesEnum); CPU_FEATURES_END_CPP_NAMESPACE +#if !defined(CPU_FEATURES_ARCH_AARCH64) +#error "Including cpuinfo_aarch64.h from a non-aarch64 target." +#endif + #endif // CPU_FEATURES_INCLUDE_CPUINFO_AARCH64_H_ diff --git a/include/cpuinfo_arm.h b/include/cpuinfo_arm.h index 5930486..76a49ef 100644 --- a/include/cpuinfo_arm.h +++ b/include/cpuinfo_arm.h @@ -81,4 +81,8 @@ const char* GetArmFeaturesEnumName(ArmFeaturesEnum); CPU_FEATURES_END_CPP_NAMESPACE +#if !defined(CPU_FEATURES_ARCH_ARM) +#error "Including cpuinfo_arm.h from a non-arm target." +#endif + #endif // CPU_FEATURES_INCLUDE_CPUINFO_ARM_H_ diff --git a/include/cpuinfo_mips.h b/include/cpuinfo_mips.h index 48c23a1..811067c 100644 --- a/include/cpuinfo_mips.h +++ b/include/cpuinfo_mips.h @@ -50,4 +50,8 @@ const char* GetMipsFeaturesEnumName(MipsFeaturesEnum); CPU_FEATURES_END_CPP_NAMESPACE +#if !defined(CPU_FEATURES_ARCH_MIPS) +#error "Including cpuinfo_mips.h from a non-mips target." +#endif + #endif // CPU_FEATURES_INCLUDE_CPUINFO_MIPS_H_ diff --git a/include/cpuinfo_ppc.h b/include/cpuinfo_ppc.h index 654155d..53d1cb6 100644 --- a/include/cpuinfo_ppc.h +++ b/include/cpuinfo_ppc.h @@ -138,4 +138,8 @@ const char* GetPPCFeaturesEnumName(PPCFeaturesEnum); CPU_FEATURES_END_CPP_NAMESPACE +#if !defined(CPU_FEATURES_ARCH_PPC) +#error "Including cpuinfo_ppc.h from a non-ppc target." +#endif + #endif // CPU_FEATURES_INCLUDE_CPUINFO_PPC_H_ diff --git a/include/cpuinfo_x86.h b/include/cpuinfo_x86.h index 0123ddb..13bcdf4 100644 --- a/include/cpuinfo_x86.h +++ b/include/cpuinfo_x86.h @@ -151,4 +151,8 @@ const char* GetX86MicroarchitectureName(X86Microarchitecture); CPU_FEATURES_END_CPP_NAMESPACE +#if !defined(CPU_FEATURES_ARCH_X86) +#error "Including cpuinfo_x86.h from a non-x86 target." +#endif + #endif // CPU_FEATURES_INCLUDE_CPUINFO_X86_H_ diff --git a/src/utils/list_cpu_features.c b/src/utils/list_cpu_features.c index bde7706..a9ff829 100644 --- a/src/utils/list_cpu_features.c +++ b/src/utils/list_cpu_features.c @@ -17,11 +17,18 @@ #include #include "cpu_features_macros.h" -#include "cpuinfo_aarch64.h" -#include "cpuinfo_arm.h" -#include "cpuinfo_mips.h" -#include "cpuinfo_ppc.h" + +#if defined(CPU_FEATURES_ARCH_X86) #include "cpuinfo_x86.h" +#elif defined(CPU_FEATURES_ARCH_ARM) +#include "cpuinfo_arm.h" +#elif defined(CPU_FEATURES_ARCH_AARCH64) +#include "cpuinfo_aarch64.h" +#elif defined(CPU_FEATURES_ARCH_MIPS) +#include "cpuinfo_mips.h" +#elif defined(CPU_FEATURES_ARCH_PPC) +#include "cpuinfo_ppc.h" +#endif static void PrintEscapedAscii(const char* str) { putchar('"'); diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 3cda31e..a744ee9 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -56,29 +56,37 @@ target_link_libraries(unix_features_aggregator_test all_libraries) add_test(NAME unix_features_aggregator_test COMMAND unix_features_aggregator_test) ##------------------------------------------------------------------------------ ## cpuinfo_x86_test -if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") -add_executable(cpuinfo_x86_test cpuinfo_x86_test.cc ../src/cpuinfo_x86.c) -target_compile_definitions(cpuinfo_x86_test PUBLIC CPU_FEATURES_MOCK_CPUID_X86) -target_link_libraries(cpuinfo_x86_test all_libraries) -add_test(NAME cpuinfo_x86_test COMMAND cpuinfo_x86_test) +if(PROCESSOR_IS_X86) + add_executable(cpuinfo_x86_test cpuinfo_x86_test.cc ../src/cpuinfo_x86.c) + target_compile_definitions(cpuinfo_x86_test PUBLIC CPU_FEATURES_MOCK_CPUID_X86) + target_link_libraries(cpuinfo_x86_test all_libraries) + add_test(NAME cpuinfo_x86_test COMMAND cpuinfo_x86_test) endif() ##------------------------------------------------------------------------------ ## cpuinfo_arm_test -add_executable(cpuinfo_arm_test cpuinfo_arm_test.cc ../src/cpuinfo_arm.c) -target_link_libraries(cpuinfo_arm_test all_libraries) -add_test(NAME cpuinfo_arm_test COMMAND cpuinfo_arm_test) +if(PROCESSOR_IS_ARM) + add_executable(cpuinfo_arm_test cpuinfo_arm_test.cc ../src/cpuinfo_arm.c) + target_link_libraries(cpuinfo_arm_test all_libraries) + add_test(NAME cpuinfo_arm_test COMMAND cpuinfo_arm_test) +endif() ##------------------------------------------------------------------------------ ## cpuinfo_aarch64_test -add_executable(cpuinfo_aarch64_test cpuinfo_aarch64_test.cc ../src/cpuinfo_aarch64.c) -target_link_libraries(cpuinfo_aarch64_test all_libraries) -add_test(NAME cpuinfo_aarch64_test COMMAND cpuinfo_aarch64_test) +if(PROCESSOR_IS_AARCH64) + add_executable(cpuinfo_aarch64_test cpuinfo_aarch64_test.cc ../src/cpuinfo_aarch64.c) + target_link_libraries(cpuinfo_aarch64_test all_libraries) + add_test(NAME cpuinfo_aarch64_test COMMAND cpuinfo_aarch64_test) +endif() ##------------------------------------------------------------------------------ ## cpuinfo_mips_test -add_executable(cpuinfo_mips_test cpuinfo_mips_test.cc ../src/cpuinfo_mips.c) -target_link_libraries(cpuinfo_mips_test all_libraries) -add_test(NAME cpuinfo_mips_test COMMAND cpuinfo_mips_test) +if(PROCESSOR_IS_MIPS) + add_executable(cpuinfo_mips_test cpuinfo_mips_test.cc ../src/cpuinfo_mips.c) + target_link_libraries(cpuinfo_mips_test all_libraries) + add_test(NAME cpuinfo_mips_test COMMAND cpuinfo_mips_test) +endif() ##------------------------------------------------------------------------------ ## cpuinfo_ppc_test -add_executable(cpuinfo_ppc_test cpuinfo_ppc_test.cc ../src/cpuinfo_ppc.c) -target_link_libraries(cpuinfo_ppc_test all_libraries) -add_test(NAME cpuinfo_ppc_test COMMAND cpuinfo_ppc_test) +if(PROCESSOR_IS_POWER) + add_executable(cpuinfo_ppc_test cpuinfo_ppc_test.cc ../src/cpuinfo_ppc.c) + target_link_libraries(cpuinfo_ppc_test all_libraries) + add_test(NAME cpuinfo_ppc_test COMMAND cpuinfo_ppc_test) +endif()