forked from enlightenment/efl
130 lines
5.0 KiB
Meson
130 lines
5.0 KiB
Meson
|
|
# ['eina', 'eolian', 'eo'] those three are build in the root meson.build reason for this is the super special handling
|
|
cxx_sublibs = [
|
|
['Eina', true, true, false, [eo]],
|
|
['Eolian', true, true, false, []],
|
|
['Eo', true, true, false, []],
|
|
['Efl', true, false, true, []],
|
|
['Ecore', true, true, true, []],
|
|
['Eet', true, true, false, []],
|
|
['Eio', false, false, true, []],
|
|
['Evas', false, true, true, []],
|
|
['Edje', false, false, true, []],
|
|
['Eldbus', true, true, true, []],
|
|
['Elementary', true, true, true, []]
|
|
]
|
|
|
|
increased_dependency = []
|
|
growing_deps = []
|
|
|
|
foreach lib : cxx_sublibs
|
|
package_name = lib[0].to_lower()
|
|
package_top_header = lib[3]
|
|
package_has_tests = lib[2]
|
|
package_manual_binded = lib[1]
|
|
package_version_name = '-'.join(package_name.split('_')) + '-cxx-' + version_major
|
|
tmp_package_subdirs = [package_version_name]
|
|
|
|
package_c_args = [
|
|
'-DPACKAGE_DATA_DIR="'+ join_paths(dir_data, package_name)+'"',
|
|
'-DNEED_RUN_IN_TREE=1'
|
|
]
|
|
|
|
dir_package_modules = join_paths(dir_lib, package_name, 'modules')
|
|
cxx_generator_target = []
|
|
cxx_header_src = []
|
|
file_location = join_paths('..', '..', 'lib', package_name)
|
|
eo_file_list = []
|
|
eo_file_subdirs = get_variable(package_name + '_eo_subdirs')
|
|
#generate files for each .eo files
|
|
foreach eo_file_subdir : eo_file_subdirs
|
|
if eo_file_subdir != ''
|
|
cxx_pub_eot_files = get_variable(package_name + '_' + eo_file_subdir +'_eot_files')
|
|
else
|
|
cxx_pub_eot_files = get_variable(package_name +'_eot_files')
|
|
endif
|
|
subdir_file_location = join_paths(file_location, eo_file_subdir)
|
|
foreach cxx_gen_file : cxx_pub_eot_files
|
|
cxx_generator_target += custom_target('eolian_cxx_gen_'+cxx_gen_file.underscorify()+'',
|
|
input : join_paths(subdir_file_location, cxx_gen_file),
|
|
output : [cxx_gen_file + '.hh'],
|
|
install : true,
|
|
install_dir : join_paths(dir_include, package_version_name, eo_file_subdir),
|
|
command : [eolian_cxx_gen, '-I', meson.current_source_dir(), eolian_include_directories,
|
|
'-o', join_paths(meson.current_build_dir(), cxx_gen_file + '.hh'),
|
|
'@INPUT@'])
|
|
eo_file_list += files(join_paths(subdir_file_location, cxx_gen_file))
|
|
endforeach
|
|
|
|
if eo_file_subdir != ''
|
|
cxx_pub_eo_files = get_variable(package_name + '_' + eo_file_subdir +'_eo_files')
|
|
else
|
|
cxx_pub_eo_files = get_variable(package_name +'_eo_files')
|
|
endif
|
|
subdir_file_location = join_paths(file_location, eo_file_subdir)
|
|
foreach cxx_gen_file : cxx_pub_eo_files
|
|
cxx_generator_target += custom_target('eolian_cxx_gen_'+cxx_gen_file.underscorify()+'',
|
|
input : join_paths(subdir_file_location, cxx_gen_file),
|
|
output : [cxx_gen_file + '.hh', cxx_gen_file + '.impl.hh'],
|
|
install : true,
|
|
install_dir : join_paths(dir_include, package_version_name, eo_file_subdir),
|
|
command : [eolian_cxx_gen, '-I', meson.current_source_dir(), eolian_include_directories,
|
|
'-o', join_paths(meson.current_build_dir(), cxx_gen_file + '.hh'),
|
|
'@INPUT@'])
|
|
eo_file_list += files(join_paths(subdir_file_location, cxx_gen_file))
|
|
endforeach
|
|
endforeach
|
|
|
|
#generate the package.eo.hh file
|
|
if package_top_header
|
|
cxx_generator_target += custom_target('eolian_cxx_gen_'+package_name+'.eo.hh',
|
|
input : eo_file_list,
|
|
output : [lib[0] + '.eo.hh'],
|
|
install : true,
|
|
install_dir : join_paths(dir_include, package_version_name),
|
|
command : [eolian_cxx_gen, '-I', meson.current_source_dir(), eolian_include_directories, '-m',
|
|
'-o', '@OUTPUT@',
|
|
'@INPUT@'])
|
|
endif
|
|
|
|
if package_manual_binded
|
|
inc_dir = include_directories(package_name+'_cxx', '.')
|
|
subdir(package_name+'_cxx')
|
|
else
|
|
inc_dir = include_directories(file_location, '.')
|
|
cxx_header_src += files(join_paths(file_location, lib[0]+'.hh'))
|
|
endif
|
|
|
|
dep = declare_dependency(
|
|
include_directories: inc_dir,
|
|
sources : cxx_generator_target,
|
|
dependencies: [get_variable(package_name)] + get_variable(package_name + '_pub_deps') + lib[4] + increased_dependency
|
|
)
|
|
|
|
increased_dependency += dep
|
|
|
|
set_variable(package_name + '_cxx', dep)
|
|
|
|
if package_has_tests
|
|
test_dirs += package_name + '_cxx'
|
|
endif
|
|
|
|
foreach subdir : get_variable(package_name + '_eo_subdirs')
|
|
tmp_package_subdirs += join_paths(package_version_name, subdir)
|
|
endforeach
|
|
|
|
install_headers(cxx_header_src,
|
|
subdir: package_version_name,
|
|
)
|
|
|
|
pkgconfig.generate(
|
|
name : '-'.join(package_name.split('_')) + '-cxx',
|
|
description : lib[0]+' cxx bindings',
|
|
subdirs : tmp_package_subdirs,
|
|
version : version_major + '.' + version_minor + '.' + version_micro,
|
|
libraries : dep,
|
|
requires : growing_deps + [package_name],
|
|
)
|
|
growing_deps += package_name + '-cxx'
|
|
endforeach
|