Compare commits

...

1 Commits

Author SHA1 Message Date
Felipe Magno de Almeida 4ef1e18274 WIP: Make EFL compile natively in Windows 2019-11-12 21:17:38 -03:00
24 changed files with 140 additions and 36 deletions

View File

@ -154,10 +154,14 @@ if strerror_r_char_p
endif
#for later use, a bunch of librarie findings
if host_machine.system() != 'windows'
m = cc.find_library('m')
endif
#just keep this here as required false, if it is not inplace the library rt will just be linked as NOP
if host_machine.system() != 'windows'
dl = cc.find_library('dl', required: false)
rt = cc.find_library('rt', required: false)
endif
thread_dep = dependency('threads')
@ -210,9 +214,19 @@ endif
regexp = []
if sys_windows == true
regexp = cc.find_library('regex',
has_headers: ['regex.h', 'fnmatch.h'],
required: true)
if sys_windows == true
inc_arg = '-I' + get_option('regex_include_dir')
if cc.has_header('regex.h', args: inc_arg) == false
error('regex can not be found')
endif
regexp = cc.find_library('pcre',
dirs : [get_option('regex_dir')],
required: true)
else
regexp = cc.find_library('regex',
has_headers: ['regex.h', 'fnmatch.h'],
required: true)
endif
if regexp.found() == false
error('regex can not be found')
endif
@ -234,7 +248,7 @@ config_h.set('VREV', '0')
jpeg = dependency('libjpeg', required: false)
if jpeg.found() == false
jpeg = cc.find_library('jpeg')
# jpeg = cc.find_library('jpeg')
endif
if sys_bsd == true

View File

@ -8,7 +8,9 @@ if host_machine.system() == 'darwin'
add_languages('objc')
endif
if host_machine.system() != 'windows'
pkgconfig = import('pkgconfig')
endif
test_env = environment()
test_env.set('EFL_RUN_IN_TREE', '1')
@ -88,6 +90,15 @@ endforeach
add_global_arguments(dev_cflags, language: 'c')
add_global_arguments(dev_cflags, language: 'cpp')
if not get_option('dbus')
dbus = declare_dependency()
eldbus = declare_dependency()
endif
if sys_windows == true
dl = declare_dependency()
m = declare_dependency()
endif
foreach lang : ['c', 'objc', 'cpp']
add_global_arguments('-DHAVE_CONFIG_H=1', language: lang)
@ -216,7 +227,11 @@ if (get_option('crypto') == 'gnutls')
crypto = [dependency('gnutls'), cc.find_library('gcrypt')]
config_h.set('HAVE_GNUTLS', '1')
elif (get_option('crypto') == 'openssl')
crypto = dependency('openssl')
if (get_option('openssl_dir') != '')
crypto = cc.find_library('crypto', dirs : [get_option('openssl_dir')])
else
crypto = dependency('openssl')
endif
config_h.set('HAVE_OPENSSL', '1')
endif
@ -259,7 +274,7 @@ subprojects = [
['emile' ,[] , false, true, false, false, true, true, ['eina', 'efl'], ['lz4', 'rg_etc']],
['eet' ,[] , false, true, true, false, true, true, ['eina', 'emile', 'efl'], []],
['ecore' ,[] , false, true, false, false, false, false, ['eina', 'eo', 'efl'], ['buildsystem']],
['eldbus' ,[] , false, true, true, false, true, true, ['eina', 'eo', 'efl'], []],
# ['eldbus' ,[] , false, true, true, false, true, true, ['eina', 'eo', 'efl'], []],
['ecore' ,[] , true, false, false, false, true, true, ['eina', 'eo', 'efl'], []], #ecores modules depend on eldbus
['ecore_audio' ,['audio'] , false, true, false, false, false, false, ['eina', 'eo'], []],
['ecore_avahi' ,['avahi'] , false, true, false, false, false, true, ['eina', 'ecore'], []],
@ -275,7 +290,7 @@ subprojects = [
['ecore_ipc' ,[] , false, true, false, false, false, false, ['eina'], []],
['ecore_buffer' ,['buffer'] , true, true, true, false, false, false, ['eina'], []],
['ector' ,[] , false, true, false, false, true, false, ['eina', 'efl'], ['draw', 'triangulator', 'freetype']],
['elput' ,['drm'] , false, true, false, false, true, false, ['eina', 'eldbus'], []],
# ['elput' ,['drm'] , false, true, false, false, true, false, ['eina', 'eldbus'], []],
['ecore_drm2' ,['drm'] , false, true, false, false, false, false, ['ecore'], ['libdrm']],
['ecore_cocoa' ,['cocoa'] , false, true, false, false, false, false, ['eina'], []],
['evas' ,[] , true, true, false, false, true, true, ['eina', 'efl', 'eo'], ['vg_common', 'libunibreak']],
@ -292,8 +307,8 @@ subprojects = [
['emotion' ,[] , true, true, false, false, true, true, ['eina', 'efl', 'eo'], []],
['ethumb' ,[] , true, true, true, false, false, false, ['eina', 'efl', 'eo'], []],
['ethumb_client' ,[] , false, true, true, false, false, true, ['eina', 'efl', 'eo', 'ethumb'], []],
['elocation' ,[] , false, true, false, false, false, false, ['ecore', 'eldbus'], []],
['elementary' ,[] , true, true, true, true, true, true, ['eina', 'efl', 'eo', 'eet', 'evas', 'ecore', 'ecore-evas', 'ecore-file', 'ecore-input', 'edje', 'ethumb-client', 'emotion', 'ecore-imf', 'ecore-con', 'eldbus', 'efreet', 'efreet-mime', 'efreet-trash', 'eio', 'elocation'], ['atspi']],
['elocation' ,[] , false, true, false, false, false, false, ['ecore', 'eldbus'], []],
['elementary' ,[] , true, true, true, true, true, true, ['eina', 'efl', 'eo', 'eet', 'evas', 'ecore', 'ecore-evas', 'ecore-file', 'ecore-input', 'edje', 'ethumb-client', 'emotion', 'ecore-imf', 'ecore-con', 'efreet', 'efreet-mime', 'efreet-trash', 'eio', 'elocation'], ['atspi']],
['efl_wl' ,['wl'] , false, true, true, false, false, false, ['evas', 'ecore'], []],
['elua' ,['elua'] , false, true, true, false, true, false, ['eina', 'luajit'], []],
['ecore_wayland' ,['wl-deprecated'] , false, true, false, false, false, false, ['eina'], []],
@ -322,7 +337,7 @@ foreach package : subprojects
'-DPACKAGE_DATA_DIR="'+ join_paths(dir_data, package_name)+'"',
'-DNEED_RUN_IN_TREE=1',
]
automatic_pkgfile = true
automatic_pkgfile = (sys_windows == false)
if package[1].length() == 0 or get_option(package[1][0])
config_h.set('HAVE_'+package_name.to_upper().underscorify(), '1')
@ -367,13 +382,13 @@ foreach package : subprojects
if (package[4])
subdir(join_paths(local_bin, package_name))
endif
if (package[5])
if (package[5] and not sys_windows)
subdir(join_paths(local_benchmark, package_name))
endif
if (package[6])
if (package[6] and not sys_windows)
test_dirs += [package_name]
endif
if (package[7])
if (package[7] and not sys_windows)
example_dirs += [package_name]
endif
@ -490,8 +505,11 @@ configure_file(
)
subdir(join_paths('systemd-services'))
if get_option('dbus')
subdir(join_paths('dbus-services'))
endif
if sys_windows == false
#output the three new efl-* .pc files
efl_20_pc_files = [
['efl-ui', ['elementary']],
@ -508,3 +526,4 @@ foreach pc_file : efl_20_pc_files
requires : libraries,
)
endforeach
endif

View File

@ -64,6 +64,11 @@ option('eeze',
description : 'Device abstraction (udev wrapper) in efl'
)
option('dbus',
type : 'boolean',
value : true
)
option('opengl',
type : 'combo',
choices : ['full', 'es-egl', 'none'],
@ -107,6 +112,24 @@ option('crypto',
description : 'Which SSL Crypto library used in efl'
)
option('openssl_dir',
type : 'string',
value : '',
description : 'Which SSL Crypto library used in efl'
)
option('regex_include_dir',
type : 'string',
value : '',
description : 'Which SSL Crypto library used in efl'
)
option('regex_dir',
type : 'string',
value : '',
description : 'Which SSL Crypto library used in efl'
)
option('glib',
type : 'boolean',
value : true,

View File

@ -92,8 +92,12 @@ if meson.is_cross_build()
edje_codegen_path = _edje_codegen.path()
edje_codegen_exe = [_edje_codegen]
else
env = find_program('env', native: true)
edje_codegen_exe = [env, 'EFL_RUN_IN_TREE=1', edje_codegen.full_path()]
if sys_windows == true
edje_codegen_exe = [edje_codegen.full_path()]
else
env = find_program('env', native: true)
edje_codegen_exe = [env, 'EFL_RUN_IN_TREE=1', edje_codegen.full_path()]
endif
endif
edje_pick = executable('edje_pick',

View File

@ -223,6 +223,8 @@ elementary_codegen = executable('elementary_codegen',
if meson.is_cross_build()
elementary_codegen_exe = [find_program('elementary_codegen', native: true)]
elif sys_windows
elementary_codegen_exe = [elementary_codegen.full_path()]
else
env = find_program('env', native: true)
elementary_codegen_exe = [env, 'EFL_RUN_IN_TREE=1', elementary_codegen.full_path()]
@ -249,6 +251,8 @@ if meson.is_cross_build()
_elm_prefs_cc = find_program('elm_prefs_cc', native: true)
elm_prefs_cc_path = _elm_prefs_cc.path()
elm_prefs_cc_exe = [_elm_prefs_cc]
elif sys_windows
elm_prefs_cc_exe = [elm_prefs_cc.full_path()]
else
env = find_program('env', native: true)
elm_prefs_cc_exe = [env, 'EFL_RUN_IN_TREE=1', elm_prefs_cc.full_path()]

View File

@ -10,7 +10,7 @@ cxx_sublibs = [
['Eio', false, false, true, []],
['Evas', false, true, true, []],
['Edje', false, false, true, []],
['Eldbus', true, true, true, []],
# ['Eldbus', true, true, true, []],
['Elementary', true, true, true, []]
]
@ -116,7 +116,7 @@ foreach lib : cxx_sublibs
install_headers(cxx_header_src,
subdir: package_version_name,
)
if sys_windows == false
pkgconfig.generate(
name : '-'.join(package_name.split('_')) + '-cxx',
description : lib[0]+' cxx bindings',
@ -126,4 +126,5 @@ foreach lib : cxx_sublibs
requires : growing_deps + [package_name],
)
growing_deps += package_name + '-cxx'
endif
endforeach

View File

@ -194,7 +194,7 @@ endif
ecore_lib = library('ecore',
ecore_src, pub_eo_file_target,
dependencies: ecore_pub_deps + [m, buildsystem, ecore_deps],
dependencies: ecore_pub_deps + [buildsystem, ecore_deps],
include_directories : config_dir + [include_directories(join_paths('..','..'))],
install: true,
c_args : package_c_args,

View File

@ -177,7 +177,9 @@ else
'efl_net_control-connman.c',
'efl_net_session-connman.c'
]
ecore_con_deps += eldbus
if get_option('dbus')
ecore_con_deps += eldbus
endif
endif
ecore_con_deps += crypto

View File

@ -1,4 +1,4 @@
eet_deps = [crypto, jpeg, rg_etc, m]
eet_deps = [crypto, jpeg, rg_etc]
eet_pub_deps = [eina, emile, efl]
eet_header_src = [

View File

@ -13,7 +13,7 @@ package_header_subdirs += 'interfaces'
efl_lib = library('efl',
efl_src, pub_eo_file_target,
dependencies: [eina, eo, m],
dependencies: [eina, eo],
install: true,
version : meson.project_version()
)

View File

@ -81,6 +81,7 @@ install_headers(efreet_header_src,
install_dir : dir_package_include,
)
if sys_windows == false
pkgconfig.generate(efreet_mime_lib,
name : 'efreet-mime',
subdirs : package_version_name,
@ -94,3 +95,4 @@ pkgconfig.generate(efreet_trash_lib,
version : version_major + '.' + version_minor + '.' + version_micro,
libraries : [tmp_deps] + tmp_pub_deps,
)
endif

View File

@ -20,6 +20,8 @@
# include "config.h"
#endif
#ifdef HAVE_CYGWIN
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -228,3 +230,5 @@ eina_counter_dump(Eina_Counter *counter)
return result;
}
#endif

View File

@ -19,6 +19,8 @@
#ifndef EINA_INLINE_PRIVATE_H_
# define EINA_INLINE_PRIVATE_H_
#ifdef HAVE_CYGWIN
# include <time.h>
# include <sys/time.h>
@ -75,3 +77,4 @@ _eina_time_delta(Eina_Nano_Time *start, Eina_Nano_Time *end)
}
#endif
#endif

View File

@ -86,7 +86,7 @@ eina_rw_slice_copy(const Eina_Rw_Slice dst, const Eina_Slice src)
}
static inline Eina_Slice
eina_slice_seek(const Eina_Slice slice, ssize_t offset, int whence)
eina_slice_seek(const Eina_Slice slice, ptrdiff_t offset, int whence)
{
Eina_Slice ret;
@ -110,7 +110,7 @@ eina_slice_seek(const Eina_Slice slice, ssize_t offset, int whence)
}
static inline Eina_Rw_Slice
eina_rw_slice_seek(const Eina_Rw_Slice rw_slice, ssize_t offset, int whence)
eina_rw_slice_seek(const Eina_Rw_Slice rw_slice, ptrdiff_t offset, int whence)
{
Eina_Rw_Slice ret;

View File

@ -214,7 +214,7 @@ static inline Eina_Rw_Slice eina_rw_slice_copy(const Eina_Rw_Slice dest, const E
*
* @since 1.19
*/
static inline Eina_Slice eina_slice_seek(const Eina_Slice slice, ssize_t offset, int whence);
static inline Eina_Slice eina_slice_seek(const Eina_Slice slice, ptrdiff_t offset, int whence);
/**
* @brief Seek within a read-write slice, similar to fseek().
@ -232,7 +232,7 @@ static inline Eina_Slice eina_slice_seek(const Eina_Slice slice, ssize_t offset,
*
* @since 1.19
*/
static inline Eina_Rw_Slice eina_rw_slice_seek(const Eina_Rw_Slice rw_slice, ssize_t offset, int whence);
static inline Eina_Rw_Slice eina_rw_slice_seek(const Eina_Rw_Slice rw_slice, ptrdiff_t offset, int whence);
/**

View File

@ -261,7 +261,7 @@
# define EINA_UNUSED
# define EINA_WARN_UNUSED_RESULT
# define EINA_ARG_NONNULL(...)
# if _MSC_VER >= 1300
# if defined (_MSC_VER) && !defined (__clang__) && _MSC_VER >= 1300
# define EINA_DEPRECATED __declspec(deprecated)
# else
# define EINA_DEPRECATED

View File

@ -1,4 +1,8 @@
eina_deps = [dl]
if sys_windows == false
eina_deps = [dl]
else
eina_deps = []
endif
eina_pub_deps = [thread_dep]
if sys_windows == true
@ -365,7 +369,7 @@ execinfo = cc.find_library('execinfo', required: false)
eina_lib = library('eina', sources,
include_directories : config_dir,
dependencies: [m, rt, dl, execinfo, iconv, eina_deps, thread_dep, eina_mem_pools, evil],
dependencies: [execinfo, iconv, eina_deps, thread_dep, eina_mem_pools, evil],
install: true,
version : meson.project_version()
)
@ -387,9 +391,11 @@ install_headers(public_sub_headers,
automatic_pkgfile = false
if sys_windows == false
pkgconfig.generate(eina_lib,
name : 'eina',
subdirs : ['eina-'+version_major, 'efl-'+version_major, join_paths('eina-'+version_major, 'eina')],
version : version_major + '.' + version_minor + '.' + version_micro,
libraries : eina_pub_deps,
)
endif

View File

@ -1,4 +1,4 @@
emile_deps = [jpeg, crypto, dependency('zlib')]
emile_deps = [jpeg, crypto, dependency('zlib', required: false)]
emile_pub_deps = [eina, efl]
emile_headers = [
@ -26,7 +26,7 @@ endif
emile_lib = library('emile',
emile_src,
include_directories: config_dir,
dependencies: emile_pub_deps + emile_deps + [lz4, rg_etc, m],
dependencies: emile_pub_deps + emile_deps + [lz4, rg_etc],
install: true,
version : meson.project_version()
)

View File

@ -45,14 +45,14 @@ eolian_include_directories += ['-I', meson.current_source_dir()]
eo_lib = library('eo',
eo_src, pub_eo_file_target,
dependencies: [eina, valgrind, dl, execinfo],
dependencies: [eina, valgrind, execinfo],
install: true,
version : meson.project_version()
)
eo_lib_dbg = library('eo_dbg',
eo_src, pub_eo_file_target,
dependencies: [eina, valgrind, dl, execinfo],
dependencies: [eina, valgrind, execinfo],
install: true,
c_args : '-DEO_DEBUG',
version : meson.project_version()

View File

@ -25,8 +25,10 @@ if get_option('lua-interpreter') == 'lua'
break
endif
endforeach
else
elif sys_windows == false
lua = dependency(get_option('lua-interpreter'))
else
lua = declare_dependency()
endif
if sys_osx == true and get_option('lua-interpreter') == 'luajit'

View File

@ -4,11 +4,19 @@
# as 'source :', later everything is build as libevas.so.
#
png = dependency('libpng')
png = dependency('libpng', required: false)
tiff = dependency('libtiff-4', required: get_option('evas-loaders-disabler').contains('tiff') == false)
giflib = cc.find_library('gif')
if get_option('evas-loaders-disabler').contains('gif')
giflib = declare_dependency()
else
giflib = cc.find_library('gif')
endif
webp = dependency('libwebp', required: get_option('evas-loaders-disabler').contains('webp') == false)
if get_option('evas-loaders-disabler').contains('generic')
rt = declare_dependency()
endif
evas_image_loaders_file = [
['bmp', 'shared', []],
['eet', 'static', [eet]],
@ -143,7 +151,9 @@ evas_src_opt = [ ]
evas_src += vg_common_src
evas_deps += dependency('freetype2')
if sys_windows == false
evas_deps += dependency('freetype2')
endif
if (get_option('fontconfig'))
config_h.set('HAVE_FONTCONFIG', '1')

View File

@ -75,7 +75,9 @@ struct flock
short int l_whence; /**< type of l_start */
off_t l_start; /**< starting offset */
off_t l_len; /**< 0 means end of the file */
#ifdef HAVE_CYGWIN
pid_t l_pid; /**< lock owner */
#endif
};

View File

@ -17,6 +17,10 @@ extern "C" {
# endif
#endif
#ifndef EVIL_UNUSED
#define EVIL_UNUSED
#endif
#ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
#endif

View File

@ -43,6 +43,10 @@
*/
EAPI int evil_rename(const char *src, const char *dst);
#ifndef HAVE_CYGWIN
typedef int mode_t;
#endif
/**
* @brief Wrap the _mkdir() function on Windows.
*