MuseScore/build/cmake/GetUtilsFunctions.cmake
Josh Soref 55c452fb68
Spelling (#11566)
* spelling: above

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: accessibility

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: accessible

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: account

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: action

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: activated

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: active

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: again

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: allegro

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: alternative

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: amplitude

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: and

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: annotation

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: appended

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: appending

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: appropriate

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: arbitrarily

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: architecture

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: arpeggio

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: arranger

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: assumed

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: asynchronous

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: automatically

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: availability

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: available

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: backslashes

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: before

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: beginning

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: between

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: bounding

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: bracket

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: builtin

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: calculated

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: categories

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: check

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: class

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: clearance

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: column

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: combinations

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: completed

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: composer

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: compression

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: consideration

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: constraints

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: container

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: continuous

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: contrabass

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: control

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: convergence

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: conversion

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: convert

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: coordinates

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: correctly

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: corresponds

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: counting

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: crescendo

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: customizable

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: cutout

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: deep

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: denom

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: denominator

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: diagram

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: diminished

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: direction

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: directories

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: disconnected

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: doesn't

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: dotted

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: easeinout

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: eighth

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: element

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: elements

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: enabled

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: engraving

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: evenly

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: exactly

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: exceed

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: excerpts

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: excessively

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: exclusive

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: extension

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: extrapolated

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: farthest

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: fits

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: friends

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: function

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: glissando

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: global

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: grid

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: halved

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: happen

* spelling: harmonies

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: have

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: header

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: height

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: iabbrev

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: ideally

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: implementation

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: in

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: incoming

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: incomplete

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: increase

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: indentation

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: individual

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: infer

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: initial

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: initially

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: inputted

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: instrument

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: instruments

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: invalid

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: invocation

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: iplugin

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: javascript

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: label

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: laid out

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: languages

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: length

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: linked

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: lyrchord

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: lyricist

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: managed

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: manually

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: mapping

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: mappings

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: margins

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: measure

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: metric

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: metronome

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: military

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: milliseconds

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: minimum

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: modifiers

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: moving

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: multi

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: namespace

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: navigate

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: necessary

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: needs

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: newly

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: notation

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: numerator

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: occasionally

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: occurred

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: occurrence

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: omitted

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: or

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: oriented

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: originally

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: ornament

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: ornaments

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: output

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: outputted

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: outside

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: overlapping

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: overridden

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: package

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: padding

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: parameter

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: percussion

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: placement

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: playthrough

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: positive

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: preceded

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: precision

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: previous

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: process

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: property

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: proximity

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: publish

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: rasgueado

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: read

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: receive

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: received

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: rectangle

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: regarding

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: register

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: registry

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: rehearsal

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: related

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: repeat

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: repeatp

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: replacements

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: represent

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: representation

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: responses

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: rhythm

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: section

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: selected

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: selection

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: separation

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: separator

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: shortcuts

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: signatures

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: simile

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: slurred

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: sound

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: staccato

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: staff

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: stuff

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: style

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: suffix

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: supported

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: symbol

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: symbols

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: system

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: tablature

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: tcp_invalid

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: that

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: the

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: thickness

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: tibetan

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: of

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: to

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: transparent

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: transpose

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: tremolo

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: ultimately

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: unassigned

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: underscore

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: unhandled

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: uninstall

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: unknown

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: unnamed

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: useful

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: usually

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: vertical

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: violin

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: visible

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: when

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: whether

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: with

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: within

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: without

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: would

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: writing

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: written

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: xmlns

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* Remove unused avaiableArticulationTypesChanged

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: firstSystemIndentation [API]

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* Enable testIncompleteTuplet

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* Drop stray comment

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* Update license header in module.cmake

per https://github.com/musescore/MuseScore/pull/11566#discussion_r870550003

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

Co-authored-by: Josh Soref <jsoref@users.noreply.github.com>
2022-05-15 16:35:32 +02:00

205 lines
7.7 KiB
CMake

# This file contains generic functions that are useful for any CMake project.
# Function names start with "fn__" so you can recognise them in other files.
#
# Unless otherwise stated, all relative file paths are assumed to be relative
# to ${CMAKE_CURRENT_BINARY_DIR}. If your file is elsewhere then you must use
# an absolute path, e.g. by prepending ${CMAKE_CURRENT_SOURCE_DIR}.
#
# Some of the functions create custom commands. Remember, a custom command
# will not run unless its OUTPUT is depended on by a custom target or another
# custom command. The same applies to the other custom command, so there must
# be a custom target involved somewhere.
#
# For example, if you write this in a CMake file then nothing will happen:
#
# fn__copy_during_build("my_source_file.txt" "my_dest_file.txt")
#
# One way to make sure the file is copied would be to follow that line with:
#
# add_custom_target("my_target_name" ALL DEPENDS "my_dest_file.txt")
# Where are we? Need to set these variables for use inside functions.
set(_FUNCTIONS_FILE "${CMAKE_CURRENT_LIST_FILE}") # path to this file
set(_FUNCTIONS_DIR "${CMAKE_CURRENT_LIST_DIR}") # path to this directory
# Set a variable to a value only if the variable is currently undefined.
function(fn__set_default
NAMEV # Name of the variable to set.
VALUE # Value to assign to the variable.
)
if(NOT DEFINED "${NAMEV}")
set("${NAMEV}" "${VALUE}" PARENT_SCOPE)
endif()
endfunction()
# Set a variable to value of an option from a list of command line arguments.
# The variable will only receive a value if the relevant option was provided.
function(fn__get_option
VAR_NAME # Name of the variable to set.
OPT_NAME # Name of the option to search for (e.g. "-foo").
# ARGN... The command line arguments.
)
list(LENGTH ARGN LEN)
set(i "0")
while(i LESS "${LEN}")
list(GET ARGN "${i}" ARG)
if(ARG MATCHES "^${OPT_NAME}")
if(ARG STREQUAL "${OPT_NAME}")
# Option and value in separate arguments ("-o VALUE" or "--option VALUE")
math(EXPR i "${i} + 1") # next argument (the value)
list(GET ARGN "${i}" OPT_VAL)
set("${VAR_NAME}" "${OPT_VAL}" PARENT_SCOPE)
elseif("${OPT_NAME}" MATCHES "^-[a-zA-Z0-9]$")
# Short option without equals sign before value ("-oVALUE")
string(REGEX REPLACE "^${OPT_NAME}(.*)$" "\\1" OPT_VAL "${ARG}")
set("${VAR_NAME}" "${OPT_VAL}" PARENT_SCOPE)
elseif(ARG MATCHES "^${OPT_NAME}=")
# Long option with equals sign before option value ("--option=VALUE")
string(REGEX REPLACE "^${OPT_NAME}=(.*)$" "\\1" OPT_VAL "${ARG}")
set("${VAR_NAME}" "${OPT_VAL}" PARENT_SCOPE)
endif()
endif()
math(EXPR i "${i} + 1") # next argument
endwhile()
endfunction()
# Turn a list of command line arguments into an escaped string
function(fn__command_string
VAR_NAME # The variable to store the final string.
# ARGN ... The command line arguments.
)
foreach(ARG IN LISTS ARGN)
if(ARG MATCHES " ")
set(ARG "\"${ARG}\"")
endif()
set("${VAR_NAME}" "${${VAR_NAME}} ${ARG}")
endforeach()
set("${VAR_NAME}" "${${VAR_NAME}}" PARENT_SCOPE)
endfunction()
function(fn__require_program # Ensure that a build dependency is installed.
PATHV # Location of the program returned in this variable.
PRETTY_NAME # Program name that users will recognize (e.g. "ImageMagick").
TEST_ARG # Argument to run if program is found (e.g. "--version").
HELP_URL # Where to get help if program is not found.
COMMAND # The name of the program on the command line (e.g. "magick").
# ARGN: Any alternative names for the command (e.g. "convert", "mogrify").
)
# Only check for program if not already found and cached.
if(NOT ${PATHV})
set(CMD_NAMES ${COMMAND} ${ARGN})
set(CMAKE_FIND_APPBUNDLE "NEVER") # macOS: don't search for .app bundles
find_program(${PATHV} NAMES ${CMD_NAMES} DOC "${HELP_URL}")
set(CMD "${${PATHV}}")
string(REPLACE ";" ", " CMD_NAMES "${CMD_NAMES}")
if(CMD)
# Program found so test to make sure it works.
execute_process(
COMMAND "${CMD}" ${TEST_ARG}
TIMEOUT 5
RESULT_VARIABLE RETVAL
)
if(NOT ${RETVAL} EQUAL 0)
# Test failed.
unset(${PATHV} CACHE) # make sure we check again next time
message(FATAL_ERROR
"\n"
"Error running ${PRETTY_NAME} with command:"
"\n"
" ${CMD} ${TEST_ARG}"
"\n"
"Console output directly above may provide more information about the error."
"\n"
"Do you have the correct version of ${PRETTY_NAME} installed? Is it "
"available in your PATH environment variable?"
"\n"
"See ${HELP_URL}"
"\n"
)
endif(NOT ${RETVAL} EQUAL 0)
else(CMD)
# Program not found.
message(FATAL_ERROR
"\n"
"Unable to find ${PRETTY_NAME} (cmd: ${CMD_NAMES})"
"\n"
"Please make sure ${PRETTY_NAME} is installed and "
"available in your PATH environment variable."
"\n"
"See ${HELP_URL}"
"\n"
)
endif(CMD)
endif(NOT ${PATHV})
endfunction(fn__require_program)
# Get information about Qt based on the path to qmake executable
function(fn__set_qt_variables
QMAKE # Path to qmake executable
)
get_filename_component(dir "${QMAKE}" DIRECTORY)
get_filename_component(dir "${dir}" DIRECTORY)
set(ENV{QTDIR} "${dir}")
get_filename_component(QT_COMPILER "${dir}" NAME)
get_filename_component(dir "${dir}" DIRECTORY)
get_filename_component(QT_VERSION "${dir}" NAME)
get_filename_component(dir "${dir}" DIRECTORY)
set(QT_LOCATION "${dir}" PARENT_SCOPE)
set(QT_VERSION "${QT_VERSION}" PARENT_SCOPE)
set(QT_COMPILER "${QT_COMPILER}" PARENT_SCOPE)
endfunction()
function(fn__copy_during_build # copy a file at build time
SOURCE_FILE # relative or absolute path to file being copied
DEST_FILE # relative or absolute path to the new copy
)
# need absolute path for use with add_custom_command's DEPENDS argument
get_filename_component(
SOURCE_FILE_ABS # equals SOURCE_FILE if SOURCE_FILE is already absolute
"${SOURCE_FILE}"
ABSOLUTE
BASE_DIR "${CMAKE_CURRENT_BINARY_DIR}"
)
add_custom_command(
OUTPUT "${DEST_FILE}"
DEPENDS "${SOURCE_FILE_ABS}" # absolute path required for DEPENDS
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${SOURCE_FILE}" "${DEST_FILE}"
COMMENT "Copying '${SOURCE_FILE}' to '${DEST_FILE}'"
VERBATIM
)
endfunction(fn__copy_during_build)
function(fn__build_zip # create zip archive at build time
PATH_OUT # final path to the archive
DIR_IN # the directory that all input file paths are relative to
FILE_IN # one file to go in the archive, with path relative to DIR_IN
# ARGN remaining arguments are more files to go in the archive
)
# need absolute path for use with add_custom_command's DEPENDS argument
get_filename_component(
DIR_IN_ABS
"${DIR_IN}"
ABSOLUTE
BASE_DIR "${CMAKE_CURRENT_BINARY_DIR}"
)
set(FILES_IN "${FILE_IN};${ARGN}")
set(FILES_IN_ABS "")
foreach(FILE IN LISTS FILES_IN)
list(APPEND FILES_IN_ABS "${DIR_IN_ABS}/${FILE}")
endforeach(FILE)
# we're about to change directory, so a relative PATH_OUT would not work
get_filename_component(
PATH_OUT_ABS
"${PATH_OUT}"
ABSOLUTE
BASE_DIR "${CMAKE_CURRENT_BINARY_DIR}"
)
add_custom_command(
OUTPUT "${PATH_OUT}" # still relative to CMAKE_CURRENT_BINARY_DIR
DEPENDS ${FILES_IN_ABS} # absolute paths required for DEPENDS
COMMAND "${CMAKE_COMMAND}" -E tar cf "${PATH_OUT_ABS}" --format=zip -- ${FILES_IN}
WORKING_DIRECTORY "${DIR_IN}" # run command in this directory
COMMENT "Compressing '${PATH_OUT}'"
VERBATIM
)
endfunction(fn__build_zip)