Skip to content
Kimball Thurston edited this page Nov 25, 2018 · 3 revisions

Welcome to the build-util wiki!

Core Principles

  1. Make building and installing projects more consistent. This should be a collection of common patterns and recipes that can be used which represent the current state of art in creating project files.
  2. Enable alternate installation locations. Anyone who is implementing some sort of software version management where users can somehow select and run different versions will need to have different versions of these projects configured and compiled to different locations. All the dependency resolution should provide appropriate overrides to be able to set alternate locations without having to hack the build configuration files.
  3. Enable compiling without an internet connection. Even if projects have options to auto-download, override variables should be provided to point the build tree at a separate, pre-downloaded location for the package.

Installing

If you are lucky enough to be on a system with GNU make, you can run:

make install prefix=/path/to/install

If not, the makefile is not required, it is just a convenience wrapper. Instead you will want to do something like (obviously, the install prefix and appropriate generator should be selected)

mkdir release
cd release
cmake -DCMAKE_INSTALL_PREFIX=/path/to/install -DCMAKE_BUILD_TYPE=Release -G "Ninja" ..

Then, based on your generated build files, run the build and install. There is no real code to build, but there is a check target (make check) which adds some sanity checks against your version of cmake and system.

Using these macros

Creating / updating a piece of software

See EnableASWF.cmake in one of the sample projects for a sample cmake file you can include in your project and then in the top level CMakeLists.txt to see how it is included. This should find and include the top level config file.

Working with projects that use this stuff

One of the core principles here is to not require an internet connection, so even if EnableASWF.cmake has an option to clone this repo, it provides variables that enable a facility to pre-download

Documentation

All the enclosed functions are included for use by including the top level file ASWF.cmake

Setup

[aswf_enable_doxygen]
[aswf_add_install_library]
[aswf_add_install_plugin]
[aswf_add_install_executable]

VFX Platform Related

[aswf_enable_vfx_platform]
[aswf_add_vfx_install_library]

Installation and packaging

[aswf_setup_project_config_install]
[aswf_enable_package]

Utility

[aswf_set_api_version]
[aswf_set_so_version]
[aswf_get_target_property_with_default]
[aswf_create_libtool_file]
[map_get]
[map_set]