andwindows ? (including evil) On Wed, Dec 20, 2017 at 8:12 PM, <marcel-hollerb...@t-online.de> wrote: > This is the first stage for porting efl to meson! > > Right now this should work on osx, *bsd, and linux. > > I plan to rebase the branch every friday, so if there are things you > want to push, please do this before friday noon (CET). > > I would also like to only merge complete subsystems that are tested on > bsd linux and osx, so we dont break this thing before it works ... :) > > Greetings, > Marcel Hollerbach > > > On Wed, Dec 20, 2017 at 11:04:55AM -0800, Marcel Hollerbach wrote: >> bu5hm4n pushed a commit to branch feature/meson. >> >> http://git.enlightenment.org/core/efl.git/commit/?id=b828aa49590182aa6f43e71c0fa34c9507e3154c >> >> commit b828aa49590182aa6f43e71c0fa34c9507e3154c >> Author: Marcel Hollerbach <marcel-hollerb...@t-online.de> >> Date: Wed Dec 20 19:57:23 2017 +0100 >> >> meson: add inital eina support >> >> things that are working: >> - tests >> - benchmarks >> - lib >> - modules >> - bin >> >> Due to the fact that eina depends on efl (why?!) efl is already there >> just to generate the Efl_Config.h file. >> --- >> header_checks/meson.build | 136 +++++++++++ >> meson.build | 86 +++++++ >> meson_options.txt | 28 +++ >> src/benchmarks/eina/meson.build | 41 ++++ >> src/bin/eina/eina_btlog/meson.build | 5 + >> src/bin/eina/eina_modinfo/meson.build | 5 + >> src/bin/eina/meson.build | 2 + >> src/examples/eina/meson.build | 47 ++++ >> src/examples/meson.build | 1 + >> src/lib/efl/meson.build | 22 ++ >> src/lib/eina/meson.build | 348 >> +++++++++++++++++++++++++++ >> src/modules/eina/meson.build | 9 + >> src/modules/eina/mp/chained_pool/meson.build | 3 + >> src/modules/eina/mp/one_big/meson.build | 3 + >> src/modules/eina/mp/pass_through/meson.build | 3 + >> src/tests/eina/meson.build | 69 ++++++ >> src/tests/meson.build | 2 + >> 17 files changed, 810 insertions(+) >> >> diff --git a/header_checks/meson.build b/header_checks/meson.build >> new file mode 100644 >> index 0000000000..d9c6a83216 >> --- /dev/null >> +++ b/header_checks/meson.build >> @@ -0,0 +1,136 @@ >> +header_checks = [ >> + 'alloca.h', >> + 'asm/hwcap.h', >> + 'bsd/string.h', >> + 'dirent.h', >> + 'execinfo.h', >> + 'mcheck.h', >> + 'netinet/in.h', >> + 'stdlib.h', >> + 'sys/auxv.h', >> + 'sys/inotify.h', >> + 'sys/ioctl.h', >> + 'sys/mman.h', >> + 'sys/types.h', >> + 'sys/socket.h', >> + 'arpa/inet.h', >> + 'sys/epoll.h', >> + 'sys/un.h', >> + 'dirent.h'] >> + >> +function_checks = [ >> +# function name | headers that are needed | libraries to include | Defines >> that are needed >> + ['alloca', ['alloca.h']], >> + ['backtrace', ['execinfo.h']], >> + ['backtrace_symbols', ['execinfo.h']], >> + ['clock_gettime', ['time.h']], >> + ['dirfd', ['dirent.h sys/types.h']], >> + ['fchmod', ['sys/stat.h']], >> + ['fcntl', ['fcntl.h']], >> + ['fork', ['unistd.h']], >> + ['fpathconf', ['unistd.h']], >> + ['geteuid', ['unistd.h']], >> + ['getpagesize', ['unistd.h']], >> + ['getpwent', ['sys/types.h', 'pwd.h']], >> + ['getuid', ['unistd.h']], >> + ['getxattr', ['sys/types.h', 'sys/xattr.h']], >> + ['iconv_t', ['iconv.h']], >> + ['listxattr', ['sys/types.h', 'sys/xattr.h']], >> + ['mallinfo', ['malloc.h']], >> + ['malloc_info', ['malloc.h']], >> + ['malloc_usable_size', ['malloc.h']], >> + ['mkdirat', ['sys/stat.h']], >> + ['mmap', ['sys/mman.h']], >> + ['mtrace', ['mcheck.h']], >> + ['prctl', ['sys/prctl.h']], >> + ['realpath', ['stdlib.h']], >> + ['setxattr', ['sys/types.h', 'sys/xattr.h']], >> + ['siglongjmp', ['setjmp.h']], >> + ['strerror_r', ['string.h']], >> +#FIXME strlcpy is detected by meson but drops at compilation time >> +# ['strlcpy', ['string.h']], >> + ['siginfo_t', ['signal.h']], >> + ['strerror_r', ['string.h']], >> +#from here on we specify the dependencies >> + ['dlopen', ['dlfcn.h'], ['dl']], >> + ['dlsym', ['dlfcn.h'], ['dl']], >> + ['lround', ['math.h'], ['m']], >> + ['shm_open', ['sys/mman.h', 'sys/stat.h', 'fcntl.h'], ['rt']], >> +#from here on we specify arguments >> + ['splice', ['fcntl.h'], [], >> '-D_GNU_SOURCE=1'], >> + ['sched_getcpu', ['sched.h'], [], >> '-D_GNU_SOURCE=1'], >> + ['dladdr', ['dlfcn.h'], ['dl'], >> '-D_GNU_SOURCE=1'] >> +] >> + >> +strerror_r_char_p = cc.compiles('''#define _GNU_SOURCE >> + #include <string.h> >> + int func (void) >> + { >> + char error_string[256]; >> + char *ptr = strerror_r (-2, error_string, 256); >> + char c = *strerror_r (-2, error_string, 256); >> + return c != 0 && ptr != (void*) 0L; >> + } >> + ''', >> + name : 'strerror_r() returns char *') >> + >> +if strerror_r_char_p >> + config_h.set('STRERROR_R_CHAR_P', '1') >> +endif >> + >> +#for later use, a bunch of librarie findings >> +m = cc.find_library('m') >> +#just keep this here as required false, if it is not inplace the library rt >> will just be linked as NOP >> +dl = cc.find_library('dl', required: false) >> +rt = cc.find_library('rt', required: false) >> + >> +thread_dep = dependency('threads') >> + >> +#check for the headers >> +foreach header : header_checks >> + if cc.has_header(header) >> + config_h.set10('HAVE_'+header.underscorify().to_upper(), true) >> + endif >> +endforeach >> + >> +foreach function : function_checks >> + function_name = function[0] >> + headers_to_search = function[1] >> + dependencies = [] >> + args = [] >> + >> + # if there is a library, make sure they exist >> + if function.length() > 2 >> + foreach library : function[2] >> + lib = cc.find_library(library, required : false) >> + if lib.found() == true >> + dependencies += lib >> + endif >> + endforeach >> + endif >> + >> + #check if there are args >> + if function.length() > 3 >> + args = function[3] >> + endif >> + >> + # Only check the header if the dependencies are ready >> + foreach header : headers_to_search >> + if cc.has_header_symbol(header, function_name, >> + dependencies : dependencies, >> + args : args) >> + config_h.set10('HAVE_'+function_name.to_upper(), true) >> + endif >> + endforeach >> +endforeach >> + >> +# The next checks are manually for now due to the fact that some names are >> not within the default pattern >> +if (cc.has_header_symbol('sys/stat.h', 'fstatat')) >> + config_h.set10('HAVE_ATFILE_SOURCE', true) >> +endif >> + >> +config_h.set('VMAJ', version_major) >> +config_h.set('VMIN', version_minor) >> +config_h.set('VMIC', version_micro) >> +config_h.set('VREV', '0') >> +config_h.set_quoted('SHARED_LIB_SUFFIX', '.so') >> diff --git a/meson.build b/meson.build >> new file mode 100644 >> index 0000000000..a566a5381d >> --- /dev/null >> +++ b/meson.build >> @@ -0,0 +1,86 @@ >> +project('efl', ['c','cpp'], version: '1.20.99') >> + >> +pkgconfig = import('pkgconfig') >> + >> +version_arr = meson.project_version().split('.') >> + >> +version_major = version_arr[0] >> +version_minor = version_arr[1] >> +version_micro = version_arr[2] >> + >> +cc = meson.get_compiler('c') >> +host_os = host_machine.system() >> + >> +if host_os == 'linux' >> + if cc.has_header_symbol('features.h', '__UCLIBC__') >> + host_os = 'linux-uclibc' >> + elif cc.has_header_symbol('features.h', '__dietlibc__') >> + host_os = 'linux-dietlibc' >> + else >> + host_os = 'linux-gnu' >> + endif >> +endif >> + >> +module_arch = '@0@-@1@-@2@'.format(host_os, host_machine.cpu_family(), >> meson.project_version()) >> + >> +#install paths >> +dir_prefix = get_option('prefix') >> +dir_sysconf = join_paths(dir_prefix, get_option('sysconfdir')) >> +dir_bin = join_paths(dir_prefix, get_option('bindir')) >> +dir_data = join_paths(dir_prefix, get_option('datadir')) >> +dir_include = join_paths(dir_prefix, get_option('includedir')) >> +dir_lib = join_paths(dir_prefix, get_option('libdir')) >> + >> +#local paths >> +local_lib = join_paths('src', 'lib') >> +local_bin = join_paths('src', 'bin') >> +local_module = join_paths('src', 'modules') >> +local_tests = join_paths('src', 'tests') >> +local_benchmark = join_paths('src', 'benchmarks') >> +local_examples = join_paths('src', 'examples') >> + >> +add_global_arguments('-DHAVE_CONFIG_H=1', language: 'c') >> +add_global_arguments('-D_GNU_SOURCE=1', language: 'c') >> +add_global_arguments('-DEFL_EO_API_SUPPORT=1', language: 'c') >> +add_global_arguments('-DEFL_BETA_API_SUPPORT=1', language: 'c') >> + >> +config_h = configuration_data() >> +config_h.set_quoted('MODULE_ARCH', module_arch) >> +config_h.set_quoted('PACKAGE', meson.project_name()) >> +config_h.set_quoted('PACKAGE_VERSION', meson.project_version()) >> +config_h.set_quoted('VERSION', meson.project_version()) >> +config_h.set_quoted('LOCALE_DIR', join_paths([dir_prefix, 'share/locale'])) >> +config_h.set_quoted('PACKAGE_URL', 'https://www.enlightenment.org') >> +config_h.set_quoted('PACKAGE_TARNAME', meson.project_name()) >> +config_h.set_quoted('PACKAGE_BUGREPORT', >> 'enlightenment-devel@lists.sourceforge.net') >> +config_h.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + >> meson.project_version()) >> +config_h.set_quoted('PACKAGE_NAME', meson.project_name()) >> +config_h.set_quoted('PACKAGE_BIN_DIR', dir_bin) >> +config_h.set_quoted('PACKAGE_LIB_DIR', dir_lib) >> +config_h.set_quoted('PACKAGE_BUILD_DIR', meson.current_source_dir()) >> +config_h.set_quoted('PACKAGE_DATA_DIR', join_paths(dir_data, >> meson.project_name())) >> +config_h.set_quoted('PACKAGE_SYSCONF_DIR', dir_sysconf) >> +config_h.set_quoted('BINDIR', dir_bin) >> +config_h.set_quoted('DATADIR', dir_data) >> +config_h.set10('EFL_HAVE_THREADS', true) >> + >> +config_dir = [include_directories('.')] >> + >> +subdir('header_checks') >> + >> +subdir(join_paths(local_lib, 'efl')) >> + >> +subdir(join_paths(local_module, 'eina')) >> +subdir(join_paths(local_lib, 'eina')) >> +subdir(join_paths(local_bin, 'eina')) >> +subdir(join_paths(local_benchmark, 'eina')) >> + >> +if get_option('build-tests') >> + subdir(join_paths(local_tests)) >> +endif >> + >> +if get_option('build-examples') >> + subdir(join_paths(local_examples)) >> +endif >> + >> +configure_file(output: 'config.h', install: false, configuration: config_h) >> diff --git a/meson_options.txt b/meson_options.txt >> new file mode 100644 >> index 0000000000..f9985b7d64 >> --- /dev/null >> +++ b/meson_options.txt >> @@ -0,0 +1,28 @@ >> +option('build-id', >> + type : 'string', >> + value : 'none', >> + description : 'The build id to attach to the efl build') >> + >> +option('eina-magic-debug', >> + type : 'boolean', >> + value : true, >> + description : 'magic debug of eina structure' >> +) >> + >> +option('debug-threads', >> + type : 'boolean', >> + value : false, >> + description : 'thread debugging' >> +) >> + >> +option('build-examples', >> + type : 'boolean', >> + value : true, >> + description : 'build examples' >> +) >> + >> +option('build-tests', >> + type : 'boolean', >> + value : true, >> + description : 'build examples' >> +) >> diff --git a/src/benchmarks/eina/meson.build >> b/src/benchmarks/eina/meson.build >> new file mode 100644 >> index 0000000000..aa9081cef2 >> --- /dev/null >> +++ b/src/benchmarks/eina/meson.build >> @@ -0,0 +1,41 @@ >> +eina_bench_src = files( >> +'eina_bench.c', >> +'eina_bench_sort.c', >> +'eina_bench_hash.c', >> +'eina_bench_crc_hash.c', >> +'eina_bench_stringshare.c', >> +'eina_bench_convert.c', >> +'eina_bench_mempool.c', >> +'eina_bench_stringshare_e17.c', >> +'eina_bench_array.c', >> +'eina_bench_rectangle_pool.c', >> +'ecore_list.c', >> +'ecore_strings.c', >> +'ecore_hash.c', >> +'ecore_sheap.c', >> +'evas_hash.c', >> +'evas_list.c', >> +'evas_mempool.c', >> +'evas_object_list.c', >> +'evas_stringshare.c', >> +'eina_bench_quad.c', >> +'eina_bench.h', >> +'Ecore_Data.h', >> +'Evas_Data.h', >> +'evas_mempool.h') >> + >> +city = shared_library('city', >> + sources : ['city.cc','city.h'], >> +) >> + >> +eina_bench = executable('eina_bench', >> + sources : eina_bench_src, >> + dependencies : eina, >> + c_args : ['-fPIC','-DCITYHASH_BENCH', '-DEINA_ENABLE_BENCH_E17'], >> + include_directories : config_dir, >> + link_with : city, >> +) >> + >> +benchmark('eina_bench', eina_bench, >> + timeout : 20*60 >> +) >> \ No newline at end of file >> diff --git a/src/bin/eina/eina_btlog/meson.build >> b/src/bin/eina/eina_btlog/meson.build >> new file mode 100644 >> index 0000000000..3d56f9cfbf >> --- /dev/null >> +++ b/src/bin/eina/eina_btlog/meson.build >> @@ -0,0 +1,5 @@ >> +executable('eina_btlog', >> + 'eina_btlog.c', >> + dependencies: eina, >> + install: true, >> +) >> diff --git a/src/bin/eina/eina_modinfo/meson.build >> b/src/bin/eina/eina_modinfo/meson.build >> new file mode 100644 >> index 0000000000..a57dc6fc42 >> --- /dev/null >> +++ b/src/bin/eina/eina_modinfo/meson.build >> @@ -0,0 +1,5 @@ >> +executable('eina_modinfo', >> + 'eina_modinfo.c', >> + dependencies: eina, >> + install: true, >> +) >> diff --git a/src/bin/eina/meson.build b/src/bin/eina/meson.build >> new file mode 100644 >> index 0000000000..7c5f64b950 >> --- /dev/null >> +++ b/src/bin/eina/meson.build >> @@ -0,0 +1,2 @@ >> +subdir('eina_btlog') >> +subdir('eina_modinfo') >> diff --git a/src/examples/eina/meson.build b/src/examples/eina/meson.build >> new file mode 100644 >> index 0000000000..78aa46a290 >> --- /dev/null >> +++ b/src/examples/eina/meson.build >> @@ -0,0 +1,47 @@ >> +examples = [ >> +'eina_accessor_01', >> +'eina_array_01', >> +'eina_array_02', >> +'eina_error_01', >> +'eina_file_01', >> +'eina_file_02', >> +'eina_hash_01', >> +'eina_hash_02', >> +'eina_hash_03', >> +'eina_hash_04', >> +'eina_hash_05', >> +'eina_hash_06', >> +'eina_hash_07', >> +'eina_hash_08', >> +'eina_iterator_01', >> +'eina_list_01', >> +'eina_list_02', >> +'eina_list_03', >> +'eina_list_04', >> +'eina_log_01', >> +'eina_log_02', >> +'eina_log_03', >> +'eina_inlist_01', >> +'eina_inlist_02', >> +'eina_inlist_03', >> +'eina_str_01', >> +'eina_strbuf_01', >> +'eina_stringshare_01', >> +'eina_tmpstr_01', >> +#that examples is using ecore evas ... WTF >> +#'eina_tiler_01', >> +'eina_simple_xml_parser_01', >> +'eina_value_01', >> +'eina_value_02', >> +'eina_value_03', >> +'eina_inarray_01', >> +'eina_inarray_02', >> +'eina_inarray_03', >> +'eina_magic_01', >> +'eina_xattr_01', >> +'eina_xattr_02' >> +] >> + >> +foreach example : examples >> + executable(example, example + '.c', dependencies: eina) >> +endforeach >> diff --git a/src/examples/meson.build b/src/examples/meson.build >> new file mode 100644 >> index 0000000000..39eb335298 >> --- /dev/null >> +++ b/src/examples/meson.build >> @@ -0,0 +1 @@ >> +subdir('eina') >> diff --git a/src/lib/efl/meson.build b/src/lib/efl/meson.build >> new file mode 100644 >> index 0000000000..f6462f4b4a >> --- /dev/null >> +++ b/src/lib/efl/meson.build >> @@ -0,0 +1,22 @@ >> +#FIXME >> +#weird to have here ... but oooooh well and its not correct aaarg >> +efl_config_h = configuration_data() >> +efl_config_h.set('EFL_VERSION_MAJOR', version_major) >> +efl_config_h.set('EFL_VERSION_MINOR', version_minor) >> +efl_config_h.set('EFL_VERSION_MICRO', version_micro) >> +efl_config_h.set('EFL_BUILD_ID', get_option('build-id')) >> + >> +#FIXME placeholder >> +efl_config_h.set('EFL_API_EO_DEF', '#define EFL_API_EO_DEF "FIXME NOT >> IMPLEMENTED"') >> +efl_config_h.set('EFL_API_LEGACY_DEF', '#define EFL_API_LEGACY_DEF "FIXME >> NOT IMPLEMENTED"') >> + >> +efl_config_file = configure_file( >> + input: '../efl/Efl_Config.h.in', >> + output: 'Efl_Config.h', >> + configuration: efl_config_h) >> + >> +install_headers(efl_config_file) >> + >> +config_dir += include_directories('.') >> + >> +#end FIXME >> diff --git a/src/lib/eina/meson.build b/src/lib/eina/meson.build >> new file mode 100644 >> index 0000000000..c7ec72afac >> --- /dev/null >> +++ b/src/lib/eina/meson.build >> @@ -0,0 +1,348 @@ >> +eina_deps = [] >> + >> +public_sub_headers = [ >> +'eina_promise.h', >> +'eina_safety_checks.h', >> +'eina_error.h', >> +'eina_debug.h', >> +'eina_debug_private.h', >> +'eina_log.h', >> +'eina_inline_log.x', >> +'eina_fp.h', >> +'eina_inline_f32p32.x', >> +'eina_inline_f16p16.x', >> +'eina_inline_f8p24.x', >> +'eina_inline_fp.x', >> +'eina_hash.h', >> +'eina_inline_hash.x', >> +'eina_lalloc.h', >> +'eina_clist.h', >> +'eina_inline_clist.x', >> +'eina_inarray.h', >> +'eina_inlist.h', >> +'eina_inline_inlist.x', >> +'eina_list.h', >> +'eina_file.h', >> +'eina_inline_file.x', >> +'eina_mempool.h', >> +'eina_module.h', >> +'eina_rectangle.h', >> +'eina_types.h', >> +'eina_array.h', >> +'eina_counter.h', >> +'eina_inline_array.x', >> +'eina_magic.h', >> +'eina_stringshare.h', >> +'eina_binshare.h', >> +'eina_binbuf.h', >> +'eina_ustringshare.h', >> +'eina_inline_stringshare.x', >> +'eina_inline_ustringshare.x', >> +'eina_inline_list.x', >> +'eina_accessor.h', >> +'eina_convert.h', >> +'eina_rbtree.h', >> +'eina_benchmark.h', >> +'eina_inline_rbtree.x', >> +'eina_inline_mempool.x', >> +'eina_inline_rectangle.x', >> +'eina_inline_trash.x', >> +'eina_thread.h', >> +'eina_trash.h', >> +'eina_iterator.h', >> +'eina_main.h', >> +'eina_cpu.h', >> +'eina_inline_cpu.x', >> +'eina_sched.h', >> +'eina_tiler.h', >> +'eina_hamster.h', >> +'eina_matrixsparse.h', >> +'eina_inline_tiler.x', >> +'eina_str.h', >> +'eina_inline_str.x', >> +'eina_strbuf.h', >> +'eina_ustrbuf.h', >> +'eina_unicode.h', >> +'eina_quadtree.h', >> +'eina_simple_xml_parser.h', >> +'eina_lock.h', >> +'eina_prefix.h', >> +'eina_refcount.h', >> +'eina_mmap.h', >> +'eina_xattr.h', >> +'eina_value.h', >> +'eina_inline_value.x', >> +'eina_value_util.h', >> +'eina_inline_value_util.x', >> +'eina_inline_lock_barrier.x', >> +'eina_inline_lock_posix.x', >> +'eina_tmpstr.h', >> +'eina_alloca.h', >> +'eina_cow.h', >> +'eina_inline_unicode.x', >> +'eina_thread_queue.h', >> +'eina_matrix.h', >> +'eina_quad.h', >> +'eina_crc.h', >> +'eina_inline_crc.x', >> +'eina_evlog.h', >> +'eina_util.h', >> +'eina_inline_util.x', >> +'eina_quaternion.h', >> +'eina_vector.h', >> +'eina_inline_vector.x', >> +'eina_bezier.h', >> +'eina_safepointer.h', >> +'eina_inline_safepointer.x', >> +'eina_slice.h', >> +'eina_inline_slice.x', >> +'eina_inline_modinfo.x', >> +'eina_freeq.h', >> +'eina_slstr.h'] >> + >> +public_headers = [ >> + 'Eina.h' >> +] >> + >> +sources = [ >> +'eina_abi.c', >> +'eina_accessor.c', >> +'eina_array.c', >> +'eina_benchmark.c', >> +'eina_binbuf.c', >> +'eina_binshare.c', >> +'eina_convert.c', >> +'eina_counter.c', >> +'eina_cow.c', >> +'eina_cpu.c', >> +'eina_crc.c', >> +'eina_debug.c', >> +'eina_debug_bt.c', >> +'eina_debug_bt_file.c', >> +'eina_debug_chunk.c', >> +'eina_debug_thread.c', >> +'eina_debug_cpu.c', >> +'eina_debug_timer.c', >> +'eina_error.c', >> +'eina_evlog.c', >> +'eina_file_common.h', >> +'eina_file_common.c', >> +'eina_fp.c', >> +'eina_hamster.c', >> +'eina_hash.c', >> +'eina_inarray.c', >> +'eina_inlist.c', >> +'eina_iterator.c', >> +'eina_lalloc.c', >> +'eina_list.c', >> +'eina_lock.c', >> +'eina_log.c', >> +'eina_magic.c', >> +'eina_main.c', >> +'eina_matrix.c', >> +'eina_matrixsparse.c', >> +'eina_mempool.c', >> +'eina_mmap.c', >> +'eina_module.c', >> +'eina_prefix.c', >> +'eina_promise.c', >> +'eina_promise_private.h', >> +'eina_quad.c', >> +'eina_quadtree.c', >> +'eina_rbtree.c', >> +'eina_rectangle.c', >> +'eina_safety_checks.c', >> +'eina_sched.c', >> +'eina_share_common.c', >> +'eina_simple_xml_parser.c', >> +'eina_str.c', >> +'eina_strbuf.c', >> +'eina_strbuf_common.c', >> +'eina_stringshare.c', >> +'eina_thread.c', >> +'eina_thread_queue.c', >> +'eina_tiler.c', >> +'eina_tmpstr.c', >> +'eina_unicode.c', >> +'eina_ustrbuf.c', >> +'eina_ustringshare.c', >> +'eina_util.c', >> +'eina_value.c', >> +'eina_value_util.c', >> +'eina_xattr.c', >> +'eina_private.h', >> +'eina_share_common.h', >> +'eina_strbuf_common.h', >> +'eina_quaternion.c', >> +'eina_bezier.c', >> +'eina_safepointer.c', >> +'eina_freeq.c', >> +'eina_slstr.c'] >> + >> +if target_machine.system() == 'cygwin' >> + sources += 'eina_file_win32.c' >> +else >> + sources += 'eina_file.c' >> +endif >> + >> +eina_config = configuration_data() >> + >> +if get_option('buildtype') == 'plain' >> + with_max_log_level=-1 >> + stringshare_usage=false >> + use_valgrind=true >> + debug_malloc=false >> + debug_threads=false >> + default_mempool=false >> + want_cow_magic=false >> +elif get_option('buildtype') == 'debug' >> + with_max_log_level=-1 >> + stringshare_usage=true >> + use_valgrind=true >> + debug_malloc=true >> + debug_threads=true >> + default_mempool=true >> + want_cow_magic=true >> +elif get_option('buildtype') == 'release' >> + with_max_log_level=3 >> + stringshare_usage=false >> + use_valgrind=false >> + debug_malloc=false >> + debug_threads=false >> + default_mempool=false >> + want_cow_magic=false >> +endif >> + >> +if with_max_log_level != -1 >> + config_h.set('EINA_LOG_LEVEL_MAXIMUM', with_max_log_level) >> +endif >> + >> +if stringshare_usage >> + config_h.set('EINA_STRINGSHARE_USAGE', 1) >> +endif >> + >> +if use_valgrind >> + valgrind = dependency('valgrind', required: false) >> + if valgrind.found() == false >> + config_h.set('NVALGRIND', 1) >> + else >> + config_h.set('HAVE_VALGRIND', 1) >> + endif >> + eina_deps += valgrind >> +else >> + config_h.set('NVALGRIND', 1) >> +endif >> + >> +if debug_malloc >> + config_h.set('EINA_DEBUG_MALLOC', 1) >> +endif >> + >> +if want_cow_magic >> + config_h.set('EINA_COW_MAGIC_ON', 1) >> +endif >> + >> +if get_option('eina-magic-debug') >> + eina_config.set('EINA_MAGIC_DEBUG', '1') >> +endif >> + >> +if default_mempool >> + eina_config.set('EINA_DEFAULT_MEMPOOL', '1') >> +endif >> + >> +eina_config.set('EINA_SAFETY_CHECKS', '1') >> +eina_config.set('EINA_HAVE_THREADS', '1') >> + >> +if cc.has_header_symbol('pthread.h', 'pthread_attr_setaffinity_np') >> + eina_config.set('EINA_HAVE_PTHREAD_AFFINITY', '1') >> +endif >> + >> +if cc.has_header_symbol('pthread.h', 'pthread_barrier_init') >> + eina_config.set('EINA_HAVE_PTHREAD_BARRIER', '1') >> +endif >> + >> +if cc.has_header_symbol('pthread.h', 'pthread_setname_np') >> + eina_config.set('EINA_HAVE_PTHREAD_SETNAME', '1') >> +endif >> + >> +# FIXME the author of eina_debug probebly never ran with >> EINA_HAVE_DEBUG_THREADS >> +# however eina debug decides to init that lock and never frees it. which >> means >> +# the code in eina_main.c will not work in the way it currently is there. >> + >> +#if debug_threads or get_option('debug-threads') >> +# eina_config.set('EINA_HAVE_DEBUG_THREADS', '1') >> +#endif >> + >> +eina_config.set('EINA_SIZEOF_WCHAR_T', cc.sizeof('wchar_t')) >> + >> +eina_config.set('EINA_SIZEOF_UINTPTR_T', cc.sizeof('uintptr_t')) >> + >> +if cc.has_header('dirent.h') >> + eina_config.set('EINA_CONFIGURE_HAVE_DIRENT_H', '1') >> +endif >> + >> +eina_config.set('EINA_ENABLE_LOG', '1') >> + >> +if cc.has_header_symbol('alloca.h', 'alloca') >> + eina_config.set('EINA_HAVE_ALLOCA_H', '1') >> +endif >> + >> +if cc.has_header('byteswap.h') >> + eina_config.set('EINA_HAVE_BYTESWAP_H', '1') >> +endif >> + >> +if cc.has_header_symbol('byteswap.h', 'bswap_16') >> + eina_config.set('EINA_CONFIGURE_HAVE_BSWAP16', '1') >> +endif >> + >> +if cc.has_header_symbol('byteswap.h', 'bswap_32') >> + eina_config.set('EINA_CONFIGURE_HAVE_BSWAP32', '1') >> +endif >> + >> +if cc.has_header_symbol('byteswap.h', 'bswap_64') >> + eina_config.set('EINA_CONFIGURE_HAVE_BSWAP64', '1') >> +endif >> + >> +if cc.has_header_symbol('pthread.h', 'pthread_spin_init') >> + eina_config.set('EINA_HAVE_POSIX_SPINLOCK', '1') >> +endif >> + >> +if target_machine.system() == 'darwin' >> + if cc.has_header_symbol('libkern/OSAtomic.h', 'OSSpinLockTry') >> + eina_config.set('EINA_CONFIGURE_HAVE_OSX_SPINLOCK', 1) >> + endif >> + if cc.has_header_symbol('semaphore.h', 'semaphore_create') >> + eina_config.set('EINA_CONFIGURE_HAVE_OSX_SEMAPHORE', 1) >> + endif >> + >> +endif >> + >> +eina_config_file = configure_file( >> + output: 'eina_config.h', >> + configuration: eina_config, >> + install: true) >> + >> +public_headers += eina_config_file >> + >> +unwind = dependency('libunwind-generic', required: false) >> +if unwind.found() >> + config_h.set('HAVE_UNWIND', 1) >> + eina_deps += unwind >> +endif >> + >> +#for the case that the iconv library is not part of libc but rather >> libiconv or smth. like that >> +iconv = dependency('iconv', required: false) >> +execinfo = cc.find_library('execinfo', required: false) >> + >> +eina_lib = shared_library('eina', sources, >> + include_directories : config_dir, >> + dependencies: [m, rt, dl, execinfo, iconv, eina_deps, >> thread_dep, eina_mem_pools], >> + install: true) >> + >> +eina = declare_dependency( >> + include_directories: [include_directories('.')] + config_dir, >> + dependencies : [thread_dep], >> + link_with: eina_lib, >> +) >> + >> +install_headers(public_headers) >> +install_headers(public_sub_headers, subdir : 'eina') >> diff --git a/src/modules/eina/meson.build b/src/modules/eina/meson.build >> new file mode 100644 >> index 0000000000..17396a198c >> --- /dev/null >> +++ b/src/modules/eina/meson.build >> @@ -0,0 +1,9 @@ >> +eina_mp_sources = [] >> + >> +subdir(join_paths('mp', 'chained_pool')) >> +subdir(join_paths('mp', 'one_big')) >> +subdir(join_paths('mp', 'pass_through')) >> + >> +eina_mem_pools = declare_dependency( >> + sources: eina_mp_sources >> +) >> diff --git a/src/modules/eina/mp/chained_pool/meson.build >> b/src/modules/eina/mp/chained_pool/meson.build >> new file mode 100644 >> index 0000000000..d4b222c6f2 >> --- /dev/null >> +++ b/src/modules/eina/mp/chained_pool/meson.build >> @@ -0,0 +1,3 @@ >> +config_h.set10('EINA_BUILD_CHAINED_POOL', true) >> +config_h.set10('EINA_STATIC_BUILD_CHAINED_POOL', true) >> +eina_mp_sources += files('eina_chained_mempool.c') >> diff --git a/src/modules/eina/mp/one_big/meson.build >> b/src/modules/eina/mp/one_big/meson.build >> new file mode 100644 >> index 0000000000..fabe80352c >> --- /dev/null >> +++ b/src/modules/eina/mp/one_big/meson.build >> @@ -0,0 +1,3 @@ >> +config_h.set10('EINA_BUILD_ONE_BIG', true) >> +config_h.set10('EINA_STATIC_BUILD_ONE_BIG', true) >> +eina_mp_sources += files('eina_one_big.c') >> diff --git a/src/modules/eina/mp/pass_through/meson.build >> b/src/modules/eina/mp/pass_through/meson.build >> new file mode 100644 >> index 0000000000..a60ab6204b >> --- /dev/null >> +++ b/src/modules/eina/mp/pass_through/meson.build >> @@ -0,0 +1,3 @@ >> +config_h.set10('EINA_BUILD_PASS_THROUGH', true) >> +config_h.set10('EINA_STATIC_BUILD_PASS_THROUGH', true) >> +eina_mp_sources += files('eina_pass_through.c') >> diff --git a/src/tests/eina/meson.build b/src/tests/eina/meson.build >> new file mode 100644 >> index 0000000000..cbad7e9580 >> --- /dev/null >> +++ b/src/tests/eina/meson.build >> @@ -0,0 +1,69 @@ >> +eina_test_src = files( >> +'eina_suite.c', >> +'eina_suite.h', >> +'eina_test_abi.c', >> +'eina_test_fp.c', >> +'eina_test_ustringshare.c', >> +'eina_test_ustr.c', >> +'eina_test_binshare.c', >> +'eina_test_binbuf.c', >> +'eina_test_inarray.c', >> +'eina_test_array.c', >> +'eina_test_clist.c', >> +'eina_test_error.c', >> +'eina_test_sched.c', >> +'eina_test_log.c', >> +'eina_test_magic.c', >> +'eina_test_inlist.c', >> +'eina_test_main.c', >> +'eina_test_counter.c', >> +'eina_test_lalloc.c', >> +'eina_test_hash.c', >> +'eina_test_iterator.c', >> +'eina_test_accessor.c', >> +'eina_test_module.c', >> +'eina_test_convert.c', >> +'eina_test_rbtree.c', >> +'eina_test_file.c', >> +'eina_test_benchmark.c', >> +'eina_test_mempool.c', >> +'eina_test_rectangle.c', >> +'eina_test_list.c', >> +'eina_test_matrixsparse.c', >> +'eina_test_tiler.c', >> +'eina_test_strbuf.c', >> +'eina_test_str.c', >> +'eina_test_quadtree.c', >> +'eina_test_simple_xml_parser.c', >> +'eina_test_value.c', >> +'eina_test_cow.c', >> +'eina_test_barrier.c', >> +'eina_test_tmpstr.c', >> +'eina_test_trash.c', >> +'eina_test_lock.c', >> +'eina_test_xattr.c', >> +'eina_test_crc.c', >> +'eina_test_quad.c', >> +'eina_test_matrix.c', >> +'eina_test_quaternion.c', >> +'eina_test_vector.c', >> +'eina_test_bezier.c', >> +'eina_test_safepointer.c', >> +'eina_test_slice.c', >> +'eina_test_freeq.c', >> +'eina_test_slstr.c') >> + >> + >> +eina_test_exe = executable('eina_suite', >> + include_directories : config_dir, >> + sources : eina_test_src, >> + dependencies: [m, check, eina], >> + c_args : [ >> + '-DTESTS_WD="`pwd`"', >> + '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"', >> + '-DTESTS_SRC_DIR="'+meson.current_source_dir()+'"'] >> +) >> + >> +test('eina', eina_test_exe, >> + timeout : 5*60, >> +) >> diff --git a/src/tests/meson.build b/src/tests/meson.build >> new file mode 100644 >> index 0000000000..856d351fa4 >> --- /dev/null >> +++ b/src/tests/meson.build >> @@ -0,0 +1,2 @@ >> +check = dependency('check') >> +subdir('eina') >> >> -- >> >> > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel