From 269fd060c56cbb01665a4ce9270ce4e67e56b70f Mon Sep 17 00:00:00 2001
From: Håkon Vågsether <haakonsv@gmail.com>
Date: Mon, 1 Jun 2020 15:59:27 +0200
Subject: cppgen: Update to modern CMake

---
 grc/core/Config.py                                 |  1 +
 .../generator/cpp_templates/CMakeLists.txt.mako    | 42 ++++++++++------------
 .../generator/cpp_templates/flow_graph.cpp.mako    |  2 +-
 .../generator/cpp_templates/flow_graph.hpp.mako    |  2 +-
 grc/core/generator/cpp_top_block.py                |  2 +-
 5 files changed, 22 insertions(+), 27 deletions(-)

(limited to 'grc')

diff --git a/grc/core/Config.py b/grc/core/Config.py
index 916d5be962..1bf5459897 100644
--- a/grc/core/Config.py
+++ b/grc/core/Config.py
@@ -24,6 +24,7 @@ class Config(object):
         self._gr_prefs = prefs if prefs else DummyPrefs()
         self.version = version
         self.version_parts = version_parts or version[1:].split('-', 1)[0].split('.')[:3]
+        self.enabled_components = self._gr_prefs.get_string('grc', 'enabled_components', '')
         if name:
             self.name = name
 
diff --git a/grc/core/generator/cpp_templates/CMakeLists.txt.mako b/grc/core/generator/cpp_templates/CMakeLists.txt.mako
index a1f1b3f822..1382ff2985 100644
--- a/grc/core/generator/cpp_templates/CMakeLists.txt.mako
+++ b/grc/core/generator/cpp_templates/CMakeLists.txt.mako
@@ -8,32 +8,33 @@
 % if flow_graph.get_option('description'):
 # Description: ${flow_graph.get_option('description')}
 % endif
-# GNU Radio version: ${version}
+# GNU Radio version: ${config.version}
 #####################
 
 <%
 class_name = flow_graph.get_option('id')
+version_list = config.version.split(".")
+short_version = '.'.join(version_list[0:2])
 %>\
 
 cmake_minimum_required(VERSION 3.8)
 set(CMAKE_CXX_STANDARD 11)
 
-% if generate_options == 'qt_gui':
-find_package(Qt5Widgets REQUIRED)
-% endif
+project(${class_name})
 
-include_directories(
-    ${'$'}{GNURADIO_ALL_INCLUDE_DIRS}
-    ${'$'}{Boost_INCLUDE_DIRS}
-    % if generate_options == 'qt_gui':
-    ${'$'}{Qt5Widgets_INCLUDE_DIRS}
+
+find_package(Gnuradio "${short_version}" COMPONENTS
+    % for component in config.enabled_components.split(";"):
+    % if component.startswith("gr-"):
+    % if not component in ['gr-utils', 'gr-ctrlport']:
+    ${component.replace("gr-", "")}
+    % endif
     % endif
-    $ENV{HOME}/.grc_gnuradio
+    % endfor
 )
 
 % if generate_options == 'qt_gui':
-add_definitions(${'$'}{Qt5Widgets_DEFINITIONS})
-set(CMAKE_CXX_FLAGS "${'$'}{CMAKE_CXX_FLAGS} -fPIC")
+find_package(Qt5Widgets REQUIRED)
 set(CMAKE_AUTOMOC TRUE)
 % endif
 
@@ -49,21 +50,14 @@ set(CMAKE_EXE_LINKER_FLAGS " -static")
 set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
 % endif
 
-set(GR_LIBRARIES
-    boost_system
-    % if parameters:
-    boost_program_options
-    % endif
-    gnuradio-blocks
-    gnuradio-runtime
-    gnuradio-pmt
-    log4cpp
+add_executable(${class_name} ${class_name}.cpp)
+target_link_libraries(${class_name}
+    gnuradio::gnuradio-blocks
     % for link in links:
     % if link:
-    ${link}
+    ${link.replace("gnuradio-", "gnuradio::gnuradio-")}
     % endif
     % endfor
+
 )
 
-add_executable(${class_name} ${class_name}.cpp)
-target_link_libraries(${class_name} ${'$'}{GR_LIBRARIES})
diff --git a/grc/core/generator/cpp_templates/flow_graph.cpp.mako b/grc/core/generator/cpp_templates/flow_graph.cpp.mako
index 7dabf7b0ed..f806de62b2 100644
--- a/grc/core/generator/cpp_templates/flow_graph.cpp.mako
+++ b/grc/core/generator/cpp_templates/flow_graph.cpp.mako
@@ -9,7 +9,7 @@ Author: ${flow_graph.get_option('author')}
 % if flow_graph.get_option('description'):
 Description: ${flow_graph.get_option('description')}
 % endif
-GNU Radio version: ${version}
+GNU Radio version: ${config.version}
 ********************/
 
 #include "${flow_graph.get_option('id')}.hpp"
diff --git a/grc/core/generator/cpp_templates/flow_graph.hpp.mako b/grc/core/generator/cpp_templates/flow_graph.hpp.mako
index b5b9d51b00..4c7c16b185 100644
--- a/grc/core/generator/cpp_templates/flow_graph.hpp.mako
+++ b/grc/core/generator/cpp_templates/flow_graph.hpp.mako
@@ -12,7 +12,7 @@ Author: ${flow_graph.get_option('author')}
 % if flow_graph.get_option('description'):
 Description: ${flow_graph.get_option('description')}
 % endif
-GNU Radio version: ${version}
+GNU Radio version: ${config.version}
 ********************/
 
 /********************
diff --git a/grc/core/generator/cpp_top_block.py b/grc/core/generator/cpp_top_block.py
index 9d264329ef..002128a1e9 100644
--- a/grc/core/generator/cpp_top_block.py
+++ b/grc/core/generator/cpp_top_block.py
@@ -72,7 +72,7 @@ class CppTopBlockGenerator(TopBlockGenerator):
             'parameters': parameters,
             'monitors': monitors,
             'generate_options': self._generate_options,
-            'version': platform.config.version
+            'config': platform.config
         }
 
         if not os.path.exists(self.file_path):
-- 
cgit v1.2.3