From d9c894ba932de7ae2bc2d3c0f609cdcb10c094ed Mon Sep 17 00:00:00 2001
From: Simon Morlat <simon.morlat@linphone.org>
Date: Thu, 31 Jan 2019 14:53:00 +0100
Subject: [PATCH] Fix compilation issue. -std=c99 is too strict, as it excludes
 definition of essential structures such as struct addrinfo.

---
 CMakeLists.txt | 347 +++++++++++++++++++++++++------------------------
 1 file changed, 175 insertions(+), 172 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 10aca33..f54e59a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,172 +1,175 @@
-############################################################################
-# CMakeLists.txt
-# Copyright (C) 2017  Belledonne Communications, Grenoble France
-#
-############################################################################
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
-#
-############################################################################
-include(GNUInstallDirs)
-include(CheckSymbolExists)
-include(CheckLibraryExists)
-include(CMakePushCheckState)
-include(CMakePackageConfigHelpers)
-
-cmake_minimum_required(VERSION 3.0)
-project(lime VERSION 0.0.1 LANGUAGES CXX C)
-
-set(LIME_SO_VERSION "0")
-set(LIME_VERSION ${PROJECT_VERSION})
-
-option(ENABLE_SHARED "Build shared library." ON)
-option(ENABLE_STATIC "Build static library." ON)
-option(ENABLE_STRICT "Build with strict compile options." YES)
-option(ENABLE_CURVE25519 "Enable support of Curve 25519." YES)
-option(ENABLE_CURVE448 "Enable support of Curve 448(goldilock)." YES)
-option(ENABLE_UNIT_TESTS "Enable compilation of unit tests." YES)
-option(ENABLE_PROFILING "Enable profiling, GCC only" NO)
-option(ENABLE_C_INTERFACE "Enable support of C89 foreign function interface" NO)
-
-list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
-
-if(NOT CPACK_GENERATOR AND NOT CMAKE_INSTALL_RPATH AND CMAKE_INSTALL_PREFIX)
-	set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR})
-	message(STATUS "Setting install rpath to ${CMAKE_INSTALL_RPATH}")
-endif()
-
-if(LINPHONE_BUILDER_GROUP_EXTERNAL_SOURCE_PATH_BUILDERS)
-	set(BcToolbox_FIND_COMPONENTS tester)
-	include("${EP_bctoolbox_CONFIG_DIR}/BcToolboxConfig.cmake")
-else()
-	find_package(BcToolbox 0.5.1 REQUIRED OPTIONAL_COMPONENTS tester)
-endif()
-
-find_package(Soci REQUIRED)
-
-include_directories(
-	include/
-	src/
-	${CMAKE_CURRENT_BINARY_DIR}
-)
-if(MSVC)
-	include_directories(${MSVC_INCLUDE_DIR})
-endif()
-
-set(LIME_INCLUDE_DIRS
-	${PROJECT_SOURCE_DIR}/include
-)
-
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
-set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/config.h PROPERTIES GENERATED ON)
-
-set(LIME_CPPFLAGS ${BCTOOLBOX_CPPFLAGS})
-if(LIME_CPPFLAGS)
-	list(REMOVE_DUPLICATES LIME_CPPFLAGS)
-	add_definitions(${LIME_CPPFLAGS})
-endif()
-add_definitions("-DLIME_EXPORTS")
-
-set(STRICT_OPTIONS_C)
-set(STRICT_OPTIONS_CPP )
-set(STRICT_OPTIONS_CXX )
-set(STRICT_OPTIONS_OBJC )
-if(MSVC)
-	if(ENABLE_STRICT)
-		list(APPEND STRICT_OPTIONS_CPP "/WX")
-	endif()
-	# avoid conflicts with std::min and std::max
-	add_definitions("-DNOMINMAX")
-else()
-	if (ENABLE_PROFILING)
-		list(APPEND STRICT_OPTIONS_CXX "-g -pg")
-	endif()
-        list(APPEND STRICT_OPTIONS_CXX "-std=c++11")
-        #list(APPEND STRICT_OPTIONS_CPP "-Wall" "-Wuninitialized" "-Wno-error=deprecated-declarations") # turn off deprecated-declaration warning to avoid being flooded by soci.h
-	list(APPEND STRICT_OPTIONS_CPP "-Wall" "-Wuninitialized" "-Wno-deprecated-declarations" "-Wno-missing-field-initializers")
-	if(ENABLE_C_INTERFACE)
-		list(APPEND STRICT_OPTIONS_C "-std=c99")
-	endif()
-	if(CMAKE_C_COMPILER_ID STREQUAL "Clang")
-		list(APPEND STRICT_OPTIONS_CPP "-Qunused-arguments" "-Wno-array-bounds")
-	endif()
-	if(APPLE)
-		list(APPEND STRICT_OPTIONS_CPP "-Wno-error=unknown-warning-option" "-Qunused-arguments" "-Wno-tautological-compare" "-Wno-unused-function" "-Wno-array-bounds")
-	endif()
-	if(ENABLE_STRICT)
-		list(APPEND STRICT_OPTIONS_CPP "-Werror" "-Wextra" "-Wno-unused-parameter" "-fno-strict-aliasing")
-	endif()
-endif()
-if(STRICT_OPTIONS_CPP)
-	list(REMOVE_DUPLICATES STRICT_OPTIONS_CPP)
-endif()
-
-if(LINPHONE_BUILDER_GROUP_EXTERNAL_SOURCE_PATH_BUILDERS)
-	set(EXPORT_TARGETS_NAME "LinphoneBuilder")
-else()
-	set(EXPORT_TARGETS_NAME "lime")
-endif()
-
-if (ENABLE_CURVE25519)
-	add_definitions("-DEC25519_ENABLED")
-	message(STATUS "Support Curve 25519")
-endif()
-
-if (ENABLE_CURVE448)
-	add_definitions("-DEC448_ENABLED")
-	message(STATUS "Support Curve 448")
-endif()
-
-if(ENABLE_C_INTERFACE)
-	add_definitions("-DFFI_ENABLED")
-	message(STATUS "Provide C89 interface")
-endif()
-
-add_subdirectory(include)
-add_subdirectory(src)
-if(ENABLE_UNIT_TESTS AND BCTOOLBOX_TESTER_FOUND)
-        enable_testing()
-	add_subdirectory(tester)
-endif()
-
-export(EXPORT ${EXPORT_TARGETS_NAME}Targets
-	FILE "${CMAKE_CURRENT_BINARY_DIR}/LimeTargets.cmake"
-)
-configure_file(cmake/LimeConfig.cmake.in
-	"${CMAKE_CURRENT_BINARY_DIR}/LimeConfig.cmake"
-	@ONLY
-)
-set(ConfigPackageLocation "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/cmake")
-install(EXPORT ${EXPORT_TARGETS_NAME}Targets
-	FILE LimeTargets.cmake
-	DESTINATION ${ConfigPackageLocation}
-)
-install(FILES
-	"${CMAKE_CURRENT_BINARY_DIR}/LimeConfig.cmake"
-	DESTINATION ${ConfigPackageLocation}
-)
-
-# Doxygen
-find_package(Doxygen)
-if (DOXYGEN_FOUND)
-	configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
-	add_custom_target(doc
-		${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
-		WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
-		COMMENT "Generating API documentation with Doxygen" VERBATIM
-)
-endif()
-
-add_subdirectory(build)
+############################################################################
+# CMakeLists.txt
+# Copyright (C) 2017  Belledonne Communications, Grenoble France
+#
+############################################################################
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+#
+############################################################################
+include(GNUInstallDirs)
+include(CheckSymbolExists)
+include(CheckLibraryExists)
+include(CMakePushCheckState)
+include(CMakePackageConfigHelpers)
+
+cmake_minimum_required(VERSION 3.0)
+project(lime VERSION 0.0.1 LANGUAGES CXX C)
+
+set(LIME_SO_VERSION "0")
+set(LIME_VERSION ${PROJECT_VERSION})
+
+option(ENABLE_SHARED "Build shared library." ON)
+option(ENABLE_STATIC "Build static library." ON)
+option(ENABLE_STRICT "Build with strict compile options." YES)
+option(ENABLE_CURVE25519 "Enable support of Curve 25519." YES)
+option(ENABLE_CURVE448 "Enable support of Curve 448(goldilock)." YES)
+option(ENABLE_UNIT_TESTS "Enable compilation of unit tests." YES)
+option(ENABLE_PROFILING "Enable profiling, GCC only" NO)
+option(ENABLE_C_INTERFACE "Enable support of C89 foreign function interface" NO)
+
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+
+if(NOT CPACK_GENERATOR AND NOT CMAKE_INSTALL_RPATH AND CMAKE_INSTALL_PREFIX)
+	set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR})
+	message(STATUS "Setting install rpath to ${CMAKE_INSTALL_RPATH}")
+endif()
+
+if(LINPHONE_BUILDER_GROUP_EXTERNAL_SOURCE_PATH_BUILDERS)
+	set(BcToolbox_FIND_COMPONENTS tester)
+	include("${EP_bctoolbox_CONFIG_DIR}/BcToolboxConfig.cmake")
+else()
+	find_package(BcToolbox 0.5.1 REQUIRED OPTIONAL_COMPONENTS tester)
+endif()
+
+find_package(Soci REQUIRED)
+
+include_directories(
+	include/
+	src/
+	${CMAKE_CURRENT_BINARY_DIR}
+)
+if(MSVC)
+	include_directories(${MSVC_INCLUDE_DIR})
+endif()
+
+set(LIME_INCLUDE_DIRS
+	${PROJECT_SOURCE_DIR}/include
+)
+
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
+set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/config.h PROPERTIES GENERATED ON)
+
+set(LIME_CPPFLAGS ${BCTOOLBOX_CPPFLAGS})
+if(LIME_CPPFLAGS)
+	list(REMOVE_DUPLICATES LIME_CPPFLAGS)
+	add_definitions(${LIME_CPPFLAGS})
+endif()
+add_definitions("-DLIME_EXPORTS")
+
+set(STRICT_OPTIONS_C)
+set(STRICT_OPTIONS_CPP )
+set(STRICT_OPTIONS_CXX )
+set(STRICT_OPTIONS_OBJC )
+
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+set(CMAKE_C_STANDARD 99)
+
+if(MSVC)
+	if(ENABLE_STRICT)
+		list(APPEND STRICT_OPTIONS_CPP "/WX")
+	endif()
+	# avoid conflicts with std::min and std::max
+	add_definitions("-DNOMINMAX")
+else()
+	if (ENABLE_PROFILING)
+		list(APPEND STRICT_OPTIONS_CXX "-g -pg")
+	endif()
+        #list(APPEND STRICT_OPTIONS_CPP "-Wall" "-Wuninitialized" "-Wno-error=deprecated-declarations") # turn off deprecated-declaration warning to avoid being flooded by soci.h
+	list(APPEND STRICT_OPTIONS_CPP "-Wall" "-Wuninitialized" "-Wno-deprecated-declarations" "-Wno-missing-field-initializers")
+	
+	if(CMAKE_C_COMPILER_ID STREQUAL "Clang")
+		list(APPEND STRICT_OPTIONS_CPP "-Qunused-arguments" "-Wno-array-bounds")
+	endif()
+	if(APPLE)
+		list(APPEND STRICT_OPTIONS_CPP "-Wno-error=unknown-warning-option" "-Qunused-arguments" "-Wno-tautological-compare" "-Wno-unused-function" "-Wno-array-bounds")
+	endif()
+	if(ENABLE_STRICT)
+		list(APPEND STRICT_OPTIONS_CPP "-Werror" "-Wextra" "-Wno-unused-parameter" "-fno-strict-aliasing")
+	endif()
+endif()
+if(STRICT_OPTIONS_CPP)
+	list(REMOVE_DUPLICATES STRICT_OPTIONS_CPP)
+endif()
+
+if(LINPHONE_BUILDER_GROUP_EXTERNAL_SOURCE_PATH_BUILDERS)
+	set(EXPORT_TARGETS_NAME "LinphoneBuilder")
+else()
+	set(EXPORT_TARGETS_NAME "lime")
+endif()
+
+if (ENABLE_CURVE25519)
+	add_definitions("-DEC25519_ENABLED")
+	message(STATUS "Support Curve 25519")
+endif()
+
+if (ENABLE_CURVE448)
+	add_definitions("-DEC448_ENABLED")
+	message(STATUS "Support Curve 448")
+endif()
+
+if(ENABLE_C_INTERFACE)
+	add_definitions("-DFFI_ENABLED")
+	message(STATUS "Provide C89 interface")
+endif()
+
+add_subdirectory(include)
+add_subdirectory(src)
+if(ENABLE_UNIT_TESTS AND BCTOOLBOX_TESTER_FOUND)
+        enable_testing()
+	add_subdirectory(tester)
+endif()
+
+export(EXPORT ${EXPORT_TARGETS_NAME}Targets
+	FILE "${CMAKE_CURRENT_BINARY_DIR}/LimeTargets.cmake"
+)
+configure_file(cmake/LimeConfig.cmake.in
+	"${CMAKE_CURRENT_BINARY_DIR}/LimeConfig.cmake"
+	@ONLY
+)
+set(ConfigPackageLocation "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/cmake")
+install(EXPORT ${EXPORT_TARGETS_NAME}Targets
+	FILE LimeTargets.cmake
+	DESTINATION ${ConfigPackageLocation}
+)
+install(FILES
+	"${CMAKE_CURRENT_BINARY_DIR}/LimeConfig.cmake"
+	DESTINATION ${ConfigPackageLocation}
+)
+
+# Doxygen
+find_package(Doxygen)
+if (DOXYGEN_FOUND)
+	configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
+	add_custom_target(doc
+		${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
+		WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+		COMMENT "Generating API documentation with Doxygen" VERBATIM
+)
+endif()
+
+add_subdirectory(build)
-- 
GitLab