Skip to content

Commit

Permalink
Merge pull request #615 from ferdnyc/fix-swig-flags
Browse files Browse the repository at this point in the history
Propagate library defs to swig
  • Loading branch information
ferdnyc committed Jan 13, 2021
2 parents 8bc959b + 8dfaf74 commit 2563c3c
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 19 deletions.
36 changes: 29 additions & 7 deletions bindings/python/CMakeLists.txt
Expand Up @@ -58,20 +58,42 @@ endif()
set_property(SOURCE openshot.i PROPERTY CPLUSPLUS ON)
set_property(SOURCE openshot.i PROPERTY SWIG_MODULE_NAME openshot)

# Set the SWIG_FLAGS from the library target, IFF its
# COMPILE_DEFINITIONS property is set (in practice, always true)
if(CMAKE_VERSION VERSION_GREATER 3.15)
set(_defs
$<REMOVE_DUPLICATES:$<TARGET_PROPERTY:openshot,COMPILE_DEFINITIONS>>)
elseif(CMAKE_VERSION VERSION_GREATER 3.12)
set(_defs $<TARGET_PROPERTY:openshot,COMPILE_DEFINITIONS>)
endif()
if(DEFINED _defs)
set_property(SOURCE openshot.i PROPERTY
COMPILE_DEFINITIONS ${_defs})
else()
get_property(_defs TARGET openshot PROPERTY COMPILE_DEFINITIONS)
foreach(_d ${_defs})
list(APPEND _flags -D${_d})
endforeach()
set_property(SOURCE openshot.i PROPERTY
SWIG_FLAGS ${_flags})
endif()

### Suppress a ton of warnings in the generated SWIG C++ code
set(SWIG_CXX_FLAGS "-Wno-unused-variable -Wno-unused-function \
-Wno-deprecated-copy -Wno-class-memaccess -Wno-cast-function-type \
-Wno-unused-parameter -Wno-catch-value -Wno-sign-compare -Wno-ignored-qualifiers")
separate_arguments(sw_flags UNIX_COMMAND ${SWIG_CXX_FLAGS})
set_property(SOURCE openshot.i PROPERTY GENERATED_COMPILE_OPTIONS ${sw_flags})

### Take include dirs from target, automatically if possible
if (CMAKE_VERSION VERSION_GREATER 3.13)
set_property(SOURCE openshot.i PROPERTY USE_TARGET_INCLUDE_DIRECTORIES True)
elseif (CMAKE_VERSION VERSION_GREATER 3.12)
set_property(SOURCE openshot.i PROPERTY
INCLUDE_DIRECTORIES $<TARGET_PROPERTY:openshot,INCLUDE_DIRECTORIES>)
endif ()
### Take include dirs from target
if(CMAKE_VERSION VERSION_GREATER 3.15)
set(_inc $<REMOVE_DUPLICATES:$<TARGET_PROPERTY:openshot,INCLUDE_DIRECTORIES>>)
elseif(CMAKE_VERSION VERSION_GREATER 3.12)
set(_inc $<TARGET_PROPERTY:openshot,INCLUDE_DIRECTORIES>)
endif()
if (DEFINED _inc)
set_property(SOURCE openshot.i PROPERTY INCLUDE_DIRECTORIES ${_inc})
endif()

### Add the SWIG interface file (which defines all the SWIG methods)
if (CMAKE_VERSION VERSION_LESS 3.8.0)
Expand Down
36 changes: 29 additions & 7 deletions bindings/ruby/CMakeLists.txt
Expand Up @@ -74,20 +74,42 @@ endif()
set_property(SOURCE openshot.i PROPERTY CPLUSPLUS ON)
set_property(SOURCE openshot.i PROPERTY SWIG_MODULE_NAME openshot)

# Set the SWIG_FLAGS from the library target, IFF its
# COMPILE_DEFINITIONS property is set (in practice, always true)
if(CMAKE_VERSION VERSION_GREATER 3.15)
set(_defs
$<REMOVE_DUPLICATES:$<TARGET_PROPERTY:openshot,COMPILE_DEFINITIONS>>)
elseif(CMAKE_VERSION VERSION_GREATER 3.12)
set(_defs $<TARGET_PROPERTY:openshot,COMPILE_DEFINITIONS>)
endif()
if(DEFINED _defs)
set_property(SOURCE openshot.i PROPERTY
COMPILE_DEFINITIONS ${_defs})
else()
get_property(_defs TARGET openshot PROPERTY COMPILE_DEFINITIONS)
foreach(_d ${_defs})
list(APPEND _flags -D${_d})
endforeach()
set_property(SOURCE openshot.i PROPERTY
SWIG_FLAGS ${_flags})
endif()

### Suppress a ton of warnings in the generated SWIG C++ code
set(SWIG_CXX_FLAGS "-Wno-unused-variable -Wno-unused-function \
-Wno-deprecated-copy -Wno-class-memaccess -Wno-cast-function-type \
-Wno-unused-parameter -Wno-catch-value -Wno-sign-compare -Wno-ignored-qualifiers")
separate_arguments(sw_flags UNIX_COMMAND ${SWIG_CXX_FLAGS})
set_property(SOURCE openshot.i PROPERTY GENERATED_COMPILE_OPTIONS ${sw_flags})

### Take include dirs from target, automatically if possible
if (CMAKE_VERSION VERSION_GREATER 3.13)
set_property(SOURCE openshot.i PROPERTY USE_TARGET_INCLUDE_DIRECTORIES True)
else ()
set_property(SOURCE openshot.i PROPERTY
INCLUDE_DIRECTORIES $<TARGET_PROPERTY:openshot,INCLUDE_DIRECTORIES>)
endif ()
### Take include dirs from target
if(CMAKE_VERSION VERSION_GREATER 3.15)
set(_inc $<REMOVE_DUPLICATES:$<TARGET_PROPERTY:openshot,INCLUDE_DIRECTORIES>>)
elseif(CMAKE_VERSION VERSION_GREATER 3.12)
set(_inc $<TARGET_PROPERTY:openshot,INCLUDE_DIRECTORIES>)
endif()
if (DEFINED _inc)
set_property(SOURCE openshot.i PROPERTY INCLUDE_DIRECTORIES ${_inc})
endif()

### Add the SWIG interface file (which defines all the SWIG methods)
if (CMAKE_VERSION VERSION_LESS 3.8.0)
Expand Down
2 changes: 2 additions & 0 deletions cmake/Modules/FindResvg.cmake
Expand Up @@ -50,6 +50,7 @@ endif()
find_path(Resvg_INCLUDE_DIRS
ResvgQt.h
PATHS
${Resvg_ROOT}
${RESVGDIR}
${RESVGDIR}/include
$ENV{RESVGDIR}
Expand All @@ -65,6 +66,7 @@ find_path(Resvg_INCLUDE_DIRS
find_library(Resvg_LIBRARIES
NAMES resvg
PATHS
${Resvg_ROOT}
${RESVGDIR}
${RESVGDIR}/lib
$ENV{RESVGDIR}
Expand Down
7 changes: 2 additions & 5 deletions src/CMakeLists.txt
Expand Up @@ -212,7 +212,6 @@ if(ImageMagick_FOUND)

# define a preprocessor macro (used in the C++ source)
target_compile_definitions(openshot PUBLIC USE_IMAGEMAGICK=1)
list(APPEND CMAKE_SWIG_FLAGS -DUSE_IMAGEMAGICK=1)

# Link with ImageMagick library
target_link_libraries(openshot PUBLIC ImageMagick::Magick++)
Expand Down Expand Up @@ -346,8 +345,7 @@ if (TARGET Resvg::Resvg)
#include_directories(${Resvg_INCLUDE_DIRS})
target_link_libraries(openshot PUBLIC Resvg::Resvg)

target_compile_definitions(openshot PUBLIC -DUSE_RESVG=1)
list(APPEND CMAKE_SWIG_FLAGS -DUSE_RESVG=1)
target_compile_definitions(openshot PUBLIC USE_RESVG=1)

set(HAVE_RESVG TRUE CACHE BOOL "Building with Resvg support" FORCE)
mark_as_advanced(HAVE_RESVG)
Expand All @@ -373,8 +371,7 @@ if (ENABLE_BLACKMAGIC)
target_link_libraries(openshot PUBLIC ${BLACKMAGIC_LIBRARY_DIR})

# define a preprocessor macro (used in the C++)
target_compile_definitions(openshot PUBLIC -DUSE_BLACKMAGIC=1)
list(APPEND CMAKE_SWIG_FLAGS -DUSE_BLACKMAGIC=1)
target_compile_definitions(openshot PUBLIC USE_BLACKMAGIC=1)
endif()
endif()

Expand Down

0 comments on commit 2563c3c

Please sign in to comment.