Work around a conflict between gcc 8.0 and swig 3.0

The swig 3.0 generated python wrappers trigger a warning converted into an error issued
by gcc 8.0 for using strncpy as follows:
strncpy(buff, "swig_ptr: ", 10);
The reason is this call will truncate the trailing null byte from the string.
This appears to have been fixed in swig master already but that's not released yet
so let disable the warning when compiling the swig wrappers until it is.
This commit is contained in:
Geert Janssens
2018-05-09 17:20:13 +02:00
parent 27c1df30af
commit 1f3cf845c4
5 changed files with 22 additions and 1 deletions

View File

@@ -524,8 +524,13 @@ endif (Boost_FOUND)
# Compiler flags
if (APPLE)
include (CheckCCompilerFlag)
check_c_compiler_flag(-Wstringop-truncation have_stringop_truncation)
if (have_stringop_truncation)
set(HAVE_STRINGOP_TRUNCATION TRUE)
endif()
if (APPLE)
include (CheckCxxCompilerFlag)
check_cxx_compiler_flag(-Wno-unused-local-typedef, have_wno_ult)
if (have_wno_ult)

View File

@@ -66,11 +66,17 @@ if(WITH_PYTHON)
target_link_libraries(gnucash_core_c gncmod-app-utils gncmod-engine gnc-module ${GLIB_LIBS} ${PYTHON_LIBRARIES})
set_target_properties(gnucash_core_c PROPERTIES PREFIX "_")
target_compile_options(gnucash_core_c PRIVATE -Wno-implicit -Wno-missing-prototypes -Wno-declaration-after-statement -Wno-missing-declarations)
if (HAVE_STRINGOP_TRUNCATION)
target_compile_options(gnucash_core_c PRIVATE -Wno-error=stringop-truncation)
endif()
add_executable(sqlite3test EXCLUDE_FROM_ALL sqlite3test.c ${SWIG_GNUCASH_CORE_C})
target_link_libraries(sqlite3test gncmod-app-utils gncmod-engine gnc-module ${GLIB_LIBS} ${PYTHON_LIBRARIES})
target_include_directories(sqlite3test PRIVATE ${gnucash_core_c_INCLUDE_DIRS})
target_compile_options(sqlite3test PRIVATE -Wno-implicit -Wno-missing-prototypes -Wno-declaration-after-statement -Wno-missing-declarations)
if (HAVE_STRINGOP_TRUNCATION)
target_compile_options(sqlite3test PRIVATE -Wno-error=stringop-truncation)
endif()
add_test(NAME sqlite3test COMMAND sqlite3test)
add_dependencies(check sqlite3test)

View File

@@ -48,6 +48,9 @@ if (WITH_PYTHON)
target_link_libraries(unittest_support test-core ${PYTHON_LIBRARIES})
target_include_directories(unittest_support PRIVATE ${PYTHON_INCLUDE_DIRS})
set_target_properties(unittest_support PROPERTIES PREFIX "_")
if (HAVE_STRINGOP_TRUNCATION)
target_compile_options(unittest_support PRIVATE -Wno-error=stringop-truncation)
endif()
endif()
set(test_core_SCHEME unittest-support.scm)

View File

@@ -116,6 +116,9 @@ if (WITH_PYTHON)
target_link_libraries(sw_app_utils gncmod-app-utils ${app_utils_ALL_LIBRARIES} ${PYTHON_LIBRARIES})
set_target_properties(sw_app_utils PROPERTIES PREFIX "_")
if (HAVE_STRINGOP_TRUNCATION)
target_compile_options(sw_app_utils PRIVATE -Wno-error=stringop-truncation)
endif()
target_include_directories (sw_app_utils
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}

View File

@@ -171,6 +171,10 @@ if (WITH_PYTHON)
target_link_libraries(sw_core_utils gnc-core-utils ${core_utils_ALL_LIBRARIES} ${PYTHON_LIBRARIES})
set_target_properties(sw_core_utils PROPERTIES PREFIX "_")
if (HAVE_STRINGOP_TRUNCATION)
target_compile_options(sw_core_utils PRIVATE -Wno-error=stringop-truncation)
endif()
target_include_directories (sw_core_utils
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${core_utils_ALL_INCLUDES} ${PYTHON_INCLUDE_DIRS}