From 98611a63f07a8adf24eb238f6bf708646fa61cae Mon Sep 17 00:00:00 2001
From: "A. Maitland Bottoms" <bottoms@debian.org>
Date: Sun, 14 Aug 2022 10:30:55 -0400
Subject: [PATCH] Some minor refactoring of Codec2 build to better use CMake
 features to improve readability ans maintainability.

---
 CMakeLists.txt     | 41 +++++++++++------------------------------
 cmake/version.h.in | 10 +++++-----
 src/CMakeLists.txt |  6 +++---
 3 files changed, 19 insertions(+), 38 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7097c92..172e7d0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,10 +5,13 @@
 # Please report questions, comments, problems, or patches to the freetel
 # mailing list: https://lists.sourceforge.net/lists/listinfo/freetel-codec2
 #
-
-set(CMAKE_OSX_DEPLOYMENT_TARGET "10.11" CACHE STRING "Minimum OS X deployment version")
-
-cmake_minimum_required(VERSION 3.0)
+cmake_minimum_required(VERSION 3.13)
+project(FreeDV
+  VERSION 1.8.2
+  DESCRIPTION "HF Digital Voice for Radio Amateurs"
+  HOMEPAGE_URL "https://freedv.org"
+  LANGUAGES C CXX
+)
 
 # Prevent in-source builds to protect automake/autoconf config.
 # If an in-source build is attempted, you will still need to clean up a few
@@ -24,41 +27,19 @@ endif("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
 # Set local module path.
 list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
 
-project(FreeDV)
-
 # Build universal ARM64 and x86_64 binaries on Mac.
 if(BUILD_OSX_UNIVERSAL)
 set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64")
 endif(BUILD_OSX_UNIVERSAL)
-
-# https://cmake.org/cmake/help/git-stage/policy/CMP0075.html
-if(POLICY CMP0075)
-    cmake_policy(SET CMP0075 NEW)
-endif()
+set(CMAKE_OSX_DEPLOYMENT_TARGET "10.11" CACHE STRING "Minimum OS X deployment version")
 
 # Return the date (yyyy-mm-dd)
-macro(DATE RESULT)
-  execute_process(COMMAND "date" "+%Y%m%d" OUTPUT_VARIABLE ${RESULT})
-endmacro()
-DATE(DATE_RESULT)
-string(REGEX REPLACE "\n$" "" DATE_RESULT "${DATE_RESULT}")
+string(TIMESTAMP DATE_RESULT "%Y-%m-%d" UTC)
 message(STATUS "Compilation date = XX${DATE_RESULT}XX")
 
 #
-# Set FreeDV version and generate src/version.h
+# generate src/version.h
 #
-set(FREEDV_VERSION_MAJOR 1)
-set(FREEDV_VERSION_MINOR 8)
-set(FREEDV_VERSION_PATCH 2)
-set(FREEDV_VERSION_SUFFIX "")
-
-set(FREEDV_VERSION ${FREEDV_VERSION_MAJOR}.${FREEDV_VERSION_MINOR}.${FREEDV_VERSION_PATCH})
-if(FREEDV_VERSION_SUFFIX)
-    set(FREEDV_VERSION_STRING "${FREEDV_VERSION} ${FREEDV_VERSION_SUFFIX}")
-else()
-    set(FREEDV_VERSION_STRING "${FREEDV_VERSION}")
-endif()
-message(STATUS "FreeDV version: ${FREEDV_VERSION_STRING}")
 configure_file(cmake/version.h.in src/version.h @ONLY)
 
 # Set default build type
@@ -93,7 +74,6 @@ else()
         add_definitions(-DGIT_HASH="None")
 endif()
 
-
 # Set default build flags.
 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
@@ -109,6 +89,7 @@ set(CMAKE_CXX_EXTENSIONS OFF)
 # Setup cmake options
 #
 set(CMAKE_VERBOSE_MAKEFILE TRUE CACHE BOOL "Verbose makefile.")
+set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE CACHE BOOL "Enable IDE features.")
 set(USE_INTERNAL_CODEC2 FALSE CACHE BOOL
     "Download and build codec2 and lpcnetfreedv instead of using the system library.")
 set(USE_STATIC_DEPS FALSE CACHE BOOL
diff --git a/cmake/version.h.in b/cmake/version.h.in
index 43b3b7a..81067b1 100644
--- a/cmake/version.h.in
+++ b/cmake/version.h.in
@@ -1,11 +1,11 @@
 #ifndef FREEDV_VER_DOT_H
 #define FREEDV_VER_DOT_H 1
 
-#define FREEDV_VERSION_MAJOR @FREEDV_VERSION_MAJOR@
-#define FREEDV_VERSION_MINOR @FREEDV_VERSION_MINOR@
-#define FREEDV_VERSION_PATCH @FREEDV_VERSION_PATCH@
-#define FREEDV_VERSION_SUFFIX "@FREEDV_VERSION_SUFFIX@"
+#define FREEDV_VERSION_MAJOR @FreeDV_VERSION_MAJOR@
+#define FREEDV_VERSION_MINOR @FreeDV_VERSION_MINOR@
+#define FREEDV_VERSION_PATCH @FreeDV_VERSION_PATCH@
+#define FREEDV_VERSION_SUFFIX @FreeDV_VERSION_TWEAK@
 
-#define FREEDV_VERSION "@FREEDV_VERSION_STRING@"
+#define FREEDV_VERSION "@FreeDV_VERSION@"
 
 #endif //FREEDV_VER_DOT_H
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index f476cbb..c5ecd43 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -66,9 +66,9 @@ if(APPLE)
         MACOSX_BUNDLE_GUI_IDENTIFIER org.freedv.freedv
         MACOSX_BUNDLE_BUNDLE_NAME FreeDV
         MACOSX_BNUDLE_COPYRIGHT "Copyright (c) 2021 FreeDV"
-        MACOSX_BUNDLE_BUNDLE_VERSION "${FREEDV_VERSION}"
-        MACOSX_BUNDLE_BUNDLE_SHORT_VERSION_STRING "${FREEDV_VERSION}"
-        MACOSX_BUNDLE_BUNDLE_LONG_VERSION_STRING "${FREEDV_VERSION}"
+        MACOSX_BUNDLE_BUNDLE_VERSION "${FreeDV_VERSION}"
+        MACOSX_BUNDLE_BUNDLE_SHORT_VERSION_STRING "${FreeDV_VERSION}"
+        MACOSX_BUNDLE_BUNDLE_LONG_VERSION_STRING "${FreeDV_VERSION}"
         MACOSX_BUNDLE_ICON_FILE "freedv"
         MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/src/info.plist.in
     )
-- 
2.35.1

