|
@@ -5,9 +5,14 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/")
|
|
|
set(CPACK_PACKAGE_VERSION_MAJOR "1")
|
|
|
set(CPACK_PACKAGE_VERSION_MINOR "2")
|
|
|
set(CPACK_PACKAGE_VERSION_PATCH "3")
|
|
|
+if(CMAKE_BUILD_TYPE MATCHES RELEASE)
|
|
|
+ set(ASSETS_PATH "${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}/htdocs")
|
|
|
+else()
|
|
|
+ set(ASSETS_PATH "${PROJECT_SOURCE_DIR}/htdocs")
|
|
|
+endif()
|
|
|
|
|
|
option(WITH_MPD_HOST_CHANGE "Let users of the web frontend change the MPD Host" ON)
|
|
|
-option(WITH_DYNAMIC_SERVING "Serve file of ./htdocs dynamically (development)" OFF)
|
|
|
+option(WITH_DYNAMIC_ASSETS "Serve assets dynamically (e.g for development/packaging)" OFF)
|
|
|
option(WITH_IPV6 "enable IPv6 support" ON)
|
|
|
|
|
|
find_package(LibMPDClient REQUIRED)
|
|
@@ -18,46 +23,50 @@ include_directories(${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR})
|
|
|
|
|
|
include(CheckCSourceCompiles)
|
|
|
|
|
|
-set(CMAKE_C_FLAGS "-std=gnu99 -Wall")
|
|
|
+set(CMAKE_C_FLAGS "-std=gnu99 -Wall")
|
|
|
set(CMAKE_C_FLAGS_DEBUG "-ggdb -pedantic")
|
|
|
if(WITH_IPV6)
|
|
|
- set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS NS_ENABLE_IPV6)
|
|
|
+ set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS NS_ENABLE_IPV6)
|
|
|
endif()
|
|
|
|
|
|
file(GLOB RESOURCES
|
|
|
- RELATIVE ${PROJECT_SOURCE_DIR}
|
|
|
- htdocs/js/*
|
|
|
- htdocs/assets/*
|
|
|
- htdocs/css/*.min.css
|
|
|
- htdocs/fonts/*
|
|
|
- htdocs/index.html
|
|
|
-)
|
|
|
-
|
|
|
-if(CMAKE_CROSSCOMPILING)
|
|
|
- set(MKDATA_EXE ${PROJECT_SOURCE_DIR}/htdocs/mkdata.pl)
|
|
|
-else()
|
|
|
- set(MKDATA_EXE $<TARGET_FILE:mkdata>)
|
|
|
- set(MKDATA_TARGET mkdata)
|
|
|
- add_executable(mkdata htdocs/mkdata.c)
|
|
|
-endif()
|
|
|
-
|
|
|
-add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/assets.c
|
|
|
- COMMAND ${MKDATA_EXE} ${RESOURCES} > ${PROJECT_BINARY_DIR}/assets.c
|
|
|
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
|
- DEPENDS ${RESOURCES} ${MKDATA_TARGET}
|
|
|
+ RELATIVE ${PROJECT_SOURCE_DIR}
|
|
|
+ htdocs/js/*
|
|
|
+ htdocs/assets/*
|
|
|
+ htdocs/css/*.min.css
|
|
|
+ htdocs/fonts/*
|
|
|
+ htdocs/index.html
|
|
|
)
|
|
|
|
|
|
set(SOURCES
|
|
|
src/ympd.c
|
|
|
- src/http_server.c
|
|
|
src/mpd_client.c
|
|
|
src/mongoose.c
|
|
|
src/json_encode.c
|
|
|
- assets.c
|
|
|
)
|
|
|
|
|
|
+if(NOT WITH_DYNAMIC_ASSETS)
|
|
|
+ if(CMAKE_CROSSCOMPILING)
|
|
|
+ set(MKDATA_EXE ${PROJECT_SOURCE_DIR}/tools/mkdata.pl)
|
|
|
+ else()
|
|
|
+ set(MKDATA_EXE $<TARGET_FILE:mkdata>)
|
|
|
+ set(MKDATA_TARGET mkdata)
|
|
|
+ add_executable(mkdata tools/mkdata.c)
|
|
|
+ endif()
|
|
|
+
|
|
|
+ add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/assets.c
|
|
|
+ COMMAND ${MKDATA_EXE} ${RESOURCES} > ${PROJECT_BINARY_DIR}/assets.c
|
|
|
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
|
+ DEPENDS ${RESOURCES} ${MKDATA_TARGET}
|
|
|
+ )
|
|
|
+ list(APPEND SOURCES src/http_server.c assets.c)
|
|
|
+endif()
|
|
|
+
|
|
|
add_executable(ympd ${SOURCES})
|
|
|
target_link_libraries(ympd ${LIBMPDCLIENT_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
|
|
|
|
|
|
install(TARGETS ympd DESTINATION bin)
|
|
|
install(FILES ympd.1 DESTINATION ${CMAKE_INSTALL_PREFIX}/share/man/man1)
|
|
|
+if(WITH_DYNAMIC_ASSETS)
|
|
|
+ install(DIRECTORY htdocs DESTINATION share/${PROJECT_NAME})
|
|
|
+endif()
|