12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- cmake_minimum_required(VERSION 2.6)
- project (ympd C)
- 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_ASSETS "Serve assets dynamically (e.g for development/packaging)" OFF)
- option(WITH_IPV6 "enable IPv6 support" ON)
- option(WITH_SSL "enable SSL support" ON)
- find_package(LibMPDClient REQUIRED)
- find_package(Threads REQUIRED)
- configure_file(src/config.h.in ${PROJECT_BINARY_DIR}/config.h)
- include_directories(${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR} ${LIBMPDCLIENT_INCLUDE_DIR})
- include(CheckCSourceCompiles)
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99 -Wall")
- set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ggdb -pedantic")
- if(WITH_IPV6)
- set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS NS_ENABLE_IPV6)
- endif()
- if(WITH_SSL)
- find_package(OpenSSL REQUIRED)
- include_directories(${OPENSSL_INCLUDE_DIR})
- # list(APPEND LIB_LIST ${OPENSSL_LIBRARIES})
- set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS NS_ENABLE_SSL)
- endif()
- file(GLOB RESOURCES
- RELATIVE ${PROJECT_SOURCE_DIR}
- htdocs/js/*
- htdocs/assets/*
- htdocs/css/*.css
- htdocs/fonts/*
- htdocs/index.html
- )
- set(SOURCES
- src/ympd.c
- src/mpd_client.c
- src/mongoose.c
- src/json_encode.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} ${OPENSSL_LIBRARIES})
- 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()
|