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

Reply via email to