Skip to content

Commit

Permalink
Work around a conflict between gcc 8.0 and swig 3.0
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
gjanssens committed May 9, 2018
1 parent 27c1df3 commit 1f3cf84
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 1 deletion.
7 changes: 6 additions & 1 deletion CMakeLists.txt
Expand Up @@ -524,8 +524,13 @@ endif (Boost_FOUND)

# Compiler flags

include (CheckCCompilerFlag)
check_c_compiler_flag(-Wstringop-truncation have_stringop_truncation)
if (have_stringop_truncation)
set(HAVE_STRINGOP_TRUNCATION TRUE)
endif()

if (APPLE)
include (CheckCCompilerFlag)
include (CheckCxxCompilerFlag)
check_cxx_compiler_flag(-Wno-unused-local-typedef, have_wno_ult)
if (have_wno_ult)
Expand Down
6 changes: 6 additions & 0 deletions bindings/python/CMakeLists.txt
Expand Up @@ -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)
Expand Down
3 changes: 3 additions & 0 deletions common/test-core/CMakeLists.txt
Expand Up @@ -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)
Expand Down
3 changes: 3 additions & 0 deletions libgnucash/app-utils/CMakeLists.txt
Expand Up @@ -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}
Expand Down
4 changes: 4 additions & 0 deletions libgnucash/core-utils/CMakeLists.txt
Expand Up @@ -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}
Expand Down

0 comments on commit 1f3cf84

Please sign in to comment.