From a512ee54633e59c5f2f4f1ecfa65e06640698cd0 Mon Sep 17 00:00:00 2001 From: Roy Qu Date: Mon, 25 Apr 2022 22:31:37 +0800 Subject: [PATCH] make ege compatible with clang --- CMakeLists.txt | 5 +++++ src/ege_head.h | 5 +++++ src/graphics.cpp | 4 ++++ src/logo.cpp | 5 +++++ 4 files changed, 19 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index b0a4fc92..8d3c404a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,8 @@ if (MSVC) message(STATUS "${TARGET_BITS}bit MSVC target: MSVC ${MSVC_VERSION}") elseif (CMAKE_CXX_COMPILER_ID MATCHES "GNU") message(STATUS "${TARGET_BITS}bit GNU target: GCC ${CMAKE_C_COMPILER_VERSION}") +elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang") + message(STATUS "${TARGET_BITS}bit Clang target: Clang ${CMAKE_C_COMPILER_VERSION}") else () if (CMAKE_CXX_COMPILER_ID) message(FATAL_ERROR "Unsupported compiler: ${CMAKE_CXX_COMPILER_ID}") @@ -37,6 +39,9 @@ macro(ege_add_executable name source) if (CMAKE_CXX_COMPILER_ID MATCHES "GNU") target_link_options(${name} PRIVATE -mwindows) + elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang") + target_link_options(${name} + PRIVATE -mwindows) endif () endmacro() diff --git a/src/ege_head.h b/src/ege_head.h index 113c9564..b6a529b7 100644 --- a/src/ege_head.h +++ b/src/ege_head.h @@ -55,6 +55,9 @@ # endif # define COMPILER_VER MSVC_VER SYSBITS # define COMPILER_VER_W EGE_L(MSVC_VER) SYSBITS_W +#elif defined(__clang__) +# define COMPILER_VER "Clang" __clang_version__ SYSBITS +# define COMPILER_VER_W L"Clang" EGE_L(__clang_version__) SYSBITS_W #else # define GCC_VER EGE_TOSTR(__GNUC__) "." EGE_TOSTR(__GNUC_MINOR__) # define GCC_VER_W EGE_L(EGE_TOSTR(__GNUC__)) L"." EGE_L(EGE_TOSTR(__GNUC_MINOR__)) @@ -78,11 +81,13 @@ // MSVC 从 10.0(VS2010)开始有 stdint.h // GCC 从 4.5 开始有 stdint.h +#ifndef __clang__ #if _MSC_VER >= 1600 || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) # include #elif !defined(_MSC_VER) || _MSC_VER > 1300 # include "stdint.h" #endif +#endif #include diff --git a/src/graphics.cpp b/src/graphics.cpp index 7f262300..cd63cd09 100755 --- a/src/graphics.cpp +++ b/src/graphics.cpp @@ -76,14 +76,18 @@ static int g_initoption = INIT_DEFAULT; static HWND g_attach_hwnd = 0; static WNDPROC DefWindowProcFunc = NULL; +#ifndef __clang__ #ifdef __cplusplus extern "C" { #endif +#endif char* getlogodata(); unsigned long getlogodatasize(); +#ifndef __clang__ #ifdef __cplusplus } #endif +#endif float EGE_PRIVATE_GetFPS(int add); DWORD WINAPI messageloopthread(LPVOID lpParameter); diff --git a/src/logo.cpp b/src/logo.cpp index b3e09b93..232cb306 100644 --- a/src/logo.cpp +++ b/src/logo.cpp @@ -1,7 +1,11 @@ +#ifndef __clang__ #ifdef __cplusplus extern "C" { #endif +#else +namespace ege { +#endif static unsigned char logo_res[] = { 255,216,255,224,0,16,74,70,73,70,0,1,1,1,0,96, 0,96,0,0,255,225,3,82,69,120,105,102,0,0,77,77, @@ -979,6 +983,7 @@ unsigned long getlogodatasize() { char* getlogodata() { return (char*)logo_res; } + #ifdef __cplusplus } #endif