[GSoC 2020] [Final Report] CMake Build System

Google Summer of Code 2020 - Final Report

CMake Build System

This is the final report for Google Summer of Code written by Ayush Chamoli.

Summary

My aim for the summer was to finish CMake build scripts and implement other features related to Synfig’s build system. This included things from small features (like adding support for internationalization and localization in CMake) to some major additions (like making installers using CPack).

Apart from this, I also planned to fix some CMake related bugs that were discovered during the GSoC period.

You can take a look at the logs which I maintained for that particular period here.

Code

A list of all the commits I made related to the project can be found here.

Pull Requests

synfig

  • #1224 - [CMake] Updated CMake script to change layout of build files.
    • 8d946dd - Updated CMake script for bin and lib.
  • #1228 - [CMake] Update CMake script for /share and /etc.
    • 246c424 - Updated CMake script for share and etc.
  • #1232 - Updated imagepath in case SYNFIG_ROOT is undefined.
    • c63f879 - Updated imagepath in case SYNFIG_ROOT is undefined.
  • #1247 - Fixes for CMake build_images target.
    • a85cada - Fixes the build_images CMake target.
  • #1320 - Fix for no icon in Import Image Layer for CMake Build.
    • 21bb14c - Fix for no icon in Import Image Layer for CMake Build.
  • #1462 - Generate l10n files from .po files.
    • 99cde0a - Generate l10n files from .po files
    • dc3397b - Custom gettext CMake function.
  • #1478 - build_images target’s rebuilding behavior
    • a16cd39 - fix build_images target’s rebuilding behavior
  • #1484 - Resource management of CMake build.
    • 9370119 - Changes for CMake related app resource path.
  • #1491 - Changes for appveyor build using CMake and ninja.
    • ec68c0a - Windows related changes
    • 3c5438c - Fixed MLT Path added different dependency for MSYS2 builds.
    • ff40532 - Changes for CMake MSYS builds.
  • #1500 - Different CMake builds based on CMAKE_BUILD_TYPE.
    • c323060 - Different CMake builds based on CMAKE_BUILD_TYPE.
  • #1501 - Copy plugins, brushes and sounds to the appropriate place in CMake build.
    • 836b46a - Copy plugins, brushes, sounds and ui to /share/synfig in CMake builds
    • d007f97 - Added a custom function for intltool_merge
      • Moved /cmake/Modules/SynfigGettext.cmake to /cmake/SynfigGettext.cmake.
      • Moved /cmake/Modules/SynfigFindgGit.cmake to /cmake/SynfigFindGit.cmake.
      • Fixed an issue where build_pofiles_synfigstudio wasn’t building.
  • #1519 - CPack: .deb package
    • 60af052 - .deb package
      • Added a basic CPackConfig.cmake script and PACKAGING.md to generate .deb packages.
      • Updated SYNFIG_INTLTOOL_MERGE to account for .desktop.in files.
      • Made changes to move icon to the specified location in cmake builds.
      • Added dependencies on synfig_bin and synfigstudio to make building process easier.
  • #1581 - Setting up VERSIONINFO resource for CMake Windows builds.
    • 9b4afe8 Setting up VERSIONINFO resource for CMake Windows builds.
  • #1582 - CPack NSIS Installer.
  • #1595 - Fixed Magick NoEncodeDelegateForThisImageFormat issues on appveyor build.
    • 7538ae5 - Fixed Magick NoEncodeDelegateForThisImageFormat issues on MSYS build
  • #1644 - Removed README-CMake.md and linked CMake documentation in README.md.
    • 7ab6d6d - Removed README-CMake.md and linked CMake documentation in README.md
  • #1646 - Changes for successful CMake configuration using MSVS 2019 and vcpkg.
    • 9d14d10 - Changes for successful CMake configuration using MSVS 2019 and vcpkg.

synfig-docs-dev

  • #53 - [CMake] Added documentation for CMake.
    • b498507 - Added documentation for CMake.
  • #58 - Fixed CPack packaging documentation.
    • b93a9d7 - Fixed cpack packaging documentation.

What’s Left

The following tasks are still left:

  • Full vcpkg support for Windows builds.

    I planned on adding a full support for building Synfig using MSVS 2019 and vcpkg but it is not ready yet, because part of the Synfig code now cannot be compiled with MSVC compiler and requires adaptation from other developers.

  • #1630 - [CMake] MacOS app and DMG installer.

    This was something that was decided to be worked upon during the coding period. This task is done and waits for a final review before merging.

Experience

The past few months have been great working with Synfig! I learned a lot of new things about various technologies and gained a lot of exposure. I had been a bit active in open source before, but working with Synfig gave me a far more better experience in the open source world than what I had been involved in previously. I still plan to contribute to Synfig after GSoC ends, and possibly learn a lot more!

Massive thanks @ice0 ( ◜‿◝ ) He gave me great support and guidance for the project and moral boost to improve myself. While doing this project with him, I got many impressions from his inventive ideas to his insightful approaches and learned a lot from him.

Lastly, thanks to all the other mentors and Synfig community for this awesome summer \(^_^)/

5 Likes