--- /dev/null	2018-02-07 16:00:11.607220700 +0100
+++ b/lib/libUPnP/CMakeLists.txt	2018-02-12 11:03:15.002174234 +0100
@@ -0,0 +1,129 @@
+set(SOURCES Platinum/Source/Core/PltAction.cpp
+            Platinum/Source/Core/PltArgument.cpp
+            Platinum/Source/Core/PltConstants.cpp
+            Platinum/Source/Core/PltCtrlPoint.cpp
+            Platinum/Source/Core/PltCtrlPointTask.cpp
+            Platinum/Source/Core/PltDatagramStream.cpp
+            Platinum/Source/Core/PltDeviceData.cpp
+            Platinum/Source/Core/PltDeviceHost.cpp
+            Platinum/Source/Core/PltEvent.cpp
+            Platinum/Source/Core/PltHttp.cpp
+            Platinum/Source/Core/PltHttpClientTask.cpp
+            Platinum/Source/Core/PltHttpServer.cpp
+            Platinum/Source/Core/PltHttpServerTask.cpp
+            Platinum/Source/Core/PltIconsData.cpp
+            Platinum/Source/Core/PltMimeType.cpp
+            Platinum/Source/Core/PltProtocolInfo.cpp
+            Platinum/Source/Core/PltService.cpp
+            Platinum/Source/Core/PltSsdp.cpp
+            Platinum/Source/Core/PltStateVariable.cpp
+            Platinum/Source/Core/PltTaskManager.cpp
+            Platinum/Source/Core/PltThreadTask.cpp
+            Platinum/Source/Core/PltUPnP.cpp
+            Platinum/Source/Devices/MediaServer/PltDidl.cpp
+            Platinum/Source/Devices/MediaServer/PltFileMediaServer.cpp
+            Platinum/Source/Devices/MediaServer/PltMediaBrowser.cpp
+            Platinum/Source/Devices/MediaServer/PltMediaCache.cpp
+            Platinum/Source/Devices/MediaServer/PltMediaItem.cpp
+            Platinum/Source/Devices/MediaServer/PltMediaServer.cpp
+            Platinum/Source/Devices/MediaServer/ConnectionManagerSCPD.cpp
+            Platinum/Source/Devices/MediaServer/ContentDirectorySCPD.cpp
+            Platinum/Source/Devices/MediaServer/ContentDirectorywSearchSCPD.cpp
+            Platinum/Source/Devices/MediaServer/PltSyncMediaBrowser.cpp
+            Neptune/Source/Core/Neptune.cpp
+            Neptune/Source/Core/NptAutomaticCleaner.cpp
+            Neptune/Source/Core/NptBase64.cpp
+            Neptune/Source/Core/NptBufferedStreams.cpp
+            Neptune/Source/Core/NptCommon.cpp
+            Neptune/Source/Core/NptDataBuffer.cpp
+            Neptune/Source/Core/NptDebug.cpp
+            Neptune/Source/Core/NptFile.cpp
+            Neptune/Source/Core/NptHash.cpp
+            Neptune/Source/Core/NptHttp.cpp
+            Neptune/Source/Core/NptList.cpp
+            Neptune/Source/Core/NptLogging.cpp
+            Neptune/Source/Core/NptMessaging.cpp
+            Neptune/Source/Core/NptNetwork.cpp
+            Neptune/Source/Core/NptQueue.cpp
+            Neptune/Source/Core/NptResults.cpp
+            Neptune/Source/Core/NptRingBuffer.cpp
+            Neptune/Source/Core/NptSimpleMessageQueue.cpp
+            Neptune/Source/Core/NptSockets.cpp
+            Neptune/Source/Core/NptStreams.cpp
+            Neptune/Source/Core/NptStrings.cpp
+            Neptune/Source/Core/NptSystem.cpp
+            Neptune/Source/Core/NptThreads.cpp
+            Neptune/Source/Core/NptTime.cpp
+            Neptune/Source/Core/NptTls.cpp
+            Neptune/Source/Core/NptUri.cpp
+            Neptune/Source/Core/NptUtils.cpp
+            Neptune/Source/Core/NptXml.cpp
+            Neptune/Source/System/Bsd/NptBsdResolver.cpp
+            Neptune/Source/System/Bsd/NptBsdSockets.cpp
+            Neptune/Source/System/StdC/NptStdcDebug.cpp
+            Neptune/Source/System/StdC/NptStdcEnvironment.cpp
+            Platinum/Source/Devices/MediaRenderer/PltMediaRenderer.cpp
+            Platinum/Source/Devices/MediaRenderer/PltMediaController.cpp
+            Platinum/Source/Devices/MediaRenderer/AVTransportSCPD.cpp
+            Platinum/Source/Devices/MediaRenderer/RdrConnectionManagerSCPD.cpp
+            Platinum/Source/Devices/MediaRenderer/RenderingControlSCPD.cpp
+            Platinum/Source/Devices/MediaConnect/X_MS_MediaReceiverRegistrarSCPD.cpp
+            Platinum/Source/Devices/MediaConnect/PltMediaConnect.cpp
+            Neptune/Source/System/Posix/NptPosixEnvironment.cpp)
+
+if(NOT CORE_SYSTEM_NAME STREQUAL windows AND NOT CORE_SYSTEM_NAME STREQUAL windowsstore)
+  list(APPEND SOURCES Neptune/Source/System/Posix/NptPosixSystem.cpp
+                      Neptune/Source/System/Posix/NptSelectableMessageQueue.cpp
+                      Neptune/Source/System/Posix/NptPosixQueue.cpp
+                      Neptune/Source/System/Posix/NptPosixThreads.cpp
+                      Neptune/Source/System/Posix/NptPosixTime.cpp
+                      Neptune/Source/System/Bsd/NptBsdNetwork.cpp)
+  if(APPLE)
+    list(APPEND SOURCES Neptune/Source/System/Apple/NptAppleAutoreleasePool.mm)
+  else()
+    list(APPEND SOURCES Neptune/Source/System/Null/NptNullAutoreleasePool.cpp)
+  endif()
+else()
+  list(APPEND SOURCES Neptune/Source/System/Win32/NptWin32Console.cpp
+                      Neptune/Source/System/Win32/NptWin32Debug.cpp
+                      Neptune/Source/System/Win32/NptWin32DynamicLibraries.cpp
+                      Neptune/Source/System/Win32/NptWin32MessageQueue.cpp
+                      Neptune/Source/System/Win32/NptWin32Network.cpp
+                      Neptune/Source/System/Win32/NptWin32Queue.cpp
+                      Neptune/Source/System/Win32/NptWin32SerialPort.cpp
+                      Neptune/Source/System/Win32/NptWin32System.cpp
+                      Neptune/Source/System/Win32/NptWin32Threads.cpp
+                      Neptune/Source/System/Win32/NptWin32Time.cpp)
+endif()
+
+if(CORE_SYSTEM_NAME STREQUAL "freebsd")
+  list(APPEND SOURCES Neptune/Source/System/Bsd/NptBsdResolver.cpp
+                      Neptune/Source/System/Bsd/NptBsdSockets.cpp)
+endif()
+
+
+add_library(upnp STATIC ${SOURCES} ${HEADERS})
+target_compile_definitions(upnp PUBLIC -DNPT_CONFIG_ENABLE_LOGGING)
+if(CORE_SYSTEM_NAME STREQUAL "freebsd")
+  target_compile_definitions(upnp PUBLIC -DNPT_CONFIG_HAVE_GETADDRINFO)
+endif()
+
+target_include_directories(upnp PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
+                                       Platinum/Source/Core
+                                       Platinum/Source/Platinum
+                                       Platinum/Source/Devices/MediaConnect
+                                       Platinum/Source/Devices/MediaRenderer
+                                       Platinum/Source/Devices/MediaServer
+                                       Platinum/Source/Extras
+                                       Neptune/Source/Core
+                                       Neptune/Source/System/Posix)
+if(CORE_SYSTEM_NAME STREQUAL windows OR CORE_SYSTEM_NAME STREQUAL windowsstore)
+  target_include_directories(upnp PRIVATE Neptune/Source/System/Win32)
+endif()
+set_target_properties(upnp PROPERTIES FOLDER lib)
+source_group_by_folder(upnp)
+set(core_DEPENDS upnp ${core_DEPENDS} CACHE STRING "" FORCE)
+
+if(CORE_SYSTEM_NAME STREQUAL windowsstore)
+	set_target_properties(upnp PROPERTIES STATIC_LIBRARY_FLAGS "/ignore:4264")
+endif()
