forked from Mirrors/flatpak-builder
parent
4e614fd513
commit
e6f694bc23
|
@ -58,6 +58,7 @@ struct BuilderOptions
|
||||||
char **make_args;
|
char **make_args;
|
||||||
char **make_install_args;
|
char **make_install_args;
|
||||||
GHashTable *arch;
|
GHashTable *arch;
|
||||||
|
BuilderSdkConfig *sdk_default_override;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
|
@ -94,6 +95,7 @@ enum {
|
||||||
PROP_PREPEND_LD_LIBRARY_PATH,
|
PROP_PREPEND_LD_LIBRARY_PATH,
|
||||||
PROP_APPEND_PKG_CONFIG_PATH,
|
PROP_APPEND_PKG_CONFIG_PATH,
|
||||||
PROP_PREPEND_PKG_CONFIG_PATH,
|
PROP_PREPEND_PKG_CONFIG_PATH,
|
||||||
|
PROP_SDK_DEFAULT_OVERRIDE,
|
||||||
LAST_PROP
|
LAST_PROP
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -122,6 +124,7 @@ builder_options_finalize (GObject *object)
|
||||||
g_strfreev (self->make_args);
|
g_strfreev (self->make_args);
|
||||||
g_strfreev (self->make_install_args);
|
g_strfreev (self->make_install_args);
|
||||||
g_hash_table_destroy (self->arch);
|
g_hash_table_destroy (self->arch);
|
||||||
|
g_clear_object (&self->sdk_default_override);
|
||||||
|
|
||||||
G_OBJECT_CLASS (builder_options_parent_class)->finalize (object);
|
G_OBJECT_CLASS (builder_options_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
|
@ -224,6 +227,10 @@ builder_options_get_property (GObject *object,
|
||||||
g_value_set_boolean (value, self->no_debuginfo_compression);
|
g_value_set_boolean (value, self->no_debuginfo_compression);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_SDK_DEFAULT_OVERRIDE:
|
||||||
|
g_value_set_object (value, self->sdk_default_override);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
}
|
}
|
||||||
|
@ -354,6 +361,10 @@ builder_options_set_property (GObject *object,
|
||||||
self->no_debuginfo_compression = g_value_get_boolean (value);
|
self->no_debuginfo_compression = g_value_get_boolean (value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_SDK_DEFAULT_OVERRIDE:
|
||||||
|
g_set_object(&self->sdk_default_override, g_value_dup_object (value));
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
}
|
}
|
||||||
|
@ -522,6 +533,14 @@ builder_options_class_init (BuilderOptionsClass *klass)
|
||||||
"",
|
"",
|
||||||
FALSE,
|
FALSE,
|
||||||
G_PARAM_READWRITE));
|
G_PARAM_READWRITE));
|
||||||
|
|
||||||
|
g_object_class_install_property (object_class,
|
||||||
|
PROP_SDK_DEFAULT_OVERRIDE,
|
||||||
|
g_param_spec_object ("sdk-default-override",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
BUILDER_TYPE_SDK_CONFIG,
|
||||||
|
G_PARAM_READWRITE));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -777,36 +796,58 @@ builder_options_get_flags (BuilderOptions *self,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *
|
||||||
|
get_sdk_flags (BuilderOptions *self, BuilderContext *context, const char *(*method)(BuilderSdkConfig *self))
|
||||||
|
{
|
||||||
|
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->sdk_default_override)
|
||||||
|
{
|
||||||
|
const char * sdk_flags = (*method) (o->sdk_default_override);
|
||||||
|
if (sdk_flags)
|
||||||
|
return sdk_flags;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
BuilderSdkConfig *sdk_config = builder_context_get_sdk_config (context);
|
||||||
|
if (sdk_config)
|
||||||
|
{
|
||||||
|
const char *sdk_flags = (*method) (sdk_config);
|
||||||
|
return sdk_flags;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
const char *
|
const char *
|
||||||
builder_options_get_cflags (BuilderOptions *self, BuilderContext *context)
|
builder_options_get_cflags (BuilderOptions *self, BuilderContext *context)
|
||||||
{
|
{
|
||||||
BuilderSdkConfig * sdk_config = builder_context_get_sdk_config (context);
|
|
||||||
return builder_options_get_flags (self, context, G_STRUCT_OFFSET (BuilderOptions, cflags),
|
return builder_options_get_flags (self, context, G_STRUCT_OFFSET (BuilderOptions, cflags),
|
||||||
sdk_config?builder_sdk_config_get_cflags(sdk_config):NULL);
|
get_sdk_flags (self, context, builder_sdk_config_get_cflags));
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
builder_options_get_cxxflags (BuilderOptions *self, BuilderContext *context)
|
builder_options_get_cxxflags (BuilderOptions *self, BuilderContext *context)
|
||||||
{
|
{
|
||||||
BuilderSdkConfig * sdk_config = builder_context_get_sdk_config (context);
|
|
||||||
return builder_options_get_flags (self, context, G_STRUCT_OFFSET (BuilderOptions, cxxflags),
|
return builder_options_get_flags (self, context, G_STRUCT_OFFSET (BuilderOptions, cxxflags),
|
||||||
sdk_config?builder_sdk_config_get_cxxflags(sdk_config):NULL);
|
get_sdk_flags (self, context, builder_sdk_config_get_cxxflags));
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
builder_options_get_cppflags (BuilderOptions *self, BuilderContext *context)
|
builder_options_get_cppflags (BuilderOptions *self, BuilderContext *context)
|
||||||
{
|
{
|
||||||
BuilderSdkConfig * sdk_config = builder_context_get_sdk_config (context);
|
|
||||||
return builder_options_get_flags (self, context, G_STRUCT_OFFSET (BuilderOptions, cppflags),
|
return builder_options_get_flags (self, context, G_STRUCT_OFFSET (BuilderOptions, cppflags),
|
||||||
sdk_config?builder_sdk_config_get_cppflags(sdk_config):NULL);
|
get_sdk_flags (self, context, builder_sdk_config_get_cppflags));
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
builder_options_get_ldflags (BuilderOptions *self, BuilderContext *context)
|
builder_options_get_ldflags (BuilderOptions *self, BuilderContext *context)
|
||||||
{
|
{
|
||||||
BuilderSdkConfig * sdk_config = builder_context_get_sdk_config (context);
|
|
||||||
return builder_options_get_flags (self, context, G_STRUCT_OFFSET (BuilderOptions, ldflags),
|
return builder_options_get_flags (self, context, G_STRUCT_OFFSET (BuilderOptions, ldflags),
|
||||||
sdk_config?builder_sdk_config_get_ldflags(sdk_config):NULL);
|
get_sdk_flags (self, context, builder_sdk_config_get_ldflags));
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
|
@ -919,16 +960,7 @@ builder_options_get_prefix (BuilderOptions *self, BuilderContext *context)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (builder_context_get_build_runtime (context))
|
if (builder_context_get_build_runtime (context))
|
||||||
{
|
return "/usr";
|
||||||
BuilderSdkConfig * sdk_config = builder_context_get_sdk_config (context);
|
|
||||||
if (sdk_config)
|
|
||||||
{
|
|
||||||
const char * prefix = builder_sdk_config_get_prefix (sdk_config);
|
|
||||||
if (prefix)
|
|
||||||
return prefix;
|
|
||||||
}
|
|
||||||
return "/usr";
|
|
||||||
}
|
|
||||||
|
|
||||||
return "/app";
|
return "/app";
|
||||||
}
|
}
|
||||||
|
@ -947,15 +979,7 @@ builder_options_get_libdir (BuilderOptions *self, BuilderContext *context)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (builder_context_get_build_runtime (context))
|
if (builder_context_get_build_runtime (context))
|
||||||
{
|
return get_sdk_flags (self, context, builder_sdk_config_get_libdir);
|
||||||
BuilderSdkConfig * sdk_config = builder_context_get_sdk_config (context);
|
|
||||||
if (sdk_config)
|
|
||||||
{
|
|
||||||
const char * prefix = builder_sdk_config_get_libdir (sdk_config);
|
|
||||||
if (prefix)
|
|
||||||
return prefix;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue