Cleaned up makefile and made it more readable
This commit is contained in:
		
							parent
							
								
									3ecd4dc1aa
								
							
						
					
					
						commit
						3864ca264f
					
				
					 1 changed files with 306 additions and 148 deletions
				
			
		
							
								
								
									
										454
									
								
								CMakeLists.txt
									
										
									
									
									
								
							
							
						
						
									
										454
									
								
								CMakeLists.txt
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,3 +1,6 @@
 | 
			
		|||
########################################
 | 
			
		||||
# Basic Setup                          #
 | 
			
		||||
########################################
 | 
			
		||||
cmake_minimum_required (VERSION 2.6)
 | 
			
		||||
project (MistServer)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -5,58 +8,27 @@ if(COMMAND cmake_policy)
 | 
			
		|||
  cmake_policy(SET CMP0003 NEW)
 | 
			
		||||
endif(COMMAND cmake_policy)
 | 
			
		||||
 | 
			
		||||
macro(makeAnalyser analyserName format)
 | 
			
		||||
  add_executable( MistAnalyser${analyserName} src/analysers/${format}_analyser.cpp )
 | 
			
		||||
  target_link_libraries( MistAnalyser${analyserName} mist )
 | 
			
		||||
  install( TARGETS MistAnalyser${analyserName} DESTINATION bin)
 | 
			
		||||
endmacro()
 | 
			
		||||
 | 
			
		||||
macro(makeInput inputName format)
 | 
			
		||||
  add_executable( MistIn${inputName} src/input/mist_in.cpp src/input/input.cpp src/input/input_${format}.cpp src/io.cpp)
 | 
			
		||||
  set_target_properties( MistIn${inputName} PROPERTIES COMPILE_DEFINITIONS INPUTTYPE=\"input_${format}.h\")
 | 
			
		||||
  target_link_libraries( MistIn${inputName} mist )
 | 
			
		||||
  install( TARGETS MistIn${inputName} DESTINATION bin)
 | 
			
		||||
endmacro()
 | 
			
		||||
 | 
			
		||||
macro(makeOutput outputName format)
 | 
			
		||||
#check if 'http' is one of the argyments, if yes, this is an http output
 | 
			
		||||
  if (";${ARGN};" MATCHES ";http;")
 | 
			
		||||
    SET(httpOutput src/output/output_http.cpp)
 | 
			
		||||
    SET(tsBaseClass Output)
 | 
			
		||||
    if (";${ARGN};" MATCHES ";ts;")
 | 
			
		||||
      SET(tsBaseClass HTTPOutput)
 | 
			
		||||
    endif()
 | 
			
		||||
  endif()
 | 
			
		||||
  if (";${ARGN};" MATCHES ";ts;")
 | 
			
		||||
    SET(tsOutput src/output/output_ts_base.cpp)
 | 
			
		||||
  endif()
 | 
			
		||||
  add_executable( MistOut${outputName} src/output/mist_out.cpp src/output/output.cpp ${httpOutput} ${tsOutput} src/output/output_${format}.cpp src/io.cpp)
 | 
			
		||||
  set_target_properties( MistOut${outputName} PROPERTIES COMPILE_DEFINITIONS "OUTPUTTYPE=\"output_${format}.h\";TS_BASECLASS=${tsBaseClass}")
 | 
			
		||||
  target_link_libraries( MistOut${outputName} mist )
 | 
			
		||||
  install( TARGETS MistOut${outputName} DESTINATION bin)
 | 
			
		||||
endmacro()
 | 
			
		||||
 | 
			
		||||
SET(SOURCE_DIR ${PROJECT_SOURCE_DIR})
 | 
			
		||||
SET(BINARY_DIR ${PROJECT_BINARY_DIR})
 | 
			
		||||
include_directories(${SOURCE_DIR})
 | 
			
		||||
include_directories(${BINARY_DIR})
 | 
			
		||||
 | 
			
		||||
########################################
 | 
			
		||||
# Testing - Enable Tests               #
 | 
			
		||||
########################################
 | 
			
		||||
enable_testing()
 | 
			
		||||
include(CTest)
 | 
			
		||||
 | 
			
		||||
find_package(Doxygen)
 | 
			
		||||
find_package(Java)
 | 
			
		||||
 | 
			
		||||
if(JAVA_FOUND)
 | 
			
		||||
  SET(CLOSURE "java -jar closure-compiler.jar --warning_level QUIET")
 | 
			
		||||
else()
 | 
			
		||||
  SET(CLOSURE cat)
 | 
			
		||||
endif()  
 | 
			
		||||
 | 
			
		||||
########################################
 | 
			
		||||
# Build Variables - Install Prefix     #
 | 
			
		||||
########################################
 | 
			
		||||
if (NOT CMAKE_INSTALL_PREFIX)
 | 
			
		||||
  set (CMAKE_INSTALL_PREFIX /usr)
 | 
			
		||||
endif()
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
########################################
 | 
			
		||||
# Build Variables - Release            #
 | 
			
		||||
########################################
 | 
			
		||||
if (RELEASE)
 | 
			
		||||
  set (RELEASE_RAW ${RELEASE})
 | 
			
		||||
else()
 | 
			
		||||
| 
						 | 
				
			
			@ -66,7 +38,10 @@ else()
 | 
			
		|||
endif()
 | 
			
		||||
string(STRIP ${RELEASE_RAW} RELEASE)
 | 
			
		||||
set(RELEASE \"${RELEASE}\" )
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
########################################
 | 
			
		||||
# Build Variables - Package Version    #
 | 
			
		||||
########################################
 | 
			
		||||
#See if we have a git repo to get the version from
 | 
			
		||||
execute_process(COMMAND git describe --tags OUTPUT_VARIABLE PACKAGE_VERSION_RAW ERROR_QUIET)
 | 
			
		||||
if (NOT PACKAGE_VERSION_RAW)
 | 
			
		||||
| 
						 | 
				
			
			@ -79,102 +54,129 @@ endif()
 | 
			
		|||
string(STRIP "${PACKAGE_VERSION_RAW}" PACKAGE_VERSION)
 | 
			
		||||
set(PACKAGE_VERSION \"${PACKAGE_VERSION}\" ) 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
########################################
 | 
			
		||||
# Build Variables - Debug              #
 | 
			
		||||
########################################
 | 
			
		||||
if (NOT DEBUG)
 | 
			
		||||
  set(DEBUG 4)
 | 
			
		||||
endif()
 | 
			
		||||
message("Builing release ${RELEASE} for version ${PACKAGE_VERSION} @ debug level ${DEBUG}")
 | 
			
		||||
add_definitions(-g -funsigned-char -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG=${DEBUG} -DPACKAGE_VERSION=${PACKAGE_VERSION} -DRELEASE=${RELEASE})
 | 
			
		||||
 | 
			
		||||
########################################
 | 
			
		||||
# Build Variables - Shared Memory      #
 | 
			
		||||
########################################
 | 
			
		||||
if (NOT DEFINED ${NOSHM} )
 | 
			
		||||
  add_definitions(-DSHM_ENABLED=1)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
########################################
 | 
			
		||||
# Build Variables - Thread Names       #
 | 
			
		||||
########################################
 | 
			
		||||
if (DEFINED ${WITH_THREADNAMES} )
 | 
			
		||||
  add_definitions(-DWITH_THREADNAMES=1)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
if(DOXYGEN_FOUND)
 | 
			
		||||
  configure_file(${SOURCE_DIR}/Doxyfile.in ${BINARY_DIR}/Doxyfile @ONLY)
 | 
			
		||||
  add_custom_target( docs
 | 
			
		||||
#    ALL
 | 
			
		||||
    ${DOXYGEN_EXECUTABLE} ${BINARY_DIR}/Doxyfile
 | 
			
		||||
    COMMAND rm -rf ${BINARY_DIR}/docs
 | 
			
		||||
    COMMAND mv ${SOURCE_DIR}/docs ${BINARY_DIR}
 | 
			
		||||
    WORKING_DIRECTORY ${SOURCE_DIR}
 | 
			
		||||
    COMMENT "Generating API documentation with Doxygen"
 | 
			
		||||
    VERBATIM
 | 
			
		||||
  )
 | 
			
		||||
endif(DOXYGEN_FOUND)
 | 
			
		||||
#Compile the lib
 | 
			
		||||
set(libHeaders
 | 
			
		||||
${SOURCE_DIR}/lib/config.h
 | 
			
		||||
${SOURCE_DIR}/lib/flv_tag.h
 | 
			
		||||
${SOURCE_DIR}/lib/mp4.h
 | 
			
		||||
${SOURCE_DIR}/lib/dtsc.h
 | 
			
		||||
${SOURCE_DIR}/lib/ts_packet.h
 | 
			
		||||
${SOURCE_DIR}/lib/checksum.h
 | 
			
		||||
${SOURCE_DIR}/lib/bitstream.h
 | 
			
		||||
${SOURCE_DIR}/lib/bitfields.h
 | 
			
		||||
${SOURCE_DIR}/lib/shared_memory.h
 | 
			
		||||
${SOURCE_DIR}/lib/mp4_adobe.h
 | 
			
		||||
${SOURCE_DIR}/lib/http_parser.h
 | 
			
		||||
${SOURCE_DIR}/lib/converter.h
 | 
			
		||||
${SOURCE_DIR}/lib/procs.h
 | 
			
		||||
${SOURCE_DIR}/lib/defines.h
 | 
			
		||||
${SOURCE_DIR}/lib/base64.h
 | 
			
		||||
${SOURCE_DIR}/lib/ftp.h
 | 
			
		||||
${SOURCE_DIR}/lib/socket.h
 | 
			
		||||
${SOURCE_DIR}/lib/ogg.h
 | 
			
		||||
${SOURCE_DIR}/lib/timing.h
 | 
			
		||||
${SOURCE_DIR}/lib/filesystem.h
 | 
			
		||||
${SOURCE_DIR}/lib/mp4_generic.h
 | 
			
		||||
${SOURCE_DIR}/lib/amf.h
 | 
			
		||||
${SOURCE_DIR}/lib/mp4_ms.h
 | 
			
		||||
${SOURCE_DIR}/lib/rtmpchunks.h
 | 
			
		||||
${SOURCE_DIR}/lib/tinythread.h
 | 
			
		||||
${SOURCE_DIR}/lib/nal.h
 | 
			
		||||
${SOURCE_DIR}/lib/vorbis.h
 | 
			
		||||
${SOURCE_DIR}/lib/auth.h
 | 
			
		||||
${SOURCE_DIR}/lib/stream.h
 | 
			
		||||
${SOURCE_DIR}/lib/theora.h
 | 
			
		||||
${SOURCE_DIR}/lib/json.h
 | 
			
		||||
)
 | 
			
		||||
set(libSources 
 | 
			
		||||
${SOURCE_DIR}/lib/tinythread.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/mp4_ms.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/filesystem.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/procs.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/bitfields.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/amf.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/mp4_adobe.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/ftp.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/base64.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/http_parser.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/ts_packet.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/auth.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/rtmpchunks.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/shared_memory.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/dtsc.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/converter.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/config.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/vorbis.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/nal.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/bitstream.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/socket.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/flv_tag.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/ogg.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/mp4_generic.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/mp4.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/theora.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/timing.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/dtscmeta.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/stream.cpp
 | 
			
		||||
${SOURCE_DIR}/lib/json.cpp
 | 
			
		||||
  )
 | 
			
		||||
add_library ( mist ${libHeaders} ${libSources} )
 | 
			
		||||
target_link_libraries( mist -lpthread -lrt)
 | 
			
		||||
install( FILES ${libHeaders} DESTINATION include/mist )
 | 
			
		||||
install( TARGETS mist DESTINATION lib )
 | 
			
		||||
########################################
 | 
			
		||||
# Build Variables - Prepare for Build  #
 | 
			
		||||
########################################
 | 
			
		||||
message("Builing release ${RELEASE} for version ${PACKAGE_VERSION} @ debug level ${DEBUG}")
 | 
			
		||||
add_definitions(-g -funsigned-char -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG=${DEBUG} -DPACKAGE_VERSION=${PACKAGE_VERSION} -DRELEASE=${RELEASE})
 | 
			
		||||
 | 
			
		||||
########################################
 | 
			
		||||
# MistLib - Header Files               #
 | 
			
		||||
########################################
 | 
			
		||||
set(libHeaders
 | 
			
		||||
  ${SOURCE_DIR}/lib/amf.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/auth.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/base64.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/bitfields.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/bitstream.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/checksum.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/config.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/converter.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/defines.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/dtsc.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/filesystem.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/flv_tag.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/ftp.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/http_parser.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/json.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/mp4_adobe.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/mp4_generic.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/mp4.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/mp4_ms.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/nal.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/ogg.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/procs.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/rtmpchunks.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/shared_memory.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/socket.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/stream.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/theora.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/timing.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/tinythread.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/ts_packet.h
 | 
			
		||||
  ${SOURCE_DIR}/lib/vorbis.h
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
########################################
 | 
			
		||||
# MistLib - Source Files               #
 | 
			
		||||
########################################
 | 
			
		||||
set(libSources 
 | 
			
		||||
  ${SOURCE_DIR}/lib/amf.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/auth.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/base64.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/bitfields.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/bitstream.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/config.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/converter.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/dtsc.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/dtscmeta.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/filesystem.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/flv_tag.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/ftp.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/http_parser.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/json.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/mp4_adobe.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/mp4.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/mp4_generic.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/mp4_ms.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/nal.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/ogg.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/procs.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/rtmpchunks.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/shared_memory.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/socket.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/stream.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/theora.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/timing.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/tinythread.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/ts_packet.cpp
 | 
			
		||||
  ${SOURCE_DIR}/lib/vorbis.cpp
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
########################################
 | 
			
		||||
# MistLib - Build                      #
 | 
			
		||||
########################################
 | 
			
		||||
add_library (mist 
 | 
			
		||||
  ${libHeaders}
 | 
			
		||||
  ${libSources} 
 | 
			
		||||
)
 | 
			
		||||
target_link_libraries(mist 
 | 
			
		||||
  -lpthread 
 | 
			
		||||
  -lrt
 | 
			
		||||
)
 | 
			
		||||
install(
 | 
			
		||||
  FILES ${libHeaders}
 | 
			
		||||
  DESTINATION include/mist
 | 
			
		||||
)
 | 
			
		||||
install(
 | 
			
		||||
  TARGETS mist
 | 
			
		||||
  DESTINATION lib
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
########################################
 | 
			
		||||
# MistLib - Local Header Install       #
 | 
			
		||||
########################################
 | 
			
		||||
add_custom_command(TARGET mist
 | 
			
		||||
  POST_BUILD
 | 
			
		||||
  COMMAND mkdir -p ${BINARY_DIR}/mist
 | 
			
		||||
| 
						 | 
				
			
			@ -182,15 +184,60 @@ add_custom_command(TARGET mist
 | 
			
		|||
  DEPENDS ${libHeaders}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
########################################
 | 
			
		||||
# MistServer - Analysers        `      #
 | 
			
		||||
########################################
 | 
			
		||||
macro(makeAnalyser analyserName format)
 | 
			
		||||
  add_executable(MistAnalyser${analyserName}
 | 
			
		||||
    src/analysers/${format}_analyser.cpp
 | 
			
		||||
  )
 | 
			
		||||
  target_link_libraries(MistAnalyser${analyserName}
 | 
			
		||||
    mist
 | 
			
		||||
  )
 | 
			
		||||
  install(
 | 
			
		||||
    TARGETS MistAnalyser${analyserName}
 | 
			
		||||
    DESTINATION bin
 | 
			
		||||
  )
 | 
			
		||||
endmacro()
 | 
			
		||||
 | 
			
		||||
makeAnalyser(RTMP rtmp)
 | 
			
		||||
makeAnalyser(FLV flv)
 | 
			
		||||
makeAnalyser(DTSC dtsc)
 | 
			
		||||
makeAnalyser(AMF amf)
 | 
			
		||||
makeAnalyser(MP4 mp4)
 | 
			
		||||
makeAnalyser(OGG ogg)
 | 
			
		||||
add_executable( MistInfo src/analysers/info.cpp )
 | 
			
		||||
target_link_libraries( MistInfo mist )
 | 
			
		||||
install( TARGETS MistInfo DESTINATION bin)
 | 
			
		||||
add_executable(MistInfo
 | 
			
		||||
  src/analysers/info.cpp
 | 
			
		||||
)
 | 
			
		||||
target_link_libraries(MistInfo 
 | 
			
		||||
  mist 
 | 
			
		||||
)
 | 
			
		||||
install( 
 | 
			
		||||
  TARGETS MistInfo 
 | 
			
		||||
  DESTINATION bin
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
########################################
 | 
			
		||||
# MistServer - Inputs                  #
 | 
			
		||||
########################################
 | 
			
		||||
macro(makeInput inputName format)
 | 
			
		||||
  add_executable(MistIn${inputName} 
 | 
			
		||||
    src/input/mist_in.cpp 
 | 
			
		||||
    src/input/input.cpp 
 | 
			
		||||
    src/input/input_${format}.cpp 
 | 
			
		||||
    src/io.cpp
 | 
			
		||||
  )
 | 
			
		||||
  set_target_properties(MistIn${inputName} 
 | 
			
		||||
    PROPERTIES COMPILE_DEFINITIONS INPUTTYPE=\"input_${format}.h\"
 | 
			
		||||
  )
 | 
			
		||||
  target_link_libraries(MistIn${inputName} 
 | 
			
		||||
    mist 
 | 
			
		||||
  )
 | 
			
		||||
  install(
 | 
			
		||||
    TARGETS MistIn${inputName} 
 | 
			
		||||
    DESTINATION bin
 | 
			
		||||
  )
 | 
			
		||||
endmacro()
 | 
			
		||||
 | 
			
		||||
makeInput(DTSC dtsc)
 | 
			
		||||
makeInput(MP3 mp3)
 | 
			
		||||
| 
						 | 
				
			
			@ -198,6 +245,41 @@ makeInput(FLV flv)
 | 
			
		|||
makeInput(OGG ogg)
 | 
			
		||||
makeInput(Buffer buffer)
 | 
			
		||||
 | 
			
		||||
########################################
 | 
			
		||||
# MistServer - Outputs                 #
 | 
			
		||||
########################################
 | 
			
		||||
macro(makeOutput outputName format)
 | 
			
		||||
  #Parse all extra arguments, for http and ts flags
 | 
			
		||||
  if (";${ARGN};" MATCHES ";http;")
 | 
			
		||||
    SET(httpOutput src/output/output_http.cpp)
 | 
			
		||||
    SET(tsBaseClass Output)
 | 
			
		||||
    if (";${ARGN};" MATCHES ";ts;")
 | 
			
		||||
      SET(tsBaseClass HTTPOutput)
 | 
			
		||||
    endif()
 | 
			
		||||
  endif()
 | 
			
		||||
  if (";${ARGN};" MATCHES ";ts;")
 | 
			
		||||
    SET(tsOutput src/output/output_ts_base.cpp)
 | 
			
		||||
  endif()
 | 
			
		||||
  add_executable(MistOut${outputName}
 | 
			
		||||
    src/output/mist_out.cpp
 | 
			
		||||
    src/output/output.cpp
 | 
			
		||||
    src/output/output_${format}.cpp 
 | 
			
		||||
    src/io.cpp
 | 
			
		||||
    ${httpOutput}
 | 
			
		||||
    ${tsOutput} 
 | 
			
		||||
  )
 | 
			
		||||
  set_target_properties(MistOut${outputName} 
 | 
			
		||||
    PROPERTIES COMPILE_DEFINITIONS "OUTPUTTYPE=\"output_${format}.h\";TS_BASECLASS=${tsBaseClass}"
 | 
			
		||||
  )
 | 
			
		||||
  target_link_libraries(MistOut${outputName} 
 | 
			
		||||
    mist 
 | 
			
		||||
  )
 | 
			
		||||
  install( 
 | 
			
		||||
    TARGETS MistOut${outputName}
 | 
			
		||||
    DESTINATION bin
 | 
			
		||||
  )
 | 
			
		||||
endmacro()
 | 
			
		||||
 | 
			
		||||
makeOutput(RTMP rtmp)
 | 
			
		||||
makeOutput(OGG progressive_ogg http)
 | 
			
		||||
makeOutput(FLV progressive_flv http)
 | 
			
		||||
| 
						 | 
				
			
			@ -210,17 +292,75 @@ 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
 | 
			
		||||
)
 | 
			
		||||
set_target_properties(MistOutHTTP 
 | 
			
		||||
  PROPERTIES COMPILE_DEFINITIONS "OUTPUTTYPE=\"output_http_internal.h\""
 | 
			
		||||
)
 | 
			
		||||
add_dependencies(MistOutHTTP 
 | 
			
		||||
  embedcode
 | 
			
		||||
)
 | 
			
		||||
target_link_libraries(MistOutHTTP
 | 
			
		||||
  mist 
 | 
			
		||||
)
 | 
			
		||||
install(
 | 
			
		||||
  TARGETS MistOutHTTP
 | 
			
		||||
  DESTINATION bin
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
add_executable( sourcery src/sourcery.cpp )
 | 
			
		||||
########################################
 | 
			
		||||
# Documentation                        #
 | 
			
		||||
########################################
 | 
			
		||||
find_package(Doxygen)
 | 
			
		||||
if(DOXYGEN_FOUND)
 | 
			
		||||
  configure_file(${SOURCE_DIR}/Doxyfile.in ${BINARY_DIR}/Doxyfile @ONLY)
 | 
			
		||||
  add_custom_target( docs
 | 
			
		||||
    ${DOXYGEN_EXECUTABLE} ${BINARY_DIR}/Doxyfile
 | 
			
		||||
    COMMAND rm -rf ${BINARY_DIR}/docs
 | 
			
		||||
    COMMAND mv ${SOURCE_DIR}/docs ${BINARY_DIR}
 | 
			
		||||
    WORKING_DIRECTORY ${SOURCE_DIR}
 | 
			
		||||
    COMMENT "Generating API documentation with Doxygen"
 | 
			
		||||
    VERBATIM
 | 
			
		||||
  )
 | 
			
		||||
endif(DOXYGEN_FOUND)
 | 
			
		||||
 | 
			
		||||
add_custom_target( embedcode
 | 
			
		||||
########################################
 | 
			
		||||
# Sourcery                             #
 | 
			
		||||
########################################
 | 
			
		||||
if (EXISTS "${SOURCE_DIR}/sourcery")
 | 
			
		||||
  add_custom_target(sourcery 
 | 
			
		||||
    COMMAND cp ${SOURCE_DIR}/sourcery ${BINARY_DIR}/sourcery
 | 
			
		||||
  )
 | 
			
		||||
elseif()
 | 
			
		||||
  add_executable(sourcery
 | 
			
		||||
    src/sourcery.cpp
 | 
			
		||||
  )
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
########################################
 | 
			
		||||
# Embed Code                           #
 | 
			
		||||
########################################
 | 
			
		||||
add_custom_target(embedcode
 | 
			
		||||
  ./sourcery ${CMAKE_CURRENT_SOURCE_DIR}/src/embed.js embed_js ${CMAKE_CURRENT_BINARY_DIR}/embed.js.h
 | 
			
		||||
  DEPENDS sourcery ${CMAKE_CURRENT_SOURCE_DIR}/src/embed.js 
 | 
			
		||||
  VERBATIM
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
set(lspSOURCES ${SOURCE_DIR}/lsp/plugins/jquery.js ${SOURCE_DIR}/lsp/plugins/jquery.flot.min.js ${SOURCE_DIR}/lsp/plugins/jquery.flot.time.min.js ${SOURCE_DIR}/lsp/plugins/jquery.qrcode.min.js ${SOURCE_DIR}/lsp/minified.js)
 | 
			
		||||
set(lspDATA lsp/header.html lsp/main.css lsp/footer.html)
 | 
			
		||||
########################################
 | 
			
		||||
# Local Settings Page                  #
 | 
			
		||||
########################################
 | 
			
		||||
set(lspSOURCES 
 | 
			
		||||
  ${SOURCE_DIR}/lsp/plugins/jquery.js 
 | 
			
		||||
  ${SOURCE_DIR}/lsp/plugins/jquery.flot.min.js 
 | 
			
		||||
  ${SOURCE_DIR}/lsp/plugins/jquery.flot.time.min.js
 | 
			
		||||
  ${SOURCE_DIR}/lsp/plugins/jquery.qrcode.min.js
 | 
			
		||||
  ${SOURCE_DIR}/lsp/minified.js
 | 
			
		||||
)
 | 
			
		||||
set(lspCode "")
 | 
			
		||||
foreach (f ${lspSOURCES} )
 | 
			
		||||
  file (READ ${f} s)
 | 
			
		||||
| 
						 | 
				
			
			@ -234,18 +374,15 @@ set (lspCSS "")
 | 
			
		|||
set (lspHeader "")
 | 
			
		||||
set (lspFooter "")
 | 
			
		||||
 | 
			
		||||
add_custom_target( localSettingsPage
 | 
			
		||||
add_custom_target(localSettingsPage
 | 
			
		||||
  ./sourcery ${BINARY_DIR}/server.html server_html ${CMAKE_CURRENT_BINARY_DIR}/server.html.h
 | 
			
		||||
  DEPENDS sourcery lsp
 | 
			
		||||
  DEPENDS sourcery
 | 
			
		||||
  VERBATIM
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
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)
 | 
			
		||||
set_target_properties( MistOutHTTP PROPERTIES COMPILE_DEFINITIONS "OUTPUTTYPE=\"output_http_internal.h\"")
 | 
			
		||||
add_dependencies(MistOutHTTP embedcode)
 | 
			
		||||
target_link_libraries( MistOutHTTP mist )
 | 
			
		||||
install( TARGETS MistOutHTTP DESTINATION bin)
 | 
			
		||||
 | 
			
		||||
########################################
 | 
			
		||||
# MistController - Header Files        #
 | 
			
		||||
########################################
 | 
			
		||||
set(controllerHeaders
 | 
			
		||||
  ${SOURCE_DIR}/src/controller/controller_api.h
 | 
			
		||||
  ${SOURCE_DIR}/src/controller/controller_statistics.h
 | 
			
		||||
| 
						 | 
				
			
			@ -254,6 +391,10 @@ set(controllerHeaders
 | 
			
		|||
  ${SOURCE_DIR}/src/controller/controller_capabilities.h
 | 
			
		||||
  ${SOURCE_DIR}/src/controller/controller_streams.h
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
########################################
 | 
			
		||||
# MistController - Source Files        #
 | 
			
		||||
########################################
 | 
			
		||||
set(controllerSources
 | 
			
		||||
  ${SOURCE_DIR}/src/controller/controller.cpp
 | 
			
		||||
  ${SOURCE_DIR}/src/controller/controller_streams.cpp
 | 
			
		||||
| 
						 | 
				
			
			@ -264,13 +405,30 @@ set(controllerSources
 | 
			
		|||
  ${SOURCE_DIR}/src/controller/controller_api.cpp
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
add_executable( MistController ${controllerHeaders} ${controllerSources} )
 | 
			
		||||
set_target_properties( MistController PROPERTIES COMPILE_DEFINITIONS RELEASE=${RELEASE})
 | 
			
		||||
target_link_libraries( MistController mist )
 | 
			
		||||
add_dependencies(MistController localSettingsPage)
 | 
			
		||||
install( TARGETS MistController DESTINATION bin)
 | 
			
		||||
########################################
 | 
			
		||||
# MistController - Build               #
 | 
			
		||||
########################################
 | 
			
		||||
add_executable(MistController
 | 
			
		||||
  ${controllerHeaders}
 | 
			
		||||
  ${controllerSources}
 | 
			
		||||
)
 | 
			
		||||
set_target_properties(MistController
 | 
			
		||||
  PROPERTIES COMPILE_DEFINITIONS RELEASE=${RELEASE}
 | 
			
		||||
)
 | 
			
		||||
target_link_libraries(MistController
 | 
			
		||||
  mist
 | 
			
		||||
)
 | 
			
		||||
add_dependencies(MistController
 | 
			
		||||
  localSettingsPage
 | 
			
		||||
)
 | 
			
		||||
install(
 | 
			
		||||
  TARGETS MistController
 | 
			
		||||
  DESTINATION bin
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
#make clean stuff
 | 
			
		||||
########################################
 | 
			
		||||
# Make Clean                           #
 | 
			
		||||
########################################
 | 
			
		||||
add_custom_target(clean-all
 | 
			
		||||
  COMMAND ${CMAKE_BUILD_TOOL} clean
 | 
			
		||||
  COMMAND rm -rf ${BINARY_DIR}/CMakeCache.txt
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue