summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorVasile Vilvoiu <vasi.vilvoiu@gmail.com>2020-12-29 19:33:03 +0200
committerVasile Vilvoiu <vasi.vilvoiu@gmail.com>2020-12-29 19:33:03 +0200
commit26293db40f8ac62f3971e0e9dbbc0bf3439e61c0 (patch)
tree218c93aba851c3c3123e9e72d25c974aa65cfd52 /CMakeLists.txt
Initial commit
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt83
1 files changed, 83 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..346e899
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,83 @@
+cmake_minimum_required (VERSION 3.1)
+
+project (specgram VERSION 1.0.0 LANGUAGES CXX)
+
+# Version
+set (VERSION_MAJOR 0)
+set (VERSION_MINOR 9)
+set (VERSION_PATCH 0)
+
+# C++20
+set(CMAKE_CXX_STANDARD 20)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+# Dependencies
+find_package (spdlog REQUIRED)
+find_package (SFML 2.5 COMPONENTS window graphics REQUIRED)
+find_library (FFTW3 fftw3)
+
+# Compiler setup
+add_compile_options (-Wall -Wextra -pedantic)
+
+# Directory setup
+set (SRC_DIR "${PROJECT_SOURCE_DIR}/src")
+set (MAN_DIR "${PROJECT_SOURCE_DIR}/man")
+
+include_directories (${SOURCE_DIR})
+
+# Get the latest abbreviated commit hash of the working branch
+# https://jonathanhamberg.com/post/cmake-embedding-git-hash/
+execute_process(
+ COMMAND git log -1 --format=%h
+ WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
+ OUTPUT_VARIABLE GIT_HASH
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ ERROR_QUIET
+)
+
+if (NOT ${GIT_HASH} STREQUAL "")
+ add_definitions(-DGIT_BUILD)
+endif()
+
+# Configurations
+configure_file (
+ "${SRC_DIR}/specgram.hpp.in"
+ "${SRC_DIR}/specgram.hpp"
+)
+
+# Source setup
+set (SPECGRAM_SOURCES
+ "${SRC_DIR}/specgram.cpp"
+ "${SRC_DIR}/configuration.cpp"
+ "${SRC_DIR}/input-parser.cpp"
+ "${SRC_DIR}/input-reader.cpp"
+ "${SRC_DIR}/color-map.cpp"
+ "${SRC_DIR}/value-map.cpp"
+ "${SRC_DIR}/window-function.cpp"
+ "${SRC_DIR}/fft.cpp"
+ "${SRC_DIR}/live.cpp"
+ "${SRC_DIR}/renderer.cpp"
+
+ "${SRC_DIR}/share-tech-mono.cpp"
+)
+
+# Executable target
+add_executable (${PROJECT_NAME} ${SPECGRAM_SOURCES})
+target_link_libraries (${PROJECT_NAME} spdlog::spdlog sfml-window sfml-graphics ${FFTW3})
+
+# HTML manpage target
+add_custom_target(manpage
+ COMMAND groff -mandoc ${MAN_DIR}/specgram.1 -Thtml > ${MAN_DIR}/specgram.1.html
+ COMMAND groff -mandoc ${MAN_DIR}/specgram.1 -Tpdf > ${MAN_DIR}/specgram.1.pdf
+ DEPENDS ${MAN_DIR}/specgram.1
+ BYPRODUCTS ${MAN_DIR}/specgram.1.html ${MAN_DIR}/specgram.1.pdf
+)
+
+# Install
+install (TARGETS ${PROJECT_NAME} DESTINATION bin)
+install (FILES "${MAN_DIR}/specgram.1" DESTINATION "share/man/man1/")
+install (FILES "${PROJECT_SOURCE_DIR}/LICENSE" DESTINATION "share/licenses/specgram/")
+install (FILES "${PROJECT_SOURCE_DIR}/share/applications/specgram.desktop"
+ DESTINATION "share/applications/")
+install (DIRECTORY "${PROJECT_SOURCE_DIR}/share/icons/hicolor"
+ DESTINATION "share/icons") \ No newline at end of file