Compare commits
30 Commits
feature/be
...
v0.3.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7a3c8324b0 | ||
|
|
c536dcdf9d | ||
|
|
4037f98441 | ||
|
|
f94bb2cb66 | ||
|
|
f2d1d74cbf | ||
|
|
3fefa8db52 | ||
|
|
4685223110 | ||
|
|
5449af4e6f | ||
|
|
5df52a588c | ||
|
|
c317e60b83 | ||
|
|
e2f9c65d2c | ||
|
|
a265e0c2df | ||
|
|
5af988b653 | ||
|
|
33b5b28cd9 | ||
|
|
22f822bf12 | ||
|
|
b70e210cf1 | ||
|
|
28d8ac4b76 | ||
|
|
84e05a7388 | ||
|
|
86c781b8b3 | ||
|
|
eb49d6c11d | ||
|
|
0cd237877a | ||
|
|
1ce450523f | ||
|
|
9ea778d246 | ||
|
|
337578b1ce | ||
|
|
d369b6c0bf | ||
|
|
bb72d54ac3 | ||
|
|
2b1f2a79a4 | ||
|
|
7941e2f1da | ||
|
|
29853b8db6 | ||
|
|
a252706ee2 |
@@ -1,31 +0,0 @@
|
||||
clone_depth: 1
|
||||
version: "{build}"
|
||||
image: Visual Studio 2017
|
||||
platform:
|
||||
- x86
|
||||
- x64
|
||||
environment:
|
||||
matrix:
|
||||
- compiler: msvc
|
||||
install:
|
||||
- cd C:\Tools\vcpkg
|
||||
- git pull
|
||||
- .\bootstrap-vcpkg.bat
|
||||
- cd %APPVEYOR_BUILD_FOLDER%
|
||||
- vcpkg install --triplet %PLATFORM%-windows --recurse fftw3 libsamplerate libsndfile lilv lv2 sdl2
|
||||
- nuget install clcache -Version 4.1.0
|
||||
build_script:
|
||||
- cd %APPVEYOR_BUILD_FOLDER%
|
||||
- mkdir build
|
||||
- cd build
|
||||
- ps: $env:CMAKE_PLATFORM="$(if ($env:PLATFORM -eq 'x64') { 'x64' } else { '' })"
|
||||
- ps: $env:QT_SUFFIX="$(if ($env:PLATFORM -eq 'x64') { '_64' } else { '' })"
|
||||
- cmake -DUSE_COMPILE_CACHE=ON -DCACHE_TOOL=%APPVEYOR_BUILD_FOLDER%/clcache.4.1.0/clcache-4.1.0/clcache.exe -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_PREFIX_PATH=c:/Qt/5.12/msvc2017%QT_SUFFIX%;c:/tools/vcpkg/installed/%PLATFORM%-windows -DCMAKE_GENERATOR_PLATFORM="%CMAKE_PLATFORM%" ..
|
||||
- cmake --build . -- /maxcpucount:4
|
||||
- cmake --build . --target tests
|
||||
- cmake --build . --target package
|
||||
artifacts:
|
||||
- path: 'build\lmms-*.exe'
|
||||
name: Installer
|
||||
cache:
|
||||
- c:/tools/vcpkg/installed
|
||||
@@ -1,222 +0,0 @@
|
||||
version: 2
|
||||
|
||||
shared:
|
||||
restore_cache: &restore_cache
|
||||
restore_cache:
|
||||
keys:
|
||||
- ccache-{{ arch }}-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}
|
||||
- ccache-{{ arch }}-{{ .Environment.CIRCLE_JOB }}
|
||||
- ccache-{{ arch }}
|
||||
save_cache: &save_cache
|
||||
save_cache:
|
||||
key: ccache-{{ arch }}-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}-{{ .BuildNum }}
|
||||
paths:
|
||||
- ~/.ccache
|
||||
restore_homebrew_cache: &restore_homebrew_cache
|
||||
restore_cache:
|
||||
keys:
|
||||
- homebrew-{{ arch }}-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}
|
||||
- homebrew-{{ arch }}-{{ .Environment.CIRCLE_JOB }}
|
||||
- homebrew-{{ arch }}
|
||||
save_homebrew_cache: &save_homebrew_cache
|
||||
save_cache:
|
||||
key: homebrew-{{ arch }}-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}-{{ .BuildNum }}
|
||||
paths:
|
||||
- ~/Library/Caches/Homebrew
|
||||
- /usr/local/Homebrew
|
||||
|
||||
ccache_stats: &ccache_stats
|
||||
run:
|
||||
name: Print ccache statistics
|
||||
command: |
|
||||
echo "[ccache config]"
|
||||
ccache -p
|
||||
echo "[ccache stats]"
|
||||
ccache -s
|
||||
|
||||
# Commmon initializing commands
|
||||
init: &init
|
||||
run:
|
||||
name: Initialize
|
||||
command: |
|
||||
mkdir -p /tmp/artifacts
|
||||
# Workaround for failing submodule fetching
|
||||
git config --global --unset url."ssh://git@github.com".insteadOf || true
|
||||
if [[ -n "${CIRCLE_PR_NUMBER}" ]]
|
||||
then
|
||||
echo "Fetching out merged pull request"
|
||||
git fetch -u origin refs/pull/${CIRCLE_PR_NUMBER}/merge:pr/merge
|
||||
git checkout pr/merge
|
||||
else
|
||||
echo "Not a pull request"
|
||||
fi
|
||||
|
||||
# Commmon environment variables
|
||||
common_environment: &common_environment
|
||||
QT5: True
|
||||
CMAKE_OPTS: -DUSE_WERROR=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -DUSE_CCACHE=ON
|
||||
CCACHE_MAXSIZE: 500M
|
||||
CCACHE_LOGFILE: /tmp/artifacts/ccache.log
|
||||
MAKEFLAGS: -j6
|
||||
|
||||
jobs:
|
||||
mingw32:
|
||||
environment:
|
||||
<<: *common_environment
|
||||
docker:
|
||||
- image: lmmsci/linux.mingw32:18.04
|
||||
steps:
|
||||
- checkout
|
||||
- *init
|
||||
- *restore_cache
|
||||
- run:
|
||||
name: Building
|
||||
command: |
|
||||
mkdir build && cd build
|
||||
../cmake/build_win32.sh
|
||||
make lmms
|
||||
make
|
||||
- run:
|
||||
name: Build tests
|
||||
command: cd build && make tests
|
||||
- run:
|
||||
name: Build installer
|
||||
command: |
|
||||
cd build
|
||||
make package
|
||||
cp ./lmms-*.exe /tmp/artifacts/
|
||||
- store_artifacts:
|
||||
path: /tmp/artifacts/
|
||||
destination: /
|
||||
- *ccache_stats
|
||||
- *save_cache
|
||||
mingw64:
|
||||
environment:
|
||||
<<: *common_environment
|
||||
docker:
|
||||
- image: lmmsci/linux.mingw64:18.04
|
||||
steps:
|
||||
- checkout
|
||||
- *init
|
||||
- *restore_cache
|
||||
- run:
|
||||
name: Building
|
||||
command: |
|
||||
mkdir build && cd build
|
||||
../cmake/build_win64.sh
|
||||
make
|
||||
- run:
|
||||
name: Build tests
|
||||
command: cd build && make tests
|
||||
- run:
|
||||
name: Build installer
|
||||
command: |
|
||||
cd build
|
||||
make package
|
||||
cp ./lmms-*.exe /tmp/artifacts/
|
||||
- store_artifacts:
|
||||
path: /tmp/artifacts/
|
||||
destination: /
|
||||
- *ccache_stats
|
||||
- *save_cache
|
||||
linux.gcc:
|
||||
docker:
|
||||
- image: lmmsci/linux.gcc:16.04
|
||||
environment:
|
||||
<<: *common_environment
|
||||
steps:
|
||||
- checkout
|
||||
- *init
|
||||
- *restore_cache
|
||||
- run:
|
||||
name: Configure
|
||||
command: |
|
||||
source /opt/qt5*/bin/qt5*-env.sh || true
|
||||
mkdir build && cd build
|
||||
cmake .. $CMAKE_OPTS -DCMAKE_INSTALL_PREFIX=./install
|
||||
- run:
|
||||
name: Build
|
||||
command: cd build && make
|
||||
- run:
|
||||
name: Build tests
|
||||
command: cd build && make tests
|
||||
- run:
|
||||
name: Run tests
|
||||
command: build/tests/tests
|
||||
- *ccache_stats
|
||||
- run:
|
||||
name: Build AppImage
|
||||
command: |
|
||||
cd build
|
||||
make install
|
||||
make appimage || (cat appimage.log && false)
|
||||
cp ./lmms-*.AppImage /tmp/artifacts/
|
||||
- store_artifacts:
|
||||
path: /tmp/artifacts/
|
||||
destination: /
|
||||
- store_artifacts:
|
||||
path: build/appimage.log
|
||||
destination: /
|
||||
- *save_cache
|
||||
shellcheck:
|
||||
docker:
|
||||
- image: koalaman/shellcheck-alpine:v0.4.6
|
||||
steps:
|
||||
- checkout
|
||||
- run:
|
||||
name: Shellcheck
|
||||
command: shellcheck $(find "./cmake/" -type f -name '*.sh' -o -name "*.sh.in")
|
||||
macos:
|
||||
environment:
|
||||
<<: *common_environment
|
||||
macos:
|
||||
xcode: "10.3.0"
|
||||
steps:
|
||||
- checkout
|
||||
- *init
|
||||
- *restore_homebrew_cache
|
||||
- *restore_cache
|
||||
- run:
|
||||
name: Install Homebrew dependencies
|
||||
command: |
|
||||
# uninstall Homebrew's python 2 to prevent errors on brew install
|
||||
brew uninstall python@2 || true
|
||||
brew update && brew install ccache fftw cmake pkg-config libogg libvorbis lame libsndfile libsamplerate jack sdl libgig libsoundio lilv lv2 stk fluid-synth portaudio fltk qt5 carla
|
||||
- run:
|
||||
name: Install nodejs dependencies
|
||||
command: npm install -g appdmg
|
||||
- run:
|
||||
name: Building
|
||||
command: |
|
||||
mkdir build && cd build
|
||||
cmake .. -DCMAKE_INSTALL_PREFIX="../target" -DCMAKE_PREFIX_PATH="$(brew --prefix qt5)" $CMAKE_OPTS -DUSE_WERROR=OFF
|
||||
make
|
||||
- run:
|
||||
name: Build tests
|
||||
command: cd build && make tests
|
||||
- run:
|
||||
name: Run tests
|
||||
command: build/tests/tests
|
||||
- run:
|
||||
name: Build DMG
|
||||
command: |
|
||||
cd build
|
||||
make install
|
||||
make dmg
|
||||
cp ./lmms-*.dmg /tmp/artifacts/
|
||||
- store_artifacts:
|
||||
path: /tmp/artifacts/
|
||||
destination: /
|
||||
- *save_cache
|
||||
- *save_homebrew_cache
|
||||
|
||||
|
||||
workflows:
|
||||
version: 2
|
||||
build-and-test:
|
||||
jobs:
|
||||
- macos
|
||||
- mingw32
|
||||
- mingw64
|
||||
- linux.gcc
|
||||
- shellcheck
|
||||
@@ -1,5 +0,0 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = tab
|
||||
tab_width = 4
|
||||
3
.gitattributes
vendored
@@ -1,3 +0,0 @@
|
||||
.gitattributes export-ignore
|
||||
.gitignore export-ignore
|
||||
data/locale/* linguist-documentation
|
||||
1
.github/FUNDING.yml
vendored
@@ -1 +0,0 @@
|
||||
custom: https://lmms.io/get-involved/#donate
|
||||
36
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -1,36 +0,0 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
# Please search the issue tracker for existing bug reports before submitting your own. Delete this line to confirm no similar report has been posted yet.
|
||||
|
||||
### Bug Summary
|
||||
|
||||
#### Steps to reproduce
|
||||
|
||||
#### Expected behavior
|
||||
|
||||
#### Actual behavior
|
||||
|
||||
#### Screenshot
|
||||
|
||||
#### Affected LMMS versions
|
||||
|
||||
<!--
|
||||
LMMS's version is visible on the splash screen and under Help > About.
|
||||
If your version isn't from lmms.io/download, please note which branch it was built from.
|
||||
Finally, if possible, please test if the bug occurs on both stable and master.
|
||||
-->
|
||||
|
||||
#### Logs
|
||||
<details>
|
||||
<summary>Click to expand</summary>
|
||||
<pre>
|
||||
<!-- paste logs here -->
|
||||
</pre>
|
||||
</details>
|
||||
4
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1,4 +0,0 @@
|
||||
contact_links:
|
||||
- name: Get help on Discord
|
||||
url: https://lmms.io/chat/
|
||||
about: Need help? Have a question? Reach out to other LMMS users on our Discord server!
|
||||
18
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@@ -1,18 +0,0 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: enhancement
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
# Please search the issue tracker for existing feature requests before submitting your own. Delete this line to confirm no similar request has been posted yet.
|
||||
|
||||
### Enhancement Summary
|
||||
|
||||
#### Justification
|
||||
|
||||
#### Mockup
|
||||
|
||||
<!-- If your request encompasses changes to the user interface, provide a mockup of your proposal here -->
|
||||
2
.github/no-response.yml
vendored
@@ -1,2 +0,0 @@
|
||||
# Label requiring a response
|
||||
responseRequiredLabel: "response required"
|
||||
11
.gitignore
vendored
@@ -1,11 +0,0 @@
|
||||
/build
|
||||
/target
|
||||
.*.sw?
|
||||
.DS_Store
|
||||
*~
|
||||
/CMakeLists.txt.user
|
||||
/plugins/zynaddsubfx/zynaddsubfx/ExternalPrograms/Controller/Makefile
|
||||
/plugins/zynaddsubfx/zynaddsubfx/ExternalPrograms/Spliter/Makefile
|
||||
/plugins/zynaddsubfx/zynaddsubfx/doc/Makefile
|
||||
/plugins/zynaddsubfx/zynaddsubfx/doc/gen/Makefile
|
||||
/data/locale/*.qm
|
||||
51
.gitmodules
vendored
@@ -1,51 +0,0 @@
|
||||
[submodule "src/3rdparty/qt5-x11embed"]
|
||||
path = src/3rdparty/qt5-x11embed
|
||||
url = https://github.com/Lukas-W/qt5-x11embed.git
|
||||
[submodule "src/3rdparty/rpmalloc/rpmalloc"]
|
||||
path = src/3rdparty/rpmalloc/rpmalloc
|
||||
url = https://github.com/mjansson/rpmalloc.git
|
||||
[submodule "plugins/zynaddsubfx/zynaddsubfx"]
|
||||
path = plugins/zynaddsubfx/zynaddsubfx
|
||||
url = https://github.com/lmms/zynaddsubfx.git
|
||||
[submodule "plugins/FreeBoy/game-music-emu"]
|
||||
path = plugins/FreeBoy/game-music-emu
|
||||
url = https://bitbucket.org/mpyne/game-music-emu.git
|
||||
[submodule "plugins/OpulenZ/adplug"]
|
||||
path = plugins/OpulenZ/adplug
|
||||
url = https://github.com/adplug/adplug.git
|
||||
[submodule "plugins/LadspaEffect/calf/veal"]
|
||||
path = plugins/LadspaEffect/calf/veal
|
||||
url = https://github.com/lmms/veal
|
||||
[submodule "plugins/Xpressive/exprtk"]
|
||||
path = plugins/Xpressive/exprtk
|
||||
url = https://github.com/ArashPartow/exprtk
|
||||
[submodule "plugins/LadspaEffect/swh/ladspa"]
|
||||
path = plugins/LadspaEffect/swh/ladspa
|
||||
url = https://github.com/swh/ladspa
|
||||
[submodule "plugins/LadspaEffect/tap/tap-plugins"]
|
||||
path = plugins/LadspaEffect/tap/tap-plugins
|
||||
url = https://github.com/tomszilagyi/tap-plugins
|
||||
[submodule "src/3rdparty/weakjack/weakjack"]
|
||||
path = src/3rdparty/weakjack/weakjack
|
||||
url = https://github.com/x42/weakjack.git
|
||||
[submodule "src/3rdparty/mingw-std-threads"]
|
||||
path = src/3rdparty/mingw-std-threads
|
||||
url = https://github.com/meganz/mingw-std-threads.git
|
||||
[submodule "doc/wiki"]
|
||||
path = doc/wiki
|
||||
url = https://github.com/lmms/lmms.wiki.git
|
||||
[submodule "src/3rdparty/ringbuffer"]
|
||||
path = src/3rdparty/ringbuffer
|
||||
url = https://github.com/JohannesLorenz/ringbuffer.git
|
||||
[submodule "plugins/carlabase/carla"]
|
||||
path = plugins/carlabase/carla
|
||||
url = https://github.com/falktx/carla
|
||||
[submodule "plugins/sid/resid"]
|
||||
path = plugins/Sid/resid
|
||||
url = https://github.com/simonowen/resid
|
||||
[submodule "src/3rdparty/jack2"]
|
||||
path = src/3rdparty/jack2
|
||||
url = https://github.com/jackaudio/jack2
|
||||
[submodule "plugins/LadspaEffect/cmt/cmt"]
|
||||
path = plugins/LadspaEffect/cmt/cmt
|
||||
url = https://github.com/lmms/cmt
|
||||
33
.mailmap
@@ -1,33 +0,0 @@
|
||||
Alexandre Almeida <wilsalx@gmail.com> <meta.lx@hotmail.com>
|
||||
Tobias Junghans <tobias.doerffel@gmail.com>
|
||||
Dave French <dave.french3@googlemail.com>
|
||||
Paul Giblock <drfaygo@gmail.com> <pgib@users.sf.net>
|
||||
Paul Giblock <drfaygo@gmail.com> <p@pgiblock.net>
|
||||
Andrew Kelley <superjoe30@gmail.com> <andrew.r.kelley@gmail.com>
|
||||
Andrew Kelley <superjoe30@gmail.com> <andy@debian.superjoesoftware>
|
||||
Janne Sinisalo <janne.m.sinisalo@gmail.com> <janne@janne-desktop.(none)>
|
||||
Raine M. Ekman <raine@iki.fi> <raine@raine.(none)>
|
||||
Raine M. Ekman <raine@iki.fi> <raine@raine.damex.fi>
|
||||
Lukas W <lukaswhl@gmail.com> <lukaswhl@googlemail.com>
|
||||
Vesa <contact.diizy@nbl.fi> <vesa@isokone.(none)>
|
||||
Vesa <contact.diizy@nbl.fi> <diizy@users.noreply.github.com>
|
||||
Tres Finocchiaro <tres.finocchiaro@gmail.com>
|
||||
Tres Finocchiaro <tres.finocchiaro@gmail.com> <tres@ubuntu-1204.(none)>
|
||||
Tres Finocchiaro <tres.finocchiaro@gmail.com> <ubuntu@ubuntu-1204.(none)>
|
||||
Tres Finocchiaro <tres.finocchiaro@gmail.com> <tresf@github.com>
|
||||
Rüdiger Ranft <rudi@qzzq.de> <_rdi_@web.de>
|
||||
Spekular <Spekularr@gmail.com> <Spekular@users.noreply.github.com>
|
||||
unfa <unfa00@gmail.com> <unfa@unfa.(none)>
|
||||
mikobuntu <chrissy.mc.1@hotmail.co.uk> <mikobuntu@mikobuntu-Aspire-5332.(none)>
|
||||
Jonathan Aquilina <eagles051387@gmail.com>
|
||||
midi-pascal <midi-pascal@videotron.ca>
|
||||
midi-pascal <midi-pascal@videotron.ca> <pascal@TDE.(none)>
|
||||
Thomas Clark <the.thomas.j.clark@gmail.com>
|
||||
Thomas Clark <the.thomas.j.clark@gmail.com> <tjclark@wpi.edu>
|
||||
anonymous <support@lmms.io> Locale updater <>
|
||||
grejppi <grejppi@gmail.com>
|
||||
Johannes Lorenz <j.git@lorenz-ho.me> <johannes89@mailueberfall.de>
|
||||
Johannes Lorenz <j.git@lorenz-ho.me> <1042576+JohannesLorenz@users.noreply.github.com>
|
||||
Noah Brecht <noahb2713@gmail.com>
|
||||
Olivier Humbert <trebmuh@tuxfamily.org> <trebmuh@users.noreply.github.com>
|
||||
Hussam al-Homsi <sawuare@gmail.com> Hussam Eddin Alhomsi <hussameddin.alhomsi@gmail.com>
|
||||
33
.travis.yml
@@ -1,33 +0,0 @@
|
||||
language: cpp
|
||||
compiler: gcc
|
||||
dist: xenial
|
||||
sudo: required
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/apt_mingw_cache
|
||||
- $HOME/.ccache
|
||||
- $HOME/pbuilder-bases
|
||||
matrix:
|
||||
include:
|
||||
- env: TYPE=style
|
||||
- os: linux
|
||||
- env: TARGET_OS=debian-sid TARGET_DEPLOY=True
|
||||
git:
|
||||
depth: false
|
||||
- env: TARGET_OS=debian-sid TARGET_ARCH=i386
|
||||
git:
|
||||
depth: false
|
||||
- compiler: clang
|
||||
env: TARGET_OS=debian-sid
|
||||
git:
|
||||
depth: false
|
||||
- os: osx
|
||||
osx_image: xcode10.3
|
||||
before_install:
|
||||
# appdmg doesn't work with old Node.js
|
||||
- if [ "$TRAVIS_OS_NAME" = osx ]; then nvm install 10; fi
|
||||
install: ${TRAVIS_BUILD_DIR}/.travis/install.sh
|
||||
script: ${TRAVIS_BUILD_DIR}/.travis/script.sh
|
||||
after_script: ${TRAVIS_BUILD_DIR}/.travis/after_script.sh
|
||||
before_deploy:
|
||||
- if [ "$TARGET_OS" != debian-sid ]; then make package; fi
|
||||
@@ -1,7 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
if [ "$TYPE" != 'style' ]; then
|
||||
ccache -s
|
||||
fi
|
||||
@@ -1 +0,0 @@
|
||||
0de866bc0ee26de392e037104b174474989a830e2249280a136144baa44557aa ccache_3.2.4-1_amd64.deb
|
||||
@@ -1,3 +0,0 @@
|
||||
314ef4af137903dfb13e8c3ef1e6ea56cfdb23808d52ec4f5f50e288c73610c5 pbuilder_0.229.1_all.deb
|
||||
fa82aa8ed3055c6f6330104deedf080b26778295e589426d4c4dd0f2c2a5defa debootstrap_1.0.95_all.deb
|
||||
2ef4c09f7841b72f93412803ddd142f72658536dbfabe00e449eb548f432f3f8 debian-archive-keyring_2017.7ubuntu1_all.deb
|
||||
@@ -1,11 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
if [ "$TYPE" = 'style' ]; then
|
||||
sudo apt-get -yqq update
|
||||
sudo apt-get install shellcheck
|
||||
else
|
||||
"$TRAVIS_BUILD_DIR/.travis/$TRAVIS_OS_NAME.$TARGET_OS.before_install.sh"
|
||||
"$TRAVIS_BUILD_DIR/.travis/$TRAVIS_OS_NAME.$TARGET_OS.install.sh"
|
||||
fi
|
||||
@@ -1,8 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
sudo add-apt-repository ppa:beineri/opt-qt592-xenial -y
|
||||
|
||||
sudo dpkg --add-architecture i386
|
||||
sudo apt-get update -qq || true
|
||||
@@ -1,23 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
PACKAGES="cmake libsndfile-dev fftw3-dev libvorbis-dev libogg-dev libmp3lame-dev
|
||||
libasound2-dev libjack-jackd2-dev libsdl-dev libsamplerate0-dev libstk0-dev stk
|
||||
libfluidsynth-dev portaudio19-dev g++-multilib libfltk1.3-dev fluid
|
||||
libgig-dev libsoundio-dev qt59base qt59translations qt59tools"
|
||||
|
||||
# swh build dependencies
|
||||
SWH_PACKAGES="perl libxml2-utils libxml-perl liblist-moreutils-perl"
|
||||
|
||||
# VST dependencies
|
||||
VST_PACKAGES="wine-dev qt59x11extras qtbase5-private-dev libxcb-util0-dev libxcb-keysyms1-dev"
|
||||
|
||||
# LV2 dependencies; libsuil-dev is not required
|
||||
LV2_PACKAGES="lv2-dev liblilv-dev"
|
||||
|
||||
# Help with unmet dependencies
|
||||
PACKAGES="$PACKAGES $SWH_PACKAGES $VST_PACKAGES $LV2_PACKAGES libjack-jackd2-0"
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
sudo apt-get install -y $PACKAGES
|
||||
@@ -1,15 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
unset QTDIR QT_PLUGIN_PATH LD_LIBRARY_PATH
|
||||
# shellcheck disable=SC1091
|
||||
source /opt/qt59/bin/qt59-env.sh
|
||||
|
||||
set -e
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
cmake -DUSE_WERROR=ON -DCMAKE_INSTALL_PREFIX=../target $CMAKE_FLAGS ..
|
||||
make -j4
|
||||
make tests
|
||||
./tests/tests
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/sh
|
||||
sudo apt-get update -qq
|
||||
@@ -1,17 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
sudo apt-get install -y \
|
||||
dpkg \
|
||||
pbuilder
|
||||
|
||||
# work around a pbuilder bug which breaks ccache
|
||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=666525
|
||||
# and also missing signing keys in Trusty's debian-archive-keyring
|
||||
cd /tmp
|
||||
wget http://archive.ubuntu.com/ubuntu/pool/main/p/pbuilder/pbuilder_0.229.1_all.deb
|
||||
wget http://archive.ubuntu.com/ubuntu/pool/main/d/debootstrap/debootstrap_1.0.95_all.deb
|
||||
wget http://archive.ubuntu.com/ubuntu/pool/universe/d/debian-archive-keyring/debian-archive-keyring_2017.7ubuntu1_all.deb
|
||||
sha256sum -c "$TRAVIS_BUILD_DIR/.travis/debian_pkgs.sha256"
|
||||
sudo dpkg -i pbuilder_0.229.1_all.deb debootstrap_1.0.95_all.deb debian-archive-keyring_2017.7ubuntu1_all.deb
|
||||
cd "$OLDPWD"
|
||||
@@ -1,72 +0,0 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
: "${TARGET_ARCH:=amd64}"
|
||||
|
||||
BASETGZ="$HOME/pbuilder-bases/debian-sid-$TARGET_ARCH.tgz"
|
||||
MIRROR=http://cdn-fastly.deb.debian.org/debian
|
||||
KEYRING=/usr/share/keyrings/debian-archive-keyring.gpg
|
||||
|
||||
if [ -z "$TRAVIS_TAG" ]
|
||||
then
|
||||
sudo \
|
||||
sh -c "echo CCACHEDIR=$HOME/.ccache >> /etc/pbuilderrc"
|
||||
fi
|
||||
|
||||
if [ "$CC" = clang ]
|
||||
then
|
||||
sudo sh -c "echo EXTRAPACKAGES=clang >> /etc/pbuilderrc"
|
||||
fi
|
||||
|
||||
if [ ! -e "$BASETGZ.stamp" ]
|
||||
then
|
||||
mkdir -p "$HOME/pbuilder-bases"
|
||||
sudo pbuilder --create --basetgz "$BASETGZ" --mirror $MIRROR \
|
||||
--distribution sid --architecture $TARGET_ARCH \
|
||||
--debootstrapopts --variant=buildd \
|
||||
--debootstrapopts --keyring=$KEYRING \
|
||||
--debootstrapopts --include=perl
|
||||
touch "$BASETGZ.stamp"
|
||||
else
|
||||
sudo pbuilder --update --basetgz "$BASETGZ"
|
||||
fi
|
||||
|
||||
sync_version() {
|
||||
local VERSION
|
||||
local MMR
|
||||
local STAGE
|
||||
local EXTRA
|
||||
|
||||
VERSION=$(git describe --tags --match v[0-9].[0-9].[0-9]*)
|
||||
VERSION=${VERSION#v}
|
||||
MMR=${VERSION%%-*}
|
||||
case $VERSION in
|
||||
*-*-*-*)
|
||||
VERSION=${VERSION%-*}
|
||||
STAGE=${VERSION#*-}
|
||||
STAGE=${STAGE%-*}
|
||||
EXTRA=${VERSION##*-}
|
||||
VERSION=$MMR~$STAGE.$EXTRA
|
||||
;;
|
||||
*-*-*)
|
||||
VERSION=${VERSION%-*}
|
||||
EXTRA=${VERSION##*-}
|
||||
VERSION=$MMR.$EXTRA
|
||||
;;
|
||||
*-*)
|
||||
STAGE=${VERSION#*-}
|
||||
VERSION=$MMR~$STAGE
|
||||
;;
|
||||
esac
|
||||
|
||||
sed "1 s/@VERSION@/$VERSION/" -i debian/changelog
|
||||
echo "Set Debian version to $VERSION"
|
||||
}
|
||||
|
||||
sync_version
|
||||
|
||||
DIR="$PWD"
|
||||
cd ..
|
||||
dpkg-source -b "$DIR"
|
||||
env -i CC="$CC" CXX="$CXX" sudo pbuilder --build --debbuildopts "--jobs=auto" \
|
||||
--basetgz "$BASETGZ" ./*.dsc
|
||||
@@ -1,16 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
CACHE_DIR=$HOME/apt_mingw_cache/$1
|
||||
mkdir -p "$CACHE_DIR"
|
||||
|
||||
pushd "$CACHE_DIR"
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
apt-get --print-uris --yes install $MINGW_PACKAGES | grep ^\' | cut -d\' -f2 > downloads.list
|
||||
wget -N --input-file downloads.list
|
||||
|
||||
sudo cp ./*.deb /var/cache/apt/archives/
|
||||
|
||||
popd
|
||||
@@ -1,6 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
sudo add-apt-repository ppa:tobydox/mingw-x-trusty -y
|
||||
sudo apt-get update -qq
|
||||
@@ -1,29 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
MINGW_PACKAGES="mingw32-x-sdl mingw32-x-libvorbis mingw32-x-fluidsynth mingw32-x-stk
|
||||
mingw32-x-glib2 mingw32-x-portaudio mingw32-x-libsndfile mingw32-x-fftw
|
||||
mingw32-x-flac mingw32-x-fltk mingw32-x-libsamplerate
|
||||
mingw32-x-pkgconfig mingw32-x-binutils mingw32-x-gcc mingw32-x-runtime
|
||||
mingw32-x-libgig mingw32-x-libsoundio mingw32-x-lame mingw32-x-qt5base"
|
||||
|
||||
# swh build dependencies
|
||||
SWH_PACKAGES="perl libxml2-utils libxml-perl liblist-moreutils-perl"
|
||||
|
||||
export MINGW_PACKAGES
|
||||
|
||||
"$TRAVIS_BUILD_DIR/.travis/linux.win.download.sh" win32
|
||||
|
||||
PACKAGES="nsis cloog-isl libmpc3 qt4-linguist-tools mingw32 $MINGW_PACKAGES $SWH_PACKAGES"
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
sudo apt-get install -y $PACKAGES
|
||||
|
||||
# ccache 3.2 is needed because mingw32-x-gcc is version 4.9, which causes cmake
|
||||
# to use @file command line passing, which in turn ccache 3.1.9 doesn't support
|
||||
pushd /tmp
|
||||
wget http://archive.ubuntu.com/ubuntu/pool/main/c/ccache/ccache_3.2.4-1_amd64.deb
|
||||
sha256sum -c "$TRAVIS_BUILD_DIR/.travis/ccache.sha256"
|
||||
sudo dpkg -i ccache_3.2.4-1_amd64.deb
|
||||
popd
|
||||
@@ -1,11 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
export CMAKE_OPTS="$CMAKE_FLAGS -DUSE_WERROR=ON"
|
||||
../cmake/build_win32.sh
|
||||
|
||||
make -j4
|
||||
make tests
|
||||
@@ -1,5 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
"$TRAVIS_BUILD_DIR/.travis/linux.win32.before_install.sh"
|
||||
@@ -1,19 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
# First, install 32-bit deps
|
||||
"$TRAVIS_BUILD_DIR/.travis/linux.win32.install.sh"
|
||||
|
||||
MINGW_PACKAGES="mingw64-x-sdl mingw64-x-libvorbis mingw64-x-fluidsynth mingw64-x-stk
|
||||
mingw64-x-glib2 mingw64-x-portaudio mingw64-x-libsndfile
|
||||
mingw64-x-fftw mingw64-x-flac mingw64-x-fltk mingw64-x-libsamplerate
|
||||
mingw64-x-pkgconfig mingw64-x-binutils mingw64-x-gcc mingw64-x-runtime
|
||||
mingw64-x-libgig mingw64-x-libsoundio mingw64-x-lame mingw64-x-qt5base"
|
||||
|
||||
export MINGW_PACKAGES
|
||||
|
||||
"$TRAVIS_BUILD_DIR/.travis/linux.win.download.sh" win64
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
sudo apt-get install -y $MINGW_PACKAGES
|
||||
@@ -1,11 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
export CMAKE_OPTS="$CMAKE_FLAGS -DUSE_WERROR=ON"
|
||||
../cmake/build_win64.sh
|
||||
|
||||
make -j4
|
||||
make tests
|
||||
@@ -1,7 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
brew update
|
||||
# Python 2 may cause conflicts on dependency installation
|
||||
brew unlink python@2 || true
|
||||
@@ -1,22 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
PACKAGES="cmake pkg-config libogg libvorbis lame libsndfile libsamplerate lilv lv2 jack sdl libgig libsoundio stk fluid-synth portaudio node fltk qt carla"
|
||||
|
||||
if "${TRAVIS}"; then
|
||||
PACKAGES="$PACKAGES ccache"
|
||||
fi
|
||||
|
||||
# removing already installed packages from the list
|
||||
for p in $(brew list); do
|
||||
PACKAGES=${PACKAGES//$p/}
|
||||
done;
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
brew install $PACKAGES
|
||||
|
||||
# fftw tries to install gcc which conflicts with travis
|
||||
brew install fftw --ignore-dependencies
|
||||
|
||||
npm install -g appdmg
|
||||
@@ -1,16 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
# Workaround; No FindQt5.cmake module exists
|
||||
CMAKE_PREFIX_PATH="$(brew --prefix qt5)"
|
||||
export CMAKE_PREFIX_PATH
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
cmake -DUSE_WERROR=OFF -DCMAKE_INSTALL_PREFIX=../target $CMAKE_FLAGS ..
|
||||
|
||||
make -j4
|
||||
make tests
|
||||
./tests/tests
|
||||
@@ -1,48 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
if [ "$TYPE" = 'style' ]; then
|
||||
|
||||
# SC2185 is disabled because of: https://github.com/koalaman/shellcheck/issues/942
|
||||
# once it's fixed, it should be enabled again
|
||||
# shellcheck disable=SC2185
|
||||
# shellcheck disable=SC2046
|
||||
shellcheck $(find -O3 . -maxdepth 3 -type f -name '*.sh' -o -name "*.sh.in")
|
||||
shellcheck doc/bash-completion/lmms
|
||||
|
||||
else
|
||||
|
||||
export CMAKE_FLAGS="-DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUNDLE_QT_TRANSLATIONS=ON"
|
||||
|
||||
if [ -z "$TRAVIS_TAG" ]; then
|
||||
export CMAKE_FLAGS="$CMAKE_FLAGS -DUSE_CCACHE=ON"
|
||||
fi
|
||||
|
||||
"$TRAVIS_BUILD_DIR/.travis/$TRAVIS_OS_NAME.$TARGET_OS.script.sh"
|
||||
|
||||
# Package and upload non-tagged builds
|
||||
if [ -n "$TRAVIS_TAG" ]; then
|
||||
# Skip, handled by travis deploy instead
|
||||
exit 0
|
||||
elif [[ $TARGET_OS == win* ]]; then
|
||||
cd build
|
||||
make -j4 package
|
||||
PACKAGE="$(ls lmms-*win*.exe)"
|
||||
elif [[ $TRAVIS_OS_NAME == osx ]]; then
|
||||
cd build
|
||||
make -j4 install > /dev/null
|
||||
make dmg
|
||||
PACKAGE="$(ls lmms-*.dmg)"
|
||||
elif [[ $TARGET_OS != debian-sid ]]; then
|
||||
cd build
|
||||
make -j4 install > /dev/null
|
||||
make appimage
|
||||
PACKAGE="$(ls lmms-*.AppImage)"
|
||||
fi
|
||||
|
||||
echo "Uploading $PACKAGE to transfer.sh..."
|
||||
# Limit the connection time to 3 minutes and total upload time to 5 minutes
|
||||
# Otherwise the build may hang
|
||||
curl --connect-timeout 180 --max-time 300 --upload-file "$PACKAGE" "https://transfer.sh/$PACKAGE" || true
|
||||
fi
|
||||
11
.tx/config
@@ -1,11 +0,0 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
minimum_perc = 51
|
||||
#Need to finish at least 51% before merging back
|
||||
|
||||
[lmms.lmms]
|
||||
file_filter = data/locale/<lang>.ts
|
||||
source_file = data/locale/en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
|
||||
27
AUTHORS
Normal file
@@ -0,0 +1,27 @@
|
||||
Tobias Doerffel
|
||||
<tobydox/at/users/dot/sourceforge/dot/net>
|
||||
Maintainer, main-development, artwork etc.
|
||||
|
||||
Danny McRae
|
||||
<khjklujn/at/yahoo.com>
|
||||
development
|
||||
|
||||
Javier Serrano Polo
|
||||
<jasp00/at/terra/dot/es>
|
||||
development
|
||||
|
||||
Zolo
|
||||
<the-zolo/at/gmx/dot/de>
|
||||
theme "Blue Scene"
|
||||
|
||||
Sebastian Tilsch
|
||||
<djcompilation/at/gmx/dot/de>
|
||||
recording of many samples
|
||||
|
||||
gabriel
|
||||
<kryos1/at/shaw/dot/ca>
|
||||
additional artwork
|
||||
|
||||
Andreas Brandmaier
|
||||
<andy/at/brandmaier/dot/de>
|
||||
BitInvader plugin
|
||||
784
CMakeLists.txt
@@ -1,784 +0,0 @@
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 3.3)
|
||||
|
||||
PROJECT(lmms)
|
||||
|
||||
SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules" ${CMAKE_MODULE_PATH})
|
||||
SET(LMMS_BINARY_DIR ${CMAKE_BINARY_DIR})
|
||||
SET(LMMS_SOURCE_DIR ${CMAKE_SOURCE_DIR})
|
||||
|
||||
IF(COMMAND CMAKE_POLICY)
|
||||
CMAKE_POLICY(SET CMP0005 NEW)
|
||||
CMAKE_POLICY(SET CMP0003 NEW)
|
||||
IF (CMAKE_MAJOR_VERSION GREATER 2)
|
||||
CMAKE_POLICY(SET CMP0026 NEW)
|
||||
CMAKE_POLICY(SET CMP0045 NEW)
|
||||
CMAKE_POLICY(SET CMP0050 OLD)
|
||||
ENDIF()
|
||||
CMAKE_POLICY(SET CMP0020 NEW)
|
||||
CMAKE_POLICY(SET CMP0057 NEW)
|
||||
ENDIF(COMMAND CMAKE_POLICY)
|
||||
|
||||
|
||||
# Import of windows.h breaks min()/max()
|
||||
ADD_DEFINITIONS(-DNOMINMAX)
|
||||
|
||||
INCLUDE(PluginList)
|
||||
INCLUDE(CheckSubmodules)
|
||||
INCLUDE(AddFileDependencies)
|
||||
INCLUDE(CheckIncludeFiles)
|
||||
INCLUDE(FindPkgConfig)
|
||||
INCLUDE(GenerateExportHeader)
|
||||
|
||||
STRING(TOUPPER "${CMAKE_PROJECT_NAME}" PROJECT_NAME_UCASE)
|
||||
|
||||
SET(PROJECT_YEAR 2020)
|
||||
|
||||
SET(PROJECT_AUTHOR "LMMS Developers")
|
||||
SET(PROJECT_URL "https://lmms.io")
|
||||
SET(PROJECT_EMAIL "lmms-devel@lists.sourceforge.net")
|
||||
SET(PROJECT_DESCRIPTION "${PROJECT_NAME_UCASE} - Free music production software")
|
||||
SET(PROJECT_COPYRIGHT "2008-${PROJECT_YEAR} ${PROJECT_AUTHOR}")
|
||||
SET(VERSION_MAJOR "1")
|
||||
SET(VERSION_MINOR "3")
|
||||
SET(VERSION_RELEASE "0")
|
||||
SET(VERSION_STAGE "alpha")
|
||||
SET(VERSION_BUILD "")
|
||||
SET(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_RELEASE}")
|
||||
IF(VERSION_STAGE)
|
||||
SET(VERSION "${VERSION}-${VERSION_STAGE}")
|
||||
ENDIF()
|
||||
IF(VERSION_BUILD)
|
||||
SET(VERSION "${VERSION}-${VERSION_BUILD}")
|
||||
ENDIF()
|
||||
|
||||
# Override version information for non-base builds
|
||||
INCLUDE(VersionInfo)
|
||||
INCLUDE(DetectMachine)
|
||||
|
||||
OPTION(WANT_ALSA "Include ALSA (Advanced Linux Sound Architecture) support" ON)
|
||||
OPTION(WANT_CALF "Include CALF LADSPA plugins" ON)
|
||||
OPTION(WANT_CAPS "Include C* Audio Plugin Suite (LADSPA plugins)" ON)
|
||||
OPTION(WANT_CARLA "Include Carla plugin" ON)
|
||||
OPTION(WANT_CMT "Include Computer Music Toolkit LADSPA plugins" ON)
|
||||
OPTION(WANT_JACK "Include JACK (Jack Audio Connection Kit) support" ON)
|
||||
OPTION(WANT_WEAKJACK "Loosely link JACK libraries" ON)
|
||||
OPTION(WANT_LV2 "Include Lv2 plugins" ON)
|
||||
OPTION(WANT_SUIL "Include SUIL for LV2 plugin UIs" ON)
|
||||
OPTION(WANT_MP3LAME "Include MP3/Lame support" ON)
|
||||
OPTION(WANT_OGGVORBIS "Include OGG/Vorbis support" ON)
|
||||
OPTION(WANT_PULSEAUDIO "Include PulseAudio support" ON)
|
||||
OPTION(WANT_PORTAUDIO "Include PortAudio support" ON)
|
||||
OPTION(WANT_SNDIO "Include sndio support" ON)
|
||||
OPTION(WANT_SOUNDIO "Include libsoundio support" ON)
|
||||
OPTION(WANT_SDL "Include SDL (Simple DirectMedia Layer) support" ON)
|
||||
OPTION(WANT_SF2 "Include SoundFont2 player plugin" ON)
|
||||
OPTION(WANT_GIG "Include GIG player plugin" ON)
|
||||
OPTION(WANT_STK "Include Stk (Synthesis Toolkit) support" ON)
|
||||
OPTION(WANT_SWH "Include Steve Harris's LADSPA plugins" ON)
|
||||
OPTION(WANT_TAP "Include Tom's Audio Processing LADSPA plugins" ON)
|
||||
OPTION(WANT_VST "Include VST support" ON)
|
||||
OPTION(WANT_VST_32 "Include 32-bit VST support" ON)
|
||||
OPTION(WANT_VST_64 "Include 64-bit VST support" ON)
|
||||
OPTION(WANT_WINMM "Include WinMM MIDI support" OFF)
|
||||
OPTION(WANT_DEBUG_FPE "Debug floating point exceptions" OFF)
|
||||
OPTION(BUNDLE_QT_TRANSLATIONS "Install Qt translation files for LMMS" OFF)
|
||||
|
||||
|
||||
IF(LMMS_BUILD_APPLE)
|
||||
# Fix linking on 10.14+. See issue #4762 on github
|
||||
LINK_DIRECTORIES(/usr/local/lib)
|
||||
SET(WANT_SOUNDIO OFF)
|
||||
SET(WANT_ALSA OFF)
|
||||
SET(WANT_PULSEAUDIO OFF)
|
||||
SET(WANT_VST OFF)
|
||||
SET(STATUS_ALSA "<not supported on this platform>")
|
||||
SET(STATUS_PULSEAUDIO "<not supported on this platform>")
|
||||
SET(STATUS_APPLEMIDI "OK")
|
||||
ELSE(LMMS_BUILD_APPLE)
|
||||
SET(STATUS_APPLEMIDI "<not supported on this platform>")
|
||||
ENDIF(LMMS_BUILD_APPLE)
|
||||
|
||||
|
||||
IF(LMMS_BUILD_WIN32)
|
||||
SET(WANT_ALSA OFF)
|
||||
SET(WANT_PULSEAUDIO OFF)
|
||||
SET(WANT_SNDIO OFF)
|
||||
SET(WANT_SOUNDIO OFF)
|
||||
SET(WANT_WINMM ON)
|
||||
SET(BUNDLE_QT_TRANSLATIONS ON)
|
||||
SET(LMMS_HAVE_WINMM TRUE)
|
||||
SET(STATUS_ALSA "<not supported on this platform>")
|
||||
SET(STATUS_PULSEAUDIO "<not supported on this platform>")
|
||||
SET(STATUS_SOUNDIO "<disabled in this release>")
|
||||
SET(STATUS_WINMM "OK")
|
||||
SET(STATUS_APPLEMIDI "<not supported on this platform>")
|
||||
ELSE(LMMS_BUILD_WIN32)
|
||||
SET(STATUS_WINMM "<not supported on this platform>")
|
||||
ENDIF(LMMS_BUILD_WIN32)
|
||||
|
||||
|
||||
# TODO: Fix linking issues with msys debug builds
|
||||
IF(LMMS_BUILD_MSYS AND CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
SET(WANT_GIG OFF)
|
||||
SET(WANT_STK OFF)
|
||||
SET(WANT_SWH OFF)
|
||||
SET(STATUS_GIG "not built as requested")
|
||||
SET(STATUS_STK "not built as requested")
|
||||
ENDIF()
|
||||
|
||||
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
CHECK_INCLUDE_FILES(stdint.h LMMS_HAVE_STDINT_H)
|
||||
CHECK_INCLUDE_FILES(stdlib.h LMMS_HAVE_STDLIB_H)
|
||||
CHECK_INCLUDE_FILES(pthread.h LMMS_HAVE_PTHREAD_H)
|
||||
CHECK_INCLUDE_FILES(semaphore.h LMMS_HAVE_SEMAPHORE_H)
|
||||
CHECK_INCLUDE_FILES(unistd.h LMMS_HAVE_UNISTD_H)
|
||||
CHECK_INCLUDE_FILES(sys/types.h LMMS_HAVE_SYS_TYPES_H)
|
||||
CHECK_INCLUDE_FILES(sys/ipc.h LMMS_HAVE_SYS_IPC_H)
|
||||
CHECK_INCLUDE_FILES(sys/shm.h LMMS_HAVE_SYS_SHM_H)
|
||||
CHECK_INCLUDE_FILES(sys/time.h LMMS_HAVE_SYS_TIME_H)
|
||||
CHECK_INCLUDE_FILES(sys/times.h LMMS_HAVE_SYS_TIMES_H)
|
||||
CHECK_INCLUDE_FILES(sched.h LMMS_HAVE_SCHED_H)
|
||||
CHECK_INCLUDE_FILES(sys/soundcard.h LMMS_HAVE_SYS_SOUNDCARD_H)
|
||||
CHECK_INCLUDE_FILES(soundcard.h LMMS_HAVE_SOUNDCARD_H)
|
||||
CHECK_INCLUDE_FILES(fcntl.h LMMS_HAVE_FCNTL_H)
|
||||
CHECK_INCLUDE_FILES(sys/ioctl.h LMMS_HAVE_SYS_IOCTL_H)
|
||||
CHECK_INCLUDE_FILES(ctype.h LMMS_HAVE_CTYPE_H)
|
||||
CHECK_INCLUDE_FILES(string.h LMMS_HAVE_STRING_H)
|
||||
CHECK_INCLUDE_FILES(process.h LMMS_HAVE_PROCESS_H)
|
||||
CHECK_INCLUDE_FILES(locale.h LMMS_HAVE_LOCALE_H)
|
||||
|
||||
LIST(APPEND CMAKE_PREFIX_PATH "${CMAKE_INSTALL_PREFIX}")
|
||||
|
||||
FIND_PACKAGE(Qt5 5.6.0 COMPONENTS Core Gui Widgets Xml REQUIRED)
|
||||
FIND_PACKAGE(Qt5 COMPONENTS LinguistTools QUIET)
|
||||
|
||||
INCLUDE_DIRECTORIES(
|
||||
${Qt5Core_INCLUDE_DIRS}
|
||||
${Qt5Gui_INCLUDE_DIRS}
|
||||
${Qt5Widgets_INCLUDE_DIRS}
|
||||
${Qt5Xml_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
SET(QT_LIBRARIES
|
||||
Qt5::Core
|
||||
Qt5::Gui
|
||||
Qt5::Widgets
|
||||
Qt5::Xml
|
||||
)
|
||||
|
||||
IF(LMMS_BUILD_LINUX AND WANT_VST)
|
||||
FIND_PACKAGE(Qt5 COMPONENTS X11Extras REQUIRED)
|
||||
LIST(APPEND QT_LIBRARIES Qt5::X11Extras)
|
||||
ENDIF()
|
||||
|
||||
# Resolve Qt5::qmake to full path for use in packaging scripts
|
||||
GET_TARGET_PROPERTY(QT_QMAKE_EXECUTABLE "${Qt5Core_QMAKE_EXECUTABLE}" IMPORTED_LOCATION)
|
||||
|
||||
# Find the location of Qt translation files
|
||||
execute_process(COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_TRANSLATIONS
|
||||
OUTPUT_VARIABLE QT_TRANSLATIONS_DIR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_QUIET
|
||||
)
|
||||
IF(EXISTS "${QT_TRANSLATIONS_DIR}")
|
||||
MESSAGE("-- Found Qt translations in ${QT_TRANSLATIONS_DIR}")
|
||||
ADD_DEFINITIONS(-D'QT_TRANSLATIONS_DIR="${QT_TRANSLATIONS_DIR}"')
|
||||
ENDIF()
|
||||
|
||||
FIND_PACKAGE(Qt5Test)
|
||||
SET(QT_QTTEST_LIBRARY Qt5::Test)
|
||||
|
||||
# check for libsndfile
|
||||
FIND_PACKAGE(SndFile REQUIRED)
|
||||
IF(NOT SNDFILE_FOUND)
|
||||
MESSAGE(FATAL_ERROR "LMMS requires libsndfile1 and libsndfile1-dev >= 1.0.18 - please install, remove CMakeCache.txt and try again!")
|
||||
ENDIF()
|
||||
# check if we can use SF_SET_COMPRESSION_LEVEL
|
||||
IF(NOT SNDFILE_VERSION VERSION_LESS 1.0.26)
|
||||
SET(LMMS_HAVE_SF_COMPLEVEL TRUE)
|
||||
ENDIF()
|
||||
|
||||
IF(WANT_LV2)
|
||||
IF(PKG_CONFIG_FOUND)
|
||||
PKG_CHECK_MODULES(LV2 lv2)
|
||||
PKG_CHECK_MODULES(LILV lilv-0)
|
||||
ENDIF()
|
||||
IF(NOT LV2_FOUND AND NOT LILV_FOUND)
|
||||
FIND_PACKAGE(LV2 CONFIG)
|
||||
FIND_PACKAGE(LILV CONFIG)
|
||||
IF(LILV_FOUND)
|
||||
SET(LILV_LIBRARIES "lilv::lilv")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
IF(LV2_FOUND AND LILV_FOUND)
|
||||
SET(LMMS_HAVE_LV2 TRUE)
|
||||
SET(STATUS_LV2 "OK")
|
||||
ELSE()
|
||||
SET(STATUS_LV2 "not found, install it or set PKG_CONFIG_PATH appropriately")
|
||||
ENDIF()
|
||||
ELSE(WANT_LV2)
|
||||
SET(STATUS_LV2 "not built as requested")
|
||||
ENDIF(WANT_LV2)
|
||||
|
||||
IF(WANT_SUIL)
|
||||
IF(PKG_CONFIG_FOUND)
|
||||
PKG_CHECK_MODULES(SUIL suil-0)
|
||||
IF(SUIL_FOUND)
|
||||
SET(LMMS_HAVE_SUIL TRUE)
|
||||
SET(STATUS_SUIL "OK")
|
||||
ELSE()
|
||||
SET(STATUS_SUIL "not found, install it or set PKG_CONFIG_PATH appropriately")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
SET(STATUS_SUIL "not found, requires pkg-config")
|
||||
ENDIF()
|
||||
ELSE(WANT_SUIL)
|
||||
SET(STATUS_SUIL "not built as requested")
|
||||
ENDIF(WANT_SUIL)
|
||||
|
||||
IF(WANT_CALF)
|
||||
SET(LMMS_HAVE_CALF TRUE)
|
||||
SET(STATUS_CALF "OK")
|
||||
ELSE(WANT_CALF)
|
||||
SET(STATUS_CALF "not built as requested")
|
||||
ENDIF(WANT_CALF)
|
||||
|
||||
IF(WANT_CAPS)
|
||||
SET(LMMS_HAVE_CAPS TRUE)
|
||||
SET(STATUS_CAPS "OK")
|
||||
ELSE(WANT_CAPS)
|
||||
SET(STATUS_CAPS "not built as requested")
|
||||
ENDIF(WANT_CAPS)
|
||||
|
||||
IF(WANT_CMT)
|
||||
SET(LMMS_HAVE_CMT TRUE)
|
||||
SET(STATUS_CMT "OK")
|
||||
ELSE(WANT_CMT)
|
||||
SET(STATUS_CMT "not built as requested")
|
||||
ENDIF(WANT_CMT)
|
||||
|
||||
IF(WANT_SWH)
|
||||
SET(LMMS_HAVE_SWH TRUE)
|
||||
SET(STATUS_SWH "OK")
|
||||
ELSE(WANT_SWH)
|
||||
SET(STATUS_SWH "not built as requested")
|
||||
ENDIF(WANT_SWH)
|
||||
|
||||
IF(WANT_TAP)
|
||||
SET(LMMS_HAVE_TAP TRUE)
|
||||
SET(STATUS_TAP "OK")
|
||||
ELSE(WANT_TAP)
|
||||
SET(STATUS_TAP "not built as requested")
|
||||
ENDIF(WANT_TAP)
|
||||
|
||||
|
||||
# check for CARLA
|
||||
IF(WANT_CARLA)
|
||||
PKG_CHECK_MODULES(CARLA carla-native-plugin)
|
||||
# look for carla under old name
|
||||
IF(NOT CARLA_FOUND)
|
||||
PKG_CHECK_MODULES(CARLA carla-standalone>=1.9.5)
|
||||
ENDIF()
|
||||
IF(CARLA_FOUND)
|
||||
SET(LMMS_HAVE_CARLA TRUE)
|
||||
SET(STATUS_CARLA "OK")
|
||||
ELSE(CARLA_FOUND)
|
||||
SET(LMMS_HAVE_WEAKCARLA TRUE)
|
||||
SET(STATUS_CARLA "OK (weak linking enabled)")
|
||||
ENDIF(CARLA_FOUND)
|
||||
ENDIF(WANT_CARLA)
|
||||
|
||||
|
||||
# check for SDL2
|
||||
IF(WANT_SDL)
|
||||
SET(SDL2_BUILDING_LIBRARY TRUE)
|
||||
FIND_PACKAGE(SDL2)
|
||||
IF(SDL2_FOUND)
|
||||
SET(LMMS_HAVE_SDL TRUE)
|
||||
SET(LMMS_HAVE_SDL2 TRUE)
|
||||
SET(STATUS_SDL "OK, using SDL2")
|
||||
SET(SDL_INCLUDE_DIR "")
|
||||
SET(SDL_LIBRARY "")
|
||||
ELSE()
|
||||
SET(SDL2_INCLUDE_DIR "")
|
||||
SET(SDL2_LIBRARY "")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
# fallback to SDL1
|
||||
IF(WANT_SDL AND NOT LMMS_HAVE_SDL2)
|
||||
# Fallback to SDL1.2
|
||||
SET(SDL_BUILDING_LIBRARY TRUE)
|
||||
FIND_PACKAGE(SDL)
|
||||
IF(SDL_FOUND)
|
||||
SET(LMMS_HAVE_SDL TRUE)
|
||||
SET(STATUS_SDL "OK, using SDL1.2")
|
||||
# fix mingw since 53abd65
|
||||
IF(NOT SDL_INCLUDE_DIR)
|
||||
SET(SDL_INCLUDE_DIR "${CMAKE_FIND_ROOT_PATH}/include")
|
||||
ENDIF()
|
||||
|
||||
ELSE()
|
||||
SET(STATUS_SDL "not found, please install libsdl2-dev (or similar) "
|
||||
"if you require SDL support")
|
||||
SET(SDL_INCLUDE_DIR "")
|
||||
SET(SDL_LIBRARY "")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
# check for Stk
|
||||
IF(WANT_STK)
|
||||
FIND_PACKAGE(STK)
|
||||
IF(STK_FOUND)
|
||||
SET(LMMS_HAVE_STK TRUE)
|
||||
SET(STATUS_STK "OK")
|
||||
ELSE(STK_FOUND)
|
||||
SET(STK_INCLUDE_DIR "")
|
||||
SET(STATUS_STK "not found, please install libstk0-dev (or similar) "
|
||||
"if you require the Mallets instrument")
|
||||
ENDIF(STK_FOUND)
|
||||
ENDIF(WANT_STK)
|
||||
|
||||
|
||||
# check for PortAudio
|
||||
IF(WANT_PORTAUDIO)
|
||||
FIND_PACKAGE(Portaudio)
|
||||
IF(PORTAUDIO_FOUND)
|
||||
SET(LMMS_HAVE_PORTAUDIO TRUE)
|
||||
SET(STATUS_PORTAUDIO "OK")
|
||||
ELSE(PORTAUDIO_FOUND)
|
||||
SET(STATUS_PORTAUDIO "not found, please install portaudio19-dev (or similar, version >= 1.9) "
|
||||
"if you require PortAudio support")
|
||||
ENDIF(PORTAUDIO_FOUND)
|
||||
ENDIF(WANT_PORTAUDIO)
|
||||
|
||||
# check for libsoundio
|
||||
IF(WANT_SOUNDIO)
|
||||
FIND_PACKAGE(SoundIo)
|
||||
IF(SOUNDIO_FOUND)
|
||||
SET(LMMS_HAVE_SOUNDIO TRUE)
|
||||
SET(STATUS_SOUNDIO "OK")
|
||||
INCLUDE_DIRECTORIES("${SOUNDIO_INCLUDE_DIR}")
|
||||
ELSE(SOUNDIO_FOUND)
|
||||
SET(SOUNDIO_INCLUDE_DIR "")
|
||||
SET(STATUS_SOUNDIO "not found, please install libsoundio if you require libsoundio support")
|
||||
SET(SOUNDIO_LIBRARY "")
|
||||
ENDIF(SOUNDIO_FOUND)
|
||||
ENDIF(WANT_SOUNDIO)
|
||||
|
||||
|
||||
# check for PulseAudio
|
||||
IF(WANT_PULSEAUDIO)
|
||||
FIND_PACKAGE(PulseAudio)
|
||||
IF(PULSEAUDIO_FOUND)
|
||||
SET(LMMS_HAVE_PULSEAUDIO TRUE)
|
||||
SET(STATUS_PULSEAUDIO "OK")
|
||||
ELSE(PULSEAUDIO_FOUND)
|
||||
SET(STATUS_PULSEAUDIO "not found, please install libpulse-dev (or similar) "
|
||||
"if you require PulseAudio support")
|
||||
ENDIF(PULSEAUDIO_FOUND)
|
||||
ENDIF(WANT_PULSEAUDIO)
|
||||
IF(NOT LMMS_HAVE_PULSEAUDIO)
|
||||
SET(PULSEAUDIO_INCLUDE_DIR "")
|
||||
SET(PULSEAUDIO_LIBRARIES "")
|
||||
ENDIF(NOT LMMS_HAVE_PULSEAUDIO)
|
||||
|
||||
|
||||
# check for MP3/Lame-libraries
|
||||
IF(WANT_MP3LAME)
|
||||
FIND_PACKAGE(Lame)
|
||||
IF(LAME_FOUND)
|
||||
SET(LMMS_HAVE_MP3LAME TRUE)
|
||||
SET(STATUS_MP3LAME "OK")
|
||||
ELSE(LAME_FOUND)
|
||||
SET(STATUS_MP3LAME "not found, please install libmp3lame-dev (or similar)")
|
||||
SET(LAME_LIBRARIES "")
|
||||
SET(LAME_INCLUDE_DIRS "")
|
||||
ENDIF(LAME_FOUND)
|
||||
ELSE(WANT_MP3LAME)
|
||||
SET(STATUS_MP3LAME "Disabled for build")
|
||||
ENDIF(WANT_MP3LAME)
|
||||
|
||||
# check for OGG/Vorbis-libraries
|
||||
IF(WANT_OGGVORBIS)
|
||||
FIND_PACKAGE(OggVorbis)
|
||||
IF(OGGVORBIS_FOUND)
|
||||
SET(LMMS_HAVE_OGGVORBIS TRUE)
|
||||
SET(STATUS_OGGVORBIS "OK")
|
||||
ELSE(OGGVORBIS_FOUND)
|
||||
SET(STATUS_OGGVORBIS "not found, libogg-dev and libvorbis-dev (or similar) "
|
||||
"is highly recommended")
|
||||
ENDIF(OGGVORBIS_FOUND)
|
||||
ENDIF(WANT_OGGVORBIS)
|
||||
|
||||
|
||||
# check whether to enable OSS-support
|
||||
IF(LMMS_HAVE_SOUNDCARD_H OR LMMS_HAVE_SYS_SOUNDCARD_H)
|
||||
SET(LMMS_HAVE_OSS TRUE)
|
||||
SET(STATUS_OSS "OK")
|
||||
ELSE(LMMS_HAVE_SOUNDCARD_H OR LMMS_HAVE_SYS_SOUNDCARD_H)
|
||||
SET(STATUS_OSS "<not found or not supported on this platform>")
|
||||
ENDIF(LMMS_HAVE_SOUNDCARD_H OR LMMS_HAVE_SYS_SOUNDCARD_H)
|
||||
|
||||
|
||||
# check for ALSA
|
||||
IF(WANT_ALSA)
|
||||
FIND_PACKAGE(Alsa)
|
||||
IF(ALSA_FOUND)
|
||||
SET(LMMS_HAVE_ALSA TRUE)
|
||||
SET(STATUS_ALSA "OK")
|
||||
ELSE(ALSA_FOUND)
|
||||
SET(STATUS_ALSA "not found, please install libasound2-dev (or similar) "
|
||||
"if you require ALSA support")
|
||||
ENDIF(ALSA_FOUND)
|
||||
ENDIF(WANT_ALSA)
|
||||
IF(NOT LMMS_HAVE_ALSA)
|
||||
SET(ASOUND_LIBRARY "")
|
||||
ENDIF(NOT LMMS_HAVE_ALSA)
|
||||
|
||||
|
||||
# check for JACK
|
||||
IF(WANT_JACK)
|
||||
IF(WANT_WEAKJACK)
|
||||
SET(LMMS_HAVE_WEAKJACK TRUE)
|
||||
SET(WEAKJACK_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/src/3rdparty/weakjack/weakjack)
|
||||
SET(JACK_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/src/3rdparty/jack2/common)
|
||||
SET(STATUS_JACK "OK (weak linking enabled)")
|
||||
# use dlsym instead
|
||||
SET(JACK_LIBRARIES ${CMAKE_DL_LIBS})
|
||||
SET(LMMS_HAVE_JACK TRUE)
|
||||
SET(JACK_FOUND TRUE)
|
||||
ELSE()
|
||||
PKG_CHECK_MODULES(JACK jack>=0.77)
|
||||
IF(JACK_FOUND)
|
||||
SET(STATUS_JACK "OK")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(NOT JACK_FOUND)
|
||||
SET(JACK_INCLUDE_DIRS "")
|
||||
SET(STATUS_JACK "not found")
|
||||
ENDIF()
|
||||
ENDIF(WANT_JACK)
|
||||
|
||||
# check for FFTW3F-library
|
||||
FIND_PACKAGE(FFTW COMPONENTS fftw3f REQUIRED)
|
||||
|
||||
# check for FLTK
|
||||
FIND_PACKAGE(FLTK)
|
||||
IF(FLTK_FOUND)
|
||||
SET(STATUS_ZYN "OK")
|
||||
ELSE()
|
||||
SET(STATUS_ZYN "not found, please install fltk")
|
||||
ENDIF()
|
||||
|
||||
# check for Fluidsynth
|
||||
IF(WANT_SF2)
|
||||
PKG_CHECK_MODULES(FLUIDSYNTH fluidsynth>=1.0.7)
|
||||
IF(FLUIDSYNTH_FOUND)
|
||||
SET(LMMS_HAVE_FLUIDSYNTH TRUE)
|
||||
SET(STATUS_FLUIDSYNTH "OK")
|
||||
ELSE(FLUIDSYNTH_FOUND)
|
||||
SET(STATUS_FLUIDSYNTH "not found, libfluidsynth-dev (or similar)"
|
||||
"is highly recommended")
|
||||
ENDIF(FLUIDSYNTH_FOUND)
|
||||
ENDIF(WANT_SF2)
|
||||
|
||||
# check for libgig
|
||||
If(WANT_GIG)
|
||||
PKG_CHECK_MODULES(GIG gig)
|
||||
IF(GIG_FOUND)
|
||||
SET(LMMS_HAVE_GIG TRUE)
|
||||
SET(STATUS_GIG "OK")
|
||||
ELSE(GIG_FOUND)
|
||||
SET(STATUS_GIG "not found, libgig needed for decoding .gig files")
|
||||
ENDIF(GIG_FOUND)
|
||||
ENDIF(WANT_GIG)
|
||||
|
||||
# check for pthreads
|
||||
IF(LMMS_BUILD_LINUX OR LMMS_BUILD_APPLE OR LMMS_BUILD_OPENBSD OR LMMS_BUILD_FREEBSD OR LMMS_BUILD_HAIKU)
|
||||
FIND_PACKAGE(Threads)
|
||||
ENDIF(LMMS_BUILD_LINUX OR LMMS_BUILD_APPLE OR LMMS_BUILD_OPENBSD OR LMMS_BUILD_FREEBSD OR LMMS_BUILD_HAIKU)
|
||||
|
||||
# check for sndio (roaraudio won't work yet)
|
||||
IF(WANT_SNDIO)
|
||||
FIND_PACKAGE(Sndio)
|
||||
IF(SNDIO_FOUND)
|
||||
SET(LMMS_HAVE_SNDIO TRUE)
|
||||
SET(STATUS_SNDIO "OK")
|
||||
ELSE()
|
||||
SET(STATUS_SNDIO "<not found or not supported on this platform>")
|
||||
ENDIF(SNDIO_FOUND)
|
||||
ENDIF(WANT_SNDIO)
|
||||
|
||||
# check for WINE
|
||||
IF(WANT_VST)
|
||||
FIND_PACKAGE(Wine)
|
||||
IF(WINE_FOUND)
|
||||
SET(LMMS_SUPPORT_VST TRUE)
|
||||
IF(WINE_LIBRARY_FIX)
|
||||
SET(STATUS_VST "OK, with workaround linking ${WINE_LIBRARY_FIX}")
|
||||
ELSE()
|
||||
SET(STATUS_VST "OK")
|
||||
ENDIF()
|
||||
ELSEIF(WANT_VST_NOWINE)
|
||||
SET(LMMS_SUPPORT_VST TRUE)
|
||||
SET(STATUS_VST "OK")
|
||||
ELSE(WINE_FOUND)
|
||||
SET(STATUS_VST "not found, please install (lib)wine-dev (or similar) - 64 bit systems additionally need gcc-multilib and g++-multilib")
|
||||
ENDIF(WINE_FOUND)
|
||||
ENDIF(WANT_VST)
|
||||
IF(LMMS_BUILD_WIN32)
|
||||
SET(LMMS_SUPPORT_VST TRUE)
|
||||
SET(STATUS_VST "OK")
|
||||
ENDIF(LMMS_BUILD_WIN32)
|
||||
|
||||
IF(WANT_DEBUG_FPE)
|
||||
IF(LMMS_BUILD_LINUX OR LMMS_BUILD_APPLE)
|
||||
SET(LMMS_DEBUG_FPE TRUE)
|
||||
SET (STATUS_DEBUG_FPE "Enabled")
|
||||
ELSE()
|
||||
SET (STATUS_DEBUG_FPE "Wanted but disabled due to unsupported platform")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
SET (STATUS_DEBUG_FPE "Disabled")
|
||||
ENDIF(WANT_DEBUG_FPE)
|
||||
|
||||
# check for libsamplerate
|
||||
FIND_PACKAGE(Samplerate 0.1.8 MODULE REQUIRED)
|
||||
|
||||
# set compiler flags
|
||||
IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
|
||||
SET(WERROR_FLAGS "-Wall -Werror=unused-function -Wno-sign-compare -Wno-strict-overflow")
|
||||
OPTION(USE_WERROR "Add -werror to the build flags. Stops the build on warnings" OFF)
|
||||
IF(${USE_WERROR})
|
||||
SET(WERROR_FLAGS "${WERROR_FLAGS} -Werror")
|
||||
ENDIF()
|
||||
|
||||
# Due to a regression in gcc-4.8.X, we need to disable array-bounds check
|
||||
IF (CMAKE_COMPILER_IS_GNUCXX AND ((CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL "4.8.0") OR (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "4.8.0") OR LMMS_BUILD_WIN32))
|
||||
SET(WERROR_FLAGS "${WERROR_FLAGS} -Wno-array-bounds -Wno-attributes")
|
||||
ENDIF()
|
||||
ELSEIF(MSVC)
|
||||
# Remove any existing /W flags
|
||||
STRING(REGEX REPLACE "/W[0-4]" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
||||
SET(WERROR_FLAGS "/W2")
|
||||
IF(${USE_WERROR})
|
||||
SET(WERROR_FLAGS "${WERROR_FLAGS} /WX")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
|
||||
IF(NOT CMAKE_BUILD_TYPE)
|
||||
message(STATUS "Setting build type to 'Release' as none was specified.")
|
||||
set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)
|
||||
# Set the possible values of build type for cmake-gui
|
||||
SET_PROPERTY(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release"
|
||||
"MinSizeRel" "RelWithDebInfo")
|
||||
ENDIF()
|
||||
|
||||
SET(CMAKE_C_FLAGS "${WERROR_FLAGS} ${CMAKE_C_FLAGS}")
|
||||
SET(CMAKE_CXX_FLAGS "${WERROR_FLAGS} ${CMAKE_CXX_FLAGS}")
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DLMMS_DEBUG")
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DLMMS_DEBUG")
|
||||
|
||||
|
||||
# people simply updating git will still have this and mess up build with it
|
||||
FILE(REMOVE include/lmmsconfig.h)
|
||||
|
||||
FILE(GLOB LMMS_INCLUDES "${CMAKE_SOURCE_DIR}/include/*.h")
|
||||
LIST(SORT LMMS_INCLUDES)
|
||||
|
||||
# Get list of all committers from git history, ordered by number of commits.
|
||||
# The CONTRIBUTORS file is used by AboutDialog. This information can be provided
|
||||
# with -DCONTRIBUTORS=/path/to/CONTRIBUTORS instead. For instance, to generate
|
||||
# this file for version 1.1.3, the command is:
|
||||
# git shortlog -sne v1.1.3 | cut -c8-
|
||||
FIND_PACKAGE(Git)
|
||||
IF(GIT_FOUND AND NOT CONTRIBUTORS)
|
||||
SET(CONTRIBUTORS "${CMAKE_BINARY_DIR}/CONTRIBUTORS")
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND "${GIT_EXECUTABLE}" shortlog -sne
|
||||
COMMAND cut -c8-
|
||||
OUTPUT_FILE "${CONTRIBUTORS}"
|
||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
TIMEOUT 1)
|
||||
ENDIF()
|
||||
|
||||
# we somehow have to make LMMS-binary depend on MOC-files
|
||||
ADD_FILE_DEPENDENCIES("${CMAKE_BINARY_DIR}/lmmsconfig.h")
|
||||
|
||||
IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
|
||||
IF(WIN32)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-attributes")
|
||||
ELSE(WIN32)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -DPIC")
|
||||
ENDIF(WIN32)
|
||||
ENDIF()
|
||||
|
||||
# use ccache
|
||||
include(CompileCache)
|
||||
|
||||
# make sub-directories
|
||||
ADD_SUBDIRECTORY(cmake)
|
||||
ADD_SUBDIRECTORY(src)
|
||||
ADD_SUBDIRECTORY(plugins)
|
||||
ADD_SUBDIRECTORY(tests)
|
||||
ADD_SUBDIRECTORY(data)
|
||||
ADD_SUBDIRECTORY(doc)
|
||||
|
||||
# install tasks
|
||||
ADD_SUBDIRECTORY(cmake/install)
|
||||
|
||||
FIND_PACKAGE(UnixCommands)
|
||||
IF(GZIP)
|
||||
ADD_CUSTOM_COMMAND(OUTPUT "${CMAKE_BINARY_DIR}/lmms.1.gz"
|
||||
COMMAND ${GZIP} -c ${CMAKE_SOURCE_DIR}/doc/lmms.1 > ${CMAKE_BINARY_DIR}/lmms.1.gz
|
||||
DEPENDS "${CMAKE_SOURCE_DIR}/doc/lmms.1"
|
||||
COMMENT "Generating lmms.1.gz"
|
||||
VERBATIM)
|
||||
|
||||
|
||||
ADD_CUSTOM_TARGET(manpage ALL
|
||||
DEPENDS "${CMAKE_BINARY_DIR}/lmms.1.gz")
|
||||
ELSEIF(UNIX)
|
||||
MESSAGE(FATAL_ERROR "Can't find gzip required for generating lmms.1.gz")
|
||||
ENDIF()
|
||||
|
||||
# install headers
|
||||
|
||||
IF(LMMS_BUILD_LINUX)
|
||||
INSTALL(FILES ${LMMS_INCLUDES}
|
||||
"${CMAKE_BINARY_DIR}/lmmsconfig.h"
|
||||
"${CMAKE_BINARY_DIR}/lmmsversion.h"
|
||||
"${CMAKE_SOURCE_DIR}/src/gui/embed.cpp"
|
||||
DESTINATION "${CMAKE_INSTALL_PREFIX}/include/lmms/")
|
||||
ENDIF(LMMS_BUILD_LINUX)
|
||||
|
||||
# package ZynAddSubFX into win32 build
|
||||
IF(LMMS_BUILD_WIN32)
|
||||
IF(EXISTS "${CMAKE_SOURCE_DIR}/extras")
|
||||
ADD_SUBDIRECTORY("${CMAKE_SOURCE_DIR}/extras/data/presets")
|
||||
FILE(GLOB ZASF_BINARIES
|
||||
"${CMAKE_SOURCE_DIR}/extras/plugins/zynaddsubfx/zynaddsubfx.dll"
|
||||
"${CMAKE_SOURCE_DIR}/extras/plugins/zynaddsubfx/remote_zynaddsubfx.exe")
|
||||
LIST(SORT ZASF_BINARIES)
|
||||
INSTALL(FILES "${ZASF_BINARIES}" DESTINATION "${PLUGIN_DIR}")
|
||||
ENDIF(EXISTS "${CMAKE_SOURCE_DIR}/extras")
|
||||
ENDIF(LMMS_BUILD_WIN32)
|
||||
|
||||
#
|
||||
# add distclean-target
|
||||
#
|
||||
ADD_CUSTOM_TARGET(distclean
|
||||
COMMAND make clean
|
||||
COMMAND rm -rf `find -name cmake_install.cmake` `find -name Makefile` `find -type d -name CMakeFiles` CMakeCache.txt lmmsconfig.h lmms.1.gz)
|
||||
|
||||
#
|
||||
# add tarball-target
|
||||
#
|
||||
SET(TMP "lmms-${VERSION}")
|
||||
ADD_CUSTOM_TARGET(dist
|
||||
COMMAND make clean
|
||||
COMMAND rm -rf "${TMP}"
|
||||
COMMAND mkdir -p "${TMP}"
|
||||
COMMAND cp CMakeLists.txt LICENSE.txt INSTALL.txt README.md "${TMP}"
|
||||
COMMAND cp -r buildtools cmake data doc include plugins src "${TMP}"
|
||||
COMMAND rm -rf `find "${TMP}" -name cmake_install.cmake` `find "${TMP}" -name Makefile` `find "${TMP}" -type d -name CMakeFiles` "${TMP}/CMakeCache.txt"
|
||||
COMMAND tar cjf lmms-${VERSION}-src.tar.bz2 "${TMP}"
|
||||
COMMAND rm -rf "${TMP}")
|
||||
|
||||
|
||||
#
|
||||
# add uninstall-target
|
||||
#
|
||||
ADD_CUSTOM_TARGET(uninstall
|
||||
COMMAND ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}" -P "${CMAKE_CURRENT_SOURCE_DIR}/cmake/uninstall.cmake"
|
||||
)
|
||||
|
||||
|
||||
#
|
||||
# display configuration information
|
||||
#
|
||||
|
||||
MESSAGE("\n"
|
||||
"Installation Summary\n"
|
||||
"--------------------\n"
|
||||
"* Install Directory : ${CMAKE_INSTALL_PREFIX}\n"
|
||||
)
|
||||
|
||||
MESSAGE(
|
||||
"Supported audio interfaces\n"
|
||||
"--------------------------\n"
|
||||
"* ALSA : ${STATUS_ALSA}\n"
|
||||
"* JACK : ${STATUS_JACK}\n"
|
||||
"* OSS : ${STATUS_OSS}\n"
|
||||
"* Sndio : ${STATUS_SNDIO}\n"
|
||||
"* PortAudio : ${STATUS_PORTAUDIO}\n"
|
||||
"* libsoundio : ${STATUS_SOUNDIO}\n"
|
||||
"* PulseAudio : ${STATUS_PULSEAUDIO}\n"
|
||||
"* SDL : ${STATUS_SDL}\n"
|
||||
)
|
||||
|
||||
MESSAGE(
|
||||
"Supported MIDI interfaces\n"
|
||||
"-------------------------\n"
|
||||
"* ALSA : ${STATUS_ALSA}\n"
|
||||
"* OSS : ${STATUS_OSS}\n"
|
||||
"* Sndio : ${STATUS_SNDIO}\n"
|
||||
"* JACK : ${STATUS_JACK}\n"
|
||||
"* WinMM : ${STATUS_WINMM}\n"
|
||||
"* AppleMidi : ${STATUS_APPLEMIDI}\n"
|
||||
)
|
||||
|
||||
MESSAGE(
|
||||
"Supported file formats for project export\n"
|
||||
"-----------------------------------------\n"
|
||||
"* WAVE : OK\n"
|
||||
"* FLAC : OK\n"
|
||||
"* OGG/VORBIS : ${STATUS_OGGVORBIS}\n"
|
||||
"* MP3/Lame : ${STATUS_MP3LAME}\n"
|
||||
)
|
||||
|
||||
MESSAGE(
|
||||
"Optional plugins\n"
|
||||
"----------------\n"
|
||||
"* Lv2 plugins : ${STATUS_LV2}\n"
|
||||
"* SUIL for plugin UIs : ${STATUS_SUIL}\n"
|
||||
"* ZynAddSubFX instrument : ${STATUS_ZYN}\n"
|
||||
"* Carla Patchbay & Rack : ${STATUS_CARLA}\n"
|
||||
"* SoundFont2 player : ${STATUS_FLUIDSYNTH}\n"
|
||||
"* Stk Mallets : ${STATUS_STK}\n"
|
||||
"* VST-instrument hoster : ${STATUS_VST}\n"
|
||||
"* VST-effect hoster : ${STATUS_VST}\n"
|
||||
"* CALF LADSPA plugins : ${STATUS_CALF}\n"
|
||||
"* CAPS LADSPA plugins : ${STATUS_CAPS}\n"
|
||||
"* CMT LADSPA plugins : ${STATUS_CMT}\n"
|
||||
"* TAP LADSPA plugins : ${STATUS_TAP}\n"
|
||||
"* SWH LADSPA plugins : ${STATUS_SWH}\n"
|
||||
"* GIG player : ${STATUS_GIG}\n"
|
||||
)
|
||||
|
||||
MESSAGE(
|
||||
"Developer options\n"
|
||||
"-----------------------------------------\n"
|
||||
"* Debug FP exceptions : ${STATUS_DEBUG_FPE}\n"
|
||||
)
|
||||
|
||||
MESSAGE(
|
||||
"\n"
|
||||
"-----------------------------------------------------------------\n"
|
||||
"IMPORTANT:\n"
|
||||
"after installing missing packages, remove CMakeCache.txt before\n"
|
||||
"running cmake again!\n"
|
||||
"-----------------------------------------------------------------\n"
|
||||
"\n\n")
|
||||
|
||||
SET(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION "${BIN_DIR}")
|
||||
if(MSVC)
|
||||
# We can't set this on the install time according to the configuration
|
||||
SET(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE)
|
||||
SET(CMAKE_INSTALL_UCRT_LIBRARIES TRUE)
|
||||
endif()
|
||||
INCLUDE(InstallRequiredSystemLibraries)
|
||||
192
INSTALL
Normal file
@@ -0,0 +1,192 @@
|
||||
Quick Instructions
|
||||
==================
|
||||
|
||||
Go to the directory containing the package's source code and type:
|
||||
|
||||
autoreconf -is
|
||||
./configure
|
||||
make install
|
||||
lmms
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
These are generic installation instructions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, a file
|
||||
`config.cache' that saves the results of its tests to speed up
|
||||
reconfiguring, and a file `config.log' containing compiler output
|
||||
(useful mainly for debugging `configure').
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If at some point `config.cache'
|
||||
contains results you don't want to keep, you may remove or edit it.
|
||||
|
||||
The file `configure.in' is used to create `configure' by a program
|
||||
called `autoconf'. You only need `configure.in' if you want to change
|
||||
it or regenerate `configure' using a newer version of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system. If you're
|
||||
using `csh' on an old version of System V, you might need to type
|
||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||
`configure' itself.
|
||||
|
||||
Running `configure' takes awhile. While running, it prints some
|
||||
messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
5. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
also a `make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. You can give `configure'
|
||||
initial values for variables by setting them in the environment. Using
|
||||
a Bourne-compatible shell, you can do that on the command line like
|
||||
this:
|
||||
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
|
||||
|
||||
Or on systems that have the `env' program, you can do it like this:
|
||||
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you must use a version of `make' that
|
||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'.
|
||||
|
||||
If you have to use a `make' that does not supports the `VPATH'
|
||||
variable, you have to compile the package for one architecture at a time
|
||||
in the source code directory. After you have installed the package for
|
||||
one architecture, use `make distclean' before reconfiguring for another
|
||||
architecture.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' will install the package's files in
|
||||
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
||||
installation prefix other than `/usr/local' by giving `configure' the
|
||||
option `--prefix=PATH'.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
give `configure' the option `--exec-prefix=PATH', the package will use
|
||||
PATH as the prefix for installing programs and libraries.
|
||||
Documentation and other data files will still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=PATH' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them.
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' can not figure out
|
||||
automatically, but needs to determine by the type of host the package
|
||||
will run on. Usually `configure' can figure that out, but if it prints
|
||||
a message saying it can not guess the host type, give it the
|
||||
`--host=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name with three fields:
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the host type.
|
||||
|
||||
If you are building compiler tools for cross-compiling, you can also
|
||||
use the `--target=TYPE' option to select the type of system they will
|
||||
produce code for and the `--build=TYPE' option to select the type of
|
||||
system on which you are compiling the package.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share,
|
||||
you can create a site shell script called `config.site' that gives
|
||||
default values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Operation Controls
|
||||
==================
|
||||
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Use and save the results of the tests in FILE instead of
|
||||
`./config.cache'. Set FILE to `/dev/null' to disable caching, for
|
||||
debugging `configure'.
|
||||
|
||||
`--help'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to `/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`--version'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options.
|
||||
67
INSTALL.txt
@@ -1,67 +0,0 @@
|
||||
This project uses git submodules and several are required for a successful
|
||||
build. If this tarball was NOT provided with submodules (default), some source
|
||||
dependencies will need to be manually added to src/3rdparty.
|
||||
|
||||
If this project WAS provided with submodules, there are detailed dependencies
|
||||
(e.g. supported compilers, cmake requirements, cross-compilation) at
|
||||
doc/wiki/Compiling.md including platform-specific build instructions (e.g.
|
||||
apt-get, dnf, pacman, etc).
|
||||
|
||||
Online documentation:
|
||||
|
||||
https://github.com/LMMS/lmms/wiki/
|
||||
|
||||
Live online chat via Discord (similar to IRC):
|
||||
|
||||
https://lmms.io/chat, Channel #programming
|
||||
|
||||
Basic build steps:
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ../
|
||||
make
|
||||
sudo make install
|
||||
# or alternately: su -c 'make install'
|
||||
|
||||
With the above commands an out-of-tree build is performed. You can also run
|
||||
"cmake ." directly in the root of source tree although this is not recommended.
|
||||
When performing an out-of-tree build after there's already an in-tree build,
|
||||
make sure to run "make distclean" before running cmake inside build-directory.
|
||||
|
||||
If you want to use custom compiler flags simply set the environment variables
|
||||
CFLAGS and CXXFLAGS.
|
||||
|
||||
After running cmake (the 3rd command above) you can see a summary of things
|
||||
that are going to be built into LMMS or built as plugins. Install the
|
||||
according libraries and development files if a certain feature is not enabled.
|
||||
Then remove CMakeCache.txt and run cmake again.
|
||||
|
||||
For non-root installs, or to install to a non-standard location, provide an
|
||||
install prefix to cmake, using the flag:
|
||||
|
||||
-DCMAKE_INSTALL_PREFIX=<prefix>
|
||||
|
||||
The Compilation tutorial (see docs/wiki/Compilation.md)
|
||||
specifically uses <prefix> as "../target" for all non-root installations. This
|
||||
is strongly recommended if developing a patch or a feature. For root
|
||||
installations, <prefix> can be /usr, /usr/local, /opt, etc. For most systems,
|
||||
the default is /usr/local.
|
||||
|
||||
If your Qt5 installation does not reside in standard installation paths,
|
||||
additionally pass:
|
||||
|
||||
-DCMAKE_PREFIX_PATH=<prefix>
|
||||
|
||||
Where <prefix> is the location to Qt5 installation, usually /opt/qt5/, etc.
|
||||
|
||||
Important wiki sections:
|
||||
|
||||
doc/wiki/Compiling.md:
|
||||
Dependencies Detailed
|
||||
- Build Toolchain (cmake)
|
||||
- Compiler (gcc, clang)
|
||||
- Libraries (required and optional dependencies)
|
||||
|
||||
doc/wiki/Dependencies-<platform>.md
|
||||
Platform-specific dependencies (Windows, Ubuntu, Fedora, macOS, etc.)
|
||||
430
Makefile.am
Normal file
@@ -0,0 +1,430 @@
|
||||
AUTOMAKE_OPTIONS = foreign 1.4
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
dist-hook:
|
||||
rm -rf `find $(distdir) -name \*.moc`
|
||||
|
||||
|
||||
#install-exec-hook:
|
||||
# cd $(DESTDIR)$(bindir) ; \
|
||||
# strip lmms
|
||||
|
||||
|
||||
if HAVE_RPM
|
||||
$(PACKAGE)-$(VERSION).tar.gz: dist
|
||||
|
||||
# Rule to build RPM distribution package
|
||||
rpm: $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE).spec
|
||||
cp $(PACKAGE)-$(VERSION).tar.gz @RPMSOURCEDIR@
|
||||
rpmbuild -ba $(PACKAGE).spec
|
||||
endif
|
||||
|
||||
|
||||
|
||||
SUBDIRS = buildtools data plugins
|
||||
|
||||
|
||||
INCLUDES = -I$(srcdir)/include -I.
|
||||
#-I/usr/include/wine -I/usr/include/wine/windows
|
||||
bin_PROGRAMS = lmms
|
||||
|
||||
|
||||
AM_CXXFLAGS := $(AM_CXXFLAGS) $(QT_CXXFLAGS)
|
||||
|
||||
|
||||
%.moc: $(srcdir)/include/%.h
|
||||
$(MOC) -o $@ $<
|
||||
|
||||
%.ts:
|
||||
$(LUPDATE) $(lmms_SOURCES) `find plugins/ -type f -name "*.cpp"` -ts data/locale/$@
|
||||
|
||||
%.qm: %.ts
|
||||
$(LRELEASE) $<
|
||||
|
||||
|
||||
man1_MANS = lmms.1
|
||||
|
||||
|
||||
lmms_MOC = \
|
||||
./about_dialog.moc \
|
||||
./arp_and_chords_tab_widget.moc \
|
||||
./automatable_button.moc \
|
||||
./automatable_slider.moc \
|
||||
./automation_editor.moc \
|
||||
./automation_pattern.moc \
|
||||
./automation_track.moc \
|
||||
./bb_editor.moc \
|
||||
./bb_track.moc \
|
||||
./instrument_track.moc \
|
||||
./combobox.moc \
|
||||
./config_mgr.moc \
|
||||
./cpuload_widget.moc \
|
||||
./effect_control_dialog.moc \
|
||||
./effect_label.moc \
|
||||
./effect_select_dialog.moc \
|
||||
./effect_tab_widget.moc \
|
||||
./envelope_and_lfo_widget.moc \
|
||||
./envelope_tab_widget.moc \
|
||||
./export_project_dialog.moc \
|
||||
./fade_button.moc \
|
||||
./file_browser.moc \
|
||||
./group_box.moc \
|
||||
./kmultitabbar.moc \
|
||||
./kmultitabbar-qt3.moc \
|
||||
./knob.moc \
|
||||
./lcd_spinbox.moc \
|
||||
./led_checkbox.moc \
|
||||
./main_window.moc \
|
||||
./mixer.moc \
|
||||
./name_label.moc \
|
||||
./nstate_button.moc \
|
||||
./meter_dialog.moc \
|
||||
./midi_alsa_seq.moc \
|
||||
./midi_tab_widget.moc \
|
||||
./pattern.moc \
|
||||
./piano_roll.moc \
|
||||
./piano_widget.moc \
|
||||
./pixmap_button.moc \
|
||||
./plugin_browser.moc \
|
||||
./project_notes.moc \
|
||||
./rack_plugin.moc \
|
||||
./rack_view.moc \
|
||||
./rubberband.moc \
|
||||
./qxembed.moc \
|
||||
./rename_dialog.moc \
|
||||
./sample_buffer.moc \
|
||||
./sample_play_handle.moc \
|
||||
./sample_track.moc \
|
||||
./setup_dialog.moc \
|
||||
./side_bar.moc \
|
||||
./side_bar_widget.moc \
|
||||
./song_editor.moc \
|
||||
./surround_area.moc \
|
||||
./tab_bar.moc \
|
||||
./tab_button.moc \
|
||||
./tab_widget.moc \
|
||||
./tempo_sync_knob.moc \
|
||||
./timeline.moc \
|
||||
./tool_button.moc \
|
||||
./track_container.moc \
|
||||
./track.moc \
|
||||
./visualization_widget.moc \
|
||||
./volume_knob.moc
|
||||
|
||||
|
||||
BUILT_SOURCES = $(lmms_MOC)
|
||||
|
||||
lmms_EMBEDDED_RESOURCES = $(srcdir)/AUTHORS $(srcdir)/COPYING
|
||||
|
||||
./embedded_resources.h: $(lmms_EMBEDDED_RESOURCES)
|
||||
$(BIN2RES) $(lmms_EMBEDDED_RESOURCES) > $@
|
||||
|
||||
./embed.o: ./embedded_resources.h
|
||||
|
||||
|
||||
if USE_3RDPARTY_LIBSRC
|
||||
LIBSAMPLERATE_SOURCES= $(srcdir)/src/3rdparty/samplerate/samplerate.c \
|
||||
$(srcdir)/src/3rdparty/samplerate/samplerate.h \
|
||||
$(srcdir)/src/3rdparty/samplerate/src_sinc.c \
|
||||
$(srcdir)/src/3rdparty/samplerate/high_qual_coeffs.h \
|
||||
$(srcdir)/src/3rdparty/samplerate/mid_qual_coeffs.h \
|
||||
$(srcdir)/src/3rdparty/samplerate/fastest_coeffs.h \
|
||||
$(srcdir)/src/3rdparty/samplerate/common.h \
|
||||
$(srcdir)/src/3rdparty/samplerate/float_cast.h \
|
||||
$(srcdir)/src/3rdparty/samplerate/src_zoh.c \
|
||||
$(srcdir)/src/3rdparty/samplerate/src_linear.c
|
||||
endif
|
||||
|
||||
THIRD_PARTY_CODE=$(LIBSAMPLERATE_SOURCES)
|
||||
|
||||
|
||||
|
||||
lmms_SOURCES = \
|
||||
$(srcdir)/src/audio/audio_alsa.cpp \
|
||||
$(srcdir)/src/audio/audio_device.cpp \
|
||||
$(srcdir)/src/audio/audio_file_device.cpp \
|
||||
$(srcdir)/src/audio/audio_file_ogg.cpp \
|
||||
$(srcdir)/src/audio/audio_file_wave.cpp \
|
||||
$(srcdir)/src/audio/audio_jack.cpp \
|
||||
$(srcdir)/src/audio/audio_oss.cpp \
|
||||
$(srcdir)/src/audio/audio_port.cpp \
|
||||
$(srcdir)/src/audio/audio_sample_recorder.cpp \
|
||||
$(srcdir)/src/audio/audio_sdl.cpp \
|
||||
$(srcdir)/src/core/about_dialog.cpp \
|
||||
$(srcdir)/src/core/arp_and_chords_tab_widget.cpp \
|
||||
$(srcdir)/src/core/automation_editor.cpp \
|
||||
$(srcdir)/src/core/automation_pattern.cpp \
|
||||
$(srcdir)/src/core/bb_editor.cpp \
|
||||
$(srcdir)/src/core/config_mgr.cpp \
|
||||
$(srcdir)/src/core/effect_chain.cpp \
|
||||
$(srcdir)/src/core/effect_control_dialog.cpp \
|
||||
$(srcdir)/src/core/effect_select_dialog.cpp \
|
||||
$(srcdir)/src/core/effect_tab_widget.cpp \
|
||||
$(srcdir)/src/core/effect.cpp \
|
||||
$(srcdir)/src/core/engine.cpp \
|
||||
$(srcdir)/src/core/envelope_and_lfo_widget.cpp \
|
||||
$(srcdir)/src/core/envelope_tab_widget.cpp \
|
||||
$(srcdir)/src/core/export_project_dialog.cpp \
|
||||
$(srcdir)/src/core/file_browser.cpp \
|
||||
$(srcdir)/src/core/import_filter.cpp \
|
||||
$(srcdir)/src/core/instrument.cpp \
|
||||
$(srcdir)/src/core/main_window.cpp \
|
||||
$(srcdir)/src/core/main.cpp \
|
||||
$(srcdir)/src/core/meter_dialog.cpp \
|
||||
$(srcdir)/src/core/midi_tab_widget.cpp \
|
||||
$(srcdir)/src/core/mixer.cpp \
|
||||
$(srcdir)/src/core/name_label.cpp \
|
||||
$(srcdir)/src/core/note.cpp \
|
||||
$(srcdir)/src/core/note_play_handle.cpp \
|
||||
$(srcdir)/src/core/piano_roll.cpp \
|
||||
$(srcdir)/src/core/piano_widget.cpp \
|
||||
$(srcdir)/src/core/plugin.cpp \
|
||||
$(srcdir)/src/core/plugin_browser.cpp \
|
||||
$(srcdir)/src/core/preset_preview_play_handle.cpp \
|
||||
$(srcdir)/src/core/sample_play_handle.cpp \
|
||||
$(srcdir)/src/core/setup_dialog.cpp \
|
||||
$(srcdir)/src/core/song_editor.cpp \
|
||||
$(srcdir)/src/core/tool.cpp \
|
||||
$(srcdir)/src/core/track.cpp \
|
||||
$(srcdir)/src/core/track_container.cpp \
|
||||
$(srcdir)/src/core/surround_area.cpp \
|
||||
$(srcdir)/src/core/timeline.cpp \
|
||||
$(srcdir)/src/lib/base64.cpp \
|
||||
$(srcdir)/src/lib/clipboard.cpp \
|
||||
$(srcdir)/src/lib/journalling_object.cpp \
|
||||
$(srcdir)/src/lib/project_journal.cpp \
|
||||
$(srcdir)/src/lib/project_version.cpp \
|
||||
$(srcdir)/src/lib/embed.cpp \
|
||||
$(srcdir)/src/lib/mmp.cpp \
|
||||
$(srcdir)/src/lib/oscillator.cpp \
|
||||
$(srcdir)/src/lib/drumsynth.cpp \
|
||||
$(srcdir)/src/lib/sample_buffer.cpp \
|
||||
$(srcdir)/src/lib/string_pair_drag.cpp \
|
||||
$(srcdir)/src/midi/midi_alsa_raw.cpp \
|
||||
$(srcdir)/src/midi/midi_alsa_seq.cpp \
|
||||
$(srcdir)/src/midi/midi_client.cpp \
|
||||
$(srcdir)/src/midi/midi_mapper.cpp \
|
||||
$(srcdir)/src/midi/midi_oss.cpp \
|
||||
$(srcdir)/src/midi/midi_port.cpp \
|
||||
$(srcdir)/src/tracks/automation_track.cpp \
|
||||
$(srcdir)/src/tracks/bb_track.cpp \
|
||||
$(srcdir)/src/tracks/instrument_track.cpp \
|
||||
$(srcdir)/src/tracks/pattern.cpp \
|
||||
$(srcdir)/src/tracks/sample_track.cpp \
|
||||
$(srcdir)/src/widgets/automatable_button.cpp \
|
||||
$(srcdir)/src/widgets/automatable_slider.cpp \
|
||||
$(srcdir)/src/widgets/combobox.cpp \
|
||||
$(srcdir)/src/widgets/cpuload_widget.cpp \
|
||||
$(srcdir)/src/widgets/effect_label.cpp \
|
||||
$(srcdir)/src/widgets/fade_button.cpp \
|
||||
$(srcdir)/src/widgets/group_box.cpp \
|
||||
$(srcdir)/src/widgets/kmultitabbar.cpp \
|
||||
$(srcdir)/src/widgets/knob.cpp \
|
||||
$(srcdir)/src/widgets/lcd_spinbox.cpp \
|
||||
$(srcdir)/src/widgets/led_checkbox.cpp \
|
||||
$(srcdir)/src/widgets/nstate_button.cpp \
|
||||
$(srcdir)/src/widgets/pixmap_button.cpp \
|
||||
$(srcdir)/src/widgets/project_notes.cpp \
|
||||
$(srcdir)/src/widgets/rack_plugin.cpp \
|
||||
$(srcdir)/src/widgets/rack_view.cpp \
|
||||
$(srcdir)/src/widgets/rubberband.cpp \
|
||||
$(srcdir)/src/widgets/qxembed.cpp \
|
||||
$(srcdir)/src/widgets/rename_dialog.cpp \
|
||||
$(srcdir)/src/widgets/side_bar_widget.cpp \
|
||||
$(srcdir)/src/widgets/tab_bar.cpp \
|
||||
$(srcdir)/src/widgets/tab_widget.cpp \
|
||||
$(srcdir)/src/widgets/text_float.cpp \
|
||||
$(srcdir)/src/widgets/tempo_sync_knob.cpp \
|
||||
$(srcdir)/src/widgets/tool_button.cpp \
|
||||
$(srcdir)/src/widgets/tooltip.cpp \
|
||||
$(srcdir)/src/widgets/visualization_widget.cpp \
|
||||
$(srcdir)/src/widgets/volume_knob.cpp \
|
||||
$(srcdir)/src/lmms_single_source.cpp \
|
||||
$(srcdir)/include/aeffectx.h \
|
||||
$(srcdir)/include/debug.h \
|
||||
$(srcdir)/include/detuning_helper.h \
|
||||
$(srcdir)/include/main_window.h \
|
||||
$(srcdir)/include/audio_alsa.h \
|
||||
$(srcdir)/include/audio_device.h \
|
||||
$(srcdir)/include/audio_dummy.h \
|
||||
$(srcdir)/include/audio_file_device.h \
|
||||
$(srcdir)/include/audio_file_ogg.h \
|
||||
$(srcdir)/include/audio_file_wave.h \
|
||||
$(srcdir)/include/audio_jack.h \
|
||||
$(srcdir)/include/audio_oss.h \
|
||||
$(srcdir)/include/audio_sample_recorder.h \
|
||||
$(srcdir)/include/audio_sdl.h \
|
||||
$(srcdir)/include/automation_editor.h \
|
||||
$(srcdir)/include/automation_pattern.h \
|
||||
$(srcdir)/include/automation_track.h \
|
||||
$(srcdir)/include/interpolation.h \
|
||||
$(srcdir)/include/lmms_constants.h \
|
||||
$(srcdir)/include/lmms_math.h \
|
||||
$(srcdir)/include/mixer.h \
|
||||
$(srcdir)/include/pattern.h \
|
||||
$(srcdir)/include/instrument_track.h \
|
||||
$(srcdir)/include/note.h \
|
||||
$(srcdir)/include/volume.h \
|
||||
$(srcdir)/include/panning.h \
|
||||
$(srcdir)/include/song_editor.h \
|
||||
$(srcdir)/include/plugin.h \
|
||||
$(srcdir)/include/instrument.h \
|
||||
$(srcdir)/include/bb_editor.h \
|
||||
$(srcdir)/include/piano_widget.h \
|
||||
$(srcdir)/include/effect_board.h \
|
||||
$(srcdir)/include/pixmap_button.h \
|
||||
$(srcdir)/include/rename_dialog.h \
|
||||
$(srcdir)/include/export_project_dialog.h \
|
||||
$(srcdir)/include/note_play_handle.h \
|
||||
$(srcdir)/include/piano_roll.h \
|
||||
$(srcdir)/include/basic_filters.h \
|
||||
$(srcdir)/include/envelope_tab_widget.h \
|
||||
$(srcdir)/include/envelope_and_lfo_widget.h \
|
||||
$(srcdir)/include/about_dialog.h \
|
||||
$(srcdir)/include/oscillator.h \
|
||||
$(srcdir)/include/arp_and_chords_tab_widget.h \
|
||||
$(srcdir)/include/export.h \
|
||||
$(srcdir)/include/group_box.h \
|
||||
$(srcdir)/include/tab_widget.h \
|
||||
$(srcdir)/include/knob.h \
|
||||
$(srcdir)/include/file_browser.h \
|
||||
$(srcdir)/include/plugin_browser.h \
|
||||
$(srcdir)/include/templates.h \
|
||||
$(srcdir)/include/gui_templates.h \
|
||||
$(srcdir)/include/surround_area.h \
|
||||
$(srcdir)/include/kmultitabbar.h \
|
||||
$(srcdir)/include/kmultitabbar-qt3.h \
|
||||
$(srcdir)/include/side_bar.h \
|
||||
$(srcdir)/include/side_bar_widget.h \
|
||||
$(srcdir)/include/track.h \
|
||||
$(srcdir)/include/track_container.h \
|
||||
$(srcdir)/include/bb_track.h \
|
||||
$(srcdir)/include/sample_track.h \
|
||||
$(srcdir)/include/drumsynth.h \
|
||||
$(srcdir)/include/sample_buffer.h \
|
||||
$(srcdir)/include/name_label.h \
|
||||
$(srcdir)/include/play_handle.h \
|
||||
$(srcdir)/include/mmp.h \
|
||||
$(srcdir)/include/midi.h \
|
||||
$(srcdir)/include/midi_alsa_raw.h \
|
||||
$(srcdir)/include/midi_client.h \
|
||||
$(srcdir)/include/midi_event_processor.h \
|
||||
$(srcdir)/include/midi_oss.h \
|
||||
$(srcdir)/include/midi_port.h \
|
||||
$(srcdir)/include/midi_time.h \
|
||||
$(srcdir)/include/clipboard.h \
|
||||
$(srcdir)/include/types.h \
|
||||
$(srcdir)/include/update_event.h \
|
||||
$(srcdir)/include/qt3support.h \
|
||||
$(srcdir)/include/embed.h \
|
||||
$(srcdir)/include/timeline.h \
|
||||
$(srcdir)/include/config_mgr.h \
|
||||
$(srcdir)/include/spc_bg_hndl_widget.h \
|
||||
$(srcdir)/include/tab_bar.h \
|
||||
$(srcdir)/include/tab_button.h \
|
||||
$(srcdir)/include/project_notes.h \
|
||||
$(srcdir)/include/project_version.h \
|
||||
$(srcdir)/include/visualization_widget.h \
|
||||
$(srcdir)/include/endian_handling.h \
|
||||
$(srcdir)/include/preset_preview_play_handle.h \
|
||||
$(srcdir)/include/sample_play_handle.h \
|
||||
$(srcdir)/include/nstate_button.h \
|
||||
$(srcdir)/include/midi_dummy.h \
|
||||
$(srcdir)/include/midi_mapper.h \
|
||||
$(srcdir)/include/lcd_spinbox.h \
|
||||
$(srcdir)/include/tooltip.h \
|
||||
$(srcdir)/include/automatable_button.h \
|
||||
$(srcdir)/include/automatable_slider.h \
|
||||
$(srcdir)/include/led_checkbox.h \
|
||||
$(srcdir)/include/text_float.h \
|
||||
$(srcdir)/include/tempo_sync_knob.h \
|
||||
$(srcdir)/include/volume_knob.h \
|
||||
$(srcdir)/include/setup_dialog.h \
|
||||
$(srcdir)/include/dummy_plugin.h \
|
||||
$(srcdir)/include/dummy_instrument.h \
|
||||
$(srcdir)/include/instrument_play_handle.h \
|
||||
$(srcdir)/include/string_pair_drag.h \
|
||||
$(srcdir)/include/midi_tab_widget.h \
|
||||
$(srcdir)/include/audio_port.h \
|
||||
$(srcdir)/include/tool.h \
|
||||
$(srcdir)/include/tool_button.h \
|
||||
$(srcdir)/include/cpuload_widget.h \
|
||||
$(srcdir)/include/custom_events.h \
|
||||
$(srcdir)/include/midi_alsa_seq.h \
|
||||
$(srcdir)/include/micro_timer.h \
|
||||
$(srcdir)/include/fade_button.h \
|
||||
$(srcdir)/include/fifo_buffer.h \
|
||||
$(srcdir)/include/combobox.h \
|
||||
$(srcdir)/include/rubberband.h \
|
||||
$(srcdir)/include/base64.h \
|
||||
$(srcdir)/include/automatable_object.h \
|
||||
$(srcdir)/include/automatable_object_templates.h \
|
||||
$(srcdir)/include/journalling_object.h \
|
||||
$(srcdir)/include/level_object.h \
|
||||
$(srcdir)/include/project_journal.h \
|
||||
$(srcdir)/include/shared_object.h \
|
||||
$(srcdir)/include/import_filter.h \
|
||||
$(srcdir)/include/engine.h \
|
||||
$(srcdir)/include/effect.h \
|
||||
$(srcdir)/include/effect_chain.h \
|
||||
$(srcdir)/include/effect_control_dialog.h \
|
||||
$(srcdir)/include/effect_label.h \
|
||||
$(srcdir)/include/effect_tab_widget.h \
|
||||
$(srcdir)/include/rack_plugin.h \
|
||||
$(srcdir)/include/rack_view.h \
|
||||
$(srcdir)/include/effect_select_dialog.h \
|
||||
$(srcdir)/include/dummy_effect.h \
|
||||
$(srcdir)/include/ladspa-1.1.h \
|
||||
$(srcdir)/include/sweep_oscillator.h \
|
||||
$(srcdir)/include/meter_dialog.h \
|
||||
$(srcdir)/include/qxembed.h \
|
||||
$(srcdir)/include/effect_lib.h \
|
||||
$(srcdir)/include/xqmap.h \
|
||||
$(THIRD_PARTY_CODE)
|
||||
|
||||
|
||||
|
||||
EXTRA_DIST = $(lmms_EMBEDDED_RESOURCES) lmms.1
|
||||
|
||||
|
||||
CLEANFILES = $(lmms_MOC) ./embedded_resources.h
|
||||
|
||||
if HAVE_LIBSDL
|
||||
LIB_SDL_LDADD = -lSDL
|
||||
endif
|
||||
|
||||
if HAVE_LIBSDL_SOUND
|
||||
LIB_SDL_SOUND_LDADD = -lSDL_sound
|
||||
endif
|
||||
|
||||
if HAVE_LIBASOUND
|
||||
LIB_ASOUND_LDADD = -lasound
|
||||
endif
|
||||
|
||||
if HAVE_LIBJACK
|
||||
LIB_JACK_LDADD = -ljack
|
||||
endif
|
||||
|
||||
if HAVE_LIBVORBIS
|
||||
LIB_VORBIS_LDADD = -lvorbis -lvorbisenc -lvorbisfile
|
||||
endif
|
||||
|
||||
if USE_3RDPARTY_LIBSRC
|
||||
else
|
||||
LIB_SRC_LDADD = -lsamplerate
|
||||
endif
|
||||
|
||||
if HAVE_LIBSF
|
||||
LIB_SF_LDADD = -lsndfile
|
||||
endif
|
||||
|
||||
if LADSPA_SUPPORT
|
||||
LIB_LADSPABASE_LDADD = -Lplugins/ladspa_base -lladspabase
|
||||
endif
|
||||
|
||||
lmms_LDADD = $(QT_LDADD) $(LIB_SDL_LDADD) $(LIB_ASOUND_LDADD) $(LIB_JACK_LDADD) $(LIB_SDL_SOUND_LDADD) $(LIB_VORBIS_LDADD) $(LIB_SRC_LDADD) $(LIB_SF_LDADD) $(LIB_LADSPABASE_LDADD)
|
||||
if BUILD_LINUX
|
||||
lmms_LDFLAGS = -rdynamic
|
||||
endif
|
||||
#-rpath $(pkglibdir)
|
||||
|
||||
22
Makefile.svn
Normal file
@@ -0,0 +1,22 @@
|
||||
all:
|
||||
@echo
|
||||
@echo Creating neccessary files for configuring and building LMMS
|
||||
@echo
|
||||
@echo \ \* Creating aclocal.m4
|
||||
@aclocal
|
||||
@echo \ \* Running libtoolize
|
||||
@libtoolize -c -f
|
||||
@echo \ \* Creating config.h.in
|
||||
@autoheader
|
||||
@echo \ \* Creating Makefile templates
|
||||
@automake -ac
|
||||
@echo \ \* Creating configure
|
||||
@autoconf
|
||||
@echo \ \* Cleaning up
|
||||
@rm -rf autom4te.cache/
|
||||
@echo
|
||||
@echo ...done\! If something failed make sure you\'ve installed autoconf,
|
||||
@echo automake and libtool.
|
||||
@echo Otherwise you can run now configure \(if you did not so far\) and then make.
|
||||
@echo
|
||||
|
||||
113
README
Normal file
@@ -0,0 +1,113 @@
|
||||
Linux MultiMedia Studio 0.3.2
|
||||
==============================
|
||||
|
||||
Copyright (c) 2004-2008 by LMMS-developers
|
||||
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
|
||||
|
||||
What is LMMS??
|
||||
--------------
|
||||
|
||||
LMMS aims to be a free alternative to popular (but commercial and closed-
|
||||
source) programs like FruityLoops, Cubase and Logic giving you the ability of
|
||||
producing music with your computer by creating/synthesizing sounds, arranging
|
||||
samples, using effects, playing live with keyboard and much more...
|
||||
|
||||
LMMS combines the features of a sequencer-program (pattern-/channel-/
|
||||
sample-/song-/effect-management) and those of powerful synthesizers and
|
||||
samplers in a modern, user-friendly and easy to use graphical user-interface.
|
||||
|
||||
LMMS is still in heavy development, so with this version please don't expect a
|
||||
complete, ready and bugfree program!!
|
||||
|
||||
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
The most important requirement is for sure a fast computer, so don't try to get
|
||||
LMMS working on a pentium I with 60 MHz... ;-) Therefore you should have at
|
||||
least 500 MHz, but for really enjoying LMMS less than 1 GHz makes no sense...
|
||||
|
||||
|
||||
Required libraries:
|
||||
|
||||
- multithreaded version of Qt 3.0 (at least 3.2 recommended) or higher with
|
||||
devel-files
|
||||
|
||||
Optional, but strongly recommended:
|
||||
- JACK with devel-files
|
||||
- libvorbis with devel-files
|
||||
- libalsa with devel-files
|
||||
- SDL_sound (tested with 0.1.5 & 1.0.1) with devel-files
|
||||
- SDL with devel-files
|
||||
- libsamplerate with devel-files
|
||||
- libsndfile with devel-files
|
||||
- WINE + WINE-devel-files
|
||||
- stk, libstk + libstk-dev
|
||||
- festival-devel-files and default-voice
|
||||
|
||||
For compiling you should have an up to date GCC with g++.
|
||||
|
||||
If you have problems with compiling or running LMMS, find any bug or have
|
||||
suggestions and so on, please feel free to e-mail me (for mail-address see
|
||||
below)!
|
||||
|
||||
|
||||
|
||||
Building
|
||||
--------
|
||||
|
||||
See INSTALL for information on how to build LMMS.
|
||||
|
||||
Please also take a look at
|
||||
|
||||
./configure --help
|
||||
|
||||
There you'll see a lot of options which partly might be interesting for you.
|
||||
For example if you want to build LMMS with VST-support, you have to run
|
||||
configure with --with-vst switch. Otherwise LMMS support won't be built!
|
||||
|
||||
|
||||
|
||||
Join LMMS-development
|
||||
----------------------
|
||||
|
||||
If you are interested in LMMS, it's programming, artwork, testing, writing
|
||||
demo-songs, (and improving this f**** README...) or something like that,
|
||||
you're welcome to participate on the development of LMMS!
|
||||
|
||||
The project-homepage of LMMS, mailingslists and a list of things you can do
|
||||
can be found at
|
||||
|
||||
http://lmms.sourceforge.net
|
||||
|
||||
|
||||
Details on development can be found at
|
||||
|
||||
http://lmms.sourceforge.net/development.php
|
||||
|
||||
or in the Wiki:
|
||||
|
||||
http://lmms.sourceforge.net/wiki/
|
||||
|
||||
Before coding a new big feature, please ALWAYS post your idea and suggestions
|
||||
about your feature and about the intended implementation to the
|
||||
LMMS-devel-mailinglist (lmms-devel@lists.sourceforge.net) and wait for replies!
|
||||
Maybe there're different ideas, improvements, hints or maybe your feature is
|
||||
not welcome/needed at the moment.
|
||||
60
README.md
@@ -1,60 +0,0 @@
|
||||
#  LMMS
|
||||
|
||||
[](https://travis-ci.org/LMMS/lmms)
|
||||
[](https://lmms.io/download)
|
||||
[](https://github.com/LMMS/lmms/releases)
|
||||
[](https://discord.gg/3sc5su7)
|
||||
[](https://www.transifex.com/lmms/lmms/)
|
||||
|
||||
**A soft PR-Freeze is currently underway to prepare for refactoring ([#5592](https://github.com/LMMS/lmms/issues/5592)). Please do not open non-essential PRs at this time.**
|
||||
|
||||
What is LMMS?
|
||||
--------------
|
||||
|
||||
LMMS is a free cross-platform alternative to commercial programs like
|
||||
FL Studio®, which allow you to produce music with your computer. This includes
|
||||
the creation of melodies and beats, the synthesis and mixing of sounds, and
|
||||
arranging of samples. You can have fun with your MIDI-keyboard and much more;
|
||||
all in a user-friendly and modern interface.
|
||||
|
||||
[Homepage](https://lmms.io)<br>
|
||||
[Downloads/Releases](https://github.com/LMMS/lmms/releases)<br>
|
||||
[Developer Wiki](https://github.com/LMMS/lmms/wiki)<br>
|
||||
[Artist & User Wiki/Documentation](https://lmms.io/documentation)<br>
|
||||
[Sound Demos](https://lmms.io/showcase/)<br>
|
||||
[LMMS Sharing Platform](https://lmms.io/lsp/) Share your songs!
|
||||
|
||||
Features
|
||||
---------
|
||||
|
||||
* Song-Editor for composing songs
|
||||
* A Beat+Bassline-Editor for creating beats and basslines
|
||||
* An easy-to-use Piano-Roll for editing patterns and melodies
|
||||
* An FX mixer with unlimited FX channels and arbitrary number of effects
|
||||
* Many powerful instrument and effect-plugins out of the box
|
||||
* Full user-defined track-based automation and computer-controlled automation sources
|
||||
* Compatible with many standards such as SoundFont2, VST(i), LADSPA, GUS Patches, and full MIDI support
|
||||
* MIDI file importing and exporting
|
||||
|
||||
Building
|
||||
---------
|
||||
|
||||
See [Compiling LMMS](https://github.com/LMMS/lmms/wiki/Compiling) on our
|
||||
wiki for information on how to build LMMS.
|
||||
|
||||
|
||||
Join LMMS-development
|
||||
----------------------
|
||||
|
||||
If you are interested in LMMS, its programming, artwork, testing, writing demo
|
||||
songs, (and improving this README...) or something like that, you're welcome
|
||||
to participate in the development of LMMS!
|
||||
|
||||
Information about what you can do and how can be found in the
|
||||
[wiki](https://github.com/LMMS/lmms/wiki).
|
||||
|
||||
Before coding a new big feature, please _always_
|
||||
[file an issue](https://github.com/LMMS/lmms/issues/new) for your idea and
|
||||
suggestions about your feature and about the intended implementation on GitHub,
|
||||
or ask in one of the tech channels on Discord and wait for replies! Maybe there are different ideas, improvements, or hints, or
|
||||
maybe your feature is not welcome/needed at the moment.
|
||||
54
TODO
Normal file
@@ -0,0 +1,54 @@
|
||||
- do not process effects when playing frozen patterns
|
||||
- select number of channels in export-project-dialog
|
||||
- MIDI over Ethernet support
|
||||
- try to make vestige-plugin-dlls relative
|
||||
- do song-editor-tempo-connection to vst-plugin inside remoteVSTPlugin
|
||||
- add/remove-steps button in bb-editor for adding/removing according number of steps to/from all patterns of visible beat/baseline
|
||||
- replace rest of wizard by simple directory-selection-dialog for working-dir when running the first time
|
||||
- correctly load steps/dots from FLP-files
|
||||
- convert FL-Plucked!-parameters to Vibed-parameters
|
||||
- in flp-import-filter: merge play-list-items if possible
|
||||
- integrated sample-browser in context-menu of sample-track/-tco
|
||||
- make note able of journalling
|
||||
- before calling undoStep/redoStep from journallingObject, save journalling-state-context and disabled journalling, restore afterwards
|
||||
- intelligent journal-entry-merging
|
||||
- undo/redo-support in note/track etc.
|
||||
- save tco-settings in trackContentWidget::saveSettings() etc. instead of track::...
|
||||
- restore stacking-order of windows when loading project
|
||||
- bristol-bindings?
|
||||
- resample sample-track-tcos when using hq-mode
|
||||
- add support for panes-interface (like blender) (instead of MDI etc.)
|
||||
- message to user when importing unsupported MIDI-file (track-count = 0)
|
||||
- AMS/OMS-bindings
|
||||
- remove binary-embed-system (Qt4-resource-system?)
|
||||
- recording-functionality
|
||||
- do not hang when saving while loading VST-plugin (because then we call dispatcher while the load-process is still going on)
|
||||
- tempo-recogn. and sync of beat-samples
|
||||
- separate GUI and data/sound-processing-code
|
||||
- make color-scheme switchable: LMMS / user
|
||||
- autosave every 30s (configurable!) and offer recovery at startup after crash
|
||||
- make piano-roll use rubberband instead of implementing a simple one on it's own
|
||||
- level-meters in output-graph and instrument-track
|
||||
- MIDI-program/MIDI-mapping/process program-/channel-change-events from MIDI-files
|
||||
- DSSI-support
|
||||
- use drawLineF() for drawing notes in pattern::paintEvent() in qt4-version
|
||||
- only redraw region given by paint-event in pattern, bbTCO, sampleTCO etc.
|
||||
- pre-listen when opening sample with QFileDialog
|
||||
- panning-editing in piano-roll
|
||||
- speed up painting of sampleTCO
|
||||
- panning env+lfo
|
||||
- rewrite export-project-dialog using layout-mechanism
|
||||
- make piano-roll use the global clipboard??
|
||||
- add more localizations:
|
||||
- Swedish
|
||||
- Norwegian
|
||||
- Greece
|
||||
- ...
|
||||
|
||||
|
||||
- effect-board -> live-fx from input
|
||||
- chord-editor?
|
||||
- WAVE/OGG/MP3-Import -> FFT-analysis -> write notes
|
||||
- classical note-edit-window -> also ability of printing and maybe later scanning & recognition of notes
|
||||
- add FLAC as export-format?
|
||||
|
||||
692
acinclude.m4
Normal file
@@ -0,0 +1,692 @@
|
||||
# Check for Qt compiler flags, linker flags, and binary packages
|
||||
AC_DEFUN([gw_CHECK_QT],
|
||||
[
|
||||
AC_REQUIRE([AC_PROG_CXX])
|
||||
AC_REQUIRE([AC_PATH_X])
|
||||
|
||||
AC_MSG_CHECKING([QTDIR])
|
||||
AC_ARG_WITH([qtdir], [ --with-qtdir=DIR Qt installation directory [default=$QTDIR]], QTDIR=$withval)
|
||||
# Check that QTDIR is defined or that --with-qtdir given
|
||||
if test x"$QTDIR" = x ; then
|
||||
# some usual Qt-locations
|
||||
QT_SEARCH="/usr /usr/lib/qt /usr/lib/qt3 /usr/lib/qt31 /usr/lib/qt32 /usr/lib/qt33 /usr/lib/qt-3.0 /usr/lib/qt-3.1 /usr/lib/qt-3.2 /usr/lib/qt-3.3 /usr/local/qt /usr/local/qt3 /usr/local/qt31 /usr/local/qt32 /usr/local/qt33 /usr/share/qt3 /usr/X11R6" # /usr/share/qt4 /usr/local/Trolltech/Qt-4.0.0 /usr/local/Trolltech/Qt-4.0.1 /usr/local/Trolltech/Qt-4.1.0 /usr/local/Trolltech/Qt-4.1.0"
|
||||
else
|
||||
QT_SEARCH=$QTDIR
|
||||
QTDIR=""
|
||||
fi
|
||||
for i in $QT_SEARCH ; do
|
||||
QT_INCLUDE_SEARCH="include include/qt include/qt3" # include/qt4/Qt include/Qt"
|
||||
for j in $QT_INCLUDE_SEARCH ; do
|
||||
if test -f $i/$j/qglobal.h -a x$QTDIR = x ; then
|
||||
QTDIR=$i
|
||||
QT_INCLUDES=$i/$j
|
||||
fi
|
||||
done
|
||||
done
|
||||
if test x"$QTDIR" = x ; then
|
||||
AC_MSG_ERROR([*** QTDIR must be defined, or --with-qtdir option given])
|
||||
fi
|
||||
AC_MSG_RESULT([$QTDIR])
|
||||
|
||||
# Change backslashes in QTDIR to forward slashes to prevent escaping
|
||||
# problems later on in the build process, mainly for Cygwin build
|
||||
# environment using MSVC as the compiler
|
||||
# TODO: Use sed instead of perl
|
||||
QTDIR=`echo $QTDIR | perl -p -e 's/\\\\/\\//g'`
|
||||
|
||||
AC_MSG_CHECKING([Qt includes])
|
||||
# Check where includes are located
|
||||
if test x"$QT_INCLUDES" = x ; then
|
||||
AC_MSG_ERROR([*** could not find Qt-includes! Make sure you have the Qt-devel-files installed!])
|
||||
fi
|
||||
AC_MSG_RESULT([$QT_INCLUDES])
|
||||
|
||||
# Figure out which version of Qt we are using
|
||||
AC_MSG_CHECKING([Qt version])
|
||||
QT_VER=`grep 'define.*QT_VERSION_STR\W' $QT_INCLUDES/qglobal.h | perl -p -e 's/\D//g'`
|
||||
case "${QT_VER}" in
|
||||
2*)
|
||||
AC_MSG_ERROR([*** Qt 2 is not supported by iTALC. Please upgrade to Qt3!])
|
||||
;;
|
||||
3*)
|
||||
QT_MAJOR="3"
|
||||
;;
|
||||
# 4*)
|
||||
# QT_MAJOR="4"
|
||||
# ;;
|
||||
*)
|
||||
AC_MSG_ERROR([*** Don't know how to handle this Qt major version])
|
||||
;;
|
||||
esac
|
||||
AC_MSG_RESULT([$QT_VER ($QT_MAJOR)])
|
||||
|
||||
# Search for available Qt translations
|
||||
AH_TEMPLATE(QT_TRANSLATIONS_DIR, [Define to Qt translations directory])
|
||||
AC_MSG_CHECKING([Qt translations])
|
||||
case "${QT_VER}" in
|
||||
3*)
|
||||
QT_TRANSLATIONS_SEARCH="/usr/share/qt3 /usr/local/qt3 /usr/local/qt31 /usr/local/qt32 /usr/local/qt33 /usr/local/qt"
|
||||
;;
|
||||
4*)
|
||||
QT_TRANSLATIONS_SEARCH="/usr/share/qt4 /usr/local/qt /usr/local/Trolltech/Qt-4.0.0 /usr/local/Trolltech/Qt-4.0.1 /usr/local/Trolltech/Qt-4.1.0 /usr/local/Trolltech/Qt-4.1.0"
|
||||
;;
|
||||
esac
|
||||
for i in $QT_TRANSLATIONS_SEARCH ; do
|
||||
if test -d $i/translations -a x$QT_TRANSLATIONS = x ; then
|
||||
QT_TRANSLATIONS=$i/translations
|
||||
fi
|
||||
done
|
||||
if test x"$QT_TRANSLATIONS" = x ; then
|
||||
AC_MSG_WARN([*** not found! You may want to install a Qt i18n package])
|
||||
else
|
||||
AC_DEFINE_UNQUOTED(QT_TRANSLATIONS_DIR, "$QT_TRANSLATIONS")
|
||||
fi
|
||||
AC_MSG_RESULT([$QT_TRANSLATIONS])
|
||||
|
||||
QTHOSTDIR=/usr
|
||||
|
||||
# Check that moc is in path
|
||||
AC_CHECK_PROG(MOC, moc, $QTDIR/bin/moc,,$QTDIR/bin/)
|
||||
if test x$MOC = x ; then
|
||||
AC_CHECK_PROG(MOC, moc-qt3, $QTDIR/bin/moc-qt3,,$QTDIR/bin/)
|
||||
if test x$MOC = x ; then
|
||||
AC_CHECK_PROG(MOC, moc-qt4, $QTHOSTDIR/bin/moc-qt4,,$QTHOSTDIR/bin/)
|
||||
if test x$MOC = x ; then
|
||||
AC_MSG_ERROR([*** not found! Make sure you have Qt-devel-tools installed!])
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# uic is the Qt user interface compiler
|
||||
AC_CHECK_PROG(UIC, uic, $QTDIR/bin/uic,,$QTDIR/bin/)
|
||||
if test x$UIC = x ; then
|
||||
AC_MSG_WARN([*** not found! It's currently not needed but should be part of a proper Qt-devel-tools-installation!])
|
||||
fi
|
||||
|
||||
# lupdate is the Qt translation-update utility.
|
||||
AC_CHECK_PROG(LUPDATE, lupdate, $QTDIR/bin/lupdate,,$QTDIR/bin/)
|
||||
if test x$LUPDATE = x ; then
|
||||
AC_MSG_WARN([*** not found! It's not needed just for compiling but should be part of a proper Qt-devel-tools-installation!])
|
||||
fi
|
||||
|
||||
# lrelease is the Qt translation-release utility.
|
||||
AC_CHECK_PROG(LRELEASE, lrelease, $QTDIR/bin/lrelease,,$QTDIR/bin/)
|
||||
if test x$LRELEASE = x ; then
|
||||
AC_MSG_WARN([*** not found! It's not needed just for compiling but should be part of a proper Qt-devel-tools-installation!])
|
||||
fi
|
||||
|
||||
# Calculate Qt include path
|
||||
QT_CXXFLAGS="-I$QT_INCLUDES"
|
||||
if test "$QT_MAJOR" = "4" ; then
|
||||
QT_CXXFLAGS="$QT_CXXFLAGS -I$QTDIR/include/qt4 -I$QTDIR/include"
|
||||
fi
|
||||
|
||||
|
||||
QT_IS_EMBEDDED="no"
|
||||
# On unix, figure out if we're doing a static or dynamic link
|
||||
case "${host}" in
|
||||
*-cygwin)
|
||||
AC_DEFINE_UNQUOTED(WIN32, "", Defined if on Win32 platform)
|
||||
if test -f "$QTDIR/lib/qt.lib" ; then
|
||||
QT_LIB="qt.lib"
|
||||
QT_IS_STATIC="yes"
|
||||
QT_IS_MT="no"
|
||||
elif test -f "$QTDIR/lib/qt-mt.lib" ; then
|
||||
QT_LIB="qt-mt.lib"
|
||||
QT_IS_STATIC="yes"
|
||||
QT_IS_MT="yes"
|
||||
elif test -f "$QTDIR/lib/qt$QT_VER.lib" ; then
|
||||
QT_LIB="qt$QT_VER.lib"
|
||||
QT_IS_STATIC="no"
|
||||
QT_IS_MT="no"
|
||||
elif test -f "$QTDIR/lib/qt-mt$QT_VER.lib" ; then
|
||||
QT_LIB="qt-mt$QT_VER.lib"
|
||||
QT_IS_STATIC="no"
|
||||
QT_IS_MT="yes"
|
||||
fi
|
||||
;;
|
||||
|
||||
*mingw32)
|
||||
QT_IS_MT="yes"
|
||||
QT_LIB="-L$QTDIR/bin -lQtCore4 -lQtGui4 -lQtXml4 -lQt3Support4"
|
||||
;;
|
||||
*)
|
||||
QT_IS_STATIC=`ls $QTDIR/lib/*.a 2> /dev/null`
|
||||
if test "x$QT_IS_STATIC" = x; then
|
||||
QT_IS_STATIC="no"
|
||||
else
|
||||
QT_IS_STATIC="yes"
|
||||
fi
|
||||
if test x$QT_IS_STATIC = xno ; then
|
||||
QT_IS_DYNAMIC=`ls $QTDIR/lib/*.so 2> /dev/null`
|
||||
if test "x$QT_IS_DYNAMIC" = x; then
|
||||
QT_IS_DYNAMIC=`ls /usr/lib/libQt*so.4 2> /dev/null`
|
||||
if test "x$QT_IS_DYNAMIC" = x; then
|
||||
AC_MSG_ERROR([*** Couldn't find any Qt libraries])
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test "$QT_MAJOR" = "4" ; then
|
||||
QT_IS_MT="yes"
|
||||
QT_LIB="-lQtCore -lQtGui -lQtXml -lQt3Support"
|
||||
MOC="$MOC -DLADSPA_SUPPORT"
|
||||
else
|
||||
QT_CXXFLAGS="-DQT3 $QT_CXXFLAGS"
|
||||
if test "x`ls $QTDIR/lib/libqt-mt.* 2> /dev/null`" != x ; then
|
||||
QT_LIB="-lqt-mt"
|
||||
QT_IS_MT="yes"
|
||||
elif test "x`ls $QTDIR/lib/libqt.* 2> /dev/null`" != x ; then
|
||||
QT_LIB="-lqt"
|
||||
QT_IS_MT="no"
|
||||
elif test "x`ls $QTDIR/lib/libqte.* 2> /dev/null`" != x ; then
|
||||
QT_LIB="-lqte"
|
||||
QT_IS_MT="no"
|
||||
QT_IS_EMBEDDED="yes"
|
||||
elif test "x`ls $QTDIR/lib/libqte-mt.* 2> /dev/null`" != x ; then
|
||||
QT_LIB="-lqte-mt"
|
||||
QT_IS_MT="yes"
|
||||
QT_IS_EMBEDDED="yes"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
AC_MSG_CHECKING([if Qt is static])
|
||||
AC_MSG_RESULT([$QT_IS_STATIC])
|
||||
AC_MSG_CHECKING([if Qt is multithreaded])
|
||||
if test "$QT_IS_MT" = "no"; then
|
||||
AC_MSG_ERROR([*** your Qt is not multithreaded. That's bad, because multithreading is required for compiling... Please install Qt-mt!])
|
||||
fi
|
||||
AC_MSG_RESULT([$QT_IS_MT])
|
||||
AC_MSG_CHECKING([if Qt is embedded])
|
||||
AC_MSG_RESULT([$QT_IS_EMBEDDED])
|
||||
|
||||
QT_GUILINK=""
|
||||
QASSISTANTCLIENT_LDADD="-lqassistantclient"
|
||||
QT_LIBS="$QT_LIB"
|
||||
x_libraries="$x_libraries -L/usr/X11R6/lib"
|
||||
|
||||
case "${host}" in
|
||||
*irix*)
|
||||
QT_LIBS="$QT_LIB"
|
||||
if test $QT_IS_STATIC = yes ; then
|
||||
QT_LIBS="$QT_LIBS -L$x_libraries -lXext -lX11 -lm -lSM -lICE"
|
||||
fi
|
||||
;;
|
||||
|
||||
*linux*)
|
||||
QT_LIBS="$QT_LIB"
|
||||
if test $QT_IS_STATIC = yes && test $QT_IS_EMBEDDED = no; then
|
||||
QT_LIBS="$QT_LIBS -L$x_libraries -lXext -lX11 -lm -lSM -lICE -ljpeg"
|
||||
fi
|
||||
;;
|
||||
|
||||
|
||||
*osf*)
|
||||
# Digital Unix (aka DGUX aka Tru64)
|
||||
QT_LIBS="$QT_LIB"
|
||||
if test $QT_IS_STATIC = yes ; then
|
||||
QT_LIBS="$QT_LIBS -L$x_libraries -lXext -lX11 -lm -lSM -lICE"
|
||||
fi
|
||||
;;
|
||||
|
||||
*solaris*)
|
||||
QT_LIBS="$QT_LIB"
|
||||
if test $QT_IS_STATIC = yes ; then
|
||||
QT_LIBS="$QT_LIBS -L$x_libraries -lXext -lX11 -lm -lSM -lICE -lresolv -lsocket -lnsl"
|
||||
fi
|
||||
;;
|
||||
|
||||
|
||||
*win*)
|
||||
# linker flag to suppress console when linking a GUI app on Win32
|
||||
QT_GUILINK="/subsystem:windows"
|
||||
|
||||
if test $QT_MAJOR = "3" ; then
|
||||
if test $QT_IS_MT = yes ; then
|
||||
QT_LIBS="/nodefaultlib:libcmt"
|
||||
else
|
||||
QT_LIBS="/nodefaultlib:libc"
|
||||
fi
|
||||
fi
|
||||
|
||||
if test $QT_IS_STATIC = yes ; then
|
||||
QT_LIBS="$QT_LIBS $QT_LIB kernel32.lib user32.lib gdi32.lib comdlg32.lib ole32.lib shell32.lib imm32.lib advapi32.lib wsock32.lib winspool.lib winmm.lib netapi32.lib"
|
||||
if test $QT_MAJOR = "3" ; then
|
||||
QT_LIBS="$QT_LIBS qtmain.lib"
|
||||
fi
|
||||
else
|
||||
QT_LIBS="$QT_LIBS $QT_LIB"
|
||||
if test $QT_MAJOR = "3" ; then
|
||||
QT_CXXFLAGS="$QT_CXXFLAGS -DQT_DLL"
|
||||
QT_LIBS="$QT_LIBS qtmain.lib qui.lib user32.lib netapi32.lib"
|
||||
fi
|
||||
fi
|
||||
QASSISTANTCLIENT_LDADD="qassistantclient.lib"
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
|
||||
if test x"$QT_IS_EMBEDDED" = "xyes" ; then
|
||||
QT_CXXFLAGS="-DQWS $QT_CXXFLAGS"
|
||||
fi
|
||||
|
||||
if test x"$QT_IS_MT" = "xyes" ; then
|
||||
QT_CXXFLAGS="$QT_CXXFLAGS -D_REENTRANT -DQT_THREAD_SUPPORT"
|
||||
QT_LIBS="$QT_LIBS"
|
||||
fi
|
||||
|
||||
QT_LDADD="-L$QTDIR/lib $QT_LIBS"
|
||||
|
||||
#if test x$QT_IS_STATIC = xyes ; then
|
||||
# OLDLIBS="$LIBS"
|
||||
# LIBS="$QT_LDADD"
|
||||
# AC_CHECK_LIB(Xft, XftFontOpen, QT_LDADD="$QT_LDADD -lXft")
|
||||
# LIBS="$LIBS"
|
||||
#fi
|
||||
|
||||
AC_MSG_CHECKING([QT_CXXFLAGS])
|
||||
AC_MSG_RESULT([$QT_CXXFLAGS])
|
||||
AC_MSG_CHECKING([QT_LDADD])
|
||||
AC_MSG_RESULT([$QT_LDADD])
|
||||
|
||||
AC_SUBST(QT_CXXFLAGS)
|
||||
AC_SUBST(QT_LDADD)
|
||||
AC_SUBST(QT_GUILINK)
|
||||
AC_SUBST(QASSISTANTCLIENT_LDADD)
|
||||
|
||||
])
|
||||
|
||||
|
||||
|
||||
dnl @synopsis AC_C_FIND_ENDIAN
|
||||
dnl
|
||||
dnl Determine endian-ness of target processor.
|
||||
dnl @version 1.1 Mar 03 2002
|
||||
dnl @author Erik de Castro Lopo <erikd AT mega-nerd DOT com>
|
||||
dnl
|
||||
dnl Majority written from scratch to replace the standard autoconf macro
|
||||
dnl AC_C_BIGENDIAN. Only part remaining from the original it the invocation
|
||||
dnl of the AC_TRY_RUN macro.
|
||||
dnl
|
||||
dnl Permission to use, copy, modify, distribute, and sell this file for any
|
||||
dnl purpose is hereby granted without fee, provided that the above copyright
|
||||
dnl and this permission notice appear in all copies. No representations are
|
||||
dnl made about the suitability of this software for any purpose. It is
|
||||
dnl provided "as is" without express or implied warranty.
|
||||
|
||||
dnl Find endian-ness in the following way:
|
||||
dnl 1) Look in <endian.h>.
|
||||
dnl 2) If 1) fails, look in <sys/types.h> and <sys/param.h>.
|
||||
dnl 3) If 1) and 2) fails and not cross compiling run a test program.
|
||||
dnl 4) If 1) and 2) fails and cross compiling then guess based on target.
|
||||
|
||||
AC_DEFUN([AC_C_FIND_ENDIAN],
|
||||
[AC_CACHE_CHECK(processor byte ordering,
|
||||
ac_cv_c_byte_order,
|
||||
|
||||
# Initialize to unknown
|
||||
ac_cv_c_byte_order=unknown
|
||||
|
||||
if test x$ac_cv_header_endian_h = xyes ; then
|
||||
|
||||
# First try <endian.h> which should set BYTE_ORDER.
|
||||
|
||||
[AC_TRY_LINK([
|
||||
#include <endian.h>
|
||||
#if BYTE_ORDER != LITTLE_ENDIAN
|
||||
not big endian
|
||||
#endif
|
||||
], return 0 ;,
|
||||
ac_cv_c_byte_order=little
|
||||
)]
|
||||
|
||||
[AC_TRY_LINK([
|
||||
#include <endian.h>
|
||||
#if BYTE_ORDER != BIG_ENDIAN
|
||||
not big endian
|
||||
#endif
|
||||
], return 0 ;,
|
||||
ac_cv_c_byte_order=big
|
||||
)]
|
||||
|
||||
fi
|
||||
|
||||
if test $ac_cv_c_byte_order = unknown ; then
|
||||
|
||||
[AC_TRY_LINK([
|
||||
#include <sys/types.h>
|
||||
#include <sys/param.h>
|
||||
#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
|
||||
bogus endian macros
|
||||
#endif
|
||||
], return 0 ;,
|
||||
|
||||
[AC_TRY_LINK([
|
||||
#include <sys/types.h>
|
||||
#include <sys/param.h>
|
||||
#if BYTE_ORDER != LITTLE_ENDIAN
|
||||
not big endian
|
||||
#endif
|
||||
], return 0 ;,
|
||||
ac_cv_c_byte_order=little
|
||||
)]
|
||||
|
||||
[AC_TRY_LINK([
|
||||
#include <sys/types.h>
|
||||
#include <sys/param.h>
|
||||
#if BYTE_ORDER != LITTLE_ENDIAN
|
||||
not big endian
|
||||
#endif
|
||||
], return 0 ;,
|
||||
ac_cv_c_byte_order=little
|
||||
)]
|
||||
|
||||
)]
|
||||
|
||||
fi
|
||||
|
||||
if test $ac_cv_c_byte_order = unknown ; then
|
||||
if test $cross_compiling = yes ; then
|
||||
# This is the last resort. Try to guess the target processor endian-ness
|
||||
# by looking at the target CPU type.
|
||||
[
|
||||
case "$target_cpu" in
|
||||
alpha* | i?86* | mipsel* | ia64*)
|
||||
ac_cv_c_big_endian=0
|
||||
ac_cv_c_little_endian=1
|
||||
;;
|
||||
|
||||
m68* | mips* | powerpc* | hppa* | sparc*)
|
||||
ac_cv_c_big_endian=1
|
||||
ac_cv_c_little_endian=0
|
||||
;;
|
||||
|
||||
esac
|
||||
]
|
||||
else
|
||||
AC_TRY_RUN(
|
||||
[[
|
||||
int main (void)
|
||||
{ /* Are we little or big endian? From Harbison&Steele. */
|
||||
union
|
||||
{ long l ;
|
||||
char c [sizeof (long)] ;
|
||||
} u ;
|
||||
u.l = 1 ;
|
||||
return (u.c [sizeof (long) - 1] == 1);
|
||||
}
|
||||
]], , ac_cv_c_byte_order=big,
|
||||
ac_cv_c_byte_order=unknown
|
||||
)
|
||||
|
||||
AC_TRY_RUN(
|
||||
[[int main (void)
|
||||
{ /* Are we little or big endian? From Harbison&Steele. */
|
||||
union
|
||||
{ long l ;
|
||||
char c [sizeof (long)] ;
|
||||
} u ;
|
||||
u.l = 1 ;
|
||||
return (u.c [0] == 1);
|
||||
}]], , ac_cv_c_byte_order=little,
|
||||
ac_cv_c_byte_order=unknown
|
||||
)
|
||||
fi
|
||||
fi
|
||||
|
||||
)
|
||||
]
|
||||
|
||||
if test $ac_cv_c_byte_order = big ; then
|
||||
ac_cv_c_big_endian=1
|
||||
ac_cv_c_little_endian=0
|
||||
elif test $ac_cv_c_byte_order = little ; then
|
||||
ac_cv_c_big_endian=0
|
||||
ac_cv_c_little_endian=1
|
||||
else
|
||||
ac_cv_c_big_endian=0
|
||||
ac_cv_c_little_endian=0
|
||||
|
||||
AC_MSG_WARN([[*****************************************************************]])
|
||||
AC_MSG_WARN([[*** Not able to determine endian-ness of target processor. ]])
|
||||
AC_MSG_WARN([[*** The constants CPU_IS_BIG_ENDIAN and CPU_IS_LITTLE_ENDIAN in ]])
|
||||
AC_MSG_WARN([[*** src/config.h may need to be hand editied. ]])
|
||||
AC_MSG_WARN([[*****************************************************************]])
|
||||
fi
|
||||
|
||||
)# AC_C_FIND_ENDIAN
|
||||
|
||||
dnl @synopsis AC_C99_FUNC_LRINT
|
||||
dnl
|
||||
dnl Check whether C99's lrint function is available.
|
||||
dnl @version 1.3 Feb 12 2002
|
||||
dnl @author Erik de Castro Lopo <erikd AT mega-nerd DOT com>
|
||||
dnl
|
||||
dnl Permission to use, copy, modify, distribute, and sell this file for any
|
||||
dnl purpose is hereby granted without fee, provided that the above copyright
|
||||
dnl and this permission notice appear in all copies. No representations are
|
||||
dnl made about the suitability of this software for any purpose. It is
|
||||
dnl provided "as is" without express or implied warranty.
|
||||
dnl
|
||||
AC_DEFUN([AC_C99_FUNC_LRINT],
|
||||
[AC_CACHE_CHECK(for lrint,
|
||||
ac_cv_c99_lrint,
|
||||
[
|
||||
lrint_save_CFLAGS=$CFLAGS
|
||||
CFLAGS="-O2 -lm"
|
||||
AC_TRY_LINK([
|
||||
#define _ISOC9X_SOURCE 1
|
||||
#define _ISOC99_SOURCE 1
|
||||
#define __USE_ISOC99 1
|
||||
#define __USE_ISOC9X 1
|
||||
|
||||
#include <math.h>
|
||||
], if (!lrint(3.14159)) lrint(2.7183);, ac_cv_c99_lrint=yes, ac_cv_c99_lrint=no)
|
||||
|
||||
CFLAGS=$lrint_save_CFLAGS
|
||||
|
||||
])
|
||||
|
||||
if test "$ac_cv_c99_lrint" = yes; then
|
||||
AC_DEFINE(HAVE_LRINT, 1,
|
||||
[Define if you have C99's lrint function.])
|
||||
fi
|
||||
])# AC_C99_FUNC_LRINT
|
||||
dnl @synopsis AC_C99_FUNC_LRINTF
|
||||
dnl
|
||||
dnl Check whether C99's lrintf function is available.
|
||||
dnl @version 1.3 Feb 12 2002
|
||||
dnl @author Erik de Castro Lopo <erikd AT mega-nerd DOT com>
|
||||
dnl
|
||||
dnl Permission to use, copy, modify, distribute, and sell this file for any
|
||||
dnl purpose is hereby granted without fee, provided that the above copyright
|
||||
dnl and this permission notice appear in all copies. No representations are
|
||||
dnl made about the suitability of this software for any purpose. It is
|
||||
dnl provided "as is" without express or implied warranty.
|
||||
dnl
|
||||
AC_DEFUN([AC_C99_FUNC_LRINTF],
|
||||
[AC_CACHE_CHECK(for lrintf,
|
||||
ac_cv_c99_lrintf,
|
||||
[
|
||||
lrintf_save_CFLAGS=$CFLAGS
|
||||
CFLAGS="-O2 -lm"
|
||||
AC_TRY_LINK([
|
||||
#define _ISOC9X_SOURCE 1
|
||||
#define _ISOC99_SOURCE 1
|
||||
#define __USE_ISOC99 1
|
||||
#define __USE_ISOC9X 1
|
||||
|
||||
#include <math.h>
|
||||
], if (!lrintf(3.14159)) lrintf(2.7183);, ac_cv_c99_lrintf=yes, ac_cv_c99_lrintf=no)
|
||||
|
||||
CFLAGS=$lrintf_save_CFLAGS
|
||||
|
||||
])
|
||||
|
||||
if test "$ac_cv_c99_lrintf" = yes; then
|
||||
AC_DEFINE(HAVE_LRINTF, 1,
|
||||
[Define if you have C99's lrintf function.])
|
||||
fi
|
||||
])# AC_C99_FUNC_LRINTF
|
||||
dnl @synopsis AC_C99_FUNC_LLRINT
|
||||
dnl
|
||||
dnl Check whether C99's llrint function is available.
|
||||
dnl @version 1.1 Sep 30 2002
|
||||
dnl @author Erik de Castro Lopo <erikd AT mega-nerd DOT com>
|
||||
dnl
|
||||
dnl Permission to use, copy, modify, distribute, and sell this file for any
|
||||
dnl purpose is hereby granted without fee, provided that the above copyright
|
||||
dnl and this permission notice appear in all copies. No representations are
|
||||
dnl made about the suitability of this software for any purpose. It is
|
||||
dnl provided "as is" without express or implied warranty.
|
||||
dnl
|
||||
AC_DEFUN([AC_C99_FUNC_LLRINT],
|
||||
[AC_CACHE_CHECK(for llrint,
|
||||
ac_cv_c99_llrint,
|
||||
[
|
||||
llrint_save_CFLAGS=$CFLAGS
|
||||
CFLAGS="-O2 -lm"
|
||||
AC_TRY_LINK([
|
||||
#define _ISOC9X_SOURCE 1
|
||||
#define _ISOC99_SOURCE 1
|
||||
#define __USE_ISOC99 1
|
||||
#define __USE_ISOC9X 1
|
||||
|
||||
#include <math.h>
|
||||
#include <stdint.h>
|
||||
], int64_t x ; x = llrint(3.14159) ;, ac_cv_c99_llrint=yes, ac_cv_c99_llrint=no)
|
||||
|
||||
CFLAGS=$llrint_save_CFLAGS
|
||||
|
||||
])
|
||||
|
||||
if test "$ac_cv_c99_llrint" = yes; then
|
||||
AC_DEFINE(HAVE_LLRINT, 1,
|
||||
[Define if you have C99's llrint function.])
|
||||
fi
|
||||
])# AC_C99_FUNC_LLRINT
|
||||
|
||||
|
||||
|
||||
dnl @synopsis AC_C_CLIP_MODE
|
||||
dnl
|
||||
dnl Determine the clipping mode when converting float to int.
|
||||
dnl @version 1.0 May 17 2003
|
||||
dnl @author Erik de Castro Lopo <erikd AT mega-nerd DOT com>
|
||||
dnl
|
||||
dnl Permission to use, copy, modify, distribute, and sell this file for any
|
||||
dnl purpose is hereby granted without fee, provided that the above copyright
|
||||
dnl and this permission notice appear in all copies. No representations are
|
||||
dnl made about the suitability of this software for any purpose. It is
|
||||
dnl provided "as is" without express or implied warranty.
|
||||
|
||||
|
||||
|
||||
dnl Find the clipping mode in the following way:
|
||||
dnl 1) If we are not cross compiling test it.
|
||||
dnl 2) IF we are cross compiling, assume that clipping isn't done correctly.
|
||||
|
||||
AC_DEFUN([AC_C_CLIP_MODE],
|
||||
[AC_CACHE_CHECK(processor clipping capabilities,
|
||||
ac_cv_c_clip_type,
|
||||
|
||||
# Initialize to unknown
|
||||
ac_cv_c_clip_positive=unknown
|
||||
ac_cv_c_clip_negative=unknown
|
||||
|
||||
if test $ac_cv_c_clip_positive = unknown ; then
|
||||
AC_TRY_RUN(
|
||||
[[
|
||||
#define _ISOC9X_SOURCE 1
|
||||
#define _ISOC99_SOURCE 1
|
||||
#define __USE_ISOC99 1
|
||||
#define __USE_ISOC9X 1
|
||||
#include <math.h>
|
||||
int main (void)
|
||||
{ double fval ;
|
||||
int k, ival ;
|
||||
|
||||
fval = 1.0 * 0x7FFFFFFF ;
|
||||
for (k = 0 ; k < 100 ; k++)
|
||||
{ ival = (lrint (fval)) >> 24 ;
|
||||
if (ival != 127)
|
||||
return 1 ;
|
||||
|
||||
fval *= 1.2499999 ;
|
||||
} ;
|
||||
|
||||
return 0 ;
|
||||
}
|
||||
]],
|
||||
ac_cv_c_clip_positive=yes,
|
||||
ac_cv_c_clip_positive=no,
|
||||
ac_cv_c_clip_positive=unknown
|
||||
)
|
||||
|
||||
AC_TRY_RUN(
|
||||
[[
|
||||
#define _ISOC9X_SOURCE 1
|
||||
#define _ISOC99_SOURCE 1
|
||||
#define __USE_ISOC99 1
|
||||
#define __USE_ISOC9X 1
|
||||
#include <math.h>
|
||||
int main (void)
|
||||
{ double fval ;
|
||||
int k, ival ;
|
||||
|
||||
fval = -8.0 * 0x10000000 ;
|
||||
for (k = 0 ; k < 100 ; k++)
|
||||
{ ival = (lrint (fval)) >> 24 ;
|
||||
if (ival != -128)
|
||||
return 1 ;
|
||||
|
||||
fval *= 1.2499999 ;
|
||||
} ;
|
||||
|
||||
return 0 ;
|
||||
}
|
||||
]],
|
||||
ac_cv_c_clip_negative=yes,
|
||||
ac_cv_c_clip_negative=no,
|
||||
ac_cv_c_clip_negative=unknown
|
||||
)
|
||||
|
||||
fi
|
||||
|
||||
if test $ac_cv_c_clip_positive = yes ; then
|
||||
ac_cv_c_clip_positive=1
|
||||
else
|
||||
ac_cv_c_clip_positive=0
|
||||
fi
|
||||
|
||||
if test $ac_cv_c_clip_negative = yes ; then
|
||||
ac_cv_c_clip_negative=1
|
||||
else
|
||||
ac_cv_c_clip_negative=0
|
||||
fi
|
||||
|
||||
[[
|
||||
case "$ac_cv_c_clip_positive$ac_cv_c_clip_negative" in
|
||||
"00")
|
||||
ac_cv_c_clip_type="none"
|
||||
;;
|
||||
"10")
|
||||
ac_cv_c_clip_type="positive"
|
||||
;;
|
||||
"01")
|
||||
ac_cv_c_clip_type="negative"
|
||||
;;
|
||||
"11")
|
||||
ac_cv_c_clip_type="both"
|
||||
;;
|
||||
esac
|
||||
]]
|
||||
|
||||
)
|
||||
]
|
||||
|
||||
)# AC_C_CLIP_MODE
|
||||
|
||||
|
||||
|
||||
5
buildtools/Makefile.am
Normal file
@@ -0,0 +1,5 @@
|
||||
AUTOMAKE_OPTIONS = foreign 1.4
|
||||
|
||||
noinst_PROGRAMS= bin2res
|
||||
bin2res_SOURCES = bin2res.cpp
|
||||
|
||||
211
buildtools/bin2res.cpp
Normal file
@@ -0,0 +1,211 @@
|
||||
/*
|
||||
* bin2res.cpp - generate embedded resources from binary data (based on qembed)
|
||||
*
|
||||
* Copyright (c) 2005 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this program (see COPYING); if not, write to the
|
||||
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
* Boston, MA 02110-1301 USA.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
|
||||
static void embedData( const char * _input, int _size, std::ostream & _output );
|
||||
static std::string convertFileNameToCIdentifier( const std::string & _s );
|
||||
|
||||
|
||||
struct embed
|
||||
{
|
||||
unsigned int size;
|
||||
std::string name;
|
||||
std::string cname;
|
||||
} ;
|
||||
|
||||
typedef std::vector<std::string> stringlist;
|
||||
|
||||
const int MAX_FILE_SIZE = 256*256*256; // = 16 MB
|
||||
|
||||
|
||||
int main( int argc, char * * argv )
|
||||
{
|
||||
if( argc < 2 )
|
||||
{
|
||||
std::cerr << "Usage:" << std::endl << "\t" << argv[0] <<
|
||||
" files" << std::endl;
|
||||
return( 1 );
|
||||
}
|
||||
|
||||
std::cout << "// Generated by bin2res" << std::endl;
|
||||
|
||||
std::vector<embed *> embedded_data;
|
||||
|
||||
std::cout << "#ifndef _EMBEDDED_RESOURCES_H" << std::endl;
|
||||
std::cout << "#define _EMBEDDED_RESOURCES_H" << std::endl;
|
||||
|
||||
stringlist files;
|
||||
for( int i = 1; i < argc; ++i )
|
||||
{
|
||||
files.push_back( argv[i] );
|
||||
}
|
||||
for( stringlist::iterator it = files.begin(); it != files.end(); ++it )
|
||||
{
|
||||
std::ifstream f( it->c_str() );
|
||||
if( f.fail() )
|
||||
{
|
||||
std::cerr << "Cannot open file " << *it <<
|
||||
", ignoring it" << std::endl;
|
||||
continue;
|
||||
}
|
||||
f.seekg( 0, std::ios::end );
|
||||
int fsize = f.tellg();
|
||||
f.seekg( 0 );
|
||||
if( fsize == 0 || fsize > MAX_FILE_SIZE )
|
||||
{
|
||||
std::cerr << "File " << *it << " has zero size or is "
|
||||
"too large to be processed with bin2res." <<
|
||||
std::endl;
|
||||
}
|
||||
char * data = new char[fsize];
|
||||
f.read( data, fsize );
|
||||
embed * e = new embed;
|
||||
e->size = fsize;
|
||||
if( it->rfind( '/' ) != std::string::npos )
|
||||
{
|
||||
e->name = std::string( it->c_str() +
|
||||
it->rfind( '/' ) + 1 );
|
||||
}
|
||||
else
|
||||
{
|
||||
e->name = *it;
|
||||
}
|
||||
e->cname = convertFileNameToCIdentifier( e->name );
|
||||
embedded_data.push_back( e );
|
||||
std::string s;
|
||||
std::cout << "const unsigned char " << e->cname <<
|
||||
"_data[] = {";
|
||||
embedData( data, fsize, std::cout );
|
||||
std::cout << std::endl << "};" << std::endl << std::endl;
|
||||
delete[] data;
|
||||
}
|
||||
|
||||
if( embedded_data.size() > 0 )
|
||||
{
|
||||
std::cout << "const unsigned char dummy_data[] ="
|
||||
"{ 0x00 };" << std::endl << std::endl;
|
||||
embed * dummy = new embed;
|
||||
dummy->size = 1;
|
||||
dummy->name = "dummy";
|
||||
dummy->cname = convertFileNameToCIdentifier( "dummy" );
|
||||
embedded_data.push_back( dummy );
|
||||
|
||||
std::cout << "#include <string.h>" << std::endl << std::endl;
|
||||
std::cout << "#include \"embed.h\"" << std::endl << std::endl;
|
||||
std::cout << "embed::descriptor embed_vec[] = {" << std::endl;
|
||||
/* << "{" << std::endl
|
||||
<< " int size;" << std::endl
|
||||
<< " const unsigned char * data;" <<
|
||||
std::endl
|
||||
<< " const char * name;" << std::endl
|
||||
<< "} embed_vec[] = {" << std::endl;*/
|
||||
while( embedded_data.size() > 0 )
|
||||
{
|
||||
embed * e = embedded_data[0];
|
||||
std::cout << " { " << e->size << ", " << e->cname <<
|
||||
"_data, " << "\"" << e->name <<
|
||||
"\" }," << std::endl;
|
||||
delete e;
|
||||
embedded_data.erase( embedded_data.begin() );
|
||||
}
|
||||
std::cout << " { 0, 0, 0 }" << std::endl << "};" << std::endl
|
||||
<< std::endl
|
||||
<< "const embed::descriptor & "
|
||||
"findEmbeddedData( const char * _name )"
|
||||
<< std::endl << "{" << std::endl
|
||||
<< " for( int i = 0; embed_vec[i].data; "
|
||||
"i++ )" << std::endl
|
||||
<< " {" << std::endl
|
||||
<< " if( strcmp( embed_vec[i].name, "
|
||||
"_name ) == 0 )" << std::endl
|
||||
<< " {" << std::endl
|
||||
<< " return( "
|
||||
"embed_vec[i] );" << std::endl
|
||||
<< " }" << std::endl
|
||||
<< " }" << std::endl
|
||||
/* << " printf( \"warning: embedded resource "
|
||||
"%s not found!\\n\", _name );"
|
||||
<< std::endl*/
|
||||
<< " return( findEmbeddedData( "
|
||||
"\"dummy\" ) );" << std::endl
|
||||
<< "}" << std::endl << std::endl;
|
||||
}
|
||||
std::cout << "#endif" << std::endl;
|
||||
return( 0 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
std::string convertFileNameToCIdentifier( const std::string & _s )
|
||||
{
|
||||
std::string r = _s;
|
||||
int len = r.length();
|
||||
if ( len > 0 && !isalpha( (char)r[0] ) )
|
||||
{
|
||||
r[0] = '_';
|
||||
}
|
||||
for ( int i = 1; i < len; i++ )
|
||||
{
|
||||
if ( !isalnum( (char)r[i] ) )
|
||||
{
|
||||
r[i] = '_';
|
||||
}
|
||||
}
|
||||
return( r );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void embedData( const char * _input, int _nbytes, std::ostream & _output )
|
||||
{
|
||||
static const char hexdigits[] = "0123456789abcdef";
|
||||
std::string s;
|
||||
for( int i = 0; i < _nbytes; i++ )
|
||||
{
|
||||
if( ( i%14 ) == 0 )
|
||||
{
|
||||
s += "\n ";
|
||||
_output << s;
|
||||
s = "";
|
||||
}
|
||||
unsigned int v = _input[i];
|
||||
s += "0x";
|
||||
s += hexdigits[(v >> 4) & 15];
|
||||
s += hexdigits[v & 15];
|
||||
if( i < _nbytes-1 )
|
||||
{
|
||||
s += ',';
|
||||
}
|
||||
}
|
||||
if ( s.length() )
|
||||
{
|
||||
_output << s;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,71 +0,0 @@
|
||||
#!/bin/bash
|
||||
aberr(){ printf "[\e[31mERROR\e[0m]: \e[1m%s\e[0m\n" "$*" >&2; }
|
||||
abinfo(){ printf "[\e[96mINFO\e[0m]: \e[1m%s\e[0m\n" "$*" >&2; }
|
||||
|
||||
function upload_to_tx() {
|
||||
if ! which tx > /dev/null; then
|
||||
aberr "You don't have Transifex client installed. \n Run \`pip install transifex-client\` to install it."
|
||||
exit 1
|
||||
fi
|
||||
abinfo "Uploading to transifex..."
|
||||
if ! tx push -s; then
|
||||
aberr "Problems occurred when uploading strings to Transifex."
|
||||
printf "\t Either there are syntax errors in source file or you don't have permission to update the source file."
|
||||
exit 1
|
||||
fi
|
||||
exit 0
|
||||
}
|
||||
|
||||
function validate() {
|
||||
ERR_LANG=""
|
||||
ERR_BUF=""
|
||||
for i in data/locale/*.ts; do
|
||||
if ! ERR_BUF=$(lconvert-qt5 -i "${i}" -o "/tmp/test.qm" -of qm 2>&1); then
|
||||
ERR_LANG+="\e[96m$(basename "${i}")\e[0m: \e[93m${ERR_BUF}\e[0m "
|
||||
printf "\e[31mx\e[0m"
|
||||
continue
|
||||
fi
|
||||
printf "\e[32m.\e[0m"
|
||||
done
|
||||
echo ""
|
||||
if [[ "x${ERR_LANG}" != "x" ]]; then
|
||||
aberr "The following files failed the validation: "
|
||||
echo -e "${ERR_LANG}"
|
||||
fi
|
||||
}
|
||||
|
||||
abinfo "Checking for your environment..."
|
||||
if ! which lupdate-qt5 > /dev/null; then
|
||||
aberr "You don't seem to have Qt i18n tools installed."
|
||||
printf "\tUsually this comes with your Qt installation, or you need to\n"
|
||||
printf "\tinstall extra packages like \`qt5-tools\` or similar.\n"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
abinfo "Scanning directories..."
|
||||
|
||||
if test -d src/3rdparty/qt5-x11embed/3rdparty/ECM/; then
|
||||
# prevent from collecting strings in ECM
|
||||
rm -rf src/3rdparty/qt5-x11embed/3rdparty/ECM/
|
||||
fi
|
||||
|
||||
if ! lupdate-qt5 -I include/ src/ plugins/ -ts data/locale/en.ts; then
|
||||
aberr "There are some problems when collecting the strings."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
abinfo "Validating translations..."
|
||||
validate
|
||||
|
||||
abinfo "Translations successfully updated."
|
||||
printf "Do you want to upload translations to Transifex? [y/N]: "
|
||||
read -n 1 -r TX
|
||||
echo ""
|
||||
|
||||
if [[ "$TX" == "y" || "$TX" == "Y" ]]; then
|
||||
upload_to_tx
|
||||
fi
|
||||
|
||||
abinfo "No upload as required."
|
||||
|
||||
exit 0
|
||||
@@ -1,30 +0,0 @@
|
||||
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_DESCRIPTION}")
|
||||
SET(CPACK_PACKAGE_VENDOR "${PROJECT_AUTHOR}")
|
||||
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.md")
|
||||
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt")
|
||||
SET(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}")
|
||||
SET(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}")
|
||||
SET(CPACK_PACKAGE_VERSION_PATCH "${VERSION_RELEASE}")
|
||||
IF(VERSION_STAGE)
|
||||
SET(CPACK_PACKAGE_VERSION_PATCH "${CPACK_PACKAGE_VERSION_PATCH}-${VERSION_STAGE}")
|
||||
ENDIF()
|
||||
IF(VERSION_BUILD)
|
||||
SET(CPACK_PACKAGE_VERSION_PATCH "${CPACK_PACKAGE_VERSION_PATCH}-${VERSION_BUILD}")
|
||||
ENDIF()
|
||||
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME_UCASE}")
|
||||
SET(CPACK_SOURCE_GENERATOR "TBZ2")
|
||||
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${VERSION}")
|
||||
IF(NOT DEFINED WIN32)
|
||||
SET(CPACK_STRIP_FILES "bin/${CMAKE_PROJECT_NAME};${PLUGIN_DIR}/*.so")
|
||||
SET(CPACK_PACKAGE_EXECUTABLES "${CMAKE_PROJECT_NAME}" "${PROJECT_NAME_UCASE} binary")
|
||||
ENDIF()
|
||||
|
||||
IF(LMMS_BUILD_WIN32)
|
||||
ADD_SUBDIRECTORY(nsis)
|
||||
ELSEIF(LMMS_BUILD_APPLE)
|
||||
ADD_SUBDIRECTORY(apple)
|
||||
ELSE()
|
||||
ADD_SUBDIRECTORY(linux)
|
||||
ENDIF()
|
||||
|
||||
INCLUDE(CPack)
|
||||
@@ -1,35 +0,0 @@
|
||||
SET(MACOSX_BUNDLE_ICON_FILE "icon.icns")
|
||||
SET(MACOSX_BUNDLE_GUI_IDENTIFIER "${PROJECT_NAME_UCASE}")
|
||||
SET(MACOSX_BUNDLE_LONG_VERSION_STRING "${VERSION}")
|
||||
SET(MACOSX_BUNDLE_BUNDLE_NAME "${PROJECT_NAME_UCASE}")
|
||||
SET(MACOSX_BUNDLE_SHORT_VERSION_STRING "${VERSION}")
|
||||
SET(MACOSX_BUNDLE_BUNDLE_VERSION "${VERSION}")
|
||||
SET(MACOSX_BUNDLE_COPYRIGHT "${PROJECT_COPYRIGHT}")
|
||||
SET(MACOSX_BUNDLE_MIMETYPE "application/x-lmms-project")
|
||||
SET(MACOSX_BUNDLE_MIMETYPE_ICON "project.icns")
|
||||
SET(MACOSX_BUNDLE_MIMETYPE_ID "io.lmms")
|
||||
SET(MACOSX_BUNDLE_PROJECT_URL "${PROJECT_URL}")
|
||||
SET(MACOSX_BUNDLE_DMG_TITLE "${MACOSX_BUNDLE_BUNDLE_NAME} ${MACOSX_BUNDLE_LONG_VERSION_STRING}")
|
||||
|
||||
# FIXME: appdmg won't allow volume names > 27 char
|
||||
# See also https://github.com/LinusU/node-appdmg/issues/48
|
||||
STRING(SUBSTRING "${MACOSX_BUNDLE_DMG_TITLE}" 0 27 MACOSX_BUNDLE_DMG_TITLE)
|
||||
|
||||
CONFIGURE_FILE("lmms.plist.in" "${CMAKE_BINARY_DIR}/Info.plist")
|
||||
CONFIGURE_FILE("install_apple.sh.in" "${CMAKE_BINARY_DIR}/install_apple.sh" @ONLY)
|
||||
CONFIGURE_FILE("package_apple.json.in" "${CMAKE_BINARY_DIR}/package_apple.json" @ONLY)
|
||||
|
||||
# DMG creation target
|
||||
SET(DMG_FILE "${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${VERSION}-mac${APPLE_OS_VER}.dmg")
|
||||
FILE(REMOVE "${DMG_FILE}")
|
||||
ADD_CUSTOM_TARGET(removedmg
|
||||
COMMAND touch "\"${DMG_FILE}\"" && rm "\"${DMG_FILE}\""
|
||||
COMMENT "Removing old DMG")
|
||||
ADD_CUSTOM_TARGET(dmg
|
||||
COMMAND appdmg "\"${CMAKE_BINARY_DIR}/package_apple.json\"" "\"${DMG_FILE}\""
|
||||
DEPENDS "${CMAKE_BINARY_DIR}/package_apple.json"
|
||||
COMMENT "Generating DMG")
|
||||
ADD_DEPENDENCIES(dmg removedmg)
|
||||
|
||||
# see also ../postinstall/CMakeLists.txt
|
||||
|
||||
|
Before Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 113 KiB |
@@ -1,117 +0,0 @@
|
||||
#!/bin/bash
|
||||
# Creates Apple ".app" bundle for @PROJECT_NAME_UCASE@
|
||||
# Note:
|
||||
# Examine linkings using `otool -L somelib.so`
|
||||
# Debug the loading of dynamic libraries using `export DYLD_PRINT_LIBRARIES=1`
|
||||
|
||||
set -e
|
||||
|
||||
# STK rawwaves directory
|
||||
STK_RAWWAVE=$(brew --prefix stk)/share/stk/rawwaves
|
||||
|
||||
# Place to create ".app" bundle
|
||||
APP="@CMAKE_BINARY_DIR@/@PROJECT_NAME_UCASE@.app"
|
||||
|
||||
MSG_COLOR='\x1B[1;36m'
|
||||
COLOR_RESET='\x1B[0m'
|
||||
echo -e "$MSG_COLOR\n\nCreating App Bundle \"$APP\"...$COLOR_RESET"
|
||||
|
||||
qtpath="$(dirname "@QT_QMAKE_EXECUTABLE@")"
|
||||
export PATH="$PATH:$qtpath"
|
||||
|
||||
# Remove any old .app bundles
|
||||
rm -Rf "$APP"
|
||||
|
||||
# Copy/overwrite Info.plist
|
||||
command cp "@CMAKE_BINARY_DIR@/Info.plist" "@CMAKE_INSTALL_PREFIX@/"
|
||||
|
||||
# Create .app bundle containing contents from CMAKE_INSTALL_PREFIX
|
||||
mkdir -p "$APP/Contents/MacOS"
|
||||
mkdir -p "$APP/Contents/Frameworks"
|
||||
mkdir -p "$APP/Contents/Resources"
|
||||
mkdir -p "$APP/Contents/share/stk/rawwaves"
|
||||
cd "@CMAKE_INSTALL_PREFIX@"
|
||||
cp -R ./* "$APP/Contents"
|
||||
cp "@CMAKE_SOURCE_DIR@/cmake/apple/"*.icns "$APP/Contents/Resources/"
|
||||
cp "$STK_RAWWAVE"/*.raw "$APP/Contents/share/stk/rawwaves" > /dev/null 2>&1
|
||||
|
||||
# Make all libraries writable for macdeployqt
|
||||
cd "$APP"
|
||||
find . -type f -print0 | xargs -0 chmod u+w
|
||||
|
||||
lmmsbin="MacOS/@CMAKE_PROJECT_NAME@"
|
||||
zynlib="lib/lmms/libzynaddsubfx.so"
|
||||
zynfmk="Frameworks/libZynAddSubFxCore.dylib"
|
||||
zynbin="MacOS/RemoteZynAddSubFx"
|
||||
|
||||
# Move lmms binary
|
||||
mv "$APP/Contents/bin/@CMAKE_PROJECT_NAME@" "$APP/Contents/$lmmsbin"
|
||||
|
||||
# Fix zyn linking
|
||||
mv "$APP/Contents/lib/lmms/RemoteZynAddSubFx" "$APP/Contents/$zynbin"
|
||||
mv "$APP/Contents/lib/lmms/libZynAddSubFxCore.dylib" "$APP/Contents/$zynfmk"
|
||||
|
||||
install_name_tool -change @rpath/libZynAddSubFxCore.dylib \
|
||||
@loader_path/../$zynfmk \
|
||||
"$APP/Contents/$zynbin"
|
||||
|
||||
install_name_tool -change @rpath/libZynAddSubFxCore.dylib \
|
||||
@loader_path/../../$zynfmk \
|
||||
"$APP/Contents/$zynlib"
|
||||
|
||||
# Replace @rpath with @loader_path for Carla
|
||||
# See also plugins/carlabase/CMakeLists.txt
|
||||
# This MUST be done BEFORE calling macdeployqt
|
||||
install_name_tool -change @rpath/libcarlabase.dylib \
|
||||
@loader_path/libcarlabase.dylib \
|
||||
"$APP/Contents/lib/lmms/libcarlapatchbay.so"
|
||||
|
||||
install_name_tool -change @rpath/libcarlabase.dylib \
|
||||
@loader_path/libcarlabase.dylib \
|
||||
"$APP/Contents/lib/lmms/libcarlarack.so"
|
||||
|
||||
# Link lmms binary
|
||||
_executables="${_executables} -executable=$APP/Contents/$zynbin"
|
||||
_executables="${_executables} -executable=$APP/Contents/$zynfmk"
|
||||
|
||||
# Build a list of shared objects in target/lib/lmms
|
||||
for file in "$APP/Contents/lib/lmms/"*.so; do
|
||||
_thisfile="$APP/Contents/lib/lmms/${file##*/}"
|
||||
_executables="${_executables} -executable=$_thisfile"
|
||||
done
|
||||
|
||||
# Build a list of shared objects in target/lib/lmms/ladspa
|
||||
for file in "$APP/Contents/lib/lmms/ladspa/"*.so; do
|
||||
_thisfile="$APP/Contents/lib/lmms/ladspa/${file##*/}"
|
||||
_executables="${_executables} -executable=$_thisfile"
|
||||
done
|
||||
|
||||
# Finalize .app
|
||||
# shellcheck disable=SC2086
|
||||
macdeployqt "$APP" $_executables
|
||||
|
||||
# Carla is a standalone plugin. Remove library, look for it side-by-side LMMS.app
|
||||
# This MUST be done AFTER calling macdeployqt
|
||||
#
|
||||
# For example:
|
||||
# /Applications/LMMS.app
|
||||
# /Applications/Carla.app
|
||||
carlalibs=$(echo "@CARLA_LIBRARIES@"|tr ";" "\n")
|
||||
|
||||
# Loop over all libcarlas, fix linking
|
||||
for file in "$APP/Contents/lib/lmms/"libcarla*; do
|
||||
_thisfile="$APP/Contents/lib/lmms/${file##*/}"
|
||||
for lib in $carlalibs; do
|
||||
_oldpath="../../Frameworks/lib${lib}.dylib"
|
||||
_newpath="Carla.app/Contents/MacOS/lib${lib}.dylib"
|
||||
# shellcheck disable=SC2086
|
||||
install_name_tool -change @loader_path/$_oldpath \
|
||||
@executable_path/../../../$_newpath \
|
||||
"$_thisfile"
|
||||
rm -f "$APP/Contents/Frameworks/lib${lib}.dylib"
|
||||
done
|
||||
done
|
||||
|
||||
# Cleanup
|
||||
rm -rf "$APP/Contents/bin"
|
||||
echo -e "\nFinished.\n\n"
|
||||
@@ -1,153 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>@MACOSX_BUNDLE_ICON_FILE@</string>
|
||||
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>@MACOSX_BUNDLE_GUI_IDENTIFIER@ @MACOSX_BUNDLE_LONG_VERSION_STRING@</string>
|
||||
|
||||
<!--
|
||||
#############################################################
|
||||
# Apple Creator Code Registered Application Signatures #
|
||||
#############################################################
|
||||
# Company: LMMS Foundation #
|
||||
# Registrant: tres.finocchiaro@gmail.com #
|
||||
# ASCII Code: LMMS #
|
||||
# HEX: 4C4D4D53 #
|
||||
#############################################################
|
||||
# Contact Apple Developer Support at cfreg@apple.com #
|
||||
# with any requested changes #
|
||||
#############################################################
|
||||
-->
|
||||
<key>CFBundleSignature</key>
|
||||
<string>@MACOSX_BUNDLE_GUI_IDENTIFIER@</string>
|
||||
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>@MACOSX_BUNDLE_GUI_IDENTIFIER@</string>
|
||||
|
||||
<key>CFBundleVersion</key>
|
||||
<string>@MACOSX_BUNDLE_LONG_VERSION_STRING@</string>
|
||||
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>@MACOSX_BUNDLE_LONG_VERSION_STRING@</string>
|
||||
|
||||
<key>CFBundleName</key>
|
||||
<string>@MACOSX_BUNDLE_BUNDLE_NAME@</string>
|
||||
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>@MACOSX_BUNDLE_MIMETYPE_ID@</string>
|
||||
|
||||
<key>CFBundleDocumentTypes</key>
|
||||
<array>
|
||||
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>mmpz</string>
|
||||
</array>
|
||||
<key>CFBundleTypeIconFile</key>
|
||||
<string>@MACOSX_BUNDLE_MIMETYPE_ICON@</string>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>@MACOSX_BUNDLE_GUI_IDENTIFIER@ Project</string>
|
||||
<key>CFBundleTypeOSTypes</key>
|
||||
<array>
|
||||
<string>mmpz</string>
|
||||
</array>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Editor</string>
|
||||
<key>CFBundleTypeMIMETypes</key>
|
||||
<array>
|
||||
<string>@MACOSX_BUNDLE_MIMETYPE@</string>
|
||||
</array>
|
||||
</dict>
|
||||
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>mmp</string>
|
||||
</array>
|
||||
<key>CFBundleTypeIconFile</key>
|
||||
<string>@MACOSX_BUNDLE_MIMETYPE_ICON@</string>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>@MACOSX_BUNDLE_GUI_IDENTIFIER@ Project (uncompressed)</string>
|
||||
<key>CFBundleTypeOSTypes</key>
|
||||
<array>
|
||||
<string>mmp</string>
|
||||
</array>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Editor</string>
|
||||
<key>CFBundleTypeMIMETypes</key>
|
||||
<array>
|
||||
<string>@MACOSX_BUNDLE_MIMETYPE@</string>
|
||||
</array>
|
||||
</dict>
|
||||
|
||||
</array>
|
||||
|
||||
<key>UTExportedTypeDeclarations</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>UTTypeIdentifier</key>
|
||||
<string>@MACOSX_BUNDLE_MIMETYPE_ID@.mmpz</string>
|
||||
<key>UTTypeReferenceURL</key>
|
||||
<string>@MACOSX_BUNDLE_PROJECT_URL@</string>
|
||||
<key>UTTypeDescription</key>
|
||||
<string>@MACOSX_BUNDLE_GUI_IDENTIFIER@ Project</string>
|
||||
<key>UTTypeIconFile</key>
|
||||
<string>@MACOSX_BUNDLE_MIMETYPE_ICON@</string>
|
||||
<key>UTTypeConformsTo</key>
|
||||
<array>
|
||||
<string>public.data</string>
|
||||
</array>
|
||||
<key>UTTypeTagSpecification</key>
|
||||
<dict>
|
||||
<key>public.filename-extension</key>
|
||||
<array>
|
||||
<string>mmpz</string>
|
||||
</array>
|
||||
</dict>
|
||||
</dict>
|
||||
|
||||
<dict>
|
||||
<key>UTTypeIdentifier</key>
|
||||
<string>@MACOSX_BUNDLE_MIMETYPE_ID@.mmp</string>
|
||||
<key>UTTypeReferenceURL</key>
|
||||
<string>@MACOSX_BUNDLE_PROJECT_URL@</string>
|
||||
<key>UTTypeDescription</key>
|
||||
<string>@MACOSX_BUNDLE_GUI_IDENTIFIER@ Project (uncompressed)</string>
|
||||
<key>UTTypeIconFile</key>
|
||||
<string>@MACOSX_BUNDLE_MIMETYPE_ICON@</string>
|
||||
<key>UTTypeConformsTo</key>
|
||||
<array>
|
||||
<string>public.xml</string>
|
||||
<string>public.data</string>
|
||||
</array>
|
||||
<key>UTTypeTagSpecification</key>
|
||||
<dict>
|
||||
<key>public.filename-extension</key>
|
||||
<array>
|
||||
<string>mmp</string>
|
||||
</array>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
<string>True</string>
|
||||
<key>NSRequiresAquaSystemAppearance</key>
|
||||
<string>False</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"title": "@MACOSX_BUNDLE_DMG_TITLE@",
|
||||
"background": "@CMAKE_SOURCE_DIR@/cmake/apple/dmg_branding.png",
|
||||
"icon-size": 128,
|
||||
"contents": [
|
||||
{ "x": 139, "y": 200, "type": "file", "path": "@CMAKE_BINARY_DIR@/@MACOSX_BUNDLE_BUNDLE_NAME@.app" },
|
||||
{ "x": 568, "y": 200, "type": "link", "path": "/Applications" }
|
||||
]
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
# Accomodate both linux windows mingw locations
|
||||
if [ -z "$ARCH" ]; then
|
||||
ARCH=32
|
||||
fi
|
||||
|
||||
MINGW=/mingw$ARCH
|
||||
|
||||
if [ -z "$MSYSCON" ]; then
|
||||
MINGW=/opt$MINGW
|
||||
|
||||
DISTRO=$(lsb_release -si)
|
||||
DISTRO_VERSION=$(lsb_release -sr)
|
||||
|
||||
if [ "$DISTRO" != "Ubuntu" ]; then
|
||||
echo "This script only supports Ubuntu"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$DISTRO_VERSION" == "14.04" ]; then
|
||||
TOOLCHAIN="$DIR/toolchains/Ubuntu-MinGW-X-Trusty-$ARCH.cmake"
|
||||
else
|
||||
TOOLCHAIN="$DIR/toolchains/Ubuntu-MinGW-W64-$ARCH.cmake"
|
||||
fi
|
||||
else
|
||||
TOOLCHAIN="$DIR/toolchains/MSYS-$ARCH.cmake"
|
||||
fi
|
||||
|
||||
export PATH=$MINGW/bin:$PATH
|
||||
export CXXFLAGS="$CFLAGS"
|
||||
if [ "$ARCH" == "32" ]; then
|
||||
export CFLAGS="-march=pentium3 -mtune=generic -mpreferred-stack-boundary=5 -mfpmath=sse"
|
||||
fi
|
||||
|
||||
CMAKE_OPTS="-DCMAKE_PREFIX_PATH=$MINGW $CMAKE_OPTS"
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
cmake "$DIR/.." -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN" $CMAKE_OPTS
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
ARCH=64 "$DIR/build_win32.sh"
|
||||
@@ -1,42 +0,0 @@
|
||||
SET(PLUGIN_FILES "")
|
||||
IF(LMMS_BUILD_WIN32)
|
||||
INSTALL(FILES $<TARGET_FILE:Qt5::QWindowsIntegrationPlugin> DESTINATION platforms)
|
||||
ENDIF()
|
||||
|
||||
IF(LMMS_BUILD_WIN32 OR LMMS_INSTALL_DEPENDENCIES)
|
||||
include(InstallTargetDependencies)
|
||||
|
||||
# Collect directories to search for DLLs
|
||||
GET_FILENAME_COMPONENT(QTBIN_DIR "${QT_QMAKE_EXECUTABLE}" PATH)
|
||||
set(LIB_DIRS "${QTBIN_DIR}")
|
||||
|
||||
GET_PROPERTY(PLUGINS_BUILT GLOBAL PROPERTY PLUGINS_BUILT)
|
||||
|
||||
IF(LMMS_BUILD_WIN32)
|
||||
SET(LMMS_DEP_DESTINATION ${BIN_DIR})
|
||||
SET(PLUGIN_DEP_DESTINATION ${BIN_DIR})
|
||||
ELSE()
|
||||
SET(LMMS_DEP_DESTINATION ${LIB_DIR})
|
||||
SET(PLUGIN_DEP_DESTINATION ${LIB_DIR})
|
||||
ENDIF()
|
||||
|
||||
INSTALL_TARGET_DEPENDENCIES(
|
||||
NAME "main_binary"
|
||||
TARGETS lmms
|
||||
DESTINATION "${LMMS_DEP_DESTINATION}"
|
||||
LIB_DIRS ${LIB_DIRS}
|
||||
)
|
||||
|
||||
INSTALL_TARGET_DEPENDENCIES(
|
||||
NAME "plugins"
|
||||
TARGETS ${PLUGINS_BUILT}
|
||||
DESTINATION ${PLUGIN_DEP_DESTINATION}
|
||||
LIB_DIRS ${LIB_DIRS} "${PLUGIN_DIR}" "${PLUGIN_DIR}/optional"
|
||||
SEARCH_PATHS "${PLUGIN_DIR}" "${PLUGIN_DIR}/optional"
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
IF(LMMS_BUILD_APPLE)
|
||||
INSTALL(CODE "EXECUTE_PROCESS(COMMAND chmod u+x ${CMAKE_BINARY_DIR}/install_apple.sh)")
|
||||
INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_BINARY_DIR}/install_apple.sh)")
|
||||
ENDIF()
|
||||
@@ -1,23 +0,0 @@
|
||||
# List of DLLs considered to be system libraries.
|
||||
# This is needed when cross-compiling for Windows.
|
||||
ADVAPI32.dll
|
||||
COMCTL32.dll
|
||||
comdlg32.dll
|
||||
dwmapi.dll
|
||||
GDI32.dll
|
||||
IMM32.dll
|
||||
KERNEL32.dll
|
||||
MPR.DLL
|
||||
msvcrt.dll
|
||||
ole32.dll
|
||||
OLEAUT32.dll
|
||||
OPENGL32.DLL
|
||||
SHELL32.dll
|
||||
USER32.dll
|
||||
UxTheme.dll
|
||||
VERSION.dll
|
||||
WINMM.DLL
|
||||
WS2_32.dll
|
||||
RPCRT4.dll
|
||||
dsound.dll
|
||||
SETUPAPI.dll
|
||||
@@ -1,19 +0,0 @@
|
||||
INSTALL(DIRECTORY icons/ DESTINATION "${DATA_DIR}/icons/hicolor")
|
||||
INSTALL(FILES lmms.desktop DESTINATION "${DATA_DIR}/applications")
|
||||
INSTALL(FILES lmms.xml DESTINATION "${DATA_DIR}/mime/packages")
|
||||
|
||||
# AppImage creation target
|
||||
SET(APPIMAGE_FILE "${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${VERSION}-linux-${CMAKE_SYSTEM_PROCESSOR}.AppImage")
|
||||
|
||||
CONFIGURE_FILE("package_linux.sh.in" "${CMAKE_BINARY_DIR}/package_linux.sh" @ONLY)
|
||||
|
||||
FILE(REMOVE "${APPIMAGE_FILE}")
|
||||
ADD_CUSTOM_TARGET(removeappimage
|
||||
COMMAND rm -f "${APPIMAGE_FILE}"
|
||||
COMMENT "Removing old AppImage")
|
||||
ADD_CUSTOM_TARGET(appimage
|
||||
COMMAND chmod +x "${CMAKE_BINARY_DIR}/package_linux.sh"
|
||||
COMMAND "${CMAKE_BINARY_DIR}/package_linux.sh"
|
||||
COMMENT "Generating AppImage"
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}")
|
||||
ADD_DEPENDENCIES(appimage removeappimage)
|
||||
|
Before Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 549 B |
|
Before Width: | Height: | Size: 446 B |
|
Before Width: | Height: | Size: 934 B |
|
Before Width: | Height: | Size: 771 B |
|
Before Width: | Height: | Size: 799 B |
|
Before Width: | Height: | Size: 681 B |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 836 B |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
@@ -1,142 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64"
|
||||
height="64"
|
||||
id="svg4034"
|
||||
version="1.1"
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)"
|
||||
inkscape:export-filename="64x64@2.png"
|
||||
inkscape:export-xdpi="192"
|
||||
inkscape:export-ydpi="192"
|
||||
sodipodi:docname="lmms.svg">
|
||||
<defs
|
||||
id="defs4036">
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
style="color-interpolation-filters:sRGB"
|
||||
id="filter4173"
|
||||
x="-0.011714286"
|
||||
width="1.0234286"
|
||||
y="-0.0123"
|
||||
height="1.0246">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.205"
|
||||
id="feGaussianBlur4175" />
|
||||
</filter>
|
||||
<linearGradient
|
||||
gradientTransform="translate(0,32)"
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4244-6"
|
||||
id="linearGradient866"
|
||||
x1="35"
|
||||
y1="-14"
|
||||
x2="35"
|
||||
y2="27"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
id="linearGradient4244-6"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop4428"
|
||||
offset="0"
|
||||
style="stop-color:#27ab5f;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop4430"
|
||||
offset="1"
|
||||
style="stop-color:#249a56;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.4142135"
|
||||
inkscape:cx="210.86487"
|
||||
inkscape:cy="3.375495"
|
||||
inkscape:current-layer="svg4034"
|
||||
showgrid="true"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="705"
|
||||
inkscape:window-x="253"
|
||||
inkscape:window-y="1072"
|
||||
inkscape:window-maximized="1"
|
||||
showguides="false"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:object-nodes="true">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid4042" />
|
||||
<sodipodi:guide
|
||||
position="37,4"
|
||||
orientation="0,1"
|
||||
id="guide4951"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="38,60"
|
||||
orientation="0,1"
|
||||
id="guide4955"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="-19,32"
|
||||
orientation="0,1"
|
||||
id="guide4957"
|
||||
inkscape:locked="false" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata4039">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<rect
|
||||
rx="4"
|
||||
y="4"
|
||||
x="4"
|
||||
height="56"
|
||||
width="56"
|
||||
id="rect5093"
|
||||
style="display:inline;opacity:0.98999999;fill:#34d07b;fill-opacity:1;stroke:none;stroke-opacity:1" />
|
||||
<rect
|
||||
rx="3"
|
||||
y="5"
|
||||
x="5"
|
||||
height="54"
|
||||
width="54"
|
||||
id="rect5095"
|
||||
style="display:inline;opacity:1;fill:url(#linearGradient866);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccccccccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5085-3-6"
|
||||
d="M 32,13 11,25 v 24 l 7,4 7,-4 v -8 l -7,-4 v -8 l 14,-8 14,8 v 8 l -7,4 v 8 l 7,4 7,-4 V 25 Z"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.15;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.97797471;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4173);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccccccccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5085-3"
|
||||
d="M 32,11 11,23 v 24 l 7,4 7,-4 v -8 l -7,-4 v -8 l 14,-8 14,8 v 8 l -7,4 v 8 l 7,4 7,-4 V 23 Z"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.97797471;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter5497);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 6.0 KiB |
@@ -1,173 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64"
|
||||
height="64"
|
||||
id="svg4034"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
inkscape:export-filename="/home/umcaruje/d/Dropbox/lmms icons/project-256x256.png"
|
||||
inkscape:export-xdpi="360"
|
||||
inkscape:export-ydpi="360"
|
||||
sodipodi:docname="application-x-lmms-project.svg"
|
||||
enable-background="new">
|
||||
<defs
|
||||
id="defs4036">
|
||||
<linearGradient
|
||||
id="linearGradient4244-6"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop4428"
|
||||
offset="0"
|
||||
style="stop-color:#27ab5f;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop4430"
|
||||
offset="1"
|
||||
style="stop-color:#249a56;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
style="color-interpolation-filters:sRGB"
|
||||
id="filter4400"
|
||||
x="-0.024"
|
||||
width="1.048"
|
||||
y="-0.024"
|
||||
height="1.048">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.14999999"
|
||||
id="feGaussianBlur4402" />
|
||||
</filter>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4244-6"
|
||||
id="linearGradient4432"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="9.8838835"
|
||||
y1="-9.8994951"
|
||||
x2="10.275496"
|
||||
y2="27.930717" />
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
style="color-interpolation-filters:sRGB"
|
||||
id="filter4442"
|
||||
x="-0.0116"
|
||||
width="1.0232"
|
||||
y="-0.012428571"
|
||||
height="1.0248571">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.145"
|
||||
id="feGaussianBlur4444" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.6568542"
|
||||
inkscape:cx="4.2102935"
|
||||
inkscape:cy="18.651114"
|
||||
inkscape:current-layer="g4263"
|
||||
showgrid="false"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="740"
|
||||
inkscape:window-x="339"
|
||||
inkscape:window-y="1080"
|
||||
inkscape:window-maximized="1"
|
||||
showguides="false"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:object-nodes="true">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid4042" />
|
||||
<sodipodi:guide
|
||||
position="37,4"
|
||||
orientation="0,1"
|
||||
id="guide4951" />
|
||||
<sodipodi:guide
|
||||
position="38,60"
|
||||
orientation="0,1"
|
||||
id="guide4955" />
|
||||
<sodipodi:guide
|
||||
position="-19,32"
|
||||
orientation="0,1"
|
||||
id="guide4957" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata4039">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="g4263"
|
||||
inkscape:label="mimetype"
|
||||
style="display:inline">
|
||||
<g
|
||||
id="g4189">
|
||||
<path
|
||||
sodipodi:nodetypes="ssssssccccs"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4273"
|
||||
d="m 10,-30 c -1.108,0 -2,0.892 -2,2 l 0,56 c 0,1.108 0.892,2 2,2 l 44,0 c 1.108,0 2,-0.892 2,-2 l 0,-43 c 0,-1 -1,-2 -1,-2 L 43,-29 c 0,0 -1,-1 -2,-1 z"
|
||||
style="display:inline;opacity:1;fill:#34d07b;fill-opacity:1;stroke:none;stroke-opacity:1"
|
||||
transform="translate(0,32)" />
|
||||
<path
|
||||
sodipodi:nodetypes="sssssscccs"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4275"
|
||||
d="m 10,-29 c -0.554,0 -1,0.446 -1,1 l 0,56 c 0,0.554 0.446,1 1,1 l 44,0 c 0.554,0 1,-0.446 1,-1 l 0,-43 -13,-1 -1,-13 z"
|
||||
style="display:inline;opacity:1;fill:url(#linearGradient4432);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="translate(0,32)" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4339-5"
|
||||
d="m 40,-29 0,11.999999 c 0,2 1,3 3,3 l 11.999999,0 0,-1 L 41,-29 Z"
|
||||
style="display:inline;opacity:0.12999998;fill:#222222;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter4400)"
|
||||
transform="translate(0,32)" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4339"
|
||||
d="m 41,-29 0,12 c 0,1.03125 0.9375,2 2,2 l 12,0 0,-1 -13,-13 z"
|
||||
style="display:inline;fill:#34d07b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
transform="translate(0,32)" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccccccccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4436"
|
||||
d="m 32,22 -15,8 0,17.5 5,2.5 4.999999,-2.5 0,-6 L 22,39 l 0,-6 10,-5.5 10,5.5 0,6 -4.999999,2.5 0,6 L 42,50 47,47.5 47,30 Z"
|
||||
style="display:inline;color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;overflow:visible;visibility:visible;opacity:0.15;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.97797471;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4442);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
||||
<path
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.97797471;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter5497);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 32,20 -15,8 0,17.5 5,2.5 4.999999,-2.5 0,-6 L 22,37 l 0,-6 10,-5.5 10,5.5 0,6 -4.999999,2.5 0,6 L 42,48 47,45.5 47,28 Z"
|
||||
id="path4265"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccccccccccccc" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 7.8 KiB |
@@ -1,24 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
export PATH="$PATH:/sbin"
|
||||
if command -v carla > /dev/null 2>&1; then
|
||||
CARLAPATH="$(command -v carla)"
|
||||
CARLAPREFIX="${CARLAPATH%/bin*}"
|
||||
echo "Carla appears to be installed on this system at $CARLAPREFIX/lib[64]/carla so we'll use it."
|
||||
export LD_LIBRARY_PATH=$CARLAPREFIX/lib/carla:$CARLAPREFIX/lib64/carla:$LD_LIBRARY_PATH
|
||||
else
|
||||
echo "Carla does not appear to be installed. That's OK, please ignore any related library errors."
|
||||
fi
|
||||
export LD_LIBRARY_PATH=$DIR/usr/lib/:$DIR/usr/lib/lmms:$LD_LIBRARY_PATH
|
||||
# Prevent segfault on VirualBox
|
||||
if lsmod |grep vboxguest > /dev/null 2>&1; then
|
||||
echo "VirtualBox detected. Forcing libgl software rendering."
|
||||
export LIBGL_ALWAYS_SOFTWARE=1;
|
||||
fi
|
||||
if ldconfig -p | grep libjack.so.0 > /dev/null 2>&1; then
|
||||
echo "Jack appears to be installed on this system, so we'll use it."
|
||||
else
|
||||
echo "Jack does not appear to be installed. That's OK, we'll use a dummy version instead."
|
||||
export LD_LIBRARY_PATH=$DIR/usr/lib/lmms/optional:$LD_LIBRARY_PATH
|
||||
fi
|
||||
QT_X11_NO_NATIVE_MENUBAR=1 "$DIR"/usr/bin/lmms.real "$@"
|
||||
@@ -1,4 +0,0 @@
|
||||
?package(lmms):needs="X11" section="Apps/Sound" \
|
||||
title="LMMS" hints="Audio" command="/usr/bin/lmms" \
|
||||
longtitle="LMMS" \
|
||||
icon="/usr/share/icons/hicolor/scalable/apps/lmms.svg"
|
||||
@@ -1,17 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Name=LMMS
|
||||
GenericName=Music production suite
|
||||
GenericName[ca]=Programari de producció musical
|
||||
GenericName[de]=Software zur Musik-Produktion
|
||||
GenericName[fr]=Suite de production musicale
|
||||
GenericName[pl]=Narzędzia do produkcji muzyki
|
||||
Comment=Music sequencer and synthesizer
|
||||
Comment[ca]=Producció fàcil de música per a tothom!
|
||||
Comment[fr]=Séquenceur et synthétiseur de musique
|
||||
Comment[pl]=Prosta produkcja muzyki dla każdego!
|
||||
Icon=lmms
|
||||
Exec=lmms %f
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Qt;AudioVideo;Audio;Midi;
|
||||
MimeType=application/x-lmms-project;
|
||||
@@ -1,10 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
|
||||
<mime-type type="application/x-lmms-project">
|
||||
<sub-class-of type="application/xml"/>
|
||||
<comment>LMMS project</comment>
|
||||
<comment xml:lang="ca">Projecte LMMS</comment>
|
||||
<glob pattern="*.mmpz"/>
|
||||
<glob pattern="*.mmp"/>
|
||||
</mime-type>
|
||||
</mime-info>
|
||||
@@ -1,194 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Creates Linux ".AppImage" for @PROJECT_NAME_UCASE@
|
||||
#
|
||||
# Depends: linuxdeployqt
|
||||
#
|
||||
# Notes: Will attempt to fetch linuxdeployqt automatically (x86_64 only)
|
||||
# See Also: https://github.com/probonopd/linuxdeployqt/blob/master/BUILDING.md
|
||||
|
||||
set -e
|
||||
|
||||
LINUXDEPLOYQT="@CMAKE_BINARY_DIR@/linuxdeployqt"
|
||||
VERBOSITY=2 # 3=debug
|
||||
LOGFILE="@CMAKE_BINARY_DIR@/appimage.log"
|
||||
APPDIR="@CMAKE_BINARY_DIR@/@PROJECT_NAME_UCASE@.AppDir/"
|
||||
DESKTOPFILE="${APPDIR}usr/share/applications/lmms.desktop"
|
||||
STRIP=""
|
||||
|
||||
# Don't strip for Debug|RelWithDebInfo builds
|
||||
# shellcheck disable=SC2193
|
||||
if [[ "@CMAKE_BUILD_TYPE@" == *"Deb"* ]]; then
|
||||
STRIP="-no-strip"
|
||||
fi
|
||||
|
||||
# Console colors
|
||||
RED="\\x1B[1;31m"
|
||||
GREEN="\\x1B[1;32m"
|
||||
YELLOW="\\x1B[1;33m"
|
||||
PLAIN="\\x1B[0m"
|
||||
|
||||
function error {
|
||||
echo -e " ${PLAIN}[${RED}error${PLAIN}] ${1}"
|
||||
return 1
|
||||
}
|
||||
|
||||
function success {
|
||||
echo -e " ${PLAIN}[${GREEN}success${PLAIN}] ${1}"
|
||||
}
|
||||
|
||||
function skipped {
|
||||
echo -e " ${PLAIN}[${YELLOW}skipped${PLAIN}] ${1}"
|
||||
}
|
||||
|
||||
# Blindly assume system arch is appimage arch
|
||||
ARCH=$(arch)
|
||||
export ARCH
|
||||
|
||||
# Check for problematic install locations
|
||||
INSTALL=$(echo "@CMAKE_INSTALL_PREFIX@" | sed 's/\/*$//g')
|
||||
if [ "$INSTALL" == "/usr/local" ] || [ "$INSTALL" == "/usr" ] ; then
|
||||
error "Incompatible CMAKE_INSTALL_PREFIX for creating AppImage: @CMAKE_INSTALL_PREFIX@"
|
||||
fi
|
||||
|
||||
echo -e "\nWriting verbose output to \"${LOGFILE}\""
|
||||
|
||||
# Ensure linuxdeployqt uses the same qmake version as cmake
|
||||
PATH="$(pwd -P)/squashfs-root/usr/bin:$(dirname "@QT_QMAKE_EXECUTABLE@")":$PATH
|
||||
export PATH
|
||||
|
||||
# Fetch portable linuxdeployqt if not in PATH
|
||||
APPIMAGETOOL="squashfs-root/usr/bin/appimagetool"
|
||||
echo -e "\nDownloading linuxdeployqt to ${LINUXDEPLOYQT}..."
|
||||
if env -i which linuxdeployqt > /dev/null 2>&1; then
|
||||
skipped "System already provides this utility"
|
||||
else
|
||||
filename="linuxdeployqt-continuous-$(uname -p).AppImage"
|
||||
url="https://github.com/probonopd/linuxdeployqt/releases/download/continuous/$filename"
|
||||
down_file="$(pwd)/$filename"
|
||||
if [ ! -f "$LINUXDEPLOYQT" ]; then
|
||||
ln -s "$down_file" "$LINUXDEPLOYQT"
|
||||
fi
|
||||
echo " [.......] Downloading ($(uname -p)): ${url}"
|
||||
wget -N -q "$url" || (rm "$filename" && false)
|
||||
chmod +x "$LINUXDEPLOYQT"
|
||||
success "Downloaded $LINUXDEPLOYQT"
|
||||
# Extract AppImage and replace LINUXDEPLOYQT variable with extracted binary
|
||||
# to support systems without fuse
|
||||
# Also, we need to set LD_LIBRARY_PATH, but linuxdepoyqt's AppRun unsets it
|
||||
# See https://github.com/probonopd/linuxdeployqt/pull/370/
|
||||
"$LINUXDEPLOYQT" --appimage-extract > /dev/null 2>&1
|
||||
LINUXDEPLOYQT="squashfs-root/usr/bin/linuxdeployqt"
|
||||
success "Extracted $APPIMAGETOOL"
|
||||
fi
|
||||
|
||||
# Make skeleton AppDir
|
||||
echo -e "\nCreating ${APPDIR}..."
|
||||
rm -rf "${APPDIR}"
|
||||
mkdir -p "${APPDIR}usr"
|
||||
success "Created ${APPDIR}"
|
||||
|
||||
# Clone install to AppDir
|
||||
echo -e "\nCopying @CMAKE_INSTALL_PREFIX@ to ${APPDIR}..."
|
||||
cp -R "@CMAKE_INSTALL_PREFIX@/." "${APPDIR}usr"
|
||||
rm -rf "${APPDIR}usr/include"
|
||||
success "${APPDIR}"
|
||||
|
||||
# Copy rawwaves directory for stk/mallets
|
||||
mkdir -p "${APPDIR}usr/share/stk/"
|
||||
cp -R /usr/share/stk/rawwaves/ "${APPDIR}usr/share/stk/"
|
||||
|
||||
# Create a wrapper script which calls the lmms executable
|
||||
mv "${APPDIR}usr/bin/lmms" "${APPDIR}usr/bin/lmms.real"
|
||||
|
||||
cp "@CMAKE_CURRENT_SOURCE_DIR@/launch_lmms.sh" "${APPDIR}usr/bin/lmms"
|
||||
|
||||
chmod +x "${APPDIR}usr/bin/lmms"
|
||||
|
||||
# Per https://github.com/probonopd/linuxdeployqt/issues/129
|
||||
unset LD_LIBRARY_PATH
|
||||
|
||||
# Ensure linuxdeployqt can find shared objects
|
||||
export LD_LIBRARY_PATH="${APPDIR}"usr/lib/lmms/:"${APPDIR}"usr/lib/lmms/optional:"$LD_LIBRARY_PATH"
|
||||
|
||||
# Move executables so linuxdeployqt can find them
|
||||
ZYNLIB="${APPDIR}usr/lib/lmms/RemoteZynAddSubFx"
|
||||
VSTLIB32="${APPDIR}usr/lib/lmms/32/RemoteVstPlugin32.exe.so"
|
||||
VSTLIB64="${APPDIR}usr/lib/lmms/RemoteVstPlugin64.exe.so"
|
||||
|
||||
ZYNBIN="${APPDIR}usr/bin/RemoteZynAddSubFx"
|
||||
VSTBIN32="${APPDIR}usr/bin/RemoteVstPlugin32.exe.so"
|
||||
VSTBIN64="${APPDIR}usr/bin/RemoteVstPlugin64.exe.so"
|
||||
|
||||
mv "$ZYNLIB" "$ZYNBIN"
|
||||
mv "$VSTLIB32" "$VSTBIN32" || true
|
||||
mv "$VSTLIB64" "$VSTBIN64" || true
|
||||
|
||||
# Handle wine linking
|
||||
if [ -d "@WINE_32_LIBRARY_DIR@" ] && \
|
||||
ldd "$VSTBIN32" | grep "libwine\.so" | grep "not found"; then
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"@WINE_32_LIBRARY_DIRS@"
|
||||
fi
|
||||
if [ -d "@WINE_64_LIBRARY_DIR@" ] && \
|
||||
ldd "$VSTBIN64" | grep "libwine\.so" | grep "not found"; then
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"@WINE_64_LIBRARY_DIRS@"
|
||||
fi
|
||||
|
||||
# Patch the desktop file
|
||||
sed -i 's/.*Exec=.*/Exec=lmms.real/' "$DESKTOPFILE"
|
||||
|
||||
# Fix linking for soft-linked plugins
|
||||
for file in "${APPDIR}usr/lib/lmms/"*.so; do
|
||||
thisfile="${APPDIR}usr/lib/lmms/${file##*/}"
|
||||
executables="${executables} -executable=$thisfile"
|
||||
done
|
||||
executables="${executables} -executable=${ZYNBIN}"
|
||||
executables="${executables} -executable=${VSTBIN32}"
|
||||
executables="${executables} -executable=${VSTBIN64}"
|
||||
executables="${executables} -executable=${APPDIR}usr/lib/lmms/ladspa/imp_1199.so"
|
||||
executables="${executables} -executable=${APPDIR}usr/lib/lmms/ladspa/imbeq_1197.so"
|
||||
executables="${executables} -executable=${APPDIR}usr/lib/lmms/ladspa/pitch_scale_1193.so"
|
||||
executables="${executables} -executable=${APPDIR}usr/lib/lmms/ladspa/pitch_scale_1194.so"
|
||||
|
||||
# Bundle both qt and non-qt dependencies into appimage format
|
||||
echo -e "\nBundling and relinking system dependencies..."
|
||||
echo -e ">>>>> linuxdeployqt" > "$LOGFILE"
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
"$LINUXDEPLOYQT" "$DESKTOPFILE" $executables -bundle-non-qt-libs -verbose=$VERBOSITY $STRIP >> "$LOGFILE" 2>&1
|
||||
success "Bundled and relinked dependencies"
|
||||
|
||||
# Link to original location so lmms can find them
|
||||
ln -sr "$ZYNBIN" "$ZYNLIB"
|
||||
ln -sr "$VSTBIN32" "$VSTLIB32" || true
|
||||
ln -sr "$VSTBIN64" "$VSTLIB64" || true
|
||||
|
||||
# Remove wine library conflict
|
||||
rm -f "${APPDIR}/usr/lib/libwine.so.1"
|
||||
|
||||
# Use system-provided carla
|
||||
rm -f "${APPDIR}usr/lib/"libcarla*.so
|
||||
rm -f "${APPDIR}usr/lib/lmms/optional/"libcarla*.so
|
||||
|
||||
# Remove bundled jack in LD_LIBRARY_PATH if exists
|
||||
if [ -e "${APPDIR}/usr/lib/libjack.so.0" ]; then
|
||||
rm "${APPDIR}/usr/lib/libjack.so.0"
|
||||
fi
|
||||
|
||||
# Bundle jack out of LD_LIBRARY_PATH
|
||||
JACK_LIB=$(ldd "${APPDIR}/usr/bin/lmms.real" | sed -n 's/\tlibjack\.so\.0 => \(.\+\) (0x[0-9a-f]\+)/\1/p')
|
||||
if [ -e "$JACK_LIB" ]; then
|
||||
mkdir -p "${APPDIR}usr/lib/lmms/optional/"
|
||||
cp "$JACK_LIB" "${APPDIR}usr/lib/lmms/optional/"
|
||||
fi
|
||||
|
||||
# Point the AppRun to the shim launcher
|
||||
rm -f "${APPDIR}/AppRun"
|
||||
ln -sr "${APPDIR}/usr/bin/lmms" "${APPDIR}/AppRun"
|
||||
|
||||
# Create AppImage
|
||||
echo -e "\nFinishing the AppImage..."
|
||||
echo -e "\n\n>>>>> appimagetool" >> "$LOGFILE"
|
||||
"$APPIMAGETOOL" "${APPDIR}" "@APPIMAGE_FILE@" >> "$LOGFILE" 2>&1
|
||||
success "Created @APPIMAGE_FILE@"
|
||||
|
||||
echo -e "\nFinished"
|
||||
@@ -1,93 +0,0 @@
|
||||
# A wrapper around pkg-config-provided and cmake-provided bash completion that
|
||||
# will have dynamic behavior at INSTALL() time to allow both root-level
|
||||
# INSTALL() as well as user-level INSTALL().
|
||||
#
|
||||
# See also https://github.com/scop/bash-completion
|
||||
#
|
||||
# Copyright (c) 2018, Tres Finocchiaro, <tres.finocchiaro@gmail.com>
|
||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
#
|
||||
# Usage:
|
||||
# INCLUDE(BashCompletion)
|
||||
# BASHCOMP_INSTALL(foo)
|
||||
# ... where "foo" is a shell script adjacent to the CMakeLists.txt
|
||||
#
|
||||
# How it determines BASHCOMP_PKG_PATH, in order:
|
||||
# 1. Uses BASHCOMP_PKG_PATH if already set (e.g. -DBASHCOMP_PKG_PATH=...)
|
||||
# a. If not, uses pkg-config's PKG_CHECK_MODULES to determine path
|
||||
# b. Fallback to cmake's FIND_PACKAGE(bash-completion) path
|
||||
# c. Fallback to hard-coded /usr/share/bash-completion/completions
|
||||
# 2. Final fallback to ${CMAKE_INSTALL_PREFIX}/share/bash-completion/completions if
|
||||
# detected path is unwritable.
|
||||
|
||||
# - Windows does not support bash completion
|
||||
# - macOS support should eventually be added for Homebrew (TODO)
|
||||
IF(WIN32)
|
||||
MESSAGE(STATUS "Bash competion is not supported on this platform.")
|
||||
ELSEIF(APPLE)
|
||||
MESSAGE(STATUS "Bash completion is not yet implemented for this platform.")
|
||||
ELSE()
|
||||
INCLUDE(FindUnixCommands)
|
||||
# Honor manual override if provided
|
||||
IF(NOT BASHCOMP_PKG_PATH)
|
||||
# First, use pkg-config, which is the most reliable
|
||||
FIND_PACKAGE(PkgConfig QUIET)
|
||||
IF(PKGCONFIG_FOUND)
|
||||
PKG_CHECK_MODULES(BASH_COMPLETION bash-completion)
|
||||
PKG_GET_VARIABLE(BASHCOMP_PKG_PATH bash-completion completionsdir)
|
||||
ELSE()
|
||||
# Second, use cmake (preferred but less common)
|
||||
FIND_PACKAGE(bash-completion QUIET)
|
||||
IF(BASH_COMPLETION_FOUND)
|
||||
SET(BASHCOMP_PKG_PATH "${BASH_COMPLETION_COMPLETIONSDIR}")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
# Third, use a hard-coded fallback value
|
||||
IF("${BASHCOMP_PKG_PATH}" STREQUAL "")
|
||||
SET(BASHCOMP_PKG_PATH "/usr/share/bash-completion/completions")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
# Always provide a fallback for non-root INSTALL()
|
||||
SET(BASHCOMP_USER_PATH "${CMAKE_INSTALL_PREFIX}/share/bash-completion/completions")
|
||||
|
||||
# Cmake doesn't allow easy use of conditional logic at INSTALL() time
|
||||
# this is a problem because ${BASHCOMP_PKG_PATH} may not be writable and we
|
||||
# need sane fallback behavior for bundled INSTALL() (e.g. .AppImage, etc).
|
||||
#
|
||||
# The reason this can't be detected by cmake is that it's fairly common to
|
||||
# run "cmake" as a one user (i.e. non-root) and "make install" as another user
|
||||
# (i.e. root).
|
||||
#
|
||||
# - Creates a script called "install_${SCRIPT_NAME}_completion.sh" into the
|
||||
# working binary directory and invokes this script at install.
|
||||
# - Script handles INSTALL()-time conditional logic for sane ballback behavior
|
||||
# when ${BASHCOMP_PKG_PATH} is unwritable (i.e. non-root); Something cmake
|
||||
# can't handle on its own at INSTALL() time)
|
||||
MACRO(BASHCOMP_INSTALL SCRIPT_NAME)
|
||||
# A shell script for wrapping conditionl logic
|
||||
SET(BASHCOMP_SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/install_${SCRIPT_NAME}_completion.sh")
|
||||
|
||||
FILE(WRITE ${BASHCOMP_SCRIPT} "\
|
||||
#!${BASH}\n\
|
||||
set -e\n\
|
||||
if [ -w \"${BASHCOMP_PKG_PATH}\" ]; then\n\
|
||||
BASHCOMP_PKG_PATH=\"${BASHCOMP_PKG_PATH}\"\n\
|
||||
else \n\
|
||||
BASHCOMP_PKG_PATH=\"\$DESTDIR${BASHCOMP_USER_PATH}\"\n\
|
||||
fi\n\
|
||||
echo -e \"\\nInstalling bash completion...\\n\"\n\
|
||||
mkdir -p \"\$BASHCOMP_PKG_PATH\"\n\
|
||||
cp \"${CMAKE_CURRENT_SOURCE_DIR}/${SCRIPT_NAME}\" \"\$BASHCOMP_PKG_PATH\"\n\
|
||||
chmod a+r \"\$BASHCOMP_PKG_PATH/${SCRIPT_NAME}\"\n\
|
||||
echo -e \"Bash completion for ${SCRIPT_NAME} has been installed to \$BASHCOMP_PKG_PATH/${SCRIPT_NAME}\"\n\
|
||||
")
|
||||
INSTALL(CODE "EXECUTE_PROCESS(COMMAND chmod u+x \"install_${SCRIPT_NAME}_completion.sh\" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )")
|
||||
INSTALL(CODE "EXECUTE_PROCESS(COMMAND \"./install_${SCRIPT_NAME}_completion.sh\" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )")
|
||||
|
||||
MESSAGE(STATUS "Bash completion script for ${SCRIPT_NAME} will be installed to ${BASHCOMP_PKG_PATH} or fallback to ${BASHCOMP_USER_PATH} if unwritable.")
|
||||
ENDMACRO()
|
||||
ENDIF()
|
||||
|
||||
@@ -1,101 +0,0 @@
|
||||
# BuildPlugin.cmake - Copyright (c) 2008 Tobias Doerffel
|
||||
#
|
||||
# description: build LMMS-plugin
|
||||
# usage: BUILD_PLUGIN(<PLUGIN_NAME> <PLUGIN_SOURCES> MOCFILES <HEADERS_FOR_MOC> EMBEDDED_RESOURCES <LIST_OF_FILES_TO_EMBED> UICFILES <UI_FILES_TO_COMPILE> LINK <SHARED|MODULE>)
|
||||
|
||||
INCLUDE(GenQrc)
|
||||
|
||||
MACRO(BUILD_PLUGIN PLUGIN_NAME)
|
||||
CMAKE_PARSE_ARGUMENTS(PLUGIN "" "LINK;EXPORT_BASE_NAME" "MOCFILES;EMBEDDED_RESOURCES;UICFILES" ${ARGN})
|
||||
SET(PLUGIN_SOURCES ${PLUGIN_UNPARSED_ARGUMENTS})
|
||||
|
||||
INCLUDE_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_BINARY_DIR}" "${CMAKE_SOURCE_DIR}/include")
|
||||
|
||||
ADD_DEFINITIONS(-DPLUGIN_NAME=${PLUGIN_NAME})
|
||||
|
||||
LIST(LENGTH PLUGIN_EMBEDDED_RESOURCES ER_LEN)
|
||||
IF(ER_LEN)
|
||||
# Expand and sort arguments to avoid locale dependent sorting in
|
||||
# shell
|
||||
SET(NEW_ARGS)
|
||||
FOREACH(ARG ${PLUGIN_EMBEDDED_RESOURCES})
|
||||
FILE(GLOB EXPANDED "${ARG}")
|
||||
LIST(SORT EXPANDED)
|
||||
FOREACH(ITEM ${EXPANDED})
|
||||
LIST(APPEND NEW_ARGS "${ITEM}")
|
||||
ENDFOREACH()
|
||||
ENDFOREACH()
|
||||
SET(PLUGIN_EMBEDDED_RESOURCES ${NEW_ARGS})
|
||||
|
||||
ADD_GEN_QRC(RCC_OUT "${PLUGIN_NAME}.qrc" PREFIX artwork/${PLUGIN_NAME} ${PLUGIN_EMBEDDED_RESOURCES})
|
||||
ENDIF(ER_LEN)
|
||||
|
||||
QT5_WRAP_CPP(plugin_MOC_out ${PLUGIN_MOCFILES})
|
||||
QT5_WRAP_UI(plugin_UIC_out ${PLUGIN_UICFILES})
|
||||
|
||||
FOREACH(f ${PLUGIN_SOURCES})
|
||||
ADD_FILE_DEPENDENCIES(${f} ${RCC_OUT} ${plugin_UIC_out})
|
||||
ENDFOREACH(f)
|
||||
|
||||
IF(LMMS_BUILD_APPLE)
|
||||
LINK_DIRECTORIES("${CMAKE_BINARY_DIR}")
|
||||
LINK_LIBRARIES(${QT_LIBRARIES})
|
||||
ENDIF(LMMS_BUILD_APPLE)
|
||||
IF(LMMS_BUILD_WIN32)
|
||||
LINK_DIRECTORIES("${CMAKE_BINARY_DIR}" "${CMAKE_SOURCE_DIR}")
|
||||
LINK_LIBRARIES(${QT_LIBRARIES})
|
||||
ENDIF(LMMS_BUILD_WIN32)
|
||||
IF(LMMS_BUILD_MSYS AND CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
# Override Qt debug libraries with release versions
|
||||
SET(QT_LIBRARIES "${QT_OVERRIDE_LIBRARIES}")
|
||||
ENDIF()
|
||||
|
||||
IF (NOT PLUGIN_LINK)
|
||||
SET(PLUGIN_LINK "MODULE")
|
||||
ENDIF()
|
||||
|
||||
ADD_LIBRARY(${PLUGIN_NAME} ${PLUGIN_LINK} ${PLUGIN_SOURCES} ${plugin_MOC_out} ${RCC_OUT})
|
||||
|
||||
TARGET_LINK_LIBRARIES(${PLUGIN_NAME} Qt5::Widgets Qt5::Xml)
|
||||
|
||||
IF(LMMS_BUILD_WIN32)
|
||||
TARGET_LINK_LIBRARIES(${PLUGIN_NAME} lmms)
|
||||
ENDIF(LMMS_BUILD_WIN32)
|
||||
|
||||
INSTALL(TARGETS ${PLUGIN_NAME}
|
||||
LIBRARY DESTINATION "${PLUGIN_DIR}"
|
||||
RUNTIME DESTINATION "${PLUGIN_DIR}"
|
||||
)
|
||||
|
||||
IF(LMMS_BUILD_APPLE)
|
||||
IF ("${PLUGIN_LINK}" STREQUAL "SHARED")
|
||||
SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
|
||||
ELSE()
|
||||
SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES LINK_FLAGS "-bundle_loader \"${CMAKE_BINARY_DIR}/lmms\"")
|
||||
ENDIF()
|
||||
ADD_DEPENDENCIES(${PLUGIN_NAME} lmms)
|
||||
ENDIF(LMMS_BUILD_APPLE)
|
||||
IF(LMMS_BUILD_WIN32)
|
||||
IF(STRIP)
|
||||
ADD_CUSTOM_COMMAND(TARGET ${PLUGIN_NAME} POST_BUILD COMMAND ${STRIP} "$<TARGET_FILE:${PLUGIN_NAME}>")
|
||||
ENDIF()
|
||||
SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES PREFIX "")
|
||||
ENDIF()
|
||||
|
||||
SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${RCC_OUT} ${plugin_MOC_out}")
|
||||
|
||||
IF(NOT PLUGIN_EXPORT_BASE_NAME)
|
||||
SET(PLUGIN_EXPORT_BASE_NAME "PLUGIN")
|
||||
ENDIF()
|
||||
|
||||
GENERATE_EXPORT_HEADER(${PLUGIN_NAME}
|
||||
BASE_NAME ${PLUGIN_EXPORT_BASE_NAME}
|
||||
)
|
||||
TARGET_INCLUDE_DIRECTORIES(${PLUGIN_NAME}
|
||||
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
|
||||
)
|
||||
|
||||
SET_PROPERTY(GLOBAL APPEND PROPERTY PLUGINS_BUILT ${PLUGIN_NAME})
|
||||
GET_PROPERTY(PLUGINS_BUILT GLOBAL PROPERTY PLUGINS_BUILT)
|
||||
ENDMACRO(BUILD_PLUGIN)
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code must retain the copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. The name of the author may not be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
@@ -1,33 +0,0 @@
|
||||
|
||||
macro(CHECK_CXX_PREPROCESSOR VAR DIRECTIVE)
|
||||
string(RANDOM DEFINED_KEY)
|
||||
string(RANDOM UNDEFINED_KEY)
|
||||
|
||||
set(TMP_FILENAME "${CMAKE_CURRENT_BINARY_DIR}/CxxTmp/src.cpp")
|
||||
SET(SRC "
|
||||
#if ${DIRECTIVE}
|
||||
#error ${DEFINED_KEY}
|
||||
#else
|
||||
#error ${UNDEFINED_KEY}
|
||||
#endif
|
||||
")
|
||||
file(WRITE ${TMP_FILENAME} "${SRC}")
|
||||
try_compile(RESULT_VAR
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
${TMP_FILENAME}
|
||||
OUTPUT_VARIABLE OUTPUT_VAR
|
||||
)
|
||||
|
||||
if(OUTPUT_VAR MATCHES ${DEFINED_KEY})
|
||||
set(${VAR} ON)
|
||||
elseif(OUTPUT_VAR MATCHES ${UNDEFINED_KEY})
|
||||
set(${VAR} OFF)
|
||||
else()
|
||||
message(FATAL_ERROR "Can't determine if \"${DIRECTIVE}\" is true.")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
|
||||
macro(CHECK_CXX_DEFINE VAR DEFINE)
|
||||
CHECK_CXX_PREPROCESSOR(${VAR} "defined(${DEFINE})")
|
||||
endmacro()
|
||||
@@ -1,213 +0,0 @@
|
||||
# Utility for validating and, if needed, cloning all submodules
|
||||
#
|
||||
# Looks for a .gitmodules in the root project folder
|
||||
# Loops over all modules looking well-known configure/build scripts
|
||||
#
|
||||
# Usage:
|
||||
# INCLUDE(CheckSubmodules)
|
||||
#
|
||||
# Options:
|
||||
# SET(PLUGIN_LIST "zynaddsubfx;...") # skips submodules for plugins not explicitely listed
|
||||
#
|
||||
# Or via command line:
|
||||
# cmake -PLUGIN_LIST=foo;bar
|
||||
#
|
||||
# Copyright (c) 2019, Tres Finocchiaro, <tres.finocchiaro@gmail.com>
|
||||
#
|
||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
|
||||
# Files which confirm a successful clone
|
||||
SET(VALID_CRUMBS "CMakeLists.txt;Makefile;Makefile.in;Makefile.am;configure.ac;configure.py;autogen.sh;.gitignore;LICENSE;Home.md")
|
||||
|
||||
OPTION(NO_SHALLOW_CLONE "Disable shallow cloning of submodules" OFF)
|
||||
|
||||
# Try and use the specified shallow clone on submodules, if supported
|
||||
SET(DEPTH_VALUE 100)
|
||||
|
||||
# Number of times git commands will retry before failing
|
||||
SET(MAX_ATTEMPTS 2)
|
||||
|
||||
MESSAGE("\nChecking submodules...")
|
||||
IF(NOT EXISTS "${CMAKE_SOURCE_DIR}/.gitmodules")
|
||||
MESSAGE("Skipping the check because .gitmodules not detected."
|
||||
"Please make sure you have all submodules in the source tree!"
|
||||
)
|
||||
RETURN()
|
||||
ENDIF()
|
||||
FILE(READ "${CMAKE_SOURCE_DIR}/.gitmodules" SUBMODULE_DATA)
|
||||
|
||||
# Force English locale
|
||||
SET(LC_ALL_BACKUP "$ENV{LC_ALL}")
|
||||
SET(LANG_BACKUP "$ENV{LANG}")
|
||||
SET(ENV{LC_ALL} "C")
|
||||
SET(ENV{LANG} "en_US")
|
||||
|
||||
# Submodule list pairs, unparsed (WARNING: Assumes alpha-numeric paths)
|
||||
STRING(REGEX MATCHALL "path = [-0-9A-Za-z/]+" SUBMODULE_LIST_RAW ${SUBMODULE_DATA})
|
||||
STRING(REGEX MATCHALL "url = [.:%-0-9A-Za-z/]+" SUBMODULE_URL_RAW ${SUBMODULE_DATA})
|
||||
|
||||
# Submodule list pairs, parsed
|
||||
SET(SUBMODULE_LIST "")
|
||||
SET(SUBMODULE_URL "")
|
||||
|
||||
FOREACH(_path ${SUBMODULE_LIST_RAW})
|
||||
# Parse SUBMODULE_PATH
|
||||
STRING(REPLACE "path = " "" SUBMODULE_PATH "${_path}")
|
||||
|
||||
# Grab index for matching SUBMODULE_URL
|
||||
LIST(FIND SUBMODULE_LIST_RAW "${_path}" SUBMODULE_INDEX)
|
||||
LIST(GET SUBMODULE_URL_RAW ${SUBMODULE_INDEX} _url)
|
||||
|
||||
# Parse SUBMODULE_URL
|
||||
STRING(REPLACE "url = " "" SUBMODULE_URL "${_url}")
|
||||
|
||||
SET(SKIP false)
|
||||
|
||||
# Loop over skipped plugins, add to SKIP_SUBMODULES (e.g. -DPLUGIN_LIST=foo;bar)
|
||||
IF(${SUBMODULE_PATH} MATCHES "^plugins/")
|
||||
SET(REMOVE_PLUGIN true)
|
||||
FOREACH(_plugin ${PLUGIN_LIST})
|
||||
IF(_plugin STREQUAL "")
|
||||
CONTINUE()
|
||||
ENDIF()
|
||||
IF(${SUBMODULE_PATH} MATCHES "${_plugin}")
|
||||
SET(REMOVE_PLUGIN false)
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
|
||||
IF(REMOVE_PLUGIN)
|
||||
LIST(APPEND SKIP_SUBMODULES "${SUBMODULE_PATH}")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
# Finally, loop and mark "SKIP" on match
|
||||
IF(SKIP_SUBMODULES)
|
||||
FOREACH(_skip ${SKIP_SUBMODULES})
|
||||
IF("${SUBMODULE_PATH}" MATCHES "${_skip}")
|
||||
MESSAGE("-- Skipping ${SUBMODULE_PATH} matches \"${_skip}\" (absent in PLUGIN_LIST)")
|
||||
SET(SKIP true)
|
||||
BREAK()
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
ENDIF()
|
||||
|
||||
IF(NOT SKIP)
|
||||
LIST(APPEND SUBMODULE_LIST "${SUBMODULE_PATH}")
|
||||
LIST(APPEND SUBMODULE_URL "${SUBMODULE_URL}")
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
|
||||
# Once called, status is stored in GIT_RESULT respectively.
|
||||
# Note: Git likes to write to stderr. Don't assume stderr is error; Check GIT_RESULT instead.
|
||||
MACRO(GIT_SUBMODULE SUBMODULE_PATH FORCE_DEINIT FORCE_REMOTE NO_DEPTH)
|
||||
FIND_PACKAGE(Git REQUIRED)
|
||||
# Handle missing commits
|
||||
SET(FORCE_REMOTE_FLAG "${FORCE_REMOTE}")
|
||||
SET(NO_DEPTH_FLAG "${NO_DEPTH}")
|
||||
IF(FORCE_REMOTE_FLAG)
|
||||
MESSAGE("-- Adding remote submodulefix to ${SUBMODULE_PATH}")
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND "${GIT_EXECUTABLE}" remote rm submodulefix
|
||||
COMMAND "${GIT_EXECUTABLE}" remote add submodulefix ${FORCE_REMOTE}
|
||||
COMMAND "${GIT_EXECUTABLE}" fetch submodulefix
|
||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/${SUBMODULE_PATH}"
|
||||
OUTPUT_QUIET ERROR_QUIET
|
||||
)
|
||||
# Recurse
|
||||
GIT_SUBMODULE(${SUBMODULE_PATH} false false ${NO_DEPTH_FLAG})
|
||||
ELSEIF(${FORCE_DEINIT})
|
||||
MESSAGE("-- Resetting ${SUBMODULE_PATH}")
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND "${GIT_EXECUTABLE}" submodule deinit -f "${CMAKE_SOURCE_DIR}/${SUBMODULE_PATH}"
|
||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
OUTPUT_QUIET
|
||||
)
|
||||
MESSAGE("-- Deleting ${CMAKE_SOURCE_DIR}/.git/${SUBMODULE_PATH}")
|
||||
FILE(REMOVE_RECURSE "${CMAKE_SOURCE_DIR}/.git/modules/${SUBMODULE_PATH}")
|
||||
# Recurse without depth
|
||||
GIT_SUBMODULE(${SUBMODULE_PATH} false false true)
|
||||
ELSE()
|
||||
# Try to use the depth switch
|
||||
IF(NO_SHALLOW_CLONE OR GIT_VERSION_STRING VERSION_LESS "1.8.4" OR NO_DEPTH_FLAG)
|
||||
# Shallow submodules were introduced in 1.8.4
|
||||
MESSAGE("-- Fetching ${SUBMODULE_PATH}")
|
||||
SET(DEPTH_CMD "")
|
||||
SET(DEPTH_VAL "")
|
||||
ELSE()
|
||||
MESSAGE("-- Fetching ${SUBMODULE_PATH} @ --depth ${DEPTH_VALUE}")
|
||||
SET(DEPTH_CMD "--depth")
|
||||
SET(DEPTH_VAL "${DEPTH_VALUE}")
|
||||
ENDIF()
|
||||
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND "${GIT_EXECUTABLE}" submodule update --init --recursive ${DEPTH_CMD} ${DEPTH_VAL} "${CMAKE_SOURCE_DIR}/${SUBMODULE_PATH}"
|
||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
RESULT_VARIABLE GIT_RESULT
|
||||
OUTPUT_VARIABLE GIT_STDOUT
|
||||
ERROR_VARIABLE GIT_STDERR
|
||||
)
|
||||
|
||||
SET(GIT_MESSAGE "${GIT_STDOUT}${GIT_STDERR}")
|
||||
MESSAGE("${GIT_MESSAGE}")
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
SET(MISSING_COMMIT_PHRASES "no such remote ref;reference is not a tree;unadvertised object")
|
||||
SET(RETRY_PHRASES "Failed to recurse;cannot create directory;already exists;${MISSING_COMMIT_PHRASES}")
|
||||
|
||||
# Attempt to do lazy clone
|
||||
FOREACH(_submodule ${SUBMODULE_LIST})
|
||||
STRING(REPLACE "/" ";" PATH_PARTS "${_submodule}")
|
||||
LIST(REVERSE PATH_PARTS)
|
||||
LIST(GET PATH_PARTS 0 SUBMODULE_NAME)
|
||||
|
||||
MESSAGE("-- Checking ${SUBMODULE_NAME}...")
|
||||
SET(CRUMB_FOUND false)
|
||||
FOREACH(_crumb ${VALID_CRUMBS})
|
||||
IF(EXISTS "${CMAKE_SOURCE_DIR}/${_submodule}/${_crumb}")
|
||||
SET(CRUMB_FOUND true)
|
||||
MESSAGE("-- Found ${_submodule}/${_crumb}")
|
||||
BREAK()
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
IF(NOT CRUMB_FOUND)
|
||||
GIT_SUBMODULE("${_submodule}" false false false)
|
||||
|
||||
SET(COUNTED 0)
|
||||
# Handle edge-cases where submodule didn't clone properly or re-uses a non-empty directory
|
||||
WHILE(NOT GIT_RESULT EQUAL 0 AND COUNTED LESS MAX_ATTEMPTS)
|
||||
MATH(EXPR COUNTED "${COUNTED}+1")
|
||||
SET(MISSING_COMMIT false)
|
||||
FOREACH(_phrase ${MISSING_COMMIT_PHRASES})
|
||||
IF("${GIT_MESSAGE}" MATCHES "${_phrase}")
|
||||
SET(MISSING_COMMIT true)
|
||||
BREAK()
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
FOREACH(_phrase ${RETRY_PHRASES})
|
||||
IF(${MISSING_COMMIT} AND COUNTED LESS 2)
|
||||
LIST(FIND SUBMODULE_LIST ${_submodule} SUBMODULE_INDEX)
|
||||
LIST(GET SUBMODULE_URL_LIST ${SUBMODULE_INDEX} SUBMODULE_URL)
|
||||
MESSAGE("-- Retrying ${_submodule} using 'remote add submodulefix' (attempt ${COUNTED} of ${MAX_ATTEMPTS})...")
|
||||
|
||||
GIT_SUBMODULE("${_submodule}" false "${SUBMODULE_URL}" false)
|
||||
BREAK()
|
||||
ELSEIF("${GIT_MESSAGE}" MATCHES "${_phrase}")
|
||||
MESSAGE("-- Retrying ${_submodule} using 'deinit' (attempt ${COUNTED} of ${MAX_ATTEMPTS})...")
|
||||
GIT_SUBMODULE("${_submodule}" true false false)
|
||||
BREAK()
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
ENDWHILE()
|
||||
|
||||
IF(NOT GIT_RESULT EQUAL 0)
|
||||
MESSAGE(FATAL_ERROR "${GIT_EXECUTABLE} exited with status of ${GIT_RESULT}")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
MESSAGE("-- Done validating submodules.\n")
|
||||
|
||||
# Reset locale
|
||||
SET(ENV{LC_ALL} "${LC_ALL_BACKUP}")
|
||||
SET(ENV{LANG} "${LANG_BACKUP}")
|
||||