cmake: Android requires C99 (#748)

I tried to build c-ares using CMake with the latest Android NDK
(r26/27), but failed as follows.

```
Building C object _deps/c-ares-source-build/src/lib/CMakeFiles/c-ares.dir/Debug/ares__buf.c.o
FAILED: _deps/c-ares-source-build/src/lib/CMakeFiles/c-ares.dir/Debug/ares__buf.c.o 

In file included from c-ares/src/lib/ares__buf.c:27:
In file included from c-ares/include/ares.h:85:
In file included from Android/sdk/ndk/27.0.11718014/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/netinet/in.h:36:
In file included from Android/sdk/ndk/27.0.11718014/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/linux/in.h:231:
In file included from Android/sdk/ndk/27.0.11718014/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android/asm/byteorder.h:12:
In file included from Android/sdk/ndk/27.0.11718014/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/linux/byteorder/little_endian.h:17:
Android/sdk/ndk/27.0.11718014/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/linux/swab.h:28:8: error: unknown type name 'inline'
   28 | static inline __attribute__((__const__)) __u32 __fswahw32(__u32 val) {
      |        ^
Android/sdk/ndk/27.0.11718014/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/linux/swab.h:28:47: error: expected ';' after top level declarator
   28 | static inline __attribute__((__const__)) __u32 __fswahw32(__u32 val) {
      |                                               ^
```

It looks like the NDK recently added C99 code containing `inline`
functions, but c-ares is setting the `C_STANDARD` CMake property to C90.

Fix By: Jiwoo Park (@jimmy-park)
pull/744/head
Jiwoo Park 10 months ago committed by GitHub
parent ebb0a631ef
commit 668a9efdd8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 8
      src/lib/CMakeLists.txt
  2. 8
      src/tools/CMakeLists.txt

@ -36,6 +36,10 @@ IF (CARES_SHARED)
C_STANDARD 90
)
IF (ANDROID)
SET_TARGET_PROPERTIES (${PROJECT_NAME} PROPERTIES C_STANDARD 99)
ENDIF ()
IF (CARES_SYMBOL_HIDING)
SET_TARGET_PROPERTIES (${PROJECT_NAME} PROPERTIES
C_VISIBILITY_PRESET hidden
@ -92,6 +96,10 @@ IF (CARES_STATIC)
C_STANDARD 90
)
IF (ANDROID)
SET_TARGET_PROPERTIES (${LIBNAME} PROPERTIES C_STANDARD 99)
ENDIF ()
IF (CARES_STATIC_PIC)
SET_TARGET_PROPERTIES (${LIBNAME} PROPERTIES POSITION_INDEPENDENT_CODE True)
ENDIF ()

@ -19,6 +19,10 @@ IF (CARES_BUILD_TOOLS)
C_STANDARD 90
)
IF (ANDROID)
SET_TARGET_PROPERTIES (ahost PROPERTIES C_STANDARD 99)
ENDIF ()
TARGET_COMPILE_DEFINITIONS (ahost PRIVATE HAVE_CONFIG_H=1 CARES_NO_DEPRECATED)
TARGET_LINK_LIBRARIES (ahost PRIVATE ${PROJECT_NAME})
IF (CARES_INSTALL)
@ -40,6 +44,10 @@ IF (CARES_BUILD_TOOLS)
C_STANDARD 90
)
IF (ANDROID)
SET_TARGET_PROPERTIES (adig PROPERTIES C_STANDARD 99)
ENDIF ()
TARGET_COMPILE_DEFINITIONS (adig PRIVATE HAVE_CONFIG_H=1 CARES_NO_DEPRECATED)
TARGET_LINK_LIBRARIES (adig PRIVATE ${PROJECT_NAME})
IF (CARES_INSTALL)

Loading…
Cancel
Save