summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt59
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