diff --git a/.travis.yml b/.travis.yml
index f53ac887..f2f798b8 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -16,15 +16,13 @@ matrix:
- gcc
before_install:
- eval "${MATRIX_EVAL}"
-- sudo apt-get install build-essential autoconf automake cmake libboost-all-dev libconfig++-dev libavcodec-dev libavutil-dev libavformat-dev ffmpeg libmagick++-dev libpstreams-dev libconfig++-dev libpstreams-dev libtag1-dev
+- sudo apt-get install build-essential cmake libboost-all-dev libconfig++-dev libavcodec-dev libavutil-dev libavformat-dev ffmpeg libmagick++-dev libpstreams-dev libconfig++-dev libpstreams-dev libtag1-dev
- git clone https://github.com/emweb/wt.git wt
- pushd wt;
- git checkout 4.1.0
- cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr && sudo make install
- popd
-script: autoreconf -vfi && CXXFLAGS="-Wall -Wextra -Werror" ./configure --enable-tools && make distcheck
+script: cmake -DCMAKE_BUILD_TYPE=Release . && make && make test
env:
global:
- MAKEFLAGS="-j 2"
-after_failure:
- - cat config.log
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 00000000..516595ee
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,18 @@
+cmake_minimum_required(VERSION 3.10)
+
+project(lms)
+
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED True)
+
+include(CTest)
+find_package(PkgConfig)
+pkg_check_modules(IMAGEMAGICKXX REQUIRED ImageMagick++)
+
+add_subdirectory(src)
+
+install(DIRECTORY approot DESTINATION share/lms)
+install(DIRECTORY docroot DESTINATION share/lms)
+install(FILES systemd/default.service DESTINATION share/lms)
+install(FILES conf/lms.conf DESTINATION share/lms)
+
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index a82bd6d3..00000000
--- a/Makefile.am
+++ /dev/null
@@ -1,56 +0,0 @@
-
-AUTOMAKE_OPTIONS = dist-bzip2 no-dist-gzip
-
-SUBDIRS = test tools src
-
-lms_docrootdir=$(pkgdatadir)/docroot
-lms_approotdir=$(pkgdatadir)/approot
-
-lms_cssdir=$(lms_docrootdir)/css
-lms_jsdir=$(lms_docrootdir)/js
-lms_imagesdir=$(lms_approotdir)/images
-
-dist_pkgdata_DATA = \
- systemd/default.service \
- conf/lms.conf
-
-dist_lms_css_DATA = \
- docroot/css/lms.css
-
-dist_lms_js_DATA = \
- docroot/js/bootstrap-notify.js \
- docroot/js/jquery-1.10.2.min.js \
- docroot/js/mediaplayer.js
-
-dist_lms_images_DATA = \
- approot/images/unknown-cover.jpg \
- approot/images/unknown-artist.jpg
-
-dist_lms_approot_DATA = \
- approot/admin-database.xml \
- approot/admin-user.xml \
- approot/admin-users.xml \
- approot/admin-initwizard.xml \
- approot/artist.xml \
- approot/artistinfo.xml \
- approot/artistlink.xml \
- approot/artists.xml \
- approot/artistsinfo.xml \
- approot/error.xml \
- approot/explore.xml \
- approot/login.xml \
- approot/mediaplayer.xml \
- approot/messages.xml \
- approot/messages_fr.xml \
- approot/playhistory.xml \
- approot/playqueue.xml \
- approot/release.xml \
- approot/releaseinfo.xml \
- approot/releaselink.xml \
- approot/releases.xml \
- approot/releasesinfo.xml \
- approot/settings.xml \
- approot/templates.xml \
- approot/tracks.xml \
- approot/tracksinfo.xml
-
diff --git a/README.md b/README.md
index 6e07b808..25b903a4 100644
--- a/README.md
+++ b/README.md
@@ -17,28 +17,33 @@ A [demo](http://lms.demo.poupon.io) instance is available, with the following li
* Audio transcode for maximum interoperability and low bandwith requirements
* Persistent play queue across sessions
* Subsonic API
-* Album artist
+* Compilation support
* Multi-value tags: artists, genres, ...
* Custom tags (ex: _mood_, _genre_, _albummood_, _albumgrouping_, ...)
* MusicBrainzID support to handle duplicated artist and release names
-* Playlists, (only using Subsonic API for now)
-* Starred Album/Artist/Tracks (only using Subsonic API for now)
* _Systemd_ integration
+* Subsonic-only features:
+ * Playlists
+ * Starred Album/Artist/Tracks
+ * Bookmarks
-## Recommendation engine
+## Music discovery
_LMS_ provides several ways to help you find the music you like:
* Tag-based filters (ex: _Rock_, _Metal_ and _Aggressive_, _Electronic_ and _Relaxed_, ...)
* Recommendations for similar artists and albums
-* Radio mode
+* Radio mode, based on what is in the current playqueue
* Searches in album, artist and track names
* Most played/Recently added music
-The recommendation engine makes use of [Self-Organizing Maps](https://en.wikipedia.org/wiki/Self-organizing_map).
-__Notes__:
-* constructing the map requires significant computation time on large collections (ex: half an hour for 40k tracks)
-* audio data is pulled from [AcousticBrainz](https://acousticbrainz.org/). Therefore your music files must contain the [MusicBrainz Identifier](https://musicbrainz.org/doc/MusicBrainz_Identifier) for the recommendation engine to work properly (otherwise, only tag-based recommendations are provided)
-* to use the _self-organizing map_ based engine, you have to enable it first in the settings panel.
+The recommendation engine uses two different sources:
+1. Tags that are present in the audio files
+2. Acoustic similarities of the audio files, using a trained [Self-Organizing Map](https://en.wikipedia.org/wiki/Self-organizing_map)
+
+__Notes on the self-organizing map__:
+* training the map requires significant computation time on large collections (ex: half an hour for 40k tracks)
+* audio acoustic data is pulled from [AcousticBrainz](https://acousticbrainz.org/). Therefore your audio files _must_ contain the [MusicBrainz Identifier](https://musicbrainz.org/doc/MusicBrainz_Identifier).
+* to enable the audio similarity source, you have to enable it first in the settings panel.
## Subsonic API
The API version implemented is 1.12.0 and has been tested on _Android_ using the official application, _Ultrasonic_ and _DSub_.
@@ -80,7 +85,7 @@ __Notes__:
* a C++17 compiler is needed
* ffmpeg version 4 minimum is required
```sh
-apt-get install g++ autoconf automake libboost-filesystem-dev libboost-system-dev libavutil-dev libavformat-dev libmagick++-dev libpstreams-dev libconfig++-dev libpstreams-dev ffmpeg libtag1-dev
+apt-get install g++ cmake libboost-system-dev libavutil-dev libavformat-dev libmagick++-dev libconfig++-dev libpstreams-dev ffmpeg libtag1-dev
```
You also need _Wt4_, which is not packaged yet on _Debian_. See [installation instructions](https://www.webtoolkit.eu/wt/doc/reference/html/InstallationUnix.html).
@@ -92,16 +97,10 @@ Get the latest stable release and build it:
```sh
git clone https://github.com/epoupon/lms.git lms
cd lms
-autoreconf -vfi
mkdir build
-cd build
-../configure --prefix=/usr
+cmake .. -DCMAKE_BUILD_TYPE=Release
```
-configure will report any missing library.
-
-__Note__: in order to customize the installation directories, you can use the following options of the `configure` script:
-* _--prefix_ (defaults to `/usr/local`).
-* _--bindir_ (defaults to `$PREFIX/bin`).
+__Note__: in order to customize the installation directory, you can use the _-DCMAKE_INSTALL_PREFIX_ option (defaults to `/usr/local`).
```sh
make
diff --git a/approot/admin-database.xml b/approot/admin-database.xml
index e5c8ec6f..6e2b08ec 100644
--- a/approot/admin-database.xml
+++ b/approot/admin-database.xml
@@ -47,14 +47,14 @@
diff --git a/approot/messages.xml b/approot/messages.xml
index 17d5ded8..20677bc8 100644
--- a/approot/messages.xml
+++ b/approot/messages.xml
@@ -39,9 +39,9 @@
Monthly
Never
Media root directory
-
Recommendation engine
-
Tags based
-
Audio analysis based
+
Recommendation engine
+
Tags based
+
Audio analysis based
Scan complete: {1} total files, {2} additions, {3} updates, {4} deletions, {5} duplicates, {6} errors
Scan launched!
Scan options
diff --git a/approot/messages_fr.xml b/approot/messages_fr.xml
index 2d61dc1d..934cd400 100644
--- a/approot/messages_fr.xml
+++ b/approot/messages_fr.xml
@@ -39,9 +39,9 @@
Tous les mois
Jamais
Dossier racine des fichiers de musique
-
Moteur de recommandation
-
Basé sur les tags
-
Basé sur l'analyse audio
+
Moteur de recommandation
+
Basé sur les tags
+
Basé sur l'analyse audio
Scan terminé : {1} fichiers, {2} ajouts, {3} mises à jour, {4} suppressions, {5} duplicatas, {6} erreurs
Scan lancé !
Options
diff --git a/configure.ac b/configure.ac
deleted file mode 100644
index ac5aaf5e..00000000
--- a/configure.ac
+++ /dev/null
@@ -1,94 +0,0 @@
-AC_PREREQ(2.59)
-AC_INIT(lms, 3.6.3, test@test)
-AM_INIT_AUTOMAKE
-AC_CONFIG_HEADER(src/config/config.h)
-
-AC_LANG_CPLUSPLUS
-
-AC_PROG_CXX
-
-PKG_CHECK_MODULES(IMAGEMAGICKXX, "ImageMagick++", [ HAVE_IMAGEMAGICKXX=yes ], [ ])
-if test -n "$HAVE_IMAGEMAGICKXX"; then
- MAGICKXX_CFLAGS="$IMAGEMAGICKXX_CFLAGS"
- MAGICKXX_LIBS="$IMAGEMAGICKXX_LIBS"
-fi
-AC_SUBST(MAGICKXX_CFLAGS)
-AC_SUBST(MAGICKXX_LIBS)
-
-AC_CHECK_HEADERS([Wt/WApplication.h pstreams/pstream.h boost/asio.hpp],
- [],
- [AC_MSG_ERROR([Header not found or unusable !])])
-
-AC_CHECK_LIB([stdc++fs],
- [main],
- ,
- [AC_MSG_ERROR([lib filesystem not found!])])
-
-AC_CHECK_LIB([pthread],
- [pthread_rwlock_unlock],
- ,
- [AC_MSG_ERROR([libpthread not found!])])
-
-AC_CHECK_LIB([boost_system],
- [main],
- ,
- [AC_MSG_ERROR([libboost_system not found!])])
-
-AC_CHECK_LIB([wt],
- [main],
- ,
- [AC_MSG_ERROR([libwt not found!])])
-
-AC_CHECK_LIB([wtdbo],
- [main],
- ,
- [AC_MSG_ERROR([libwtdbo not found!])])
-
-AC_CHECK_LIB([wtdbosqlite3],
- [main],
- ,
- [AC_MSG_ERROR([libwtdbosqlite3 not found!])])
-
-AC_CHECK_LIB([wthttp],
- [main],
- ,
- [AC_MSG_ERROR([libwthttp not found!])])
-
-
-AC_CHECK_LIB([avutil],
- [av_free],
- ,
- [AC_MSG_ERROR([libavutil not found!])])
-
-AC_CHECK_LIB([avformat],
- [av_read_frame],
- ,
- [AC_MSG_ERROR([libavformat not found!])])
-
-AC_CHECK_LIB( [tag],
- [main],
- ,
- [AC_MSG_ERROR([libtag not found!])])
-
-AC_CHECK_LIB( [config++],
- [main],
- ,
- [AC_MSG_ERROR([libconfig++ not found!])])
-
-AC_CONFIG_FILES([Makefile
- src/Makefile
- test/Makefile
- tools/Makefile
- tools/similarity/Makefile
- tools/similarity-parameters/Makefile
- tools/metadata/Makefile])
-
-AC_ARG_ENABLE([tools],
- [AC_HELP_STRING([--enable-tools], [Build the tools])],
- [:],
- [enable_tools=no])
-
-AM_CONDITIONAL([BUILD_TOOLS], [test "$enable_tools" = "yes"])
-
-AC_OUTPUT
-
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 2a94c55d..4ac83cd4 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -7,7 +7,7 @@ ARG FFMPEG_VERSION=4.1.4
ARG WT_VERSION=4.2.0
ARG IMAGEMAGICK6_VERSION=6.9.10-71
ARG PSTREAMS_VERSION=1.0.1
-ARG LMS_VERSION=3.5.0
+ARG LMS_VERSION=v3.6.3
ARG PREFIX="/tmp/install"
@@ -153,23 +153,21 @@ RUN \
# LMS
RUN \
DIR=/tmp/lms && mkdir -p ${DIR} && cd ${DIR} && \
- curl -sLO https://github.com/epoupon/lms/archive/v${LMS_VERSION}.tar.gz && \
- tar -x --strip-components=1 -f v${LMS_VERSION}.tar.gz
+ curl -sL https://github.com/epoupon/lms/archive/${LMS_VERSION}.tar.gz -o ${LMS_VERSION}.tar.gz && \
+ tar -x --strip-components=1 -f ${LMS_VERSION}.tar.gz
RUN \
DIR=/tmp/lms && mkdir -p ${DIR} && cd ${DIR} && \
- autoreconf -vfi && \
- PKG_CONFIG_PATH=/tmp/install/lib/pkgconfig CXXFLAGS="-O2 -I${PREFIX}/include" LDFLAGS="-L${PREFIX}/lib -Wl,--rpath-link=${PREFIX}/lib" ./configure --prefix=${PREFIX} && \
+ PKG_CONFIG_PATH=/tmp/install/lib/pkgconfig CXXFLAGS="-I${PREFIX}/include -L${PREFIX}/lib -Wl,--rpath-link=${PREFIX}/lib" cmake . -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${PREFIX} && \
make && \
make install && \
- make distclean && \
mkdir -p ${PREFIX}/etc/ && \
cp conf/lms.conf ${PREFIX}/etc
# Now copy all the stuff installed in a new folder (/tmp/fakeroot/)
RUN \
mkdir -p /tmp/fakeroot/bin && \
- for bin in ${PREFIX}/bin/ffmpeg ${PREFIX}/bin/lms; \
+ for bin in ${PREFIX}/bin/ffmpeg ${PREFIX}/bin/lms*; \
do \
strip --strip-all $bin && \
cp $bin /tmp/fakeroot/bin/; \
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 00000000..c796f0e9
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,11 @@
+add_compile_options(-Wall -Wextra -pedantic)
+
+add_subdirectory(libs)
+add_subdirectory(lms)
+add_subdirectory(tools)
+
+if(BUILD_TESTING)
+ add_subdirectory(test)
+endif()
+
+
diff --git a/src/Makefile.am b/src/Makefile.am
deleted file mode 100644
index 4fd65f58..00000000
--- a/src/Makefile.am
+++ /dev/null
@@ -1,172 +0,0 @@
-bin_PROGRAMS = lms
-
-lms_SOURCES = \
- $(srcdir)/api/subsonic/SubsonicId.cpp \
- $(srcdir)/api/subsonic/SubsonicId.hpp \
- $(srcdir)/api/subsonic/SubsonicResource.cpp \
- $(srcdir)/api/subsonic/SubsonicResource.hpp \
- $(srcdir)/api/subsonic/SubsonicResponse.cpp \
- $(srcdir)/api/subsonic/SubsonicResponse.hpp \
- $(srcdir)/auth/AuthTokenService.cpp \
- $(srcdir)/auth/AuthTokenService.hpp \
- $(srcdir)/auth/PasswordService.cpp \
- $(srcdir)/auth/PasswordService.hpp \
- $(srcdir)/auth/LoginThrottler.cpp \
- $(srcdir)/auth/LoginThrottler.hpp \
- $(srcdir)/av/AvInfo.cpp \
- $(srcdir)/av/AvInfo.hpp \
- $(srcdir)/av/AvTranscoder.cpp \
- $(srcdir)/av/AvTranscoder.hpp \
- $(srcdir)/av/AvTypes.cpp \
- $(srcdir)/av/AvTypes.hpp \
- $(srcdir)/cover/CoverArtGrabber.cpp \
- $(srcdir)/cover/CoverArtGrabber.hpp \
- $(srcdir)/database/Artist.cpp \
- $(srcdir)/database/Artist.hpp \
- $(srcdir)/database/Cluster.cpp \
- $(srcdir)/database/Cluster.hpp \
- $(srcdir)/database/Db.cpp \
- $(srcdir)/database/Db.hpp \
- $(srcdir)/database/TrackArtistLink.cpp \
- $(srcdir)/database/TrackArtistLink.hpp \
- $(srcdir)/database/TrackFeatures.cpp \
- $(srcdir)/database/TrackFeatures.hpp \
- $(srcdir)/database/TrackList.cpp \
- $(srcdir)/database/TrackList.hpp \
- $(srcdir)/database/Types.hpp \
- $(srcdir)/database/Release.cpp \
- $(srcdir)/database/Release.hpp \
- $(srcdir)/database/ScanSettings.cpp \
- $(srcdir)/database/ScanSettings.hpp \
- $(srcdir)/database/Session.cpp \
- $(srcdir)/database/Session.hpp \
- $(srcdir)/database/SessionPool.cpp \
- $(srcdir)/database/SessionPool.hpp \
- $(srcdir)/database/SqlQuery.cpp \
- $(srcdir)/database/SqlQuery.hpp \
- $(srcdir)/database/Track.cpp \
- $(srcdir)/database/Track.hpp \
- $(srcdir)/database/TrackBookmark.cpp \
- $(srcdir)/database/TrackBookmark.hpp \
- $(srcdir)/database/User.cpp \
- $(srcdir)/database/User.hpp \
- $(srcdir)/image/Image.cpp \
- $(srcdir)/image/Image.hpp \
- $(srcdir)/main/main.cpp \
- $(srcdir)/metadata/AvFormat.cpp \
- $(srcdir)/metadata/AvFormat.hpp \
- $(srcdir)/metadata/MetaData.hpp \
- $(srcdir)/metadata/TagLibParser.cpp \
- $(srcdir)/metadata/TagLibParser.hpp \
- $(srcdir)/scanner/MediaScanner.cpp \
- $(srcdir)/scanner/MediaScanner.hpp \
- $(srcdir)/scanner/MediaScannerStats.cpp \
- $(srcdir)/scanner/MediaScannerStats.hpp \
- $(srcdir)/scanner/MediaScannerAddon.hpp \
- $(srcdir)/similarity/SimilaritySearcher.cpp \
- $(srcdir)/similarity/SimilaritySearcher.hpp \
- $(srcdir)/similarity/cluster/SimilarityClusterSearcher.cpp \
- $(srcdir)/similarity/cluster/SimilarityClusterSearcher.hpp \
- $(srcdir)/similarity/features/AcousticBrainzUtils.cpp \
- $(srcdir)/similarity/features/AcousticBrainzUtils.hpp \
- $(srcdir)/similarity/features/SimilarityFeaturesCache.cpp \
- $(srcdir)/similarity/features/SimilarityFeaturesCache.hpp \
- $(srcdir)/similarity/features/SimilarityFeaturesDefs.cpp \
- $(srcdir)/similarity/features/SimilarityFeaturesDefs.hpp \
- $(srcdir)/similarity/features/SimilarityFeaturesScannerAddon.cpp \
- $(srcdir)/similarity/features/SimilarityFeaturesScannerAddon.hpp \
- $(srcdir)/similarity/features/SimilarityFeaturesSearcher.cpp \
- $(srcdir)/similarity/features/SimilarityFeaturesSearcher.hpp \
- $(srcdir)/similarity/features/som/DataNormalizer.cpp \
- $(srcdir)/similarity/features/som/DataNormalizer.hpp \
- $(srcdir)/similarity/features/som/InputVector.hpp \
- $(srcdir)/similarity/features/som/Matrix.hpp \
- $(srcdir)/similarity/features/som/Network.cpp \
- $(srcdir)/similarity/features/som/Network.hpp \
- $(srcdir)/ui/Auth.cpp \
- $(srcdir)/ui/Auth.hpp \
- $(srcdir)/ui/LmsApplication.cpp \
- $(srcdir)/ui/LmsApplication.hpp \
- $(srcdir)/ui/LmsApplicationException.hpp \
- $(srcdir)/ui/LmsApplicationGroup.cpp \
- $(srcdir)/ui/LmsApplicationGroup.hpp \
- $(srcdir)/ui/MediaPlayer.cpp \
- $(srcdir)/ui/MediaPlayer.hpp \
- $(srcdir)/ui/PlayQueueView.cpp \
- $(srcdir)/ui/PlayQueueView.hpp \
- $(srcdir)/ui/PlayHistoryView.cpp \
- $(srcdir)/ui/PlayHistoryView.hpp \
- $(srcdir)/ui/SettingsView.cpp \
- $(srcdir)/ui/SettingsView.hpp \
- $(srcdir)/ui/TrackStringUtils.cpp \
- $(srcdir)/ui/TrackStringUtils.hpp \
- $(srcdir)/ui/admin/DatabaseSettingsView.cpp \
- $(srcdir)/ui/admin/DatabaseSettingsView.hpp \
- $(srcdir)/ui/admin/DatabaseStatus.cpp \
- $(srcdir)/ui/admin/DatabaseStatus.hpp \
- $(srcdir)/ui/admin/InitWizardView.cpp \
- $(srcdir)/ui/admin/InitWizardView.hpp \
- $(srcdir)/ui/admin/UserView.cpp \
- $(srcdir)/ui/admin/UserView.hpp \
- $(srcdir)/ui/admin/UsersView.cpp \
- $(srcdir)/ui/admin/UsersView.hpp \
- $(srcdir)/ui/common/Validators.cpp \
- $(srcdir)/ui/common/Validators.hpp \
- $(srcdir)/ui/common/ValueStringModel.hpp \
- $(srcdir)/ui/explore/ArtistInfoView.cpp \
- $(srcdir)/ui/explore/ArtistInfoView.hpp \
- $(srcdir)/ui/explore/ArtistLink.cpp \
- $(srcdir)/ui/explore/ArtistLink.hpp \
- $(srcdir)/ui/explore/ArtistsInfoView.cpp \
- $(srcdir)/ui/explore/ArtistsInfoView.hpp \
- $(srcdir)/ui/explore/ArtistView.cpp \
- $(srcdir)/ui/explore/ArtistView.hpp \
- $(srcdir)/ui/explore/ArtistsView.cpp \
- $(srcdir)/ui/explore/ArtistsView.hpp \
- $(srcdir)/ui/explore/Explore.cpp \
- $(srcdir)/ui/explore/Explore.hpp \
- $(srcdir)/ui/explore/Filters.cpp \
- $(srcdir)/ui/explore/Filters.hpp \
- $(srcdir)/ui/explore/ReleaseInfoView.cpp \
- $(srcdir)/ui/explore/ReleaseInfoView.hpp \
- $(srcdir)/ui/explore/ReleaseLink.cpp \
- $(srcdir)/ui/explore/ReleaseLink.hpp \
- $(srcdir)/ui/explore/ReleasesInfoView.cpp \
- $(srcdir)/ui/explore/ReleasesInfoView.hpp \
- $(srcdir)/ui/explore/ReleasesView.cpp \
- $(srcdir)/ui/explore/ReleasesView.hpp \
- $(srcdir)/ui/explore/ReleaseView.cpp \
- $(srcdir)/ui/explore/ReleaseView.hpp \
- $(srcdir)/ui/explore/TracksInfoView.cpp \
- $(srcdir)/ui/explore/TracksInfoView.hpp \
- $(srcdir)/ui/explore/TracksView.cpp \
- $(srcdir)/ui/explore/TracksView.hpp \
- $(srcdir)/ui/resource/ImageResource.cpp \
- $(srcdir)/ui/resource/ImageResource.hpp \
- $(srcdir)/ui/resource/AudioResource.cpp \
- $(srcdir)/ui/resource/AudioResource.hpp \
- $(srcdir)/utils/Config.cpp \
- $(srcdir)/utils/Config.hpp \
- $(srcdir)/utils/Exception.hpp \
- $(srcdir)/utils/Logger.cpp \
- $(srcdir)/utils/Logger.hpp \
- $(srcdir)/utils/NetAddress.cpp \
- $(srcdir)/utils/NetAddress.hpp \
- $(srcdir)/utils/Path.cpp \
- $(srcdir)/utils/Path.hpp \
- $(srcdir)/utils/Random.cpp \
- $(srcdir)/utils/Random.hpp \
- $(srcdir)/utils/Service.hpp \
- $(srcdir)/utils/StreamLogger.cpp \
- $(srcdir)/utils/StreamLogger.hpp \
- $(srcdir)/utils/String.cpp \
- $(srcdir)/utils/String.hpp \
- $(srcdir)/utils/Utils.hpp \
- $(srcdir)/utils/UUID.cpp \
- $(srcdir)/utils/UUID.hpp \
- $(srcdir)/utils/WtLogger.cpp \
- $(srcdir)/utils/WtLogger.hpp
-
-lms_CXXFLAGS=-std=c++17 -I$(srcdir)/ui $(MAGICKXX_CFLAGS) -D_REENTRANT
-lms_LDADD=$(MAGICKXX_LIBS)
-
diff --git a/src/config/.empty b/src/config/.empty
deleted file mode 100644
index e69de29b..00000000
diff --git a/src/cover/CoverArtGrabber.hpp b/src/cover/CoverArtGrabber.hpp
deleted file mode 100644
index 07b4cc32..00000000
--- a/src/cover/CoverArtGrabber.hpp
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2015 Emeric Poupon
- *
- * This file is part of LMS.
- *
- * LMS 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 3 of the License, or
- * (at your option) any later version.
- *
- * LMS 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 LMS. If not, see
.
- */
-
-#pragma once
-
-#include
-#include