Skip to content

Commit

Permalink
ipa: meson: Allow nested IPA directory structures
Browse files Browse the repository at this point in the history
The current IPA build files require a flat directory structure for the
IPAs. Modify the build files to remove this restriction and allow a
directory structure such as:

src/ipa
  |- raspberrypi
      |- common
      |- cam_helpers
      |- controller
      |- vc4
  |- rkisp1
  |- ipu3

where each subdir (e.g. raspberrypi/common, raspberrypi/cam_helper) has
its own meson.build file. Such a directory structure will be introduced
for the Raspberry Pi IPA in a future commit.

Signed-off-by: Naushir Patuck <[email protected]>
Reviewed-by: Jacopo Mondi <[email protected]>
Reviewed-by: Laurent Pinchart <[email protected]>
Signed-off-by: Laurent Pinchart <[email protected]>
  • Loading branch information
naushir authored and pinchartl committed May 4, 2023
1 parent 6388449 commit e8526c0
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 9 deletions.
2 changes: 1 addition & 1 deletion meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ py_mod.find_installation('python3', modules: py_modules)
## Summarise Configurations
summary({
'Enabled pipelines': pipelines,
'Enabled IPA modules': enabled_ipa_modules,
'Enabled IPA modules': enabled_ipa_names,
'Tracing support': tracing_enabled,
'Android support': android_enabled,
'GStreamer support': gst_enabled,
Expand Down
2 changes: 2 additions & 0 deletions src/ipa/ipu3/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,5 @@ if ipa_sign_module
install : false,
build_by_default : true)
endif

ipa_names += ipa_name
31 changes: 23 additions & 8 deletions src/ipa/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,31 @@ if get_option('test') and 'vimc' not in ipa_modules
endif

enabled_ipa_modules = []
enabled_ipa_names = []
ipa_names = []

# The ipa-sign-install.sh script which uses the ipa_names variable will itself
# prepend MESON_INSTALL_DESTDIR_PREFIX to each ipa module name, therefore we
# must not include the prefix string here.
subdirs = []
foreach pipeline : pipelines
if ipa_modules.contains(pipeline)
subdir(pipeline)
ipa_names += ipa_install_dir / ipa_name + '.so'
enabled_ipa_modules += pipeline
if not ipa_modules.contains(pipeline)
continue
endif
enabled_ipa_names += pipeline

# Allow multi-level directory structuring for the IPAs if needed.
pipeline = pipeline.split('/')[0]
if pipeline in subdirs
continue
endif

subdir(pipeline)
subdirs += pipeline
endforeach

# The ipa-sign-install.sh script which uses the enabled_ipa_modules variable
# will itself prepend MESON_INSTALL_DESTDIR_PREFIX to each ipa module name,
# therefore we must not include the prefix string here.
foreach ipa_name : ipa_names
enabled_ipa_modules += ipa_install_dir / ipa_name + '.so'
endforeach

if ipa_sign_module
Expand All @@ -54,5 +69,5 @@ if ipa_sign_module
# install time, which invalidates the signatures.
meson.add_install_script('ipa-sign-install.sh',
ipa_priv_key.full_path(),
ipa_names)
enabled_ipa_modules)
endif
2 changes: 2 additions & 0 deletions src/ipa/raspberrypi/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,5 @@ if ipa_sign_module
endif

subdir('data')

ipa_names += ipa_name
2 changes: 2 additions & 0 deletions src/ipa/rkisp1/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,5 @@ if ipa_sign_module
install : false,
build_by_default : true)
endif

ipa_names += ipa_name
2 changes: 2 additions & 0 deletions src/ipa/vimc/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,5 @@ if ipa_sign_module
endif

subdir('data')

ipa_names += ipa_name

0 comments on commit e8526c0

Please sign in to comment.