parent
52b69b8939
commit
519f159dcc
7 changed files with 121 additions and 7 deletions
@ -0,0 +1,37 @@ |
||||
# Copyright 2012-2015 The Meson development team |
||||
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||
# you may not use this file except in compliance with the License. |
||||
# You may obtain a copy of the License at |
||||
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
||||
|
||||
# Unless required by applicable law or agreed to in writing, software |
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
# See the License for the specific language governing permissions and |
||||
# limitations under the License. |
||||
|
||||
'''This module provides helper functions for Gnome/GLib related |
||||
functionality such as gobject-introspection and gresources.''' |
||||
|
||||
import build |
||||
import os |
||||
|
||||
def compile_resources(state, args, kwargs): |
||||
cmd = ['glib-compile-resources', '@INPUT@', '--generate'] |
||||
if 'source_dir' in kwargs: |
||||
d = os.path.join(state.build_to_src, kwargs.pop('source_dir')) |
||||
cmd += ['--sourcedir', d] |
||||
if 'c_name' in kwargs: |
||||
cmd += ['--c-name', kwargs.pop('c_name')] |
||||
cmd += ['--target', '@OUTPUT@'] |
||||
kwargs['command'] = cmd |
||||
output_c = args[0] + '.c' |
||||
output_h = args[0] + '.h' |
||||
kwargs['input'] = args[1] |
||||
kwargs['output'] = output_c |
||||
target_c = build.CustomTarget(args[0]+'_c', state.subdir, kwargs) |
||||
kwargs['output'] = output_h |
||||
target_h = build.CustomTarget(args[0] + '_h', state.subdir, kwargs) |
||||
return [target_c, target_h] |
@ -0,0 +1 @@ |
||||
This is a resource. |
@ -0,0 +1,27 @@ |
||||
#include<stdio.h> |
||||
#include<string.h> |
||||
#include<gio/gio.h> |
||||
#include"myresources.h" |
||||
|
||||
#define EXPECTED "This is a resource.\n" |
||||
|
||||
int main(int argc, char **argv) { |
||||
GResource *res = myres_get_resource(); |
||||
GError *err = NULL; |
||||
GBytes *data = g_resources_lookup_data("/com/example/myprog/res1.txt", |
||||
G_RESOURCE_LOOKUP_FLAGS_NONE, &err); |
||||
|
||||
if(data == NULL) { |
||||
fprintf(stderr, "Data lookup failed: %s\n", err->message); |
||||
return 1; |
||||
} |
||||
if(strcmp(g_bytes_get_data(data, NULL), EXPECTED) != 0) { |
||||
fprintf(stderr, "Resource contents are wrong:\n %s\n", |
||||
(const char*)g_bytes_get_data(data, NULL)); |
||||
return 1; |
||||
} |
||||
fprintf(stderr, "All ok.\n"); |
||||
g_bytes_unref(data); |
||||
g_resource_unref(res); |
||||
return 0; |
||||
} |
@ -0,0 +1,12 @@ |
||||
project('glib compile resource', 'c') |
||||
|
||||
gnome = import('gnome') |
||||
gio = dependency('gio-2.0') |
||||
|
||||
myres = gnome.compile_resources('myresources', 'myresource.gresource.xml', |
||||
source_dir : 'data', |
||||
c_name : 'myres') |
||||
|
||||
exe = executable('resprog', 'main.c', myres, |
||||
dependencies : gio) |
||||
test('resource test', exe) |
@ -0,0 +1,6 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<gresources> |
||||
<gresource prefix="/com/example/myprog"> |
||||
<file>res1.txt</file> |
||||
</gresource> |
||||
</gresources> |
Loading…
Reference in new issue