first, i removed the compilation with Visual Studio for several reasons

1) it's a huge work to maintain 2 build systems (so only one using
MSYS2 for POSIX tools (hence autotools for example) and mingw-w64 for
cross compilation)
2) there are gcc extensions that are used in ecore_getopt which are
not supported by vc++
3) finally, and the most important one imho : all the asm code is
using the gcc syntax which is not compatible with the one used by vc++
(AT&T vs Intel ones), that is, evas will be a lot slower.

about the config.h error, i don't know

I will try to look at what you have done. But not during the next days

you have to know that I will remove some code in Evil, and I hope that
the regex code will also be dropped

cheers

Vincent

On Sat, Dec 23, 2017 at 2:56 PM,  <marcel-hollerb...@t-online.de> wrote:
> There is some work going on for windows, i tried to reach you this week
> because of this.
>
> I tried two things:
>
> 1) Crosscompiling: it failed in the end due to a very very weird error 
> message:
>
> ./config.h:10:17: Fehler: expected unqualified-id before string constant
>  #define DATADIR "/usr/local/share"
>
> I cannot make any sense of it, maybe you can :)
>
> 2) Compiling in vs2017: failed because stuff like pid_t and mode_t is
> not defined.
>
> In the end i ended up pushing what i had (which was initial eina),
> windows is not forgotten, i just need help there, since i dont know much
> about windows.
>
> So in the end, so there some time of you, where we could try to sort a
> few of those things ? :)
>
> btw. you can check it yourself: efl branch devs/bu5hm4n/evil-meson
>
> tldr: there is windows stuff, just not working yet.
>
> Greetings,
>    Marcel Hollerbach
>
>
> On Sat, Dec 23, 2017 at 11:04:25AM +0100, Vincent Torri wrote:
>> 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
>
> ------------------------------------------------------------------------------
> 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