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