From 0b186b1fdab89dc51bf171e66ae6def1d3484cf2 Mon Sep 17 00:00:00 2001 From: Corentin Wallez Date: Wed, 12 Jul 2017 12:56:05 -0400 Subject: [PATCH] Use feature detection macros everywhere --- examples/SampleUtils.cpp | 25 +++++++++++++--------- src/backend/opengl/ShaderModuleGL.cpp | 2 +- src/common/CMakeLists.txt | 1 + src/common/Math.cpp | 6 +++--- src/common/Platform.h | 30 +++++++++++++++++++++++++++ src/utils/OpenGLBinding.cpp | 2 +- 6 files changed, 51 insertions(+), 15 deletions(-) create mode 100644 src/common/Platform.h diff --git a/examples/SampleUtils.cpp b/examples/SampleUtils.cpp index d89472817b..650fdfd287 100644 --- a/examples/SampleUtils.cpp +++ b/examples/SampleUtils.cpp @@ -12,14 +12,17 @@ // See the License for the specific language governing permissions and // limitations under the License. +#include "common/Platform.h" #include "utils/BackendBinding.h" -#include "../src/wire/TerribleCommandBuffer.h" +#include "wire/TerribleCommandBuffer.h" // Include Windows.h before GLFW to avoid a redefinition of APIENTRY -#ifdef _WIN32 +#if defined(NXT_PLATFORM_WINDOWS) #include +#elif defined(NXT_PLATFORM_POSIX) + #include #else - #include + #error "Unsupported platform." #endif #include @@ -176,14 +179,16 @@ void DoSwapBuffers() { binding->SwapBuffers(); } -#ifdef _WIN32 -void USleep(uint64_t usecs) { - Sleep(static_cast(usecs / 1000)); -} +#if defined(NXT_PLATFORM_WINDOWS) + void USleep(uint64_t usecs) { + Sleep(static_cast(usecs / 1000)); + } +#elif defined(NXT_PLATFORM_POSIX) + void USleep(uint64_t usecs) { + usleep(usecs); + } #else -void USleep(uint64_t usecs) { - usleep(usecs); -} + #error "Implement USleep for your platform." #endif bool ShouldQuit() { diff --git a/src/backend/opengl/ShaderModuleGL.cpp b/src/backend/opengl/ShaderModuleGL.cpp index 8f3e0c8569..7e7360f944 100644 --- a/src/backend/opengl/ShaderModuleGL.cpp +++ b/src/backend/opengl/ShaderModuleGL.cpp @@ -49,7 +49,7 @@ namespace opengl { spirv_cross::CompilerGLSL::Options options; // TODO(cwallez@chromium.org): discover the backing context version and use that. -#if defined(__APPLE__) +#if defined(NXT_PLATFORM_APPLE) options.version = 410; #else options.version = 450; diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index de20bb2a84..2135389bc1 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -21,6 +21,7 @@ list(APPEND COMMON_SOURCES ${COMMON_DIR}/Compiler.h ${COMMON_DIR}/Math.cpp ${COMMON_DIR}/Math.h + ${COMMON_DIR}/Platform.h ${COMMON_DIR}/Serial.h ${COMMON_DIR}/SerialQueue.h ) diff --git a/src/common/Math.cpp b/src/common/Math.cpp index 0c6a7a6c3b..6c542c7f63 100644 --- a/src/common/Math.cpp +++ b/src/common/Math.cpp @@ -16,13 +16,13 @@ #include "common/Assert.h" -#if defined(_WIN32) || defined(_WIN64) +#if defined(NXT_COMPILER_MSVC) #include #endif uint32_t ScanForward(uint32_t bits) { ASSERT(bits != 0); - #if defined(_WIN32) || defined(_WIN64) + #if defined(NXT_COMPILER_MSVC) unsigned long firstBitIndex = 0ul; unsigned char ret = _BitScanForward(&firstBitIndex, bits); ASSERT(ret != 0); @@ -34,7 +34,7 @@ uint32_t ScanForward(uint32_t bits) { uint32_t Log2(uint32_t value) { ASSERT(value != 0); - #if defined(_WIN32) || defined(_WIN64) + #if defined(NXT_COMPILER_MSVC) unsigned long firstBitIndex = 0ul; unsigned char ret = _BitScanReverse(&firstBitIndex, value); ASSERT(ret != 0); diff --git a/src/common/Platform.h b/src/common/Platform.h new file mode 100644 index 0000000000..1c7c8454cb --- /dev/null +++ b/src/common/Platform.h @@ -0,0 +1,30 @@ +// Copyright 2017 The NXT Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef COMMON_PLATFORM_H_ +#define COMMON_PLATFORM_H_ + +#if defined(_WIN32) || defined(_WIN64) + #define NXT_PLATFORM_WINDOWS 1 +#elif defined(__linux__) + #define NXT_PLATFORM_LINUX 1 + #define NXT_PLATFORM_POSIX 1 +#elif defined(__APPLE__) + #define NXT_PLATFORM_APPLE 1 + #define NXT_PLATFORM_POSIX 1 +#else + #error "Unsupported platform." +#endif + +#endif // COMMON_PLATFORM_H_ diff --git a/src/utils/OpenGLBinding.cpp b/src/utils/OpenGLBinding.cpp index cc01fbe8b5..c2f67b68ee 100644 --- a/src/utils/OpenGLBinding.cpp +++ b/src/utils/OpenGLBinding.cpp @@ -29,7 +29,7 @@ namespace utils { class OpenGLBinding : public BackendBinding { public: void SetupGLFWWindowHints() override { - #ifdef __APPLE__ + #if defined(NXT_PLATFORM_APPLE) glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1); glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GLFW_TRUE);