MuseScore/Makefile

216 lines
8.5 KiB
Makefile

#=============================================================================
# Mscore
# Linux Music Score Editor
# $Id:$
#
# Copyright (C) 2002-2012 by Werner Schweer and others
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2.
#
# 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., 675 Mass Ave, Cambridge, MA 02139, USA.
#=============================================================================
REVISION := `cat mscore/revision.h`
CPUS := $(shell getconf _NPROCESSORS_ONLN 2>/dev/null || getconf NPROCESSORS_ONLN 2>/dev/null || echo 1)
PREFIX = "/usr/local"
VERSION = "3.0b-${REVISION}"
#VERSION = 3.0.0
BUILD_NUMBER=""
# Override SUFFIX and LABEL when multiple versions are installed to avoid conflicts.
SUFFIX=""# E.g.: SUFFIX="dev" --> "mscore" becomes "mscoredev"
LABEL=""# E.g.: LABEL="Development Build" --> "MuseScore 2" becomes "MuseScore 2 Development Build"
BUILD_LAME="ON" # Non-free, required for MP3 support. Override with "OFF" to disable.
BUILD_PULSEAUDIO="ON" # Override with "OFF" to disable.
BUILD_JACK="ON" # Override with "OFF" to disable.
BUILD_PORTAUDIO="ON" # Override with "OFF" to disable.
USE_SYSTEM_FREETYPE="OFF" # Override with "ON" to enable. Requires freetype >= 2.5.2.
COVERAGE="OFF" # Override with "ON" to enable.
DOWNLOAD_SOUNDFONT="ON" # Override with "OFF" to disable latest soundfont download.
UPDATE_CACHE="TRUE"# Override if building a DEB or RPM, or when installing to a non-standard location.
NO_RPATH="FALSE"# Package maintainers may want to override this (e.g. Debian)
#
# change path to include your Qt5 installation
#
BINPATH = ${PATH}
release:
if test ! -d build.release; then mkdir build.release; fi; \
cd build.release; \
export PATH=${BINPATH}; \
cmake -DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_TOOLCHAIN_FILE="${CMAKE_TOOLCHAIN_FILE}" \
-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
-DMSCORE_INSTALL_SUFFIX="${SUFFIX}" \
-DMUSESCORE_LABEL="${LABEL}" \
-DCMAKE_BUILD_NUMBER="${BUILD_NUMBER}" \
-DBUILD_LAME="${BUILD_LAME}" \
-DBUILD_PULSEAUDIO="${BUILD_PULSEAUDIO}" \
-DBUILD_JACK="${BUILD_JACK}" \
-DBUILD_PORTAUDIO="${BUILD_PORTAUDIO}" \
-DUSE_SYSTEM_FREETYPE="${USE_SYSTEM_FREETYPE}" \
-DDOWNLOAD_SOUNDFONT="${DOWNLOAD_SOUNDFONT}" \
-DCMAKE_SKIP_RPATH="${NO_RPATH}" ..; \
make lrelease; \
make -j ${CPUS}; \
#freetype:
# cd build.debug; \
# mkdir freetype; \
# cd freetype; \
# cmake ../../thirdparty/freetype; \
# make -j ${CPUS}
debug:
if test ! -d build.debug; then mkdir build.debug; fi; \
cd build.debug; \
export PATH=${BINPATH}; \
cmake -DCMAKE_BUILD_TYPE=DEBUG \
-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
-DMSCORE_INSTALL_SUFFIX="${SUFFIX}" \
-DMUSESCORE_LABEL="${LABEL}" \
-DCMAKE_BUILD_NUMBER="${BUILD_NUMBER}" \
-DBUILD_LAME="${BUILD_LAME}" \
-DBUILD_PULSEAUDIO="${BUILD_PULSEAUDIO}" \
-DBUILD_JACK="${BUILD_JACK}" \
-DBUILD_PORTAUDIO="${BUILD_PORTAUDIO}" \
-DUSE_SYSTEM_FREETYPE="${USE_SYSTEM_FREETYPE}" \
-DCOVERAGE="${COVERAGE}" \
-DDOWNLOAD_SOUNDFONT="${DOWNLOAD_SOUNDFONT}" \
-DCMAKE_SKIP_RPATH="${NO_RPATH}" ..; \
make lrelease; \
make -j ${CPUS}; \
#
# win32
# cross compile windows package
# NOTE: there are some hardcoded path in CMake - files
# will probably only work on my setup (ws)
#
win32:
if test ! -d win32build; \
then \
mkdir win32build; \
if test ! -d win32install; \
then \
mkdir win32install; \
fi; \
cd win32build; \
cmake -DCMAKE_TOOLCHAIN_FILE=../build/mingw32.cmake -DCMAKE_INSTALL_PREFIX=../win32install -DCMAKE_BUILD_TYPE=DEBUG ..; \
make lrelease; \
make -j ${CPUS}; \
make install; \
make package; \
else \
echo "build directory win32build does alread exist, please remove first"; \
fi
#
# clean out of source build
#
clean:
-rm -rf build.debug build.release
-rm -rf win32build win32install
revision:
@git rev-parse --short=7 HEAD > mscore/revision.h
version:
@echo ${VERSION}
install: release
cd build.release \
&& make install/strip \
&& if [ ${UPDATE_CACHE} = "TRUE" ]; then \
update-mime-database "${PREFIX}/share/mime"; \
gtk-update-icon-cache -f -t "${PREFIX}/share/icons/hicolor"; \
fi
# Portable target: build AppDir ready to be turned into a portable AppImage.
# Creating the AppImage requires https://github.com/probonopd/AppImageKit
# Portable target requires both build and runtime dependencies,
# if Qt is in a non-standard location then be sure to add its
# "bin" folder to PATH and "lib" folder to LD_LIBRARY_PATH. i.e.:
# $ export $PATH="/path/to/Qt/bin:${PATH}"
# $ export $LD_LIBRARY_PATH="/path/to/Qt/lib:${LD_LIBRARY_PATH}"
# $ make portable
# PREFIX sets install location *and* the name of the resulting AppDir.
# Version is appended to PREFIX in CMakeLists.txt if MSCORE_UNSTABLE=FALSE.
portable: PREFIX=MuseScore
portable: SUFFIX=-portable
portable: LABEL=Portable AppImage
portable: NO_RPATH=TRUE
portable: UPDATE_CACHE=FALSE
portable: install
build_dir="$$(pwd)/build.release" && cd "$$(cat $${build_dir}/PREFIX.txt)" \
&& [ -L usr ] || ln -s . usr && mscore="mscore${SUFFIX}" \
&& dsktp="$${mscore}.desktop" icon="$${mscore}.svg" mani="install_manifest.txt" \
&& cp "share/applications/$${dsktp}" "$${dsktp}" \
&& cp "share/icons/hicolor/scalable/apps/$${icon}" "$${icon}" \
&& <"$${build_dir}/$${mani}" >"$${mani}" \
sed -rn 's/.*(share\/)(man|mime|icons|applications)(.*)/\1\2\3/p' \
&& "$${build_dir}/../build/Linux+BSD/portable/copy-libs" . \
; ./AppRun check-depends | tee "$${build_dir}/dependencies.txt"
installdebug: debug
cd build.debug \
&& make install \
&& if [ ${UPDATE_CACHE} = "TRUE" ]; then \
update-mime-database "${PREFIX}/share/mime"; \
gtk-update-icon-cache -f -t "${PREFIX}/share/icons/hicolor"; \
fi
uninstall:
cd build.release \
&& xargs rm < install_manifest.txt \
&& if [ ${UPDATE_CACHE} = "TRUE" ]; then \
update-mime-database "${PREFIX}/share/mime"; \
gtk-update-icon-cache -f -t "${PREFIX}/share/icons/hicolor"; \
fi \
&& xargs ../build/rm-empty-dirs < install_manifest.txt \
&& rm install_manifest.txt
uninstalldebug:
cd build.debug \
&& xargs rm < install_manifest.txt \
&& if [ ${UPDATE_CACHE} = "TRUE" ]; then \
update-mime-database "${PREFIX}/share/mime"; \
gtk-update-icon-cache -f -t "${PREFIX}/share/icons/hicolor"; \
fi \
&& xargs ../build/rm-empty-dirs < install_manifest.txt \
&& rm install_manifest.txt
#
# linux
# linux binary package build
#
unix:
if test ! -d linux; \
then \
mkdir linux; \
cd linux; \
cmake -DCMAKE_BUILD_TYPE=RELEASE ../mscore; \
make -j${CPUS} -f Makefile; \
make package; \
else \
echo "build directory linux does alread exist, please remove first"; \
fi
zip:
zip -q -r MuseScore-${VERSION}.zip * -x .git\* -x vtest/html\*