Skip to content

Commit e1a4a8e

Browse files
committed
cmake: enforce C90 standard
While the aim of libgit2 was to conform to C90 code, we never instructed the compiler to enforce C90 compliance. Thus, quite a few violations were able to get into our code base, which have been removed with the previous commits. As we are now able to build libgit2 with C90 enforced, we can set the C_STANDARD property for our own build targets. Note that we explicitly avoid setting the C standard for our third-party dependencies. At least the zlib target does not build with C90 enforced, and we do not want to fix them by deviating from upstream. Thus we simply enforce no standard for them.
1 parent d19381e commit e1a4a8e

File tree

4 files changed

+7
-1
lines changed

4 files changed

+7
-1
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ ELSE ()
196196
ENABLE_WARNINGS(extra)
197197

198198
IF (CMAKE_SYSTEM_NAME MATCHES "(Solaris|SunOS)")
199-
SET(CMAKE_C_FLAGS "-std=c99 -D_POSIX_C_SOURCE=200112L -D__EXTENSIONS__ -D_POSIX_PTHREAD_SEMANTICS ${CMAKE_C_FLAGS}")
199+
SET(CMAKE_C_FLAGS "-D_POSIX_C_SOURCE=200112L -D__EXTENSIONS__ -D_POSIX_PTHREAD_SEMANTICS ${CMAKE_C_FLAGS}")
200200
ENDIF()
201201

202202
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG -O0")

examples/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ INCLUDE_DIRECTORIES(SYSTEM ${LIBGIT2_SYSTEM_INCLUDES})
33

44
FILE(GLOB_RECURSE SRC_EXAMPLE_GIT2 network/*.c network/*.h common.?)
55
ADD_EXECUTABLE(cgit2 ${SRC_EXAMPLE_GIT2})
6+
SET_TARGET_PROPERTIES(cgit2 PROPERTIES C_STANDARD 90)
7+
68
IF(WIN32 OR ANDROID)
79
TARGET_LINK_LIBRARIES(cgit2 git2)
810
ELSE()
@@ -15,5 +17,6 @@ FOREACH(src_app ${SRC_EXAMPLE_APPS})
1517
IF(NOT ${app_name} STREQUAL "common")
1618
ADD_EXECUTABLE(${app_name} ${src_app} "common.c")
1719
TARGET_LINK_LIBRARIES(${app_name} git2)
20+
SET_TARGET_PROPERTIES(${app_name} PROPERTIES C_STANDARD 90)
1821
ENDIF()
1922
ENDFOREACH()

src/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,7 @@ CONFIGURE_FILE(features.h.in git2/sys/features.h)
450450
SET(LIBGIT2_SOURCES ${SRC_H} ${SRC_GIT2} ${SRC_OS} ${SRC_SSH} ${SRC_SHA1})
451451

452452
ADD_LIBRARY(git2internal OBJECT ${LIBGIT2_SOURCES})
453+
SET_TARGET_PROPERTIES(git2internal PROPERTIES C_STANDARD 90)
453454
IDE_SPLIT_SOURCES(git2internal)
454455
LIST(APPEND LIBGIT2_OBJECTS $<TARGET_OBJECTS:git2internal>)
455456

@@ -480,6 +481,7 @@ ENDIF()
480481
ADD_LIBRARY(git2 ${WIN_RC} ${LIBGIT2_OBJECTS})
481482
TARGET_LINK_LIBRARIES(git2 ${LIBGIT2_LIBS})
482483

484+
SET_TARGET_PROPERTIES(git2 PROPERTIES C_STANDARD 90)
483485
SET_TARGET_PROPERTIES(git2 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${libgit2_BINARY_DIR})
484486
SET_TARGET_PROPERTIES(git2 PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${libgit2_BINARY_DIR})
485487
SET_TARGET_PROPERTIES(git2 PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${libgit2_BINARY_DIR})

tests/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ INCLUDE_DIRECTORIES(SYSTEM ${LIBGIT2_SYSTEM_INCLUDES})
3636

3737
ADD_EXECUTABLE(libgit2_clar ${SRC_CLAR} ${SRC_TEST} ${LIBGIT2_OBJECTS})
3838

39+
SET_TARGET_PROPERTIES(libgit2_clar PROPERTIES C_STANDARD 90)
3940
SET_TARGET_PROPERTIES(libgit2_clar PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${libgit2_BINARY_DIR})
4041

4142
IF (${CMAKE_VERSION} VERSION_LESS 2.8.12)

0 commit comments

Comments
 (0)