Compare commits

..

1 Commits

Author SHA1 Message Date
Lukas W
a0a355a8c7 Travis: Install nsis 2014-11-20 14:17:04 +01:00
2747 changed files with 296597 additions and 277724 deletions

View File

@@ -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

View File

@@ -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: "9.4.1"
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

View File

@@ -1,5 +0,0 @@
root = true
[*]
indent_style = tab
tab_width = 4

1
.gitattributes vendored
View File

@@ -1,3 +1,2 @@
.gitattributes export-ignore
.gitignore export-ignore
data/locale/* linguist-documentation

1
.github/FUNDING.yml vendored
View File

@@ -1 +0,0 @@
custom: https://lmms.io/get-involved/#donate

View File

@@ -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>

View File

@@ -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!

View File

@@ -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 -->

View File

@@ -1,2 +0,0 @@
# Label requiring a response
responseRequiredLabel: "response required"

2
.gitignore vendored
View File

@@ -1,11 +1,9 @@
/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
View File

@@ -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

View File

@@ -1,6 +1,4 @@
Alexandre Almeida <wilsalx@gmail.com> <meta.lx@hotmail.com>
Tobias Junghans <tobias.doerffel@gmail.com>
Dave French <dave.french3@googlemail.com>
Tobias Doerffel <tobias.doerffel@gmail.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>
@@ -8,26 +6,6 @@ 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>
Lukas W <lukaswhl@googlemail.com> <lukaswhl@gmail.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>

6
.svnignore Normal file
View File

@@ -0,0 +1,6 @@
Makefile.in
*.moc
.libs
embedded_resources.h
.deps
Makefile

View File

@@ -1,33 +1,32 @@
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: xcode9.4
env:
- TARGET_OS=linux
- TARGET_OS=win32
- TARGET_OS=win64
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
- if [ $TARGET_OS != linux ]; then sudo add-apt-repository ppa:tobydox/mingw -y; fi
- sudo apt-get update -qq
install:
- if [ $TARGET_OS != linux ]; then sudo apt-get install -y nsis cloog-isl libmpc2 mingw32; fi
- if [ $TARGET_OS != linux ]; then sudo apt-get install -y mingw32-x-qt 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; fi
- if [ $TARGET_OS == win64 ]; then sudo apt-get install -y mingw64-x-qt 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; fi
- if [ $TARGET_OS == linux ]; then sudo apt-get install -y libqt4-dev libsndfile-dev fftw3-dev libvorbis-dev libogg-dev libasound2-dev libjack-dev libsdl-dev libsamplerate0-dev libstk0-dev libfluidsynth-dev portaudio19-dev wine-dev g++-multilib libfltk1.3-dev; fi
before_script:
- mkdir build && cd build
script:
- if [ $TARGET_OS == win32 ]; then ../build_mingw32 || ../build_mingw32; fi
- if [ $TARGET_OS == win64 ]; then ../build_mingw64 || ../build_mingw64; fi
- if [ $TARGET_OS == linux ]; then cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo .. && make -j4 VERBOSE=1; fi
- if [ $TARGET_OS != linux ]; then make; fi
before_deploy: make package
deploy:
provider: releases
api_key:
secure: d4a+x4Gugpss7JK2DcHjyBZDmEFFh4iVfKDfITSD50T6Mc6At4LMgojvEu+6qT6IyOY2vm3UVT6fhyeuWDTRDwW9tfFlaHVA0h8aTRD+eAXOA7pQ8rEMwQO3+WCKuKTfEqUkpL4wxhww8dpkv54tqeIs0S4TBqz9tk8UhzU7XbE=
file: lmms-${TRAVIS_TAG:1}-$TARGET_OS.exe
on:
tags: true
all_branches: true
condition: "$TARGET_OS != linux"
repo: LMMS/lmms

View File

@@ -1,7 +0,0 @@
#!/usr/bin/env bash
set -e
if [ "$TYPE" != 'style' ]; then
ccache -s
fi

View File

@@ -1 +0,0 @@
0de866bc0ee26de392e037104b174474989a830e2249280a136144baa44557aa ccache_3.2.4-1_amd64.deb

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -1,2 +0,0 @@
#!/bin/sh
sudo apt-get update -qq

View File

@@ -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"

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -1,5 +0,0 @@
#!/usr/bin/env bash
set -e
"$TRAVIS_BUILD_DIR/.travis/linux.win32.before_install.sh"

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -54,7 +54,7 @@ Gurjot Singh
<bhattigurjot/at/gmail/dot/com>
Developer
grejppi
Hannu Haahti
<grejppi/at/gmail/dot/com>
Developer
@@ -67,7 +67,7 @@ Tobiasz Karoń (unfa)
UI Developer
Johannes Lorenz
<j/dot/git/at/lorenz/minus/ho/dot/me>
<johannes89/at/mailueberfall/dot/de>
Developer
Rubén Ibarra Pastor
@@ -85,7 +85,3 @@ Chrissy McManus
Oskar Wallgren
<oskar/dot/wallgren13/at/gmail/dot/com>
Development
Michael Gregorius
<michael/dot/gregorius/dot/git/at/arcor/dot/de>
Development

File diff suppressed because it is too large Load Diff

33
INSTALL Normal file
View File

@@ -0,0 +1,33 @@
Building LMMS got quite simple since 0.4.0 as everything is managed
by cmake now. Therefore make sure you have CMake (>= 2.6.0 recommended) and
then run
mkdir build
cd build
cmake ../
make
sudo make install
If your system does not have "sudo", become root with your preferred mechanism
and run the "make install" command.
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.
If you want to supply an install prefix to cmake, add the flag:
-DCMAKE_INSTALL_PREFIX=<prefix>
Where <prefix> can be /usr, /usr/local, /opt, etc. The default is /usr/local.

View File

@@ -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.)

104
README Normal file
View File

@@ -0,0 +1,104 @@
LMMS 1.0.93
===========
Copyright (c) 2004-2014 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 is a free cross-platform alternative to commercial programs like FL Studio (R), 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.
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 64 FX channels and arbitrary number of effects allow unlimited mixing possibilities
* 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
* Import of MIDI and FLP (Fruityloops(R) Project) files
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:
- Qt >= 4.3.0 with devel-files (4.4.x recommended)
Optional, but strongly recommended:
- JACK with devel-files
- libvorbis & libogg with devel-files
- libalsa with devel-files
- SDL with devel-files
- libsamplerate >= 0.1.7 with devel-files
- libsndfile with devel-files
- WINE + WINE-devel-files
- stk, libstk + libstk-dev
- libfluidsynth with devel files
- fftw3 with devel-files
- libfltk1.3 with devel-files (needed by ZynAddSubFx)
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.
Join LMMS-development
----------------------
If you are interested in LMMS, it's programming, artwork, testing, writing
demo-songs, (and improving this 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.io/
Details on development can be found in the Wiki:
https://github.com/LMMS/lmms/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.

View File

@@ -1,26 +1,19 @@
# ![LMMS Logo](http://lmms.sourceforge.net/Lmms_logo.png) LMMS
[![Build status](https://img.shields.io/travis/LMMS/lmms.svg?maxAge=3600)](https://travis-ci.org/LMMS/lmms)
[![Latest stable release](https://img.shields.io/github/release/LMMS/lmms.svg?maxAge=3600)](https://lmms.io/download)
[![Overall downloads on Github](https://img.shields.io/github/downloads/LMMS/lmms/total.svg?maxAge=3600)](https://github.com/LMMS/lmms/releases)
[![Join the chat at Discord](https://img.shields.io/badge/chat-on%20discord-7289DA.svg)](https://discord.gg/3sc5su7)
[![Localise on transifex](https://img.shields.io/badge/localise-on_transifex-green.svg)](https://www.transifex.com/lmms/lmms/)
![LMMS Logo](http://lmms.sourceforge.net/Lmms_logo.png) LMMS
=======================
[![Build Status](https://travis-ci.org/LMMS/lmms.png)](https://travis-ci.org/LMMS/lmms)
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.
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>
[Homepage](http://lmms.sf.net)<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!
[Artist & User Wiki/Documentation](http://lmms.sourceforge.net/wiki/index.php/Main_Page) This still has some useful pages.<br>
[Screenshots](http://lmms.io/screenshots/)<br>
[Sound Demos](http://lmms.io/showcase/)<br>
[LMMS Sharing Platform](http://lmms.io/lsp/) Share your songs!
Features
---------
@@ -28,31 +21,31 @@ 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
* An FX mixer with 64 FX channels and arbitrary number of effects allow unlimited mixing possibilities
* 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
* Import of MIDI and FLP (FL Studio®/Fruityloops® Project) files
[Latest Stable Release (1.0.3)](https://github.com/LMMS/lmms/releases/tag/v1.0.3)
---------------------
* Fix zyn GUI crash on win32
* Fix SF2 note volume
* Localization updates
* Updated LADSPA search paths
* Bugfixes in plugins
Building
---------
See [Compiling LMMS](https://github.com/LMMS/lmms/wiki/Compiling) on our
wiki for information on how to build LMMS.
See [Compiling LMMS](https://github.com/LMMS/lmms/wiki/Compiling-lmms) 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!
If you are interested in LMMS, it's programming, artwork, testing, writing demo-songs, (and improving this readme…) or something like that, you're welcome to participate on the development of LMMS!
Information about what you can do and how can be found in the
[wiki](https://github.com/LMMS/lmms/wiki).
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.
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 post 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.

32
TODO Normal file
View File

@@ -0,0 +1,32 @@
Version 0.4.x
=============
- save tco-settings in trackContentWidget::saveSettings() etc. instead of
track::...
- resample sample-track-tcos when exporting at different samplerate
- message to user when importing unsupported MIDI-file (track-count = 0)
- piano roll: mouse cursor isn't updated correctly in selection mode
(from resizing note edit area)
- when you add vestige, have it automatically pop the find VST plugin dialog
- try to make vestige-plugin-dlls relative
- select all MIDI devices by default when you bring up the "connect to controller"
window and wait for first event - then uncheck all other MIDI devices that no
events were detected from
- load asdlol.mmpz. if you render it without playing it, or if you play it
the first time, you hear unwanted artifacts. (solution: apply automation
before playing)
- autosave every 30s (configurable!) and offer recovery at startup after crash
- speed up painting of sampleTCO
- do not process effects when playing frozen patterns
- copy-pasted automation patterns have to be manually linked back to
their knob for some reason
- improve TrackLabelButton: split 80%-20% (80%=name, 20%=button showing a popup
menu with track operations, make the midi input a top-level menu item)
- when you click and drag a mixer bar, it doesn't click and drag, it sets
absolutely. this is annoying
See TODO file in master branch and/or the TODO list in the Wiki for details
regarding the development series.

7
build_mingw32 Executable file
View File

@@ -0,0 +1,7 @@
MINGW=/opt/mingw32
export PATH=$PATH:$MINGW/bin
#export CFLAGS="-march=pentium3 -mtune=generic -mpreferred-stack-boundary=5 -fno-tree-vectorize"
export CFLAGS="-march=pentium3 -mtune=generic -mpreferred-stack-boundary=5"
export CXXFLAGS="$CFLAGS"
cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/modules/Win32Toolchain.cmake -DCMAKE_MODULE_PATH=`pwd`/../cmake/modules/

6
build_mingw64 Executable file
View File

@@ -0,0 +1,6 @@
MINGW=/opt/mingw64
export PATH=$PATH:$MINGW/bin
#export CFLAGS="-fno-tree-vectorize"
export CXXFLAGS="$CFLAGS"
cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/modules/Win64Toolchain.cmake -DCMAKE_MODULE_PATH=`pwd`/../cmake/modules/

212
buildtools/bin2res.cpp Normal file
View File

@@ -0,0 +1,212 @@
/*
* bin2res.cpp - generate embedded resources from binary data (based on qembed)
*
* Copyright (c) 2005-2008 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( std::string( argv[i] ) );
}
for( stringlist::iterator it = files.begin(); it != files.end(); ++it )
{
std::ifstream f( it->c_str(), std::ios::binary );
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 << "static 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 << "static const unsigned char dummy_data[] ="
"{ 0x00 };" << std::endl << std::endl;
embed * dummy = new embed;
dummy->size = 1;
dummy->name = "dummy";
dummy->cname = convertFileNameToCIdentifier(
std::string( "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 << "static 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
<< "static 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;
}
}

View File

@@ -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

View File

@@ -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)

View File

@@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

View File

@@ -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"

View File

@@ -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" }
]
}

Binary file not shown.

View File

@@ -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

View File

@@ -1,3 +0,0 @@
#!/usr/bin/env bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
ARCH=64 "$DIR/build_win32.sh"

View File

@@ -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()

View File

@@ -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

View File

@@ -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)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 549 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 446 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 934 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 771 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 799 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 681 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 836 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -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

View File

@@ -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

View File

@@ -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 "$@"

View File

@@ -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"

View File

@@ -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()

View File

@@ -1,101 +1,98 @@
# 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>)
# usage: BUILD_PLUGIN(<PLUGIN_NAME> <PLUGIN_SOURCES> MOCFILES <HEADERS_FOR_MOC> EMBEDDED_RESOURCES <LIST_OF_FILES_TO_EMBED> UICFILES <UI_FILES_TO_COMPILE> )
INCLUDE(GenQrc)
MACRO(CAR var)
SET(${var} ${ARGV1})
ENDMACRO(CAR)
MACRO(BUILD_PLUGIN PLUGIN_NAME)
CMAKE_PARSE_ARGUMENTS(PLUGIN "" "LINK;EXPORT_BASE_NAME" "MOCFILES;EMBEDDED_RESOURCES;UICFILES" ${ARGN})
SET(PLUGIN_SOURCES ${PLUGIN_UNPARSED_ARGUMENTS})
MACRO(CDR var junk)
SET(${var} ${ARGN})
ENDMACRO(CDR)
INCLUDE_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_BINARY_DIR}" "${CMAKE_SOURCE_DIR}/include")
MACRO(LIST_CONTAINS var value)
SET(${var})
FOREACH (value2 ${ARGN})
IF (${value} STREQUAL ${value2})
SET(${var} TRUE)
ENDIF (${value} STREQUAL ${value2})
ENDFOREACH (value2)
ENDMACRO(LIST_CONTAINS)
MACRO(PARSE_ARGUMENTS prefix arg_names option_names)
SET(DEFAULT_ARGS)
FOREACH(arg_name ${arg_names})
SET(${prefix}_${arg_name})
ENDFOREACH(arg_name)
FOREACH(option ${option_names})
SET(${prefix}_${option} FALSE)
ENDFOREACH(option)
SET(current_arg_name DEFAULT_ARGS)
SET(current_arg_list)
FOREACH(arg ${ARGN})
LIST_CONTAINS(is_arg_name ${arg} ${arg_names})
IF (is_arg_name)
SET(${prefix}_${current_arg_name} ${current_arg_list})
SET(current_arg_name ${arg})
SET(current_arg_list)
ELSE (is_arg_name)
LIST_CONTAINS(is_option ${arg} ${option_names})
IF (is_option)
SET(${prefix}_${arg} TRUE)
ELSE (is_option)
SET(current_arg_list ${current_arg_list} ${arg})
ENDIF (is_option)
ENDIF (is_arg_name)
ENDFOREACH(arg)
SET(${prefix}_${current_arg_name} ${current_arg_list})
ENDMACRO(PARSE_ARGUMENTS)
MACRO(BUILD_PLUGIN)
PARSE_ARGUMENTS(PLUGIN "MOCFILES;EMBEDDED_RESOURCES;UICFILES" "" ${ARGN} )
CAR(PLUGIN_NAME ${PLUGIN_DEFAULT_ARGS})
CDR(PLUGIN_SOURCES ${PLUGIN_DEFAULT_ARGS})
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/src/gui)
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})
SET(ER_H ${CMAKE_CURRENT_BINARY_DIR}/embedded_resources.h)
ADD_CUSTOM_COMMAND(OUTPUT ${ER_H}
COMMAND ${BIN2RES}
ARGS ${PLUGIN_EMBEDDED_RESOURCES} > ${ER_H}
DEPENDS ${BIN2RES})
ENDIF(ER_LEN)
QT5_WRAP_CPP(plugin_MOC_out ${PLUGIN_MOCFILES})
QT5_WRAP_UI(plugin_UIC_out ${PLUGIN_UICFILES})
QT4_WRAP_CPP(plugin_MOC_out ${PLUGIN_MOCFILES})
QT4_WRAP_UI(plugin_UIC_out ${PLUGIN_UICFILES})
FOREACH(f ${PLUGIN_SOURCES})
ADD_FILE_DEPENDENCIES(${f} ${RCC_OUT} ${plugin_UIC_out})
ADD_FILE_DEPENDENCIES(${f} ${ER_H} ${plugin_MOC_out} ${plugin_UIC_out})
ENDFOREACH(f)
IF(LMMS_BUILD_APPLE)
LINK_DIRECTORIES("${CMAKE_BINARY_DIR}")
LINK_LIBRARIES(${QT_LIBRARIES})
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)
LINK_DIRECTORIES(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR})
LINK_LIBRARIES(-llmms ${QT_LIBRARIES})
ENDIF(LMMS_BUILD_WIN32)
INSTALL(TARGETS ${PLUGIN_NAME}
LIBRARY DESTINATION "${PLUGIN_DIR}"
RUNTIME DESTINATION "${PLUGIN_DIR}"
)
ADD_LIBRARY(${PLUGIN_NAME} MODULE ${PLUGIN_SOURCES})
INSTALL(TARGETS ${PLUGIN_NAME} LIBRARY 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)
SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES LINK_FLAGS "-bundle_loader ${CMAKE_BINARY_DIR}/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()
ADD_CUSTOM_COMMAND(TARGET ${PLUGIN_NAME} POST_BUILD COMMAND ${STRIP} ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_NAME}.dll)
ENDIF(LMMS_BUILD_WIN32)
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)
SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${ER_H} ${plugin_MOC_out}")
ENDMACRO(BUILD_PLUGIN)

View File

@@ -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.

View File

@@ -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()

View File

@@ -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}")

View File

@@ -1,27 +0,0 @@
INCLUDE(CheckCXXSourceCompiles)
FUNCTION(CheckWineGcc BITNESS WINEGCC_EXECUTABLE RESULT)
FILE(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/winegcc_test.cxx" "
#include <iostream>
#define USE_WS_PREFIX
#include <windows.h>
int main(int argc, const char* argv[]) {
return 0;
}
")
EXECUTE_PROCESS(COMMAND ${WINEGCC_EXECUTABLE} "-m${BITNESS}"
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/winegcc_test.cxx"
"-o" "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/winegcc_test"
OUTPUT_QUIET ERROR_QUIET
RESULT_VARIABLE WINEGCC_RESULT
)
FILE(REMOVE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/winegcc_test.cxx"
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/winegcc_test"
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/winegcc_test.exe.so"
)
IF(WINEGCC_RESULT EQUAL 0)
SET(${RESULT} True PARENT_SCOPE)
ELSE()
SET(${RESULT} False PARENT_SCOPE)
ENDIF()
ENDFUNCTION()

View File

@@ -1,25 +0,0 @@
option(USE_COMPILE_CACHE "Use ccache or clcache for compilation" OFF)
# Compatibility for old option name
if(USE_CCACHE)
set(USE_COMPILE_CACHE ON)
endif()
if(USE_COMPILE_CACHE)
if(MSVC)
set(CACHE_TOOL_NAME clcache)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|AppleClang|Clang)")
set(CACHE_TOOL_NAME ccache)
else()
message(WARNING "Compile cache only available with MSVC or GNU")
endif()
find_program(CACHE_TOOL ${CACHE_TOOL_NAME})
if (CACHE_TOOL)
message(STATUS "Using ${CACHE_TOOL} found for caching")
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CACHE_TOOL})
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CACHE_TOOL})
else()
message(WARNING "USE_COMPILE_CACHE enabled, but no ${CACHE_TOOL_NAME} found")
endif()
endif()

View File

@@ -1,21 +0,0 @@
function(CreateTempFilePath)
set(options CONFIG_SUFFIX)
set(oneValueArgs OUTPUT_VAR TAG)
set(multiValueArgs CONTENT)
cmake_parse_arguments(TEMP "${options}" "${oneValueArgs}"
"${multiValueArgs}" ${ARGN} )
# Use hash to create a unique identifier
# for this file.
string(SHA1 hashed_content "${TEMP_CONTENT}")
set(file_name "${CMAKE_BINARY_DIR}/${TEMP_TAG}_${hashed_content}")
set(${TEMP_OUTPUT_VAR} "${file_name}" PARENT_SCOPE)
if(CONFIG_SUFFIX)
set(file_name "${file_name}_$<CONFIG>")
endif()
file(GENERATE OUTPUT "${file_name}"
CONTENT "${TEMP_CONTENT}")
endfunction()

View File

@@ -1,31 +0,0 @@
# This functions forwards a variable to
# the install stage.
# Parameters:
# CONTENT: Variable content.
# NAME: Variable name.
# Options:
# GENERATOR_EXPRESSION: Support generator expression for CONTENT.
function(DEFINE_INSTALL_VAR)
set(options GENERATOR_EXPRESSION)
set(oneValueArgs NAME )
set(multiValueArgs CONTENT)
cmake_parse_arguments(VAR "${options}" "${oneValueArgs}"
"${multiValueArgs}" ${ARGN} )
# install(CODE) does not support generator expression in ver<3.14
if(VAR_GENERATOR_EXPRESSION AND ${CMAKE_VERSION} VERSION_LESS "3.14.0")
include(CreateTempFile)
if(CMAKE_CONFIGURATION_TYPES) # in case of multi-config generators like MSVC generators
CreateTempFilePath(OUTPUT_VAR file_path TAG "${VAR_NAME}" CONTENT "${VAR_CONTENT}" CONFIG_SUFFIX)
install(CODE "file(READ \"${file_path}_\${CMAKE_INSTALL_CONFIG_NAME}\" \"${VAR_NAME}\")")
else()
CreateTempFilePath(OUTPUT_VAR file_path TAG "${VAR_NAME}" CONTENT "${VAR_CONTENT}")
install(CODE "file(READ \"${file_path}\" \"${VAR_NAME}\")")
endif()
else()
if(VAR_GENERATOR_EXPRESSION)
cmake_policy(SET CMP0087 NEW)
endif()
install(CODE "set(\"${VAR_NAME}\" \"${VAR_CONTENT}\")")
endif()
endfunction()

View File

@@ -1,30 +1,17 @@
IF(WIN32)
SET(LMMS_BUILD_WIN32 1)
ELSEIF(APPLE)
SET(LMMS_BUILD_APPLE 1)
ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
SET(LMMS_BUILD_OPENBSD 1)
ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
SET(LMMS_BUILD_FREEBSD 1)
ELSEIF(HAIKU)
SET(LMMS_BUILD_HAIKU 1)
ELSE()
SET(LMMS_BUILD_LINUX 1)
ELSE(WIN32)
IF(APPLE)
SET(LMMS_BUILD_APPLE 1)
ELSE(APPLE)
SET(LMMS_BUILD_LINUX 1)
ENDIF(APPLE)
ENDIF(WIN32)
# LMMS_BUILD_MSYS also set in build_winXX.sh
IF(LMMS_BUILD_WIN32 AND CMAKE_COMPILER_IS_GNUCXX AND DEFINED ENV{MSYSCON})
SET(LMMS_BUILD_MSYS TRUE)
ENDIF()
MESSAGE("PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}")
SET(LMMS_HOST_X86 FALSE)
SET(LMMS_HOST_X86_64 FALSE)
IF(NOT DEFINED WIN64 AND CMAKE_SIZEOF_VOID_P EQUAL 8)
SET(WIN64 ON)
ENDIF()
IF(WIN32)
IF(WIN64)
SET(IS_X86_64 TRUE)
@@ -32,30 +19,11 @@ IF(WIN32)
ELSE(WIN64)
SET(IS_X86 TRUE)
ENDIF(WIN64)
if(MSVC)
SET(MSVC_VER ${CMAKE_CXX_COMPILER_VERSION})
IF(MSVC_VER VERSION_GREATER 19.20 OR MSVC_VER VERSION_EQUAL 19.20)
SET(LMMS_MSVC_GENERATOR "Visual Studio 16 2019")
SET(LMMS_MSVC_YEAR 2019) # Qt only provides binaries for MSVC 2017, but 2019 is binary compatible
ELSEIF(MSVC_VER VERSION_GREATER 19.10 OR MSVC_VER VERSION_EQUAL 19.10)
SET(LMMS_MSVC_GENERATOR "Visual Studio 15 2017")
SET(LMMS_MSVC_YEAR 2017)
ELSEIF(MSVC_VER VERSION_GREATER 19.0 OR MSVC_VER VERSION_EQUAL 19.0)
SET(LMMS_MSVC_GENERATOR "Visual Studio 14 2015")
SET(LMMS_MSVC_YEAR 2015)
ELSE()
MESSAGE(SEND_WARNING "Can't detect MSVC version: ${MSVC_VER}")
ENDIF()
unset(MSVC_VER)
endif()
ELSE(WIN32)
EXEC_PROGRAM( ${CMAKE_C_COMPILER} ARGS "-dumpmachine ${CMAKE_C_FLAGS}" OUTPUT_VARIABLE Machine )
EXEC_PROGRAM( ${CMAKE_C_COMPILER} ARGS "-dumpmachine" OUTPUT_VARIABLE Machine )
MESSAGE("Machine: ${Machine}")
STRING(REGEX MATCH "i.86" IS_X86 "${Machine}")
STRING(REGEX MATCH "86_64|amd64" IS_X86_64 "${Machine}")
STRING(REGEX MATCH "86_64" IS_X86_64 "${Machine}")
ENDIF(WIN32)
IF(IS_X86)
@@ -87,23 +55,4 @@ ELSE(LMMS_BUILD_WIN32)
SET(LMMS_DATA_DIR ${DATA_DIR}/lmms)
ENDIF(LMMS_BUILD_WIN32)
IF(LMMS_BUILD_APPLE)
# Detect Homebrew versus Macports environment
EXECUTE_PROCESS(COMMAND brew --prefix RESULT_VARIABLE DETECT_HOMEBREW OUTPUT_VARIABLE HOMEBREW_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
EXECUTE_PROCESS(COMMAND which port RESULT_VARIABLE DETECT_MACPORTS OUTPUT_VARIABLE MACPORTS_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
IF(${DETECT_HOMEBREW} EQUAL 0)
SET(HOMEBREW 1)
SET(APPLE_PREFIX "${HOMEBREW_PREFIX}")
ELSEIF(${DETECT_MACPORTS} EQUAL 0)
SET(MACPORTS 1)
GET_FILENAME_COMPONENT(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY)
GET_FILENAME_COMPONENT(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY)
SET(APPLE_PREFIX "${MACPORTS_PREFIX}")
LINK_DIRECTORIES(${LINK_DIRECTORIES} ${APPLE_PREFIX}/lib)
ENDIF()
# Detect OS Version
EXECUTE_PROCESS(COMMAND sw_vers -productVersion OUTPUT_VARIABLE APPLE_OS_VER ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
STRING(REGEX REPLACE "\\.[0-9]*$" "" APPLE_OS_VER "${APPLE_OS_VER}")
SET(CMAKE_MACOSX_RPATH 1)
ENDIF()

View File

@@ -1,47 +0,0 @@
# FindFFTW.cmake - Try to find FFTW3
# Copyright (c) 2018 Lukas W <lukaswhl/at/gmail.com>
# This file is MIT licensed.
# See http://opensource.org/licenses/MIT
# Try pkgconfig for hints
find_package(PkgConfig QUIET)
if(NOT FFTW_FIND_COMPONENTS)
set(FFTW_FIND_COMPONENTS fftw3f fftw3 fftwl)
endif()
if(PKG_CONFIG_FOUND)
pkg_check_modules(FFTW_PKG QUIET fftw>=3.0.0)
pkg_check_modules(FFTW3_PKG QUIET fftw3>=3.0.0)
endif()
find_path(FFTW_INCLUDE_DIR
NAMES fftw3.h
PATHS ${FFTW_PKG_INCLUDE_DIRS} ${FFTW3_PKG_INCLUDE_DIRS}
)
set(check_list)
foreach(comp ${FFTW_FIND_COMPONENTS})
string(TOUPPER ${comp} COMP)
if(PKG_CONFIG_FOUND)
pkg_check_modules(${COMP}_PKG QUIET ${comp}>=3.0.0)
endif()
find_library(${COMP}_LIBRARY
NAMES ${comp}
PATHS ${comp}_PKG_LIBRARY_DIRS
)
list(APPEND check_list ${COMP}_LIBRARY)
set(${COMP}_LIBRARIES ${${COMP}_LIBRARY} CACHE FILEPATH "${COMP} library path")
set(${COMP}_INCLUDE_DIRS ${FFTW_INCLUDE_DIR} CACHE PATH "${COMP} include path")
mark_as_advanced(${COMP}_LIBRARIES ${COMP}_INCLUDE_DIRS)
endforeach()
find_package(PackageHandleStandardArgs)
find_package_handle_standard_args(FFTW DEFAULT_MSG FFTW_INCLUDE_DIR ${check_list})
set(FFTW_INCLUDE_DIRS ${FFTW_INCLUDE_DIR})
mark_as_advanced(FFTW_LIBRARY FFTW_LIBRARIES FFTW_INCLUDE_DIR FFTW_INCLUDE_DIRS ${check_list})

Some files were not shown because too many files have changed in this diff Show More