[babl] build: subproject improvements: - don't expose source in dependency to avoid name clashes - add ba
- From: Øyvind "pippin" Kolås <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [babl] build: subproject improvements: - don't expose source in dependency to avoid name clashes - add ba
- Date: Sat, 27 Feb 2021 13:05:46 +0000 (UTC)
commit 4383ee8693c6cfc1c11214cd294c9648fb361daa
Author: John <jtm home gmail com>
Date: Fri Feb 26 07:19:44 2021 +0000
build: subproject improvements:
- don't expose source in dependency to avoid name clashes
- add babl path variables to dependency object
- add babl path variables to uninstalled pc
babl/babl/meson.build | 9 ++++++++
babl/git-version.h.in | 6 -----
babl/meson.build | 52 +++++++++++-------------------------------
git-version.h.in | 6 +++++
meson.build | 63 +++++++++++++++++++++++++++++++++++++++++++++------
5 files changed, 84 insertions(+), 52 deletions(-)
---
diff --git a/babl/babl/meson.build b/babl/babl/meson.build
new file mode 100644
index 000000000..461625a7b
--- /dev/null
+++ b/babl/babl/meson.build
@@ -0,0 +1,9 @@
+# Copy the public headers here for subproject builds.
+
+foreach _hdr : babl_headers
+ configure_file(
+ input: _hdr,
+ output: '@PLAINNAME@',
+ copy: true,
+ )
+endforeach
diff --git a/babl/meson.build b/babl/meson.build
index 623367804..d19210a28 100644
--- a/babl/meson.build
+++ b/babl/meson.build
@@ -54,43 +54,14 @@ if platform_win32
babl_link_args += no_undefined
endif
+# sources
babl_version_h = configure_file(
input: 'babl-version.h.in',
output: 'babl-version.h',
configuration: conf,
)
-# If git is available, always check if git-version.h should be
-# updated. If git is not available, don't do anything if git-version.h
-# already exists because then we are probably working with a tarball
-# in which case the git-version.h we ship is correct.
-if git_bin.found() and run_command(
- git_bin,
- 'rev-parse',
- '--is-inside-work-tree',
-).returncode() == 0
- git_version_h = vcs_tag(
- input : 'git-version.h.in',
- output: 'git-version.h',
- replace_string: '@BABL_GIT_VERSION@',
- command: [ git_bin.path(), 'describe', '--always' ],
- )
-
- if env_bin.found() and not meson.is_subproject()
- meson.add_dist_script(
- [ 'ninja', 'babl/git-version.h', ],
- )
- meson.add_dist_script(
- [ 'sh', '-c', ' '.join(
- [ 'cp', git_version_h.full_path(), '${MESON_DIST_ROOT}/babl' ]
- )]
- )
- endif
-else
- git_version_h = files('git-version.h')
-endif
-
-babl_sources = [
+babl_sources = files(
'babl-cache.c',
'babl-component.c',
'babl-conversion.c',
@@ -123,25 +94,34 @@ babl_sources = [
'babl-util.c',
'babl-version.c',
'babl.c',
+) + [
babl_version_h,
git_version_h,
]
-babl_headers = [
+babl_headers = files(
'babl-introspect.h',
'babl-macros.h',
'babl-types.h',
'babl.h',
+) + [
babl_version_h,
]
install_headers(babl_headers,
- subdir: join_paths(lib_name, 'babl')
+ subdir: lib_name / 'babl'
)
+# copy external headers to babl subdirectory for subproject builds as
+# we don't want to expose the project root folder due to potential
+# name clashes.
+if meson.is_subproject()
+ subdir('babl')
+endif
babl_deps = [math, thread, dl, lcms]
babl_includes = [rootInclude, bablBaseInclude]
+# build library
babl = library(
lib_name,
babl_sources,
@@ -155,12 +135,6 @@ babl = library(
install: true,
)
-libbabl_dep = declare_dependency(
- include_directories: babl_includes,
- link_with: babl,
- dependencies: babl_deps
-)
-
if build_gir
# identity filter, so GIR doesn't choke on the Babl type
# (since it has the same name as the Babl namespace)
diff --git a/git-version.h.in b/git-version.h.in
new file mode 100644
index 000000000..41bdefbbd
--- /dev/null
+++ b/git-version.h.in
@@ -0,0 +1,6 @@
+#ifndef __BABL_GIT_VERSION_H__
+#define __BABL_GIT_VERSION_H__
+
+#define BABL_GIT_VERSION "@BABL_GIT_VERSION@"
+
+#endif /* __BABL_GIT_VERSION_H__ */
diff --git a/meson.build b/meson.build
index 62b6475b7..d08cb6bb5 100644
--- a/meson.build
+++ b/meson.build
@@ -30,6 +30,9 @@ buildtype = get_option('buildtype')
babl_prefix = get_option('prefix')
babl_libdir = join_paths(babl_prefix, get_option('libdir'))
+project_build_root = meson.current_build_dir()
+project_source_root = meson.current_source_dir()
+
################################################################################
# Projects infos
@@ -409,12 +412,46 @@ endif
################################################################################
# Configuration files
+# This should not be made visible in babl_dep due to possible name clash
+# when built as a sub-project.
+rootInclude = include_directories('.')
+
# config.h
configure_file(
output: 'config.h',
configuration: conf
)
+# If git is available, always check if git-version.h should be
+# updated. If git is not available, don't do anything if git-version.h
+# already exists because then we are probably working with a tarball
+# in which case the git-version.h we ship is correct.
+if git_bin.found() and run_command(
+ git_bin,
+ 'rev-parse',
+ '--is-inside-work-tree',
+).returncode() == 0
+ git_version_h = vcs_tag(
+ input : 'git-version.h.in',
+ output: 'git-version.h',
+ replace_string: '@BABL_GIT_VERSION@',
+ command: [ git_bin.path(), 'describe', '--always' ],
+ )
+
+ if not meson.is_subproject()
+ meson.add_dist_script(
+ [ 'ninja', 'git-version.h', ],
+ )
+ meson.add_dist_script(
+ [ 'sh', '-c', ' '.join(
+ [ 'cp', git_version_h.full_path(), '${MESON_DIST_ROOT}' ]
+ )]
+ )
+ endif
+else
+ git_version_h = files('git-version.h')
+endif
+
################################################################################
# Global variables
@@ -428,8 +465,6 @@ gen_babl_map_file = files('gen_babl_map.py')
################################################################################
# Subdirs
-rootInclude = include_directories('.')
-
subdir('babl')
subdir('extensions')
subdir('tests')
@@ -456,17 +491,31 @@ endif
# pkg-config file
-pkgconfig.generate(babl,
+pkgconfig.generate(
+ babl,
filebase: 'babl',
name: 'babl',
description: 'Pixel encoding and color space conversion engine.',
version: meson.project_version(),
- libraries_private: [
- '-lm',
+ subdirs: lib_name,
+ uninstalled_variables: [
+ 'babl_path=@0@'.format(babl_extensions_build_dir),
+ 'babl_libdir=@0@'.format(babl_library_build_dir),
],
- subdirs: [
- lib_name,
+)
+
+# dependency for wrap builds
+babl_dep = declare_dependency(
+ include_directories: bablInclude,
+ link_with : babl,
+ sources: [
+ babl_version_h,
+ is_variable('babl_gir') ? babl_gir : []
],
+ variables: {
+ 'babl_path' : babl_extensions_build_dir,
+ 'babl_libdir' : babl_library_build_dir,
+ },
)
################################################################################
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]