diff options
| author | rimio <vasi.vilvoiu@gmail.com> | 2019-01-03 01:48:50 +0200 |
|---|---|---|
| committer | rimio <vasi.vilvoiu@gmail.com> | 2019-01-03 01:48:50 +0200 |
| commit | df66a60b90200b020c3e32a2a6302971b254bbd0 (patch) | |
| tree | 0903e8868ed15867e76c33ba99eba8096136f9cf /CMakeLists.txt | |
| parent | 85d1eac288e6f40e326b7d3b240588aac5f88e96 (diff) | |
Initial
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..1d83269 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,59 @@ +cmake_minimum_required (VERSION 3.8) + +project (sstv LANGUAGES C CXX) + +# Version +set (VERSION_MAJOR 1) +set (VERSION_MINOR 0) +set (VERSION_PATCH 0) + +# Compiler setup +set(CMAKE_C_STANDARD 99) +add_compile_options (-Wall -Wextra -pedantic) +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition") + +# Options +option (BUILD_TOOLS "build sstv-encode and sstv-decode tools" ON) + +# Directory setup +set(SRC_DIR "${PROJECT_SOURCE_DIR}/src") +set(INCLUDE_DIR "${PROJECT_SOURCE_DIR}/include") +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/lib") +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/lib") +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/bin") + +# Configuration file +configure_file ( + "${SRC_DIR}/libsstv.template.h" + "${INCLUDE_DIR}/libsstv.h" +) + +# Source files +set (LIB_SOURCES + "${SRC_DIR}/sstv.c" + "${SRC_DIR}/encoder.c" +) + +set (ENCODE_TOOL_SOURCES + "${SRC_DIR}/tools/sstv-encode.cpp" +) + +# Dependencies +find_library (GLOG_LIBRARY glog) +find_package (gflags REQUIRED) +find_library (LIQUID_LIBRARY liquid) + +# Library (C compiler) +add_library (${PROJECT_NAME} SHARED ${LIB_SOURCES}) +set_property (TARGET ${PROJECT_NAME} PROPERTY LINKER_LANGUAGE C) +target_include_directories(${PROJECT_NAME} PUBLIC "${SRC_DIR}" PUBLIC "${INCLUDE_DIR}") +target_link_libraries (${PROJECT_NAME} liquid) + +# Tools (C++ compiler) +if (BUILD_TOOLS) + add_executable (${PROJECT_NAME}-encode ${ENCODE_TOOL_SOURCES}) + set_property (TARGET ${PROJECT_NAME}-encode PROPERTY LINKER_LANGUAGE CXX) + set_property (TARGET ${PROJECT_NAME}-encode PROPERTY CXX_STANDARD 14) + target_include_directories(${PROJECT_NAME}-encode PUBLIC "${SRC_DIR}/tools" PUBLIC "${INCLUDE_DIR}") + target_link_libraries (${PROJECT_NAME}-encode ${PROJECT_NAME} glog gflags) +endif (BUILD_TOOLS)
\ No newline at end of file |
