From 0f0188aacbc0d039df4e954b8bc8933102ab9fa5 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Tue, 14 Mar 2017 10:26:22 +0100 Subject: [PATCH] builder: Add support for ldflags --- builder/builder-options.c | 42 ++++++++++++++++++++++++++++++++++++++- builder/builder-options.h | 2 ++ doc/flatpak-builder.xml | 4 ++++ 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/builder/builder-options.c b/builder/builder-options.c index a6398da7..b8527d31 100644 --- a/builder/builder-options.c +++ b/builder/builder-options.c @@ -40,6 +40,7 @@ struct BuilderOptions gboolean no_debuginfo; char *cflags; char *cxxflags; + char *ldflags; char *prefix; char **env; char **build_args; @@ -61,6 +62,7 @@ enum { PROP_0, PROP_CFLAGS, PROP_CXXFLAGS, + PROP_LDFLAGS, PROP_PREFIX, PROP_ENV, PROP_STRIP, @@ -79,6 +81,7 @@ builder_options_finalize (GObject *object) g_free (self->cflags); g_free (self->cxxflags); + g_free (self->ldflags); g_free (self->prefix); g_strfreev (self->env); g_strfreev (self->build_args); @@ -106,6 +109,10 @@ builder_options_get_property (GObject *object, g_value_set_string (value, self->cxxflags); break; + case PROP_LDFLAGS: + g_value_set_string (value, self->ldflags); + break; + case PROP_PREFIX: g_value_set_string (value, self->prefix); break; @@ -160,6 +167,11 @@ builder_options_set_property (GObject *object, self->cxxflags = g_value_dup_string (value); break; + case PROP_LDFLAGS: + g_clear_pointer (&self->ldflags, g_free); + self->ldflags = g_value_dup_string (value); + break; + case PROP_PREFIX: g_clear_pointer (&self->prefix, g_free); self->prefix = g_value_dup_string (value); @@ -225,6 +237,13 @@ builder_options_class_init (BuilderOptionsClass *klass) "", NULL, G_PARAM_READWRITE)); + g_object_class_install_property (object_class, + PROP_LDFLAGS, + g_param_spec_string ("ldflags", + "", + "", + NULL, + G_PARAM_READWRITE)); g_object_class_install_property (object_class, PROP_PREFIX, g_param_spec_string ("prefix", @@ -519,6 +538,22 @@ builder_options_get_cxxflags (BuilderOptions *self, BuilderContext *context) return NULL; } +const char * +builder_options_get_ldflags (BuilderOptions *self, BuilderContext *context) +{ + g_autoptr(GList) options = get_all_options (self, context); + GList *l; + + for (l = options; l != NULL; l = l->next) + { + BuilderOptions *o = l->data; + if (o->ldflags) + return o->ldflags; + } + + return NULL; +} + const char * builder_options_get_prefix (BuilderOptions *self, BuilderContext *context) { @@ -577,7 +612,7 @@ builder_options_get_env (BuilderOptions *self, BuilderContext *context) GList *l; int i; char **envp = NULL; - const char *cflags, *cxxflags; + const char *cflags, *cxxflags, *ldflags; for (l = options; l != NULL; l = l->next) { @@ -617,6 +652,10 @@ builder_options_get_env (BuilderOptions *self, BuilderContext *context) if (cxxflags) envp = g_environ_setenv (envp, "CXXFLAGS", cxxflags, TRUE); + ldflags = builder_options_get_ldflags (self, context); + if (ldflags) + envp = g_environ_setenv (envp, "LDFLAGS", cxxflags, TRUE); + return envp; } @@ -701,6 +740,7 @@ builder_options_checksum (BuilderOptions *self, builder_cache_checksum_str (cache, BUILDER_OPTION_CHECKSUM_VERSION); builder_cache_checksum_str (cache, self->cflags); builder_cache_checksum_str (cache, self->cxxflags); + builder_cache_checksum_str (cache, self->ldflags); builder_cache_checksum_str (cache, self->prefix); builder_cache_checksum_strv (cache, self->env); builder_cache_checksum_strv (cache, self->build_args); diff --git a/builder/builder-options.h b/builder/builder-options.h index 6089c205..0e0f6d8a 100644 --- a/builder/builder-options.h +++ b/builder/builder-options.h @@ -41,6 +41,8 @@ const char *builder_options_get_cflags (BuilderOptions *self, BuilderContext *context); const char *builder_options_get_cxxflags (BuilderOptions *self, BuilderContext *context); +const char *builder_options_get_ldflags (BuilderOptions *self, + BuilderContext *context); const char *builder_options_get_prefix (BuilderOptions *self, BuilderContext *context); char ** builder_options_get_env (BuilderOptions *self, diff --git a/doc/flatpak-builder.xml b/doc/flatpak-builder.xml index 910aed89..3697e72a 100644 --- a/doc/flatpak-builder.xml +++ b/doc/flatpak-builder.xml @@ -276,6 +276,10 @@ (string) This is set in the environment variable CXXFLAGS during the build. + + (string) + This is set in the environment variable LDFLAGS during the build. + (string) The build prefix for the modules (defaults to /app for