Browse Source

release build now installs assets to prefix

if build with dynamic assets
Andrew Karpow 9 years ago
parent
commit
e6e93a08c7
5 changed files with 38 additions and 29 deletions
  1. 34 25
      CMakeLists.txt
  2. 2 2
      src/config.h.in
  3. 2 2
      src/ympd.c
  4. 0 0
      tools/mkdata.c
  5. 0 0
      tools/mkdata.pl

+ 34 - 25
CMakeLists.txt

@@ -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()

+ 2 - 2
src/config.h.in

@@ -22,8 +22,8 @@
 #define YMPD_VERSION_MAJOR ${CPACK_PACKAGE_VERSION_MAJOR}
 #define YMPD_VERSION_MINOR ${CPACK_PACKAGE_VERSION_MINOR}
 #define YMPD_VERSION_PATCH ${CPACK_PACKAGE_VERSION_PATCH}
-#define SRC_PATH "${PROJECT_SOURCE_DIR}/htdocs"
+#define SRC_PATH "${ASSETS_PATH}"
 #cmakedefine WITH_MPD_HOST_CHANGE
-#cmakedefine WITH_DYNAMIC_SERVING
+#cmakedefine WITH_DYNAMIC_ASSETS
 #endif
 

+ 2 - 2
src/ympd.c

@@ -51,7 +51,7 @@ static int server_callback(struct mg_connection *c, enum mg_event ev) {
                 else
                     return MG_TRUE;
             } else
-#ifdef WITH_DYNAMIC_SERVING
+#ifdef WITH_DYNAMIC_ASSETS
                 return MG_FALSE;
 #else
                 return callback_http(c);
@@ -73,7 +73,7 @@ int main(int argc, char **argv)
 
     atexit(bye);
     error_msg = mg_set_option(server, "listening_port", "8080");
-#ifdef WITH_DYNAMIC_SERVING
+#ifdef WITH_DYNAMIC_ASSETS
     mg_set_option(server, "document_root", SRC_PATH);
 #endif
 

+ 0 - 0
htdocs/mkdata.c → tools/mkdata.c


+ 0 - 0
htdocs/mkdata.pl → tools/mkdata.pl