[grilo/wip/jtojnar/nice-pc-files] build: Use variables in pc files



commit 1b91ebe3661dc09b46a65a8bddcb74d7b3bf9074
Author: Jan Tojnar <jtojnar gmail com>
Date:   Thu Sep 12 13:08:04 2019 +0200

    build: Use variables in pc files
    
    Recently, we started prefixing the values of all variables defined in pc files
    with `prefix` meson variable. While this works even when `datadir` option is
    absolute (supported by some meson forks), it leads to inflexible pc files even
    when prefixing is not strictly necessary.
    
    In this commit, we are constructing variables for pkg-config files separately
    from paths used for installation, obtaining nice .pc files in the common case,
    while still supporting unusual platforms like Nix.

 libs/net/meson.build | 6 +++---
 libs/pls/meson.build | 6 +++---
 meson.build          | 9 ++++++++-
 src/meson.build      | 8 ++++----
 4 files changed, 18 insertions(+), 11 deletions(-)
---
diff --git a/libs/net/meson.build b/libs/net/meson.build
index 56c923c..c366adf 100644
--- a/libs/net/meson.build
+++ b/libs/net/meson.build
@@ -52,10 +52,10 @@ grlnet_pc = pkgconfig.generate(libgrlnet,
     version: grlnet_version,
     variables: [
         'exec_prefix=${prefix}',
-        'datarootdir=' + join_paths('${prefix}', datadir),
+        'datarootdir=' + datadir_for_pc_file,
         'datadir=${datarootdir}',
-        'girdir=' + girdir,
-        'typelibdir=' + typelibdir,
+        'girdir=' + girdir_for_pc_file,
+        'typelibdir=' + typelibdir_for_pc_file,
     ],
 )
 
diff --git a/libs/pls/meson.build b/libs/pls/meson.build
index 5915806..dc5ca7c 100644
--- a/libs/pls/meson.build
+++ b/libs/pls/meson.build
@@ -37,10 +37,10 @@ grlpls_pc = pkgconfig.generate(libgrlpls,
     version: grlpls_version,
     variables: [
         'exec_prefix=${prefix}',
-        'datarootdir=' + join_paths('${prefix}', datadir),
+        'datarootdir=' + datadir_for_pc_file,
         'datadir=${datarootdir}',
-        'girdir=' + girdir,
-        'typelibdir=' + typelibdir,
+        'girdir=' + girdir_for_pc_file,
+        'typelibdir=' + typelibdir_for_pc_file,
     ],
 )
 
diff --git a/meson.build b/meson.build
index 6f2691d..a3e632e 100644
--- a/meson.build
+++ b/meson.build
@@ -76,15 +76,22 @@ prefix = get_option('prefix')
 includedir = join_paths(prefix, get_option('includedir'))
 libdir = join_paths(prefix, get_option('libdir'))
 plugins_dir = join_paths(libdir, grl_name)
+plugins_dir_for_pc_file = join_paths('${libdir}', grl_name)
 localedir = join_paths(prefix, get_option('localedir'))
-datadir = join_paths(prefix, get_option('datadir'))
+datadir_unprefixed = get_option('datadir')
+datadir = join_paths(prefix, datadir_unprefixed)
+datadir_for_pc_file = join_paths('${prefix}', datadir_unprefixed)
 
 girdir = join_paths(datadir, 'gir-1.0')
+girdir_for_pc_file = join_paths('${datadir}', 'gir-1.0')
 typelibdir = join_paths(libdir, 'girepository-1.0')
+typelibdir_for_pc_file = join_paths('${libdir}', 'girepository-1.0')
 gobject_introspection = dependency('gobject-introspection-1.0', required: false)
 if gobject_introspection.found()
     girdir = gobject_introspection.get_pkgconfig_variable('girdir', define_variable: ['datadir', datadir])
+    girdir_for_pc_file = gobject_introspection.get_pkgconfig_variable('girdir', define_variable: ['datadir', 
'${datadir}'])
     typelibdir = gobject_introspection.get_pkgconfig_variable('typelibdir', define_variable: ['libdir', 
libdir])
+    typelibdir_for_pc_file = gobject_introspection.get_pkgconfig_variable('typelibdir', define_variable: 
['libdir', '${libdir}'])
 endif
 
 vapidir = join_paths(datadir, 'vala', 'vapi')
diff --git a/src/meson.build b/src/meson.build
index 8efe589..10fd390 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -116,11 +116,11 @@ grl_pc = pkgconfig.generate(libgrl,
     version: grilo_version,
     variables: [
         'exec_prefix=${prefix}',
-        'datarootdir=' + join_paths('${prefix}', datadir),
+        'datarootdir=' + datadir_for_pc_file,
         'datadir=${datarootdir}',
-        'girdir=' + girdir,
-        'typelibdir=' + typelibdir,
-        'plugindir=' + plugins_dir,
+        'girdir=' + girdir_for_pc_file,
+        'typelibdir=' + typelibdir_for_pc_file,
+        'plugindir=' + plugins_dir_for_pc_file,
     ],
 )
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]