diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7eef4529..c41adcdb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,8 +8,9 @@ set(CMAKE_CXX_STANDARD_REQUIRED True)
find_package(PkgConfig)
pkg_check_modules(IMAGEMAGICKXX REQUIRED ImageMagick++)
+enable_testing()
-SUBDIRS(src)
+add_subdirectory(src)
install(DIRECTORY approot DESTINATION share/lms)
install(DIRECTORY docroot DESTINATION share/lms)
diff --git a/src/libs/CMakeLists.txt b/src/libs/CMakeLists.txt
index 97b099a9..2619ec6e 100644
--- a/src/libs/CMakeLists.txt
+++ b/src/libs/CMakeLists.txt
@@ -5,6 +5,7 @@ add_subdirectory(cover)
add_subdirectory(database)
add_subdirectory(recommendation)
add_subdirectory(scanner)
+add_subdirectory(som)
add_subdirectory(subsonic)
add_subdirectory(utils)
diff --git a/src/libs/database/CMakeLists.txt b/src/libs/database/CMakeLists.txt
index 638fb2e2..aae05b4f 100644
--- a/src/libs/database/CMakeLists.txt
+++ b/src/libs/database/CMakeLists.txt
@@ -35,3 +35,4 @@ target_link_libraries(lmsdatabase PUBLIC
install(TARGETS lmsdatabase DESTINATION lib)
+add_subdirectory(test)
diff --git a/src/libs/database/test/CMakeLists.txt b/src/libs/database/test/CMakeLists.txt
new file mode 100644
index 00000000..ac42aa6b
--- /dev/null
+++ b/src/libs/database/test/CMakeLists.txt
@@ -0,0 +1,11 @@
+
+add_executable(test-database
+ DatabaseTest.cpp
+ )
+
+target_link_libraries(test-database PRIVATE
+ lmsdatabase
+ )
+
+add_test(NAME database COMMAND test-database)
+
diff --git a/test/database/DatabaseTest.cpp b/src/libs/database/test/DatabaseTest.cpp
similarity index 100%
rename from test/database/DatabaseTest.cpp
rename to src/libs/database/test/DatabaseTest.cpp
diff --git a/src/libs/recommendation/CMakeLists.txt b/src/libs/recommendation/CMakeLists.txt
index c83ee6aa..cdcf20bd 100644
--- a/src/libs/recommendation/CMakeLists.txt
+++ b/src/libs/recommendation/CMakeLists.txt
@@ -2,8 +2,6 @@
add_library(lmsrecommendation SHARED
impl/Engine.cpp
impl/ProviderCreator.cpp
- impl/features/som/DataNormalizer.cpp
- impl/features/som/Network.cpp
)
target_include_directories(lmsrecommendation INTERFACE
@@ -16,9 +14,7 @@ target_include_directories(lmsrecommendation PRIVATE
target_link_libraries(lmsrecommendation PRIVATE
lmsdatabase
- )
-
-target_link_libraries(lmsrecommendation PUBLIC
+ lmssom
)
install(TARGETS lmsrecommendation DESTINATION lib)
diff --git a/src/libs/som/CMakeLists.txt b/src/libs/som/CMakeLists.txt
new file mode 100644
index 00000000..2d7ca9ef
--- /dev/null
+++ b/src/libs/som/CMakeLists.txt
@@ -0,0 +1,19 @@
+
+add_library(lmssom STATIC
+ impl/DataNormalizer.cpp
+ impl/Network.cpp
+ )
+
+target_include_directories(lmssom INTERFACE
+ include
+ )
+
+target_include_directories(lmssom PRIVATE
+ include
+ )
+
+target_link_libraries(lmssom PUBLIC
+ lmsutils
+ )
+
+add_subdirectory(test)
diff --git a/src/libs/recommendation/impl/features/som/DataNormalizer.cpp b/src/libs/som/impl/DataNormalizer.cpp
similarity index 98%
rename from src/libs/recommendation/impl/features/som/DataNormalizer.cpp
rename to src/libs/som/impl/DataNormalizer.cpp
index d6498fcf..a4c39351 100644
--- a/src/libs/recommendation/impl/features/som/DataNormalizer.cpp
+++ b/src/libs/som/impl/DataNormalizer.cpp
@@ -17,7 +17,7 @@
* along with LMS. If not, see .
*/
-#include "DataNormalizer.hpp"
+#include "som/DataNormalizer.hpp"
#include
#include
diff --git a/src/libs/recommendation/impl/features/som/Network.cpp b/src/libs/som/impl/Network.cpp
similarity index 99%
rename from src/libs/recommendation/impl/features/som/Network.cpp
rename to src/libs/som/impl/Network.cpp
index 0431c966..deea6f7b 100644
--- a/src/libs/recommendation/impl/features/som/Network.cpp
+++ b/src/libs/som/impl/Network.cpp
@@ -17,7 +17,7 @@
* along with LMS. If not, see .
*/
-#include "Network.hpp"
+#include "som/Network.hpp"
#include
#include
diff --git a/src/libs/recommendation/impl/features/som/DataNormalizer.hpp b/src/libs/som/include/som/DataNormalizer.hpp
similarity index 100%
rename from src/libs/recommendation/impl/features/som/DataNormalizer.hpp
rename to src/libs/som/include/som/DataNormalizer.hpp
diff --git a/src/libs/recommendation/impl/features/som/InputVector.hpp b/src/libs/som/include/som/InputVector.hpp
similarity index 99%
rename from src/libs/recommendation/impl/features/som/InputVector.hpp
rename to src/libs/som/include/som/InputVector.hpp
index 68d5834e..058e0fee 100644
--- a/src/libs/recommendation/impl/features/som/InputVector.hpp
+++ b/src/libs/som/include/som/InputVector.hpp
@@ -23,6 +23,8 @@
#include
#include
+#include "utils/Exception.hpp"
+
namespace SOM
{
diff --git a/src/libs/recommendation/impl/features/som/Matrix.hpp b/src/libs/som/include/som/Matrix.hpp
similarity index 100%
rename from src/libs/recommendation/impl/features/som/Matrix.hpp
rename to src/libs/som/include/som/Matrix.hpp
diff --git a/src/libs/recommendation/impl/features/som/Network.hpp b/src/libs/som/include/som/Network.hpp
similarity index 99%
rename from src/libs/recommendation/impl/features/som/Network.hpp
rename to src/libs/som/include/som/Network.hpp
index cf64a83c..cf04cf72 100644
--- a/src/libs/recommendation/impl/features/som/Network.hpp
+++ b/src/libs/som/include/som/Network.hpp
@@ -25,7 +25,6 @@
#include
#include
-#include "utils/Exception.hpp"
#include "InputVector.hpp"
#include "Matrix.hpp"
diff --git a/src/libs/som/test/CMakeLists.txt b/src/libs/som/test/CMakeLists.txt
new file mode 100644
index 00000000..aaaf43d4
--- /dev/null
+++ b/src/libs/som/test/CMakeLists.txt
@@ -0,0 +1,11 @@
+
+add_executable(test-som
+ SomTest.cpp
+ )
+
+target_link_libraries(test-som PRIVATE
+ lmssom
+ )
+
+add_test(NAME som COMMAND test-som)
+
diff --git a/test/som/SomTest.cpp b/src/libs/som/test/SomTest.cpp
similarity index 98%
rename from test/som/SomTest.cpp
rename to src/libs/som/test/SomTest.cpp
index 70aad7a1..6f4edb37 100644
--- a/test/som/SomTest.cpp
+++ b/src/libs/som/test/SomTest.cpp
@@ -21,8 +21,8 @@
#include
#include
-#include "DataNormalizer.hpp"
-#include "Network.hpp"
+#include "som/DataNormalizer.hpp"
+#include "som/Network.hpp"
using namespace SOM;
diff --git a/src/libs/utils/CMakeLists.txt b/src/libs/utils/CMakeLists.txt
index ba5c5f01..c468be2f 100644
--- a/src/libs/utils/CMakeLists.txt
+++ b/src/libs/utils/CMakeLists.txt
@@ -24,7 +24,9 @@ target_link_libraries(lmsutils PRIVATE
)
target_link_libraries(lmsutils PUBLIC
+ boost_system
stdc++fs
+ wt
)
install(TARGETS lmsutils DESTINATION lib)