[gnome-builder/wip/tintou/sysroot-toolchain] cmake: create and use the cross-compilation files
- From: Corentin Noël <corentinnoel src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/tintou/sysroot-toolchain] cmake: create and use the cross-compilation files
- Date: Thu, 26 Apr 2018 17:10:19 +0000 (UTC)
commit 6ea8fbbe59ae198a4284cea0e38a84981d2ab06e
Author: Corentin Noël <corentin noel collabora co uk>
Date: Thu Apr 26 19:09:21 2018 +0200
cmake: create and use the cross-compilation files
src/plugins/cmake/gbp-cmake-pipeline-addin.c | 24 ++++++++++++++++++++++++
src/plugins/cmake/meson.build | 2 ++
2 files changed, 26 insertions(+)
---
diff --git a/src/plugins/cmake/gbp-cmake-pipeline-addin.c b/src/plugins/cmake/gbp-cmake-pipeline-addin.c
index f4f469c60..767c175ef 100644
--- a/src/plugins/cmake/gbp-cmake-pipeline-addin.c
+++ b/src/plugins/cmake/gbp-cmake-pipeline-addin.c
@@ -22,6 +22,8 @@
#include <glib/gi18n.h>
#include "gbp-cmake-build-system.h"
+#include "gbp-cmake-build-stage-cross-file.h"
+#include "gbp-cmake-toolchain.h"
#include "gbp-cmake-pipeline-addin.h"
struct _GbpCMakePipelineAddin
@@ -74,10 +76,12 @@ gbp_cmake_pipeline_addin_load (IdeBuildPipelineAddin *addin,
g_autoptr(GError) error = NULL;
g_autofree gchar *prefix_option = NULL;
g_autofree gchar *build_ninja = NULL;
+ g_autofree gchar *crossbuild_file = NULL;
IdeBuildSystem *build_system;
IdeConfiguration *configuration;
IdeContext *context;
IdeRuntime *runtime;
+ IdeToolchain *toolchain;
const gchar *ninja = NULL;
const gchar *config_opts;
const gchar *prefix;
@@ -99,6 +103,7 @@ gbp_cmake_pipeline_addin_load (IdeBuildPipelineAddin *addin,
configuration = ide_build_pipeline_get_configuration (pipeline);
runtime = ide_build_pipeline_get_runtime (pipeline);
+ toolchain = ide_build_pipeline_get_toolchain (pipeline);
srcdir = ide_build_pipeline_get_srcdir (pipeline);
g_assert (IDE_IS_CONFIGURATION (configuration));
@@ -133,6 +138,19 @@ gbp_cmake_pipeline_addin_load (IdeBuildPipelineAddin *addin,
config_opts = ide_configuration_get_config_opts (configuration);
parallelism = ide_configuration_get_parallelism (configuration);
+ /* Create the toolchain file if required */
+ if (GBP_IS_CMAKE_TOOLCHAIN (toolchain))
+ crossbuild_file = g_strdup (gbp_cmake_toolchain_get_file_path (GBP_CMAKE_TOOLCHAIN (toolchain)));
+ else if (g_strcmp0 (ide_toolchain_get_id (toolchain), "default") != 0)
+ {
+ GbpCMakeBuildStageCrossFile *cross_file_stage;
+ cross_file_stage = gbp_cmake_build_stage_cross_file_new (context, toolchain);
+ crossbuild_file = gbp_cmake_build_stage_cross_file_get_path (cross_file_stage, pipeline);
+
+ id = ide_build_pipeline_connect (pipeline, IDE_BUILD_PHASE_PREPARE, 0, IDE_BUILD_STAGE
(cross_file_stage));
+ ide_build_pipeline_addin_track (addin, id);
+ }
+
/* Setup our configure stage. */
prefix_option = g_strdup_printf ("-DCMAKE_INSTALL_PREFIX=%s", prefix);
@@ -145,6 +163,12 @@ gbp_cmake_pipeline_addin_load (IdeBuildPipelineAddin *addin,
ide_subprocess_launcher_push_argv (configure_launcher, "-DCMAKE_EXPORT_COMPILE_COMMANDS=1");
ide_subprocess_launcher_push_argv (configure_launcher, "-DCMAKE_BUILD_TYPE=RelWithDebInfo");
ide_subprocess_launcher_push_argv (configure_launcher, prefix_option);
+ if (crossbuild_file != NULL)
+ {
+ g_autofree gchar *toolchain_option = g_strdup_printf ("-DCMAKE_TOOLCHAIN_FILE=%s", crossbuild_file);
+
+ ide_subprocess_launcher_push_argv (configure_launcher, toolchain_option);
+ }
if (!dzl_str_empty0 (config_opts))
{
diff --git a/src/plugins/cmake/meson.build b/src/plugins/cmake/meson.build
index 1f4bff90e..b13e99851 100644
--- a/src/plugins/cmake/meson.build
+++ b/src/plugins/cmake/meson.build
@@ -8,6 +8,8 @@ cmake_resources = gnome.compile_resources(
cmake_sources = [
'cmake-plugin.c',
+ 'gbp-cmake-build-stage-cross-file.c',
+ 'gbp-cmake-build-stage-cross-file.h',
'gbp-cmake-build-system.c',
'gbp-cmake-build-system.h',
'gbp-cmake-build-target.c',
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]