diff --git a/.travis.yml b/.travis.yml index 07e30f6..3bafbbc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ language: cpp git: depth: 1 submodules: false - + env: global: - BUILD_FILENAME="build-$TRAVIS_OS_NAME.$TRAVIS_BUILD_NUMBER-$(date '+%Y-%m-%d_%H_%M_%S').tgz" @@ -11,7 +11,7 @@ env: matrix: include: - + - os: linux name: "Synfig Studio Ubuntu 16.04 Xenial (GCC/Autotools)" sudo: required @@ -21,7 +21,17 @@ matrix: before_script: ccache -s script: ./travis.sh after_script: autobuild/synfigrenderer-regression-test.sh - + + - os: linux + name: "Synfig Studio Ubuntu 16.04 Xenial (CMake/Ninja)" + env: CMAKE=true + sudo: required + dist: xenial + cache: ccache + before_install: ./1-setup-linux-native.sh + before_script: ccache -s + script: mkdir -p build && cd build && cmake .. && make -j$(nproc) + - os: osx name: "Synfig Studio OS X 10.10 Yosemite (Clang/Autotools/Brew)" sudo: required @@ -35,7 +45,7 @@ matrix: before_script: ccache -s script: ./travis.sh after_script: ccache -s # show ccache stats - + - os: osx name: "Synfig Studio OS X 10.13 High Sierra (Clang/Autotools/Brew)" sudo: required @@ -52,6 +62,7 @@ matrix: - ccache --set-config=compression=true script: ./travis.sh after_script: ccache -s # show ccache stats - - #allow_failures: + + allow_failures: + - env: CMAKE=true # - os: osx diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..d54da0a --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 2.8) + +project(synfig-studio) + +add_subdirectory(ETL) +include_directories(ETL) +include_directories(${PROJECT_BINARY_DIR}/ETL) # to find the generated etl_profile.h +add_subdirectory(synfig-core) + +include_directories(synfig-core/src) +add_subdirectory(synfig-studio) \ No newline at end of file diff --git a/ETL/CMakeLists.txt b/ETL/CMakeLists.txt index 19d7c08..ce02d4e 100644 --- a/ETL/CMakeLists.txt +++ b/ETL/CMakeLists.txt @@ -2,6 +2,8 @@ cmake_minimum_required(VERSION 2.8) project(ETL) +option(ENABLE_TESTS "Enable tests" OFF) + find_package(Threads) if (CMAKE_USE_PTHREADS_INIT) set(HAVE_LIBPTHREAD ON) @@ -15,5 +17,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) add_subdirectory(ETL) -enable_testing() -add_subdirectory(test) +if (${ENABLE_TESTS}) + enable_testing() + add_subdirectory(test) +endif() diff --git a/ETL/ETL/CMakeLists.txt b/ETL/ETL/CMakeLists.txt index 96ec1b9..8654c27 100644 --- a/ETL/ETL/CMakeLists.txt +++ b/ETL/ETL/CMakeLists.txt @@ -1,6 +1,9 @@ ## TODO: install headers properly -configure_file(etl_profile.h.cmake.in etl_profile.h) +configure_file( + etl_profile.h.cmake.in + ${PROJECT_BINARY_DIR}/ETL/etl_profile.h +) set(ETL_HEADERS "${CMAKE_CURRENT_LIST_DIR}/rect" @@ -63,7 +66,8 @@ set(ETL_HEADERS "${CMAKE_CURRENT_LIST_DIR}/_handle.h" "${CMAKE_CURRENT_LIST_DIR}/_gaussian.h" - "${CMAKE_CURRENT_BINARY_DIR}/etl_profile.h" +# autogenerated + "${PROJECT_BINARY_DIR}/ETL/etl_profile.h" ) install( diff --git a/ETL/test/CMakeLists.txt b/ETL/test/CMakeLists.txt index 5b73472..192bc74 100644 --- a/ETL/test/CMakeLists.txt +++ b/ETL/test/CMakeLists.txt @@ -1,3 +1,8 @@ +# for test to find generated etl_profile.h +include_directories(${PROJECT_BINARY_DIR}) + +include_directories(${PROJECT_SOURCE_DIR}) + add_executable(angle angle.cpp) add_test(test_angle angle) diff --git a/synfig-core/CMakeLists.txt b/synfig-core/CMakeLists.txt index fc6b897..efd729c 100644 --- a/synfig-core/CMakeLists.txt +++ b/synfig-core/CMakeLists.txt @@ -1,7 +1,7 @@ # TODO: find out which version is actually required cmake_minimum_required(VERSION 3.1) -project(synfig) +project(synfig-core) enable_testing() diff --git a/synfig-core/src/CMakeLists.txt b/synfig-core/src/CMakeLists.txt index 2df8cb5..4fe36fc 100644 --- a/synfig-core/src/CMakeLists.txt +++ b/synfig-core/src/CMakeLists.txt @@ -27,9 +27,16 @@ pkg_check_modules(SIGCPP REQUIRED sigc++-2.0) pkg_check_modules(GLIBMM REQUIRED glibmm-2.4) pkg_check_modules(GIOMM REQUIRED giomm-2.4) pkg_check_modules(CAIRO REQUIRED cairo) +pkg_check_modules(PANGOCAIRO REQUIRED pangocairo) # lyr_freetype pkg_check_modules(LIBXML REQUIRED libxml++-2.6) pkg_check_modules(MLT REQUIRED mlt++) pkg_check_modules(FFTW REQUIRED fftw3) +pkg_check_modules(FT REQUIRED freetype2) # for lyr_freetype +pkg_check_modules(LIBPNG REQUIRED libpng) # for mod_png +pkg_check_modules(LIBMNG REQUIRED libmng) # for mod_mng +pkg_check_modules(LIBJPEG REQUIRED libjpeg) # for mod_mng +pkg_check_modules(OPENEXR REQUIRED OpenEXR) # for mod_openexr +pkg_check_modules(MAGICKCORE REQUIRED MagickCore) # for Magick++ ## TODO: move to module where it is actually required pkg_check_modules(PANGO REQUIRED pango) diff --git a/synfig-core/src/modules/CMakeLists.txt b/synfig-core/src/modules/CMakeLists.txt index 51f4dc2..ac6b287 100644 --- a/synfig-core/src/modules/CMakeLists.txt +++ b/synfig-core/src/modules/CMakeLists.txt @@ -30,17 +30,17 @@ set(MODS_ENABLED mod_gradient mod_imagemagick mod_jpeg -# mod_libavcodec - build failure -# mod_magickpp - made optional -# mod_mng - missing include +# mod_libavcodec # - build failure +# mod_magickpp # - made optional + mod_mng mod_noise -# mod_openexr - missing include + mod_openexr mod_particle mod_png mod_ppm mod_svg mod_yuv420p -# mptr_mplayer - "This code has vulnerabilities" +# mptr_mplayer # - "This code has vulnerabilities" ) ## Magick++ support diff --git a/synfig-core/src/modules/lyr_freetype/CMakeLists.txt b/synfig-core/src/modules/lyr_freetype/CMakeLists.txt index 4028018..a3d3ca0 100644 --- a/synfig-core/src/modules/lyr_freetype/CMakeLists.txt +++ b/synfig-core/src/modules/lyr_freetype/CMakeLists.txt @@ -11,6 +11,8 @@ target_sources(lyr_freetype "${CMAKE_CURRENT_LIST_DIR}/lyr_freetype.cpp" ) +target_link_libraries(lyr_freetype synfig ${CAIRO_LIBRARIES} ${PANGO_LIBRARIES} ${PANGOCAIRO_LIBRARIES} ${FT_LIBRARIES}) + install ( TARGETS lyr_freetype DESTINATION lib/synfig/modules diff --git a/synfig-core/src/modules/lyr_std/CMakeLists.txt b/synfig-core/src/modules/lyr_std/CMakeLists.txt index 0691678..3e37223 100644 --- a/synfig-core/src/modules/lyr_std/CMakeLists.txt +++ b/synfig-core/src/modules/lyr_std/CMakeLists.txt @@ -26,6 +26,8 @@ target_sources(lyr_std "${CMAKE_CURRENT_LIST_DIR}/zoom.cpp" ) +target_link_libraries(lyr_std synfig ${CAIRO_LIBRARIES} ${GLIBMM_LIBRARIES}) + install ( TARGETS lyr_std DESTINATION lib/synfig/modules diff --git a/synfig-core/src/modules/mod_bmp/CMakeLists.txt b/synfig-core/src/modules/mod_bmp/CMakeLists.txt index 1af8fe3..c66ea50 100644 --- a/synfig-core/src/modules/mod_bmp/CMakeLists.txt +++ b/synfig-core/src/modules/mod_bmp/CMakeLists.txt @@ -7,6 +7,8 @@ target_sources(mod_bmp "${CMAKE_CURRENT_LIST_DIR}/trgt_bmp.cpp" ) +target_link_libraries(mod_bmp synfig ${SIGCPP_LIBRARIES}) + install ( TARGETS mod_bmp DESTINATION lib/synfig/modules diff --git a/synfig-core/src/modules/mod_dv/CMakeLists.txt b/synfig-core/src/modules/mod_dv/CMakeLists.txt index 96e0c83..6c9fa04 100644 --- a/synfig-core/src/modules/mod_dv/CMakeLists.txt +++ b/synfig-core/src/modules/mod_dv/CMakeLists.txt @@ -6,6 +6,8 @@ target_sources(mod_dv "${CMAKE_CURRENT_LIST_DIR}/trgt_dv.cpp" ) +target_link_libraries(mod_dv synfig ${SIGCPP_LIBRARIES}) + install ( TARGETS mod_dv DESTINATION lib/synfig/modules diff --git a/synfig-core/src/modules/mod_example/CMakeLists.txt b/synfig-core/src/modules/mod_example/CMakeLists.txt index 74a50df..f6e984d 100644 --- a/synfig-core/src/modules/mod_example/CMakeLists.txt +++ b/synfig-core/src/modules/mod_example/CMakeLists.txt @@ -7,6 +7,8 @@ target_sources(mod_example "${CMAKE_CURRENT_LIST_DIR}/simplecircle.cpp" ) +target_link_libraries(mod_example synfig) + install ( TARGETS mod_example DESTINATION lib/synfig/modules diff --git a/synfig-core/src/modules/mod_ffmpeg/CMakeLists.txt b/synfig-core/src/modules/mod_ffmpeg/CMakeLists.txt index 00a3d01..519d7a9 100644 --- a/synfig-core/src/modules/mod_ffmpeg/CMakeLists.txt +++ b/synfig-core/src/modules/mod_ffmpeg/CMakeLists.txt @@ -7,6 +7,8 @@ target_sources(mod_ffmpeg "${CMAKE_CURRENT_LIST_DIR}/mptr_ffmpeg.cpp" ) +target_link_libraries(mod_ffmpeg synfig ${SIGCPP_LIBRARIES}) + install ( TARGETS mod_ffmpeg DESTINATION lib/synfig/modules diff --git a/synfig-core/src/modules/mod_filter/CMakeLists.txt b/synfig-core/src/modules/mod_filter/CMakeLists.txt index 1ea6ec8..f180475 100644 --- a/synfig-core/src/modules/mod_filter/CMakeLists.txt +++ b/synfig-core/src/modules/mod_filter/CMakeLists.txt @@ -12,6 +12,8 @@ target_sources(mod_filter "${CMAKE_CURRENT_LIST_DIR}/radialblur.cpp" ) +target_link_libraries(mod_filter synfig ${CAIRO_LIBRARIES}) + install ( TARGETS mod_filter DESTINATION lib/synfig/modules diff --git a/synfig-core/src/modules/mod_geometry/CMakeLists.txt b/synfig-core/src/modules/mod_geometry/CMakeLists.txt index 90f08f8..8ce7ddd 100644 --- a/synfig-core/src/modules/mod_geometry/CMakeLists.txt +++ b/synfig-core/src/modules/mod_geometry/CMakeLists.txt @@ -12,6 +12,8 @@ target_sources(mod_geometry "${CMAKE_CURRENT_LIST_DIR}/star.cpp" ) +target_link_libraries(mod_geometry synfig ${CAIRO_LIBRARIES} ${GLIBMM_LIBRARIES}) + install ( TARGETS mod_geometry DESTINATION lib/synfig/modules diff --git a/synfig-core/src/modules/mod_gif/CMakeLists.txt b/synfig-core/src/modules/mod_gif/CMakeLists.txt index 6752ee0..7148388 100644 --- a/synfig-core/src/modules/mod_gif/CMakeLists.txt +++ b/synfig-core/src/modules/mod_gif/CMakeLists.txt @@ -6,6 +6,8 @@ target_sources(mod_gif "${CMAKE_CURRENT_LIST_DIR}/main.cpp" ) +target_link_libraries(mod_gif synfig ${SIGCPP_LIBRARIES}) + install ( TARGETS mod_gif DESTINATION lib/synfig/modules diff --git a/synfig-core/src/modules/mod_gradient/CMakeLists.txt b/synfig-core/src/modules/mod_gradient/CMakeLists.txt index 7eea898..44ee4ab 100644 --- a/synfig-core/src/modules/mod_gradient/CMakeLists.txt +++ b/synfig-core/src/modules/mod_gradient/CMakeLists.txt @@ -10,6 +10,8 @@ target_sources(mod_gradient "${CMAKE_CURRENT_LIST_DIR}/spiralgradient.cpp" ) +target_link_libraries(mod_gradient synfig ${CAIRO_LIBRARIES}) + install ( TARGETS mod_gradient DESTINATION lib/synfig/modules diff --git a/synfig-core/src/modules/mod_imagemagick/CMakeLists.txt b/synfig-core/src/modules/mod_imagemagick/CMakeLists.txt index 66bc73a..8a03f90 100644 --- a/synfig-core/src/modules/mod_imagemagick/CMakeLists.txt +++ b/synfig-core/src/modules/mod_imagemagick/CMakeLists.txt @@ -7,6 +7,8 @@ target_sources(mod_imagemagick "${CMAKE_CURRENT_LIST_DIR}/trgt_imagemagick.cpp" ) +target_link_libraries(mod_imagemagick synfig) + install ( TARGETS mod_imagemagick DESTINATION lib/synfig/modules diff --git a/synfig-core/src/modules/mod_jpeg/CMakeLists.txt b/synfig-core/src/modules/mod_jpeg/CMakeLists.txt index 29a1139..2b794b8 100644 --- a/synfig-core/src/modules/mod_jpeg/CMakeLists.txt +++ b/synfig-core/src/modules/mod_jpeg/CMakeLists.txt @@ -7,6 +7,8 @@ target_sources(mod_jpeg "${CMAKE_CURRENT_LIST_DIR}/trgt_jpeg.cpp" ) +target_link_libraries(mod_jpeg synfig ${LIBJPEG_LIBRARIES}) + install ( TARGETS mod_jpeg DESTINATION lib/synfig/modules diff --git a/synfig-core/src/modules/mod_libavcodec/CMakeLists.txt b/synfig-core/src/modules/mod_libavcodec/CMakeLists.txt index 11c1e5b..5d81555 100644 --- a/synfig-core/src/modules/mod_libavcodec/CMakeLists.txt +++ b/synfig-core/src/modules/mod_libavcodec/CMakeLists.txt @@ -7,6 +7,9 @@ target_sources(mod_libavcodec "${CMAKE_CURRENT_LIST_DIR}/main.cpp" ) +#target_link_libraries(mod_jpeg synfig ${LIBJPEG_LIBRARIES}) +target_link_libraries(mod_libavcodec synfig) + install ( TARGETS mod_libavcodec DESTINATION lib/synfig/modules diff --git a/synfig-core/src/modules/mod_magickpp/CMakeLists.txt b/synfig-core/src/modules/mod_magickpp/CMakeLists.txt index 4a14abe..b755847 100644 --- a/synfig-core/src/modules/mod_magickpp/CMakeLists.txt +++ b/synfig-core/src/modules/mod_magickpp/CMakeLists.txt @@ -20,7 +20,7 @@ target_sources(mod_magickpp "${CMAKE_CURRENT_LIST_DIR}/trgt_magickpp.cpp" ) -target_link_libraries(mod_magickpp ${ImageMagick_LIBRARIES}) +target_link_libraries(mod_magickpp synfig ${MAGICKCORE_LIBRARIES} ${ImageMagick_LIBRARIES}) install ( TARGETS mod_magickpp diff --git a/synfig-core/src/modules/mod_mng/CMakeLists.txt b/synfig-core/src/modules/mod_mng/CMakeLists.txt index 29f57f9..86322b5 100644 --- a/synfig-core/src/modules/mod_mng/CMakeLists.txt +++ b/synfig-core/src/modules/mod_mng/CMakeLists.txt @@ -6,6 +6,8 @@ target_sources(mod_mng "${CMAKE_CURRENT_LIST_DIR}/main.cpp" ) +target_link_libraries(mod_mng synfig ${LIBMNG_LIBRARIES}) + install ( TARGETS mod_mng DESTINATION lib/synfig/modules diff --git a/synfig-core/src/modules/mod_noise/CMakeLists.txt b/synfig-core/src/modules/mod_noise/CMakeLists.txt index 16da7ce..6346000 100644 --- a/synfig-core/src/modules/mod_noise/CMakeLists.txt +++ b/synfig-core/src/modules/mod_noise/CMakeLists.txt @@ -9,6 +9,8 @@ target_sources(mod_noise "${CMAKE_CURRENT_LIST_DIR}/valuenode_random.cpp" ) +target_link_libraries(mod_noise synfig ${SIGCPP_LIBRARIES}) + install ( TARGETS mod_noise DESTINATION lib/synfig/modules diff --git a/synfig-core/src/modules/mod_openexr/CMakeLists.txt b/synfig-core/src/modules/mod_openexr/CMakeLists.txt index 5d1f157..eeff8d9 100644 --- a/synfig-core/src/modules/mod_openexr/CMakeLists.txt +++ b/synfig-core/src/modules/mod_openexr/CMakeLists.txt @@ -7,6 +7,13 @@ target_sources(mod_openexr "${CMAKE_CURRENT_LIST_DIR}/mptr_openexr.cpp" ) +message(STATUS "OpenEXR include: ${OPENEXR_INCLUDE_DIRS}") + +target_include_directories(mod_openexr PRIVATE ${OPENEXR_INCLUDE_DIRS}) + +#target_link_libraries(mod_noise synfig ${SIGCPP_LIBRARIES}) +target_link_libraries(mod_openexr synfig ${OPENEXR_LIBRARIES}) + install ( TARGETS mod_openexr DESTINATION lib/synfig/modules diff --git a/synfig-core/src/modules/mod_particle/CMakeLists.txt b/synfig-core/src/modules/mod_particle/CMakeLists.txt index 919ca98..a858de4 100644 --- a/synfig-core/src/modules/mod_particle/CMakeLists.txt +++ b/synfig-core/src/modules/mod_particle/CMakeLists.txt @@ -7,6 +7,8 @@ target_sources(mod_particle "${CMAKE_CURRENT_LIST_DIR}/plant.cpp" ) +target_link_libraries(mod_particle synfig ${CAIRO_LIBRARIES}) + install ( TARGETS mod_particle DESTINATION lib/synfig/modules diff --git a/synfig-core/src/modules/mod_png/CMakeLists.txt b/synfig-core/src/modules/mod_png/CMakeLists.txt index 8831b00..4c1bb7d 100644 --- a/synfig-core/src/modules/mod_png/CMakeLists.txt +++ b/synfig-core/src/modules/mod_png/CMakeLists.txt @@ -10,6 +10,8 @@ target_sources(mod_png "${CMAKE_CURRENT_LIST_DIR}/trgt_png.cpp" ) +target_link_libraries(mod_png synfig ${LIBPNG_LIBRARIES}) + install ( TARGETS mod_png DESTINATION lib/synfig/modules diff --git a/synfig-core/src/modules/mod_ppm/CMakeLists.txt b/synfig-core/src/modules/mod_ppm/CMakeLists.txt index 58b0184..8f85863 100644 --- a/synfig-core/src/modules/mod_ppm/CMakeLists.txt +++ b/synfig-core/src/modules/mod_ppm/CMakeLists.txt @@ -7,6 +7,8 @@ target_sources(mod_ppm "${CMAKE_CURRENT_LIST_DIR}/mptr_ppm.cpp" ) +target_link_libraries(mod_ppm synfig) + install ( TARGETS mod_ppm DESTINATION lib/synfig/modules diff --git a/synfig-core/src/modules/mod_svg/CMakeLists.txt b/synfig-core/src/modules/mod_svg/CMakeLists.txt index 111d30b..9f83cd3 100644 --- a/synfig-core/src/modules/mod_svg/CMakeLists.txt +++ b/synfig-core/src/modules/mod_svg/CMakeLists.txt @@ -13,6 +13,9 @@ target_sources(mod_svg "${CMAKE_CURRENT_LIST_DIR}/svg_parser.cpp" ) +target_link_libraries(mod_svg synfig ${LIBXML_LIBRARIES} ${GLIBMM_LIBRARIES}) +#target_link_libraries(mod_svg synfig ${GLIBMM_LIBRARIES}) + install ( TARGETS mod_svg DESTINATION lib/synfig/modules diff --git a/synfig-core/src/modules/mod_yuv420p/CMakeLists.txt b/synfig-core/src/modules/mod_yuv420p/CMakeLists.txt index b0c728d..e76cd1a 100644 --- a/synfig-core/src/modules/mod_yuv420p/CMakeLists.txt +++ b/synfig-core/src/modules/mod_yuv420p/CMakeLists.txt @@ -6,6 +6,8 @@ target_sources(mod_yuv420p "${CMAKE_CURRENT_LIST_DIR}/trgt_yuv.cpp" ) +target_link_libraries(mod_yuv420p synfig) + install ( TARGETS mod_yuv420p DESTINATION lib/synfig/modules diff --git a/synfig-core/src/synfig/CMakeLists.txt b/synfig-core/src/synfig/CMakeLists.txt index a00d5d2..ae032ed 100644 --- a/synfig-core/src/synfig/CMakeLists.txt +++ b/synfig-core/src/synfig/CMakeLists.txt @@ -6,16 +6,20 @@ ## TODO: optional static linking? add_library(synfig SHARED "") +message(STATUS "MLT DIR: ${MLT_INCLUDE_DIRS}") + target_include_directories(synfig - SYSTEM BEFORE PUBLIC +# SYSTEM BEFORE PUBLIC +PUBLIC ${SIGCPP_INCLUDE_DIRS} ${GLIBMM_INCLUDE_DIRS} ${GIOMM_INCLUDE_DIRS} ${CAIRO_INCLUDE_DIRS} ${PANGO_INCLUDE_DIRS} ${LIBXML_INCLUDE_DIRS} - ${MLT_INCLUDE_DIRS} +# ${MLT_INCLUDE_DIRS} ${FFTW_INCLUDE_DIRS} + PUBLIC ${MLT_INCLUDE_DIRS} ) target_sources(synfig @@ -115,7 +119,7 @@ include(valuenodes/CMakeLists.txt) include(debug/CMakeLists.txt) target_link_libraries(synfig - PRIVATE + PUBLIC ${SIGCPP_LIBRARIES} ${GLIBMM_LIBARIES} ${GIOMM_LIBRARIES} diff --git a/synfig-studio/src/CMakeLists.txt b/synfig-studio/src/CMakeLists.txt index 4e680aa..50a5345 100644 --- a/synfig-studio/src/CMakeLists.txt +++ b/synfig-studio/src/CMakeLists.txt @@ -5,7 +5,9 @@ cmake_minimum_required(VERSION 3.1) ## ## TODO: check version -find_package(synfig CONFIG REQUIRED) +if ("${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}") + find_package(synfig CONFIG REQUIRED) +endif() find_package(Gettext) diff --git a/synfig-studio/src/synfigapp/CMakeLists.txt b/synfig-studio/src/synfigapp/CMakeLists.txt index 5d26ffc..5c96c03 100644 --- a/synfig-studio/src/synfigapp/CMakeLists.txt +++ b/synfig-studio/src/synfigapp/CMakeLists.txt @@ -21,6 +21,8 @@ target_sources(synfigapp "${CMAKE_CURRENT_LIST_DIR}/value_desc.cpp" ) +target_link_libraries(synfigapp synfig) + include(actions/CMakeLists.txt) install(