diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6561fc8d..414598e2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,7 +12,7 @@ endif(COMMAND cmake_policy)
SET(SOURCE_DIR ${PROJECT_SOURCE_DIR})
SET(BINARY_DIR ${PROJECT_BINARY_DIR})
include_directories(${SOURCE_DIR})
-include_directories(${BINARY_DIR})
+include_directories(${BINARY_DIR} ${BINARY_DIR}/generated)
########################################
# Testing - Enable Tests #
@@ -68,9 +68,11 @@ endif()
if (NOT DEFINED NOSHM )
add_definitions(-DSHM_ENABLED=1)
endif()
+
if (DEFINED BIGMETA )
add_definitions(-DBIGMETA=1)
endif()
+
########################################
# Build Variables - Thread Names #
########################################
@@ -163,7 +165,6 @@ set(libSources
${SOURCE_DIR}/lib/util.cpp
${SOURCE_DIR}/lib/vorbis.cpp
)
-
########################################
# MistLib - Build #
########################################
@@ -225,15 +226,26 @@ makeAnalyser(RAX rax)
# MistServer - Inputs #
########################################
macro(makeInput inputName format)
+ if (";${ARGN};" MATCHES ";folder;")
+ set(mainScript src/input/mist_in_folder.cpp)
+ else()
+ set(mainScript src/input/mist_in.cpp)
+ endif()
add_executable(MistIn${inputName}
- src/input/mist_in.cpp
+ ${mainScript}
src/input/input.cpp
src/input/input_${format}.cpp
src/io.cpp
)
+
+ #Set compile definitions
+ unset(my_definitions)
+ list(APPEND my_definitions "INPUTTYPE=\"input_${format}.h\"")
+
set_target_properties(MistIn${inputName}
- PROPERTIES COMPILE_DEFINITIONS INPUTTYPE=\"input_${format}.h\"
+ PROPERTIES COMPILE_DEFINITIONS "${my_definitions}"
)
+
target_link_libraries(MistIn${inputName}
mist
)
@@ -296,22 +308,31 @@ makeOutput(JSON json http)
makeOutput(TS ts ts)
makeOutput(HTTPTS httpts http ts)
makeOutput(HLS hls http ts)
+
add_executable(MistOutHTTP
src/output/mist_out.cpp
src/output/output.cpp
src/output/output_http.cpp
src/output/output_http_internal.cpp
src/io.cpp
+ generated/silverlight.js.h
+ generated/embed.js.h
+ generated/html5.js.h
+ generated/flash_strobe.js.h
+ generated/theoplayer.js.h
+ generated/jwplayer.js.h
+ generated/polytrope.js.h
+ generated/dashjs.js.h
+ generated/videojs.js.h
+ generated/playerdash.js.h
+ generated/playervideo.js.h
+ generated/core.js.h
+ generated/mist.css.h
)
set_target_properties(MistOutHTTP
PROPERTIES COMPILE_DEFINITIONS "OUTPUTTYPE=\"output_http_internal.h\""
)
-add_dependencies(MistOutHTTP
- embedcode
-)
-target_link_libraries(MistOutHTTP
- mist
-)
+target_link_libraries(MistOutHTTP mist)
install(
TARGETS MistOutHTTP
DESTINATION bin
@@ -336,39 +357,87 @@ endif(DOXYGEN_FOUND)
########################################
# Sourcery #
########################################
-if (EXISTS "${SOURCE_DIR}/sourcery")
- if (EXISTS "${BINARY_DIR}/sourcery")
- add_custom_target(sourcery )
- else()
- add_custom_target(sourcery
- COMMAND cp ${SOURCE_DIR}/sourcery ${BINARY_DIR}/sourcery
- )
- endif()
+#If cross compiling, assume failure.
+if (CMAKE_CROSSCOMPILING)
+ set(RUNA "1")
else()
+ try_run(RUNA RUNB ${BINARY_DIR}/CMakeTmp ${SOURCE_DIR}/src/sourcery.cpp)
+endif()
+
+if("${RUNA}" EQUAL "0")
+ message("Not cross compiling - building sourcery")
add_executable(sourcery
src/sourcery.cpp
)
+else()
+ message("Detected cross compiling")
+ if (EXISTS "${SOURCE_DIR}/sourcery")
+ if (EXISTS "${BINARY_DIR}/sourcery")
+ add_custom_target(sourcery )
+ else()
+ add_custom_target(sourcery
+ COMMAND cp ${SOURCE_DIR}/sourcery ${BINARY_DIR}/sourcery
+ )
+ endif()
+ else()
+ message(FATAL_ERROR "Cross compiling and no usable sourcery binary found - please supply it")
+ endif()
endif()
########################################
# Embed Code #
########################################
-add_custom_target(embedcode
- COMMAND ./sourcery ${SOURCE_DIR}/src/embed.js embed_js ${BINARY_DIR}/embed.js.h
- COMMAND ./sourcery ${SOURCE_DIR}/embed/wrappers/html5.js html5_js ${BINARY_DIR}/html5.js.h
- COMMAND ./sourcery ${SOURCE_DIR}/embed/wrappers/flash_strobe.js flash_strobe_js ${BINARY_DIR}/flash_strobe.js.h
- COMMAND ./sourcery ${SOURCE_DIR}/embed/wrappers/silverlight.js silverlight_js ${BINARY_DIR}/silverlight.js.h
- COMMAND ./sourcery ${SOURCE_DIR}/embed/wrappers/theoplayer.js theoplayer_js ${BINARY_DIR}/theoplayer.js.h
- COMMAND ./sourcery ${SOURCE_DIR}/embed/wrappers/jwplayer.js jwplayer_js ${BINARY_DIR}/jwplayer.js.h
- COMMAND ./sourcery ${SOURCE_DIR}/embed/wrappers/polytrope.js polytrope_js ${BINARY_DIR}/polytrope.js.h
- COMMAND ./sourcery ${SOURCE_DIR}/embed/wrappers/dashjs.js dash_js ${BINARY_DIR}/dashjs.js.h
- COMMAND ./sourcery ${SOURCE_DIR}/embed/wrappers/videojs.js video_js ${BINARY_DIR}/videojs.js.h
- COMMAND ./sourcery ${SOURCE_DIR}/embed/players/dash.js playerdash_js ${BINARY_DIR}/playerdash.js.h
- COMMAND ./sourcery ${SOURCE_DIR}/embed/players/videojs.js playervideo_js ${BINARY_DIR}/playervideo.js.h
- COMMAND ./sourcery ${SOURCE_DIR}/embed/core.js core_js ${BINARY_DIR}/core.js.h
- COMMAND ./sourcery ${SOURCE_DIR}/embed/mist.css mist_css ${BINARY_DIR}/mist.css.h
- DEPENDS sourcery ${SOURCE_DIR}/src/embed.js ${SOURCE_DIR}/embed/wrappers/html5.js ${SOURCE_DIR}/embed/wrappers/flash_strobe.js ${SOURCE_DIR}/embed/wrappers/silverlight.js ${SOURCE_DIR}/embed/wrappers/theoplayer.js ${SOURCE_DIR}/embed/wrappers/jwplayer.js ${SOURCE_DIR}/embed/wrappers/polytrope.js ${SOURCE_DIR}/embed/wrappers/dashjs.js ${SOURCE_DIR}/embed/wrappers/videojs.js ${SOURCE_DIR}/embed/players/dash.js ${SOURCE_DIR}/embed/players/videojs.js ${SOURCE_DIR}/embed/core.js ${SOURCE_DIR}/embed/mist.css
- VERBATIM
+add_custom_command(OUTPUT generated/silverlight.js.h
+ COMMAND ./sourcery ${SOURCE_DIR}/embed/wrappers/silverlight.js silverlight_js generated/silverlight.js.h
+ DEPENDS sourcery ${SOURCE_DIR}/embed/wrappers/silverlight.js
+)
+add_custom_command(OUTPUT generated/embed.js.h
+ COMMAND ./sourcery ${SOURCE_DIR}/src/embed.js embed_js generated/embed.js.h
+ DEPENDS sourcery ${SOURCE_DIR}/src/embed.js
+)
+add_custom_command(OUTPUT generated/html5.js.h
+ COMMAND ./sourcery ${SOURCE_DIR}/embed/wrappers/html5.js html5_js generated/html5.js.h
+ DEPENDS sourcery ${SOURCE_DIR}/embed/wrappers/html5.js
+)
+add_custom_command(OUTPUT generated/flash_strobe.js.h
+ COMMAND ./sourcery ${SOURCE_DIR}/embed/wrappers/flash_strobe.js flash_strobe_js generated/flash_strobe.js.h
+ DEPENDS sourcery ${SOURCE_DIR}/embed/wrappers/flash_strobe.js
+)
+add_custom_command(OUTPUT generated/theoplayer.js.h
+ COMMAND ./sourcery ${SOURCE_DIR}/embed/wrappers/theoplayer.js theoplayer_js generated/theoplayer.js.h
+ DEPENDS sourcery ${SOURCE_DIR}/embed/wrappers/theoplayer.js
+)
+add_custom_command(OUTPUT generated/jwplayer.js.h
+ COMMAND ./sourcery ${SOURCE_DIR}/embed/wrappers/jwplayer.js jwplayer_js generated/jwplayer.js.h
+ DEPENDS sourcery ${SOURCE_DIR}/embed/wrappers/jwplayer.js
+)
+add_custom_command(OUTPUT generated/polytrope.js.h
+ COMMAND ./sourcery ${SOURCE_DIR}/embed/wrappers/polytrope.js polytrope_js generated/polytrope.js.h
+ DEPENDS sourcery ${SOURCE_DIR}/embed/wrappers/polytrope.js
+)
+add_custom_command(OUTPUT generated/dashjs.js.h
+ COMMAND ./sourcery ${SOURCE_DIR}/embed/wrappers/dashjs.js dash_js generated/dashjs.js.h
+ DEPENDS sourcery ${SOURCE_DIR}/embed/wrappers/dashjs.js
+)
+add_custom_command(OUTPUT generated/videojs.js.h
+ COMMAND ./sourcery ${SOURCE_DIR}/embed/wrappers/videojs.js video_js generated/videojs.js.h
+ DEPENDS sourcery ${SOURCE_DIR}/embed/wrappers/videojs.js
+)
+add_custom_command(OUTPUT generated/playerdash.js.h
+ COMMAND ./sourcery ${SOURCE_DIR}/embed/players/dash.js playerdash_js generated/playerdash.js.h
+ DEPENDS sourcery ${SOURCE_DIR}/embed/players/dash.js
+)
+add_custom_command(OUTPUT generated/playervideo.js.h
+ COMMAND ./sourcery ${SOURCE_DIR}/embed/players/videojs.js playervideo_js generated/playervideo.js.h
+ DEPENDS sourcery ${SOURCE_DIR}/embed/players/videojs.js
+)
+add_custom_command(OUTPUT generated/core.js.h
+ COMMAND ./sourcery ${SOURCE_DIR}/embed/core.js core_js generated/core.js.h
+ DEPENDS sourcery ${SOURCE_DIR}/embed/core.js
+)
+add_custom_command(OUTPUT generated/mist.css.h
+ COMMAND ./sourcery ${SOURCE_DIR}/embed/mist.css mist_css generated/mist.css.h
+ DEPENDS sourcery ${SOURCE_DIR}/embed/mist.css
)
########################################
@@ -381,23 +450,14 @@ set(lspSOURCES
${SOURCE_DIR}/lsp/plugins/jquery.qrcode.min.js
${SOURCE_DIR}/lsp/minified.js
)
-set(lspCode "")
-foreach (f ${lspSOURCES} )
- file (READ ${f} s)
- set (lspCode "${lspCode}${s}")
-endforeach()
-file(READ ${SOURCE_DIR}/lsp/main.css lspCSS)
-file(READ ${SOURCE_DIR}/lsp/header.html lspHeader)
-file(READ ${SOURCE_DIR}/lsp/footer.html lspFooter)
-file(WRITE ${BINARY_DIR}/server.html "${lspHeader}${lspFooter}")
-set (lspCSS "")
-set (lspHeader "")
-set (lspFooter "")
-add_custom_target(localSettingsPage
- ./sourcery ${BINARY_DIR}/server.html server_html ${BINARY_DIR}/server.html.h
- DEPENDS sourcery
- VERBATIM
+add_custom_command(OUTPUT ${BINARY_DIR}/generated/server.html
+ COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR="${SOURCE_DIR}" -DlspSOURCES="${lspSOURCES}" -P ${SOURCE_DIR}/CMakeServHtml.txt
+ DEPENDS ${lspSOURCES} ${SOURCE_DIR}/CMakeServHtml.txt ${SOURCE_DIR}/lsp/main.css ${SOURCE_DIR}/lsp/header.html ${SOURCE_DIR}/lsp/footer.html
+)
+add_custom_command(OUTPUT generated/server.html.h
+ COMMAND ./sourcery generated/server.html server_html generated/server.html.h
+ DEPENDS sourcery ${BINARY_DIR}/generated/server.html
)
########################################
@@ -424,13 +484,13 @@ set(controllerSources
${SOURCE_DIR}/src/controller/controller_capabilities.cpp
${SOURCE_DIR}/src/controller/controller_api.cpp
)
-
########################################
# MistController - Build #
########################################
add_executable(MistController
${controllerHeaders}
${controllerSources}
+ generated/server.html.h
)
set_target_properties(MistController
PROPERTIES COMPILE_DEFINITIONS RELEASE=${RELEASE}
@@ -438,9 +498,6 @@ set_target_properties(MistController
target_link_libraries(MistController
mist
)
-add_dependencies(MistController
- localSettingsPage
-)
install(
TARGETS MistController
DESTINATION bin
@@ -458,8 +515,6 @@ add_custom_target(clean-all
COMMAND rm -rf ${BINARY_DIR}/Testing
COMMAND rm -rf ${BINARY_DIR}/CTestTestfile.cmake
COMMAND rm -rf ${BINARY_DIR}/DartConfiguration.tcl
- COMMAND rm -rf ${BINARY_DIR}/server.html
- COMMAND rm -rf ${BINARY_DIR}/server.html.h
- COMMAND rm -rf ${BINARY_DIR}/embed.js.h
COMMAND rm -rf ${BINARY_DIR}/mist
)
+
diff --git a/CMakeServHtml.txt b/CMakeServHtml.txt
new file mode 100644
index 00000000..96245c68
--- /dev/null
+++ b/CMakeServHtml.txt
@@ -0,0 +1,11 @@
+set(lspCode "")
+string(REPLACE " " ";" lspLIST ${lspSOURCES})
+foreach (f ${lspLIST} )
+ file (READ ${f} s)
+ set (lspCode "${lspCode}${s}")
+endforeach()
+file(READ ${SOURCE_DIR}/lsp/main.css lspCSS)
+file(READ ${SOURCE_DIR}/lsp/header.html lspHeader)
+file(READ ${SOURCE_DIR}/lsp/footer.html lspFooter)
+file(WRITE generated/server.html "${lspHeader}${lspFooter}")
+