mistserver/CMakeLists.txt
2017-07-05 13:47:21 +02:00

664 lines
21 KiB
CMake

########################################
# Basic Setup #
########################################
cmake_minimum_required (VERSION 2.6)
SET(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "Usr install prefix")
project (MistServer)
if(COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
SET(SOURCE_DIR ${PROJECT_SOURCE_DIR})
SET(BINARY_DIR ${PROJECT_BINARY_DIR})
include_directories(${SOURCE_DIR})
include_directories(${BINARY_DIR} ${BINARY_DIR}/generated)
########################################
# Testing - Enable Tests #
########################################
enable_testing()
include(CTest)
########################################
# 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()
#get the bitlength of this system
execute_process(COMMAND getconf LONG_BIT OUTPUT_VARIABLE RELEASE_RAW )
set(RELEASE_RAW "Generic_${RELEASE_RAW}" )
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)
execute_process(COMMAND cat VERSION OUTPUT_VARIABLE PACKAGE_VERSION_RAW ERROR_QUIET)
endif()
if (NOT PACKAGE_VERSION_RAW)
set(PACKAGE_VERSION_RAW Unknown)
endif()
#strip off the trailing spaces and newline
string(STRIP "${PACKAGE_VERSION_RAW}" PACKAGE_VERSION)
set(PACKAGE_VERSION \"${PACKAGE_VERSION}\" )
########################################
# Build Variables - Debug #
########################################
if (NOT DEBUG)
set(DEBUG 4)
endif()
########################################
# Build Variables - Shared Memory #
########################################
if (NOT DEFINED NOSHM )
add_definitions(-DSHM_ENABLED=1)
endif()
if (NOT DEFINED FILLER_DATA OR NOT DEFINED SHARED_SECRET OR NOT DEFINED SUPER_SECRET)#LTS
message(WARNING "Not all LTS variables have been set and this is an LTS build - are you sure about this?")#LTS
endif()#LTS
add_definitions(-DFILLER_DATA="${FILLER_DATA}" -DSHARED_SECRET="${SHARED_SECRET}" -DSUPER_SECRET="${SUPER_SECRET}")#LTS
if (DEFINED GEOIP )
add_definitions(-DGEOIP=1)
endif()
if (DEFINED BIGMETA )
add_definitions(-DBIGMETA=1)
endif()
if (DEFINED DATASIZE )
add_definitions(-DSHM_DATASIZE=${DATASIZE})
endif()
if (NOT DEFINED NOUPDATE )
add_definitions(-DUPDATER=1)
endif()
if (NOT DEFINED PERPETUAL )
add_definitions(-DLICENSING=1)
endif()
if (DEFINED NOAUTH )
add_definitions(-DNOAUTH=1)
endif()
if (DEFINED KILLONEXIT )
add_definitions(-DKILLONEXIT=true)
endif()
########################################
# Build Variables - Thread Names #
########################################
if (DEFINED WITH_THREADNAMES )
add_definitions(-DWITH_THREADNAMES=1)
endif()
########################################
# Build Variables - No Crash Check #
########################################
if (DEFINED NOCRASHCHECK )
add_definitions(-DNOCRASHCHECK=1)
endif()
########################################
# Build Variables - Stats delay overrid#
########################################
if (DEFINED STATS_DELAY )
add_definitions(-DSTATS_DELAY=${STATS_DELAY})
endif()
########################################
# 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/adts.h
${SOURCE_DIR}/lib/amf.h
${SOURCE_DIR}/lib/auth.h
${SOURCE_DIR}/lib/encode.h
${SOURCE_DIR}/lib/bitfields.h
${SOURCE_DIR}/lib/bitstream.h
${SOURCE_DIR}/lib/checksum.h
${SOURCE_DIR}/lib/config.h
${SOURCE_DIR}/lib/defines.h
${SOURCE_DIR}/lib/dtsc.h
${SOURCE_DIR}/lib/encryption.h
${SOURCE_DIR}/lib/flv_tag.h
${SOURCE_DIR}/lib/h264.h
${SOURCE_DIR}/lib/h265.h
${SOURCE_DIR}/lib/http_parser.h
${SOURCE_DIR}/lib/json.h
${SOURCE_DIR}/lib/langcodes.h
${SOURCE_DIR}/lib/mp4_adobe.h
${SOURCE_DIR}/lib/mp4_dash.cpp
${SOURCE_DIR}/lib/mp4_dash.h
${SOURCE_DIR}/lib/mp4_encryption.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/rijndael.h
${SOURCE_DIR}/lib/rtmpchunks.h
${SOURCE_DIR}/lib/rtp.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/ts_stream.h
${SOURCE_DIR}/lib/util.h
${SOURCE_DIR}/lib/vorbis.h
${SOURCE_DIR}/lib/triggers.h
${SOURCE_DIR}/lib/opus.h
${SOURCE_DIR}/lib/riff.h
)
########################################
# MistLib - Source Files #
########################################
set(libSources
${SOURCE_DIR}/lib/adts.cpp
${SOURCE_DIR}/lib/amf.cpp
${SOURCE_DIR}/lib/auth.cpp
${SOURCE_DIR}/lib/encode.cpp
${SOURCE_DIR}/lib/bitfields.cpp
${SOURCE_DIR}/lib/bitstream.cpp
${SOURCE_DIR}/lib/config.cpp
${SOURCE_DIR}/lib/dtsc.cpp
${SOURCE_DIR}/lib/dtscmeta.cpp
${SOURCE_DIR}/lib/encryption.cpp
${SOURCE_DIR}/lib/flv_tag.cpp
${SOURCE_DIR}/lib/h264.cpp
${SOURCE_DIR}/lib/h265.cpp
${SOURCE_DIR}/lib/http_parser.cpp
${SOURCE_DIR}/lib/json.cpp
${SOURCE_DIR}/lib/langcodes.cpp
${SOURCE_DIR}/lib/mp4_adobe.cpp
${SOURCE_DIR}/lib/mp4.cpp
${SOURCE_DIR}/lib/mp4_dash.cpp
${SOURCE_DIR}/lib/mp4_encryption.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/rijndael.cpp
${SOURCE_DIR}/lib/rtmpchunks.cpp
${SOURCE_DIR}/lib/rtp.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/ts_stream.cpp
${SOURCE_DIR}/lib/util.cpp
${SOURCE_DIR}/lib/vorbis.cpp
${SOURCE_DIR}/lib/triggers.cpp
${SOURCE_DIR}/lib/opus.cpp
${SOURCE_DIR}/lib/riff.cpp
)
########################################
# MistLib - Build #
########################################
add_library (mist
${libHeaders}
${libSources}
)
if (NOT APPLE)
set (LIBRT -lrt)
endif()
target_link_libraries(mist
-lpthread
${LIBRT}
)
install(
FILES ${libHeaders}
DESTINATION include/mist
)
install(
TARGETS mist
DESTINATION lib
)
########################################
# MistLib - Local Header Install #
########################################
add_custom_command(TARGET mist
POST_BUILD
COMMAND ${CMAKE_COMMAND}
ARGS -E make_directory ${BINARY_DIR}/mist
COMMAND cp
ARGS -a ${libHeaders} ${BINARY_DIR}/mist
DEPENDS ${libHeaders}
)
########################################
# MistServer - Analysers #
########################################
macro(makeAnalyser analyserName format)
add_executable(MistAnalyser${analyserName}
src/analysers/mist_analyse.cpp
src/analysers/analyser.cpp
src/analysers/analyser_${format}.cpp
)
set_target_properties(MistAnalyser${analyserName}
PROPERTIES COMPILE_DEFINITIONS "ANALYSERHEADER=\"analyser_${format}.h\"; ANALYSERTYPE=Analyser${analyserName}"
)
target_link_libraries(MistAnalyser${analyserName}
mist
)
install(
TARGETS MistAnalyser${analyserName}
DESTINATION bin
)
endmacro()
makeAnalyser(RTMP rtmp)
makeAnalyser(FLV flv)
makeAnalyser(DTSC dtsc)
makeAnalyser(OGG ogg)
#makeAnalyser(RTSP rtsp) #LTS #Currently broken. Horribly.
makeAnalyser(TS ts) #LTS
makeAnalyser(MP4 mp4) #LTS
makeAnalyser(H264 h264) #LTS
makeAnalyser(HLS hls) #LTS
makeAnalyser(RIFF riff) #LTS
#LTS_START
########################################
# MistServer - Utilities #
########################################
macro(makeUtil utilName utilFile)
add_executable(MistUtil${utilName}
src/utils/util_${utilFile}.cpp
)
target_link_libraries(MistUtil${utilName}
mist
)
install(
TARGETS MistUtil${utilName}
DESTINATION bin
)
endmacro()
makeUtil(Stats stats)
makeUtil(RAX rax)
makeUtil(AMF amf)
if (DEFINED LOAD_BALANCE )
makeUtil(Load load)
endif()
#LTS_END
########################################
# 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 compile definitions
unset(my_definitions)
list(APPEND my_definitions "INPUTTYPE=\"input_${format}.h\"")
set_target_properties(MistIn${inputName}
PROPERTIES COMPILE_DEFINITIONS "${my_definitions}"
)
target_link_libraries(MistIn${inputName}
mist
)
install(
TARGETS MistIn${inputName}
DESTINATION bin
)
endmacro()
makeInput(HLS hls)
makeInput(DTSC dtsc)
makeInput(DTSCCrypt dtsccrypt)
makeInput(MP3 mp3)
makeInput(FLV flv)
if (DEFINED WITH_AV )
makeInput(AV av)
target_link_libraries(MistInAV avformat avcodec avutil)
endif()
makeInput(OGG ogg)
makeInput(Buffer buffer)
makeInput(ISMV ismv)#LTS
makeInput(MP4 mp4)#LTS
makeInput(TS ts)#LTS
makeInput(Folder folder)#LTS
makeInput(Balancer balancer)#LTS
########################################
# MistServer - Outputs #
########################################
macro(makeOutput outputName format)
#Parse all extra arguments, for http and ts flags
SET (tsBaseClass Output)
if (";${ARGN};" MATCHES ";http;")
SET(httpOutput src/output/output_http.cpp)
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(DTSC dtsc)
makeOutput(OGG progressive_ogg http)
makeOutput(FLV progressive_flv http)
makeOutput(HTTPMinimalServer http_minimalserver http)
makeOutput(MP4 progressive_mp4 http)
makeOutput(MP3 progressive_mp3 http)
makeOutput(HSS hss http)
makeOutput(HDS hds http)
makeOutput(SRT srt http)
makeOutput(JSON json http)
makeOutput(TS ts ts)
makeOutput(HTTPTS httpts http ts)
makeOutput(HLS hls http ts)
makeOutput(Push push)#LTS
makeOutput(RTSP rtsp)#LTS
makeOutput(WAV wav)#LTS
if (NOT DEFINED NOSSL )
makeOutput(HTTPS https)#LTS
target_link_libraries(MistOutHTTPS mbedtls mbedcrypto mbedx509)
endif()
makeOutput(DASH dash_mp4 http)#LTS
if (DEFINED WITH_SANITY )
makeOutput(SanityCheck sanitycheck)#LTS
endif()
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/img.js.h
generated/playerdash.js.h
generated/playerdashlic.js.h
generated/playervideo.js.h
generated/playerhlsvideo.js.h
generated/core.js.h
generated/mist.css.h
)
set_target_properties(MistOutHTTP
PROPERTIES COMPILE_DEFINITIONS "OUTPUTTYPE=\"output_http_internal.h\""
)
target_link_libraries(MistOutHTTP mist)
install(
TARGETS MistOutHTTP
DESTINATION bin
)
########################################
# 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)
########################################
# Sourcery #
########################################
#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 "42")
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_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/img.js.h
COMMAND ./sourcery ${SOURCE_DIR}/embed/wrappers/img.js img_js generated/img.js.h
DEPENDS sourcery ${SOURCE_DIR}/embed/wrappers/img.js
)
add_custom_command(OUTPUT generated/playerdashlic.js.h
COMMAND ./sourcery ${SOURCE_DIR}/embed/players/dash.js.license.js playerdashlic_js generated/playerdashlic.js.h
DEPENDS sourcery ${SOURCE_DIR}/embed/players/dash.js.license.js
)
add_custom_command(OUTPUT generated/playerdash.js.h
COMMAND ./sourcery ${SOURCE_DIR}/embed/players/dash.all.min.js playerdash_js generated/playerdash.js.h
DEPENDS sourcery ${SOURCE_DIR}/embed/players/dash.all.min.js
)
add_custom_command(OUTPUT generated/playervideo.js.h
COMMAND ./sourcery ${SOURCE_DIR}/embed/players/video.min.js playervideo_js generated/playervideo.js.h
DEPENDS sourcery ${SOURCE_DIR}/embed/players/video.min.js
)
add_custom_command(OUTPUT generated/playerhlsvideo.js.h
COMMAND ./sourcery ${SOURCE_DIR}/embed/players/videojs-contrib-hls.min.js playerhlsvideo_js generated/playerhlsvideo.js.h
DEPENDS sourcery ${SOURCE_DIR}/embed/players/videojs-contrib-hls.min.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
)
########################################
# 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
)
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
)
########################################
# MistController - Header Files #
########################################
set(controllerHeaders
${SOURCE_DIR}/src/controller/controller_limits.h
${SOURCE_DIR}/src/controller/controller_uplink.h
${SOURCE_DIR}/src/controller/controller_api.h
${SOURCE_DIR}/src/controller/controller_statistics.h
${SOURCE_DIR}/src/controller/controller_connectors.h
${SOURCE_DIR}/src/controller/controller_storage.h
${SOURCE_DIR}/src/controller/controller_updater.h
${SOURCE_DIR}/src/controller/controller_capabilities.h
${SOURCE_DIR}/src/controller/controller_streams.h
${SOURCE_DIR}/src/controller/controller_push.h
${SOURCE_DIR}/src/controller/controller_license.h
)
########################################
# MistController - Source Files #
########################################
set(controllerSources
${SOURCE_DIR}/src/controller/controller.cpp
${SOURCE_DIR}/src/controller/controller_updater.cpp
${SOURCE_DIR}/src/controller/controller_streams.cpp
${SOURCE_DIR}/src/controller/controller_storage.cpp
${SOURCE_DIR}/src/controller/controller_connectors.cpp
${SOURCE_DIR}/src/controller/controller_statistics.cpp
${SOURCE_DIR}/src/controller/controller_limits.cpp
${SOURCE_DIR}/src/controller/controller_capabilities.cpp
${SOURCE_DIR}/src/controller/controller_uplink.cpp
${SOURCE_DIR}/src/controller/controller_api.cpp
${SOURCE_DIR}/src/controller/controller_push.cpp
${SOURCE_DIR}/src/controller/controller_license.cpp
)
########################################
# MistController - Build #
########################################
add_executable(MistController
${controllerHeaders}
${controllerSources}
generated/server.html.h
)
set_target_properties(MistController
PROPERTIES COMPILE_DEFINITIONS RELEASE=${RELEASE}
)
target_link_libraries(MistController
mist
)
install(
TARGETS MistController
DESTINATION bin
)
########################################
# Make Clean #
########################################
add_custom_target(clean-all
COMMAND ${CMAKE_BUILD_TOOL} clean
COMMAND rm -rf ${BINARY_DIR}/CMakeCache.txt
COMMAND rm -rf ${BINARY_DIR}/cmake_install.cmake
COMMAND rm -rf ${BINARY_DIR}/Makefile
COMMAND rm -rf ${BINARY_DIR}/CMakeFiles
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}/mist
)
########################################
# Tests #
########################################
add_executable(aes_ctr128
${SOURCE_DIR}/test/aes_ctr128.cpp
)
target_link_libraries(aes_ctr128
mist
)
add_test(AESTest COMMAND aes_ctr128)