Merge branch 'master' into feature/themes/flat

This commit is contained in:
Carsten Haitzler 2019-01-18 18:22:10 +00:00
commit 2e95f35127
2101 changed files with 67189 additions and 52728 deletions

View File

@ -2,10 +2,8 @@
set -e
cd /
#clone our examples from efl
git clone http://git.enlightenment.org/tools/examples.git/
git clone --depth=1 -b master http://git.enlightenment.org/tools/examples.git/
cd examples/apps/c/life/
@ -15,5 +13,5 @@ meson . ./build
ninja -C build all
#remove the folder again so its not left in the artifacts
cd /
cd ../../../..
rm -rf examples

7
.ci/ccache.conf Normal file
View File

@ -0,0 +1,7 @@
max_size = 500M
compression = true
compression_level = 1
sloppiness = time_macros,include_file_mtime,include_file_ctime,file_macro
run_second_cpp = false
hash_dir = false

9
.ci/ci-ccache-stats.sh Executable file
View File

@ -0,0 +1,9 @@
#!/bin/sh
set -e
if [ "$DISTRO" != "" ] ; then
docker exec $(cat $HOME/cid) ccache -s
else
ccache -s
fi

151
.ci/ci-configure.sh Executable file
View File

@ -0,0 +1,151 @@
#!/bin/sh
set -e
. .ci/travis.sh
if [ "$BUILDSYSTEM" = "ninja" ] ; then
if [ "$DISTRO" != "" ] ; then
# Normal build test of all targets
OPTS=" -Decore-imf-loaders-disabler=scim,ibus -Davahi=false -Dbindings=luajit"
WAYLAND_LINUX_COPTS=" -Dwl=true -Ddrm=true -Dopengl=es-egl"
ENABLED_LINUX_COPTS=" -Dharfbuzz=true -Dhyphen=true"
DISABLED_LINUX_COPTS=" -Dsystemd=false"
RELEASE_READY_LINUX_COPTS=" --buildtype=release"
if [ "$1" = "options-enabled" ]; then
OPTS="$OPTS $ENABLED_LINUX_COPTS $WAYLAND_LINUX_COPTS"
fi
if [ "$1" = "options-disabled" ]; then
OPTS="$OPTS $DISABLED_LINUX_COPTS"
fi
if [ "$1" = "release-ready" ]; then
OPTS="$OPTS $RELEASE_READY_LINUX_COPTS"
fi
docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 --env CC="ccache gcc" \
--env CXX="ccache g++" --env CFLAGS="-fdirectives-only" --env CXXFLAGS="-fdirectives-only" \
--env LD="ld.gold" $(cat $HOME/cid) sh -c "mkdir build && meson build $OPTS"
else
# Prepare OSX env for build
mkdir -p ~/Library/LaunchAgents
ln -sfv /usr/local/opt/d-bus/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/org.freedesktop.dbus-session.plist
export PATH="/usr/local/opt/ccache/libexec:$(brew --prefix gettext)/bin:$PATH"
export CFLAGS="-I/usr/local/opt/openssl/include -frewrite-includes $CFLAGS"
export LDFLAGS="-L/usr/local/opt/openssl/lib $LDFLAGS"
export PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig"
mkdir build && meson build -Decore-imf-loaders-disabler=scim,ibus -Dx11=false -Davahi=false -Dbindings=luajit -Deeze=false -Dsystemd=false -Dnls=false -Dcocoa=true -Demotion-loaders-disabler=gstreamer,gstreamer1,libvlc,xine
fi
else
CI_BUILD_TYPE="$1"
DEFAULT_LINUX_COPTS="--prefix=/usr/ --with-tests=regular --disable-cxx-bindings --disable-dependency-tracking -C"
WAYLAND_LINUX_COPTS=" --enable-wayland --enable-elput --enable-drm \
--enable-wayland-ivi-shell --enable-gl-drm --with-opengl=es --enable-egl"
ENABLED_LINUX_COPTS=" --enable-harfbuzz --enable-liblz4 --enable-image-loader-webp --enable-xinput22 \
--enable-multisense --enable-lua-old --enable-xpresent --enable-hyphen \
--enable-pixman --enable-pixman-font --enable-pixman-rect --enable-pixman-line \
--enable-pixman-poly --enable-pixman-image --enable-pixman-image-scale-sample \
--enable-image-loader-generic --enable-libuv --enable-tile-rotate --enable-vnc-server \
--enable-fb --enable-v4l2 --enable-cserve \
--enable-ecore-wayland --enable-ecore-drm --enable-cancel-ok --with-crypto=gnutls \
--enable-debug --disable-gstreamer1 --enable-gstreamer"
# Not compatible with Open GL ES and thus the wayland options. Need to think about having different
# jobs for the different supported GL flavours.
#--enable-sdl
DISABLED_LINUX_COPTS=" --disable-neon --disable-libeeze --disable-systemd --disable-magic-debug \
--disable-valgrind --disable-gstreamer1 \
--disable-fontconfig --disable-fribidi --disable-poppler --disable-spectre --disable-libraw \
--disable-librsvg --disable-xcf --disable-libmount --disable-tslib --disable-audio \
--disable-pulseaudio --disable-avahi --disable-xinput2 --disable-xim --disable-scim \
--disable-ibus --disable-physics --disable-quick-launch --disable-elua"
RELEASE_READY_LINUX_COPTS=" --with-profile=release"
MINGW_COPTS=" --prefix=/root/EFL/ewpi_64 --host=x86_64-w64-mingw32 --with-eolian-gen=/usr/local/bin/eolian_gen \
--with-edje-cc=/usr/local/bin/edje_cc --with-eet-eet=/usr/local/bin/eet \
--with-bin-elm-prefs-cc=/usr/local/bin/elm_prefs_cc \
--disable-static --with-tests=regular --with-crypto=openssl \
--disable-libmount --disable-valgrind --disable-avahi --disable-spectre --disable-libraw \
--disable-librsvg --disable-pulseaudio --disable-cxx-bindings"
patch -p1 < .ci/efl.m4.diff
sed -i.orig 's/AC_INIT\(.*\)efl_version-[a-zA-Z0-9]\+/AC_INIT\1efl_version/g' configure.ac
if [ "$DISTRO" != "" ] ; then
# Normal build test of all targets
OPTS="$DEFAULT_LINUX_COPTS"
if [ "$1" = "options-enabled" ]; then
OPTS="$OPTS $ENABLED_LINUX_COPTS $WAYLAND_LINUX_COPTS"
fi
if [ "$1" = "options-disabled" ]; then
OPTS="$OPTS $DISABLED_LINUX_COPTS"
fi
if [ "$1" = "release-ready" ]; then
OPTS="$OPTS $RELEASE_READY_LINUX_COPTS"
fi
if [ "$1" = "mingw" ]; then
OPTS="$OPTS $MINGW_COPTS"
docker exec $(cat $HOME/cid) sh -c 'rm -f /src/config.cache'
fi
docker exec $(cat $HOME/cid) sh -c 'rm -f ~/.ccache/ccache.conf'
travis_fold autoreconf autoreconf
if [ "$1" = "mingw" ]; then
docker exec $(cat $HOME/cid) sh -c 'rm -f /src/config.cache'
docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 --env CFLAGS="-pipe" --env CXXFLAGS="-pipe" \
--env CPPFLAGS="-I/root/EFL/ewpi_64/include -DECORE_WIN32_WIP_POZEFLKSD" --env LDFLAGS="-L/root/EFL/ewpi_64/lib/" --env PKG_CONFIG_PATH="/root/EFL/ewpi_64/lib/pkgconfig/" \
$(cat $HOME/cid) sh -c "autoreconf -iv"
else
docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 --env CC="ccache gcc" \
--env CXX="ccache g++" --env CFLAGS="-fdirectives-only" --env CXXFLAGS="-fdirectives-only" \
--env LD="ld.gold" $(cat $HOME/cid) sh -c "LIBTOOLIZE_OPTIONS='--no-warn' autoreconf -iv"
fi
travis_endfold autoreconf
travis_fold configure "configure $OPTS"
if [ "$1" = "mingw" ]; then
docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 --env CFLAGS="-pipe" --env CXXFLAGS="-pipe" \
--env CPPFLAGS="-I/root/EFL/ewpi_64/include -DECORE_WIN32_WIP_POZEFLKSD" --env LDFLAGS="-L/root/EFL/ewpi_64/lib/" --env PKG_CONFIG_PATH="/root/EFL/ewpi_64/lib/pkgconfig/" \
$(cat $HOME/cid) sh -c ".ci/configure.sh $OPTS"
else
docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 --env CC="ccache gcc" \
--env CXX="ccache g++" --env CFLAGS="-fdirectives-only" --env CXXFLAGS="-fdirectives-only" \
--env LD="ld.gold" $(cat $HOME/cid) sh -c ".ci/configure.sh $OPTS"
fi
else
OSX_COPTS="--disable-cxx-bindings --with-tests=regular --disable-dependency-tracking -C"
# Prepare OSX env for build
mkdir -p ~/Library/LaunchAgents
ln -sfv /usr/local/opt/d-bus/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/org.freedesktop.dbus-session.plist
export PATH="/usr/local/opt/ccache/libexec:$(brew --prefix gettext)/bin:$PATH"
export CFLAGS="-I/usr/local/opt/openssl/include -frewrite-includes $CFLAGS"
export LDFLAGS="-L/usr/local/opt/openssl/lib $LDFLAGS"
export PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig"
# Normal build test of all targets
rm -f ~/.ccache/ccache.conf
travis_fold autoreconf autoreconf
LIBTOOLIZE_OPTIONS='--no-warn' autoreconf -iv
travis_endfold autoreconf
travis_fold configure "configure $OSX_COPTS"
.ci/configure.sh $OSX_COPTS
fi
travis_endfold configure
fi

View File

@ -1,65 +0,0 @@
#!/bin/sh
set -e
PARALLEL_JOBS=10
CI_BUILD_TYPE=$1
DEFAULT_COPTS="--prefix=/usr/ --with-tests=regular --disable-cxx-bindings"
WAYLAND_COPTS="--with-tests=regular --enable-wayland --enable-elput --enable-drm \
--enable-wayland-ivi-shell --enable-gl-drm --with-opengl=es --enable-egl"
MISC_COPTS="--enable-harfbuzz --enable-liblz4 --enable-image-loader-webp --enable-xinput22 \
--enable-multisense --enable-lua-old --enable-xpresent --enable-hyphen \
--enable-pixman --enable-pixman-font --enable-pixman-rect --enable-pixman-line \
--enable-pixman-poly --enable-pixman-image --enable-pixman-image-scale-sample \
--enable-image-loader-generic --enable-libuv --enable-tile-rotate --enable-vnc-server \
--enable-sdl --enable-fb --enable-v4l2 --enable-cserve --enable-always-build-examples \
--enable-ecore-wayland --enable-ecore-drm --enable-cancel-ok --with-crypto=gnutls \
--enable-debug --disable-gstreamer1 --enable-gstreamer"
MISC_DISABLED_COPTS="--disable-neon --disable-libeeze --disable-systemd --disable-magic-debug \
--disable-valgrind --disable-cxx-bindings --disable-gstreamer1 \
--disable-fontconfig --disable-fribidi --disable-poppler --disable-spectre --disable-libraw \
--disable-librsvg --disable-xcf --disable-libmount --disable-tslib --disable-audio \
--disable-pulseaudio --disable-avahi --disable-xinput2 --disable-xim --disable-scim \
--disable-ibus --disable-physics --disable-quick-launch --disable-elua"
RELEASE_READY_COPTS="--with-profile=release"
if [ "$CI_BUILD_TYPE" = "" ]; then
# Normal build test of all targets
./autogen.sh $DEFAULT_COPTS
make -j $PARALLEL_JOBS
make -j $PARALLEL_JOBS check-build
make -j $PARALLEL_JOBS examples
make -j $PARALLEL_JOBS benchmark
make -j $PARALLEL_JOBS install
./.ci/build-efl-app.sh
fi
if [ "$CI_BUILD_TYPE" = "wayland" ]; then
./autogen.sh $WAYLAND_COPTS
make -j $PARALLEL_JOBS
make -j $PARALLEL_JOBS examples
fi
if [ "$CI_BUILD_TYPE" = "misc" ]; then
./autogen.sh $MISC_COPTS
make -j $PARALLEL_JOBS
make -j $PARALLEL_JOBS examples
fi
if [ "$CI_BUILD_TYPE" = "misc-disabled" ]; then
./autogen.sh $MISC_DISABLED_COPTS
make -j $PARALLEL_JOBS
make -j $PARALLEL_JOBS examples
fi
if [ "$CI_BUILD_TYPE" = "release-ready" ]; then
./autogen.sh $RELEASE_READY_COPTS
make -j $PARALLEL_JOBS
make -j $PARALLEL_JOBS distcheck
fi

19
.ci/ci-make-benchmark.sh Executable file
View File

@ -0,0 +1,19 @@
#!/bin/sh
set -e
. .ci/travis.sh
if [ "$1" = "release-ready" ] ; then
exit 0
fi
travis_fold benchmark "make benchmark"
if [ "$BUILDSYSTEM" = "ninja" ] ; then
echo "Nothing to do here, the benchmarks don't seem to terminate"
else
if [ "$DISTRO" != "" ] ; then
docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) make benchmark
else
export PATH="/usr/local/opt/ccache/libexec:$(brew --prefix gettext)/bin:$PATH"
make benchmark
fi
fi
travis_endfold benchmark

54
.ci/ci-make-check.sh Executable file
View File

@ -0,0 +1,54 @@
#!/bin/sh
. .ci/travis.sh
if [ "$1" = "release-ready" ] ; then
exit 0
fi
if [ "$1" = "mingw" ] ; then
exit 0
fi
#T7151
if [ "$1" = "options-enabled" ] || [ "$1" = "options-disabled" ] ; then
exit 0
fi
NUM_TRIES=5
travis_fold check "make check-TESTS"
if [ "$BUILDSYSTEM" = "ninja" ] ; then
if [ "$DISTRO" != "" ] ; then
# disable them for this distros, after meson 0.49 is out, this can be removed
# https://github.com/mesonbuild/meson/commit/253c581412d7f2b09af353dd83d943454bd555be
if [ "$DISTRO" != "Ubuntu1804" ] && [ "$DISTRO" != "Debian91" ]; then
for tries in $(seq 1 ${NUM_TRIES}); do
(docker exec --env EINA_LOG_BACKTRACE="0" --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) ninja -C build test) && break
docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) cat src/test-suite.log
if [ $tries != ${NUM_TRIES} ] ; then echo "tests failed, trying again!" ; fi
false
done
fi
fi
else
if [ "$DISTRO" != "" ] ; then
for tries in $(seq 1 ${NUM_TRIES}); do
(docker exec --env EINA_LOG_BACKTRACE="0" --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) make -j2 -C src/ check-TESTS) && break
docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) cat src/test-suite.log
if [ $tries != ${NUM_TRIES} ] ; then echo "tests failed, trying again!" ; fi
false
done
#else
#export PATH="/usr/local/opt/ccache/libexec:$(brew --prefix gettext)/bin:$PATH"
#for tries in 1 2 3 ; do
#make -j2 -C src/ check-TESTS && break
#cat src/test-suite.log
#if [ $tries != 3 ] ; then echo "tests failed, trying again!" ; fi
#false
#done
fi
fi
ret=$?
travis_endfold check
exit $ret

22
.ci/ci-make-checkbuild.sh Executable file
View File

@ -0,0 +1,22 @@
#!/bin/sh
set -e
. .ci/travis.sh
if [ "$1" = "release-ready" ] ; then
exit 0
fi
if [ "$1" = "mingw" ] ; then
exit 0
fi
travis_fold check-build "make check-build"
if [ "$BUILDSYSTEM" = "ninja" ] ; then
echo "Nothing to do here"
else
if [ "$DISTRO" != "" ] ; then
docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) make check-build
else
export PATH="/usr/local/opt/ccache/libexec:$(brew --prefix gettext)/bin:$PATH"
make check-build
fi
fi
travis_endfold check-build

32
.ci/ci-make-distcheck.sh Executable file
View File

@ -0,0 +1,32 @@
#!/bin/sh
set -e
. .ci/travis.sh
if [ "$1" != "release-ready" ] ; then
exit 0
fi
travis_fold distcheck "make distcheck"
if [ "$BUILDSYSTEM" = "ninja" ] ; then
if [ "$DISTRO" != "" ] ; then
docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 --env CC="ccache gcc" \
--env CXX="ccache g++" \
--env CFLAGS="-fdirectives-only" --env CXXFLAGS="-fdirectives-only" \
--env LD="ld.gold" $(cat $HOME/cid) dbus-launch ninja -C build dist || \
(sudo cat efl-*/_build/sub/src/test-suite.log; false)
else
export PATH="/usr/local/opt/ccache/libexec:$(brew --prefix gettext)/bin:$PATH"
ninja -C build dist
fi
else
if [ "$DISTRO" != "" ] ; then
docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 --env CC="ccache gcc" \
--env CXX="ccache g++" \
--env CFLAGS="-fdirectives-only" --env CXXFLAGS="-fdirectives-only" \
--env LD="ld.gold" $(cat $HOME/cid) bash -c .ci/distcheck.sh || \
(sudo cat efl-*/_build/sub/src/test-suite.log; false)
else
export PATH="/usr/local/opt/ccache/libexec:$(brew --prefix gettext)/bin:$PATH"
make
fi
fi
travis_endfold distcheck

19
.ci/ci-make-examples.sh Executable file
View File

@ -0,0 +1,19 @@
#!/bin/sh
set -e
. .ci/travis.sh
if [ "$1" = "release-ready" ] ; then
exit 0
fi
travis_fold examples "make examples"
if [ "$BUILDSYSTEM" = "ninja" ] ; then
echo "TODO"
else
if [ "$DISTRO" != "" ] ; then
docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) make examples
else
export PATH="/usr/local/opt/ccache/libexec:$(brew --prefix gettext)/bin:$PATH"
make examples
fi
fi
travis_endfold examples

24
.ci/ci-make-install.sh Executable file
View File

@ -0,0 +1,24 @@
#!/bin/sh
set -e
. .ci/travis.sh
if [ "$1" = "release-ready" ] ; then
exit 0
fi
travis_fold install "make install"
if [ "$BUILDSYSTEM" = "ninja" ] ; then
if [ "$DISTRO" != "" ] ; then
docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) ninja -C build install
else
export PATH="/usr/local/opt/ccache/libexec:$(brew --prefix gettext)/bin:$PATH"
ninja -C build install
fi
else
if [ "$DISTRO" != "" ] ; then
docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) make install
else
export PATH="/usr/local/opt/ccache/libexec:$(brew --prefix gettext)/bin:$PATH"
make install
fi
fi
travis_endfold install

24
.ci/ci-make.sh Executable file
View File

@ -0,0 +1,24 @@
#!/bin/sh
set -e
. .ci/travis.sh
if [ "$1" = "release-ready" ] ; then
exit 0
fi
travis_fold make make
if [ "$BUILDSYSTEM" = "ninja" ] ; then
if [ "$DISTRO" != "" ] ; then
docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) ninja -C build
else
export PATH="$(brew --prefix gettext)/bin:$PATH"
ninja -C build
fi
else
if [ "$DISTRO" != "" ] ; then
docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) make
else
export PATH="$(brew --prefix gettext)/bin:$PATH"
make
fi
fi
travis_endfold make

View File

@ -1,21 +0,0 @@
#!/bin/sh
set -e
COPTS="--disable-cxx-bindings"
PARALLEL_JOBS=10
# Prepare OSX env for build
mkdir -p ~/Library/LaunchAgents
ln -sfv /usr/local/opt/d-bus/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/org.freedesktop.dbus-session.plist
export PATH="$(brew --prefix gettext)/bin:$PATH"
export CFLAGS="-I/usr/local/opt/openssl/include $CFLAGS"
export LDFLAGS="-L/usr/local/opt/openssl/lib $LDFLAGS"
# Normal build test of all targets
./autogen.sh $COPTS $@
make -j $PARALLEL_JOBS
make -j $PARALLEL_JOBS examples
#make -j $PARALLEL_JOBS benchmark

View File

@ -2,4 +2,5 @@
brew update
brew unlink python
brew install gettext check bullet dbus fontconfig freetype fribidi gst-plugins-good gstreamer luajit openssl webp libsndfile glib libspectre libraw librsvg poppler lz4 pulseaudio
brew install gettext check bullet dbus fontconfig freetype fribidi gst-plugins-good gstreamer luajit openssl webp libsndfile glib libspectre libraw librsvg poppler lz4 pulseaudio ccache ninja python3
pip3 install meson

12
.ci/ci-setup-ccache.sh Executable file
View File

@ -0,0 +1,12 @@
#!/bin/sh
set -e
if [ "$DISTRO" != "" ] ; then
docker exec $(cat $HOME/cid) sh -c ".ci/docker-ccache-setup.sh $1"
docker exec $(cat $HOME/cid) ccache -pz
else
cp .ci/ccache.conf ~/.ccache
ccache -o base_dir="$(pwd)"
ccache -pz
fi

12
.ci/configure.sh Executable file
View File

@ -0,0 +1,12 @@
#!/bin/bash
set -o pipefail
export TEST_VAR=1
if ! ./configure $@ | tee -a configlog ; then
if grep -q 'configure: error: changes in the environment can compromise the build' configlog ; then
echo "clearing config.cache and retrying..."
rm -f configlog config.cache
./configure $@
fi
fi

125
.ci/distcheck.sh Executable file
View File

@ -0,0 +1,125 @@
#!/bin/bash
. .ci/travis.sh
scrape_makefile_variable() {
#try to scrape $1 from Makefile
num=0
var=
while true ; do
var="$(grep -A${num} -m1 -w $1 Makefile.am)"
#continually increment number of lines scraped if backslash is detected
if echo "$var" | tail -n1 | grep -q '\\' ; then
num=$((++num))
else
#cut out line wrapping
var=$(echo "$var" | tr -d '\n\\' | cut -d= -f2-)
break
fi
done
echo $var
}
#attempt to keep this as close to original makefile rule as possible
#for ease of future updating
set -e
travis_fold dist "make dist"
#create dist tarball
make dist
travis_endfold dist
#set distdir variable to current package string
distdir="$(grep '^PACKAGE_STRING' config.log|cut -d\' -f2|tr ' ' -)"
DIST_ARCHIVES=${distdir}.tar.xz
MAKE=make
#unpack dist tarball
xz -dc ${distdir}.tar.xz | tar -xf -
chmod -R a-w ${distdir}
chmod u+w ${distdir}
mkdir ${distdir}/_build ${distdir}/_build/sub ${distdir}/_inst
chmod a-w ${distdir}
test -d ${distdir}/_build
dc_install_base=`cd ${distdir}/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'`
dc_destdir="${TMPDIR-/tmp}/am-dc-XXXX"
am__cwd=`pwd`
AM_DISTCHECK_CONFIGURE_FLAGS="$(scrape_makefile_variable AM_DISTCHECK_CONFIGURE_FLAGS)"
AM_MAKEFLAGS="$(scrape_makefile_variable AM_MAKEFLAGS)"
travis_fold configure "configuring distcheck build"
cd ${distdir}/_build/sub
../../configure \
${AM_DISTCHECK_CONFIGURE_FLAGS} \
${DISTCHECK_CONFIGURE_FLAGS} \
--srcdir=../.. --prefix="$dc_install_base"
travis_endfold configure
travis_fold make make
make ${AM_MAKEFLAGS}
travis_endfold make
travis_fold dvi dvi
make ${AM_MAKEFLAGS} dvi
travis_endfold dvi
travis_fold check-build check-build
make ${AM_MAKEFLAGS} check-build
travis_endfold check-build
travis_fold check-TESTS check-TESTS
set +e
export EINA_LOG_BACKTRACE="0"
NUM_TRIES=5
for tries in $(seq 1 ${NUM_TRIES}); do
make ${AM_MAKEFLAGS} -C src/ -j1 check-TESTS && break
cat src/test-suite.log
if [ $tries != ${NUM_TRIES} ] ; then echo "tests failed, trying again!" ; continue ; fi
exit 1
done
travis_endfold check-TESTS
set -e
travis_fold make_install "make install"
make ${AM_MAKEFLAGS} install
travis_endfold make_install
travis_fold make_installcheck "make installcheck"
make ${AM_MAKEFLAGS} installcheck
travis_endfold make_installcheck
travis_fold make_testapp "testing external compile"
PKG_CONFIG_PATH=${dc_install_base}/lib/pkgconfig ${am__cwd}/.ci/build-efl-app.sh
travis_endfold make_testapp
travis_fold make_uninstall "make uninstall"
make ${AM_MAKEFLAGS} uninstall
travis_endfold make_uninstall
travis_fold distuninstallcheck "make distuninstallcheck"
make ${AM_MAKEFLAGS} distuninstallcheck_dir="$dc_install_base" \
distuninstallcheck
travis_endfold distuninstallcheck
chmod -R a-w "$dc_install_base"
(cd ../.. && umask 077 && mktemp -d "$dc_destdir")
travis_fold dist-install "make dist-install"
make ${AM_MAKEFLAGS} DESTDIR="$dc_destdir" install
travis_endfold dist-install
travis_fold dist-uninstall "make dist-uninstall"
make ${AM_MAKEFLAGS} DESTDIR="$dc_destdir" uninstall
travis_endfold dist-uninstall
travis_fold dist-distuninstallcheck "make dist-distuninstallcheck"
make ${AM_MAKEFLAGS} DESTDIR="$dc_destdir" \
distuninstallcheck_dir="$dc_destdir" distuninstallcheck \
|| { rm -rf "$dc_destdir"; exit 1; }
travis_endfold dist-distuninstallcheck
rm -rf "$dc_destdir"
travis_fold dist-dist "make dist-dist"
make ${AM_MAKEFLAGS} dist
travis_endfold dist-dist
rm -rf ${DIST_ARCHIVES}
travis_fold dist-distcleancheck "make dist-distcleancheck"
make ${AM_MAKEFLAGS} distcleancheck
travis_endfold dist-distcleancheck
cd "$am__cwd"
#$(am__post_remove_distdir)
if test -d "${distdir}"; then
find "${distdir}" -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -rf "${distdir}" \
|| { rm -rf "${distdir}"; }; \
else :; fi

11
.ci/docker-ccache-setup.sh Executable file
View File

@ -0,0 +1,11 @@
#!/bin/sh
CI_BUILD_TYPE="$1"
cp .ci/ccache.conf ~/.ccache
if [ "$1" = "release-ready" ] ; then
ccache -o base_dir="$(pwd)/$(grep '^PACKAGE_STRING' config.log|cut -d\' -f2|tr ' ' -)"
else
ccache -o base_dir=$(pwd)
fi

View File

@ -1,12 +0,0 @@
FROM base/archlinux
# Install
RUN pacman -Syu
RUN pacman -S --noconfirm git bullet libjpeg-turbo gst-plugins-base \
luajit curl fribidi libpulse libxcomposite \
libxinerama libxrandr libxss libinput \
libxcursor libxp libwebp shared-mime-info \
libxkbcommon wayland lz4 openjpeg avahi \
libspectre libraw librsvg wayland-protocols \
git ninja clang gcc pkgconfig check autoconf make base-devel \
mesa poppler

View File

@ -1,5 +0,0 @@
FROM debian:9.1
# Install
RUN apt-get update -y
RUN apt-get install -y make gcc bison flex gawk subversion automake autoconf doxygen check autotools-dev autoconf-archive autopoint libtool gettext libpam0g-dev libfreetype6-dev libpng-dev zlib1g-dev libjpeg-dev libdbus-1-dev luajit libluajit-5.1-dev libx11-dev libxcursor-dev libxrender-dev libxrandr-dev libxfixes-dev libxdamage-dev libxcomposite-dev libxss-dev libxext-dev libxinerama-dev libxkbfile-dev libxtst-dev libxcb1-dev libxcb-shape0-dev libxcb-keysyms1-dev libpulse-dev libsndfile1-dev libudev-dev libblkid-dev libmount-dev libgstreamer1.0-dev libtiff5-dev libgif-dev curl libssl-dev libspectre-dev libpoppler-dev librsvg2-dev libraw-dev libxinerama-dev git libfribidi-dev libcogl-gles2-dev libbullet-dev libgstreamer-plugins-base1.0-dev libvlc-dev libpoppler-cpp-dev libsystemd-dev systemd libsystemd0

View File

@ -1,5 +0,0 @@
FROM fedora:26
# Install
RUN dnf update --assumeyes
RUN dnf install --assumeyes bullet-devel libpng-devel libjpeg-turbo-devel gstreamer1-devel gstreamer1-plugins-base-devel zlib-devel luajit-devel libtiff-devel openssl-devel libcurl-devel dbus-devel glibc-devel fontconfig-devel freetype-devel fribidi-devel pulseaudio-libs-devel libsndfile-devel libX11-devel libXau-devel libXcomposite-devel libXdamage-devel libXdmcp-devel libXext-devel libXfixes-devel libXinerama-devel libXrandr-devel libXrender-devel libXScrnSaver-devel libXtst-devel libXcursor-devel libXp-devel libXi-devel mesa-libGL-devel giflib-devel libmount-devel libblkid-devel systemd-devel poppler-cpp-devel poppler-devel LibRaw-devel libspectre-devel librsvg2-devel autoconf automake gcc gcc-c++ gettext-devel findutils tar xz libtool make

View File

@ -1,11 +0,0 @@
FROM fedora:27
# Install
RUN dnf update --assumeyes
RUN dnf install --assumeyes bullet-devel libpng-devel libjpeg-turbo-devel gstreamer1-devel gstreamer1-plugins-base-devel zlib-devel luajit-devel libtiff-devel openssl-devel libcurl-devel dbus-devel glibc-devel fontconfig-devel freetype-devel fribidi-devel pulseaudio-libs-devel libsndfile-devel libX11-devel libXau-devel libXcomposite-devel libXdamage-devel libXdmcp-devel libXext-devel libXfixes-devel libXinerama-devel libXrandr-devel libXrender-devel libXScrnSaver-devel libXtst-devel libXcursor-devel libXp-devel libXi-devel mesa-libGL-devel giflib-devel libmount-devel libblkid-devel systemd-devel poppler-cpp-devel poppler-devel LibRaw-devel libspectre-devel librsvg2-devel autoconf automake gcc gcc-c++ gettext-devel findutils tar xz libtool make
# Install wayland build dependencies
RUN dnf install --assumeyes wayland-protocols-devel libwayland-client libwayland-server libinput-devel libdrm-devel libxkbcommon-devel uuid-devel wayland-devel mesa-libgbm-devel
# Install misc build dependencies
RUN dnf install --assumeyes lz4-devel harfbuzz-devel libXpresent-devel libwebp-devel hyphen-devel lua-devel

View File

@ -1,7 +0,0 @@
FROM opensuse:42.3
# Install
RUN zypper --non-interactive update
RUN zypper --non-interactive install -t pattern devel_basis
RUN zypper --non-interactive in -d efl
RUN zypper --non-interactive install gcc-c++ gettext-devel doxygen check libcheck0 check-devel libopenssl-devel systemd-devel libjpeg-devel glib2-devel gstreamer-devel gstreamer-plugins-base-devel luajit-devel freetype2-devel fontconfig-devel fribidi-devel libpng-devel libtiff-devel libcurl-devel libsndfile-devel libX11-devel libXau-devel libXcomposite-devel libXdamage-devel libXdmcp-devel libXext-devel libXfixes-devel libXinerama-devel libXrandr-devel libXrender-devel libXScrnSaver-devel libXtst-devel libXcursor-devel libXp-devel libXi-devel Mesa-libGL-devel giflib-devel libmount-devel libblkid-devel poppler-devel libraw-devel libspectre-devel librsvg2-devel gettext-devel libbullet-devel libudev-devel dbus-1-devel libpulse-devel

View File

@ -1,5 +0,0 @@
FROM ubuntu:17.04
# Install
RUN apt-get update -y
RUN apt-get install -y build-essential autoconf automake autopoint doxygen check luajit libharfbuzz-dev libpng-dev libudev-dev libwebp-dev libssl-dev libluajit-5.1-dev libfribidi-dev libcogl-gles2-dev libgif-dev libtiff5-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libdbus-1-dev libmount-dev libblkid-dev libpulse-dev libxrandr-dev libxtst-dev libxcursor-dev libxcomposite-dev libxinerama-dev libxkbfile-dev libbullet-dev libvlc-dev libsndfile1-dev libraw-dev libspectre-dev libpoppler-cpp-dev libpam0g-dev liblz4-dev faenza-icon-theme gettext git imagemagick libasound2-dev libbluetooth-dev libfontconfig1-dev libfreetype6-dev libibus-1.0-dev libiconv-hook-dev libjpeg-dev libjpeg-turbo8-dev libpoppler-dev libpoppler-private-dev libproxy-dev librsvg2-dev libscim-dev libsystemd-dev libtool libudisks2-dev libunibreak-dev libxcb-keysyms1-dev libxine2-dev libxss-dev linux-tools-common libcurl4-openssl-dev

View File

@ -1,5 +0,0 @@
FROM ubuntu:17.10
# Install
RUN apt-get update -y
RUN apt-get install -y build-essential autoconf automake autopoint doxygen check luajit libharfbuzz-dev libpng-dev libudev-dev libwebp-dev libssl-dev libluajit-5.1-dev libfribidi-dev libcogl-gles2-dev libgif-dev libtiff5-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libdbus-1-dev libmount-dev libblkid-dev libpulse-dev libxrandr-dev libxtst-dev libxcursor-dev libxcomposite-dev libxinerama-dev libxkbfile-dev libbullet-dev libvlc-dev libsndfile1-dev libraw-dev libspectre-dev libpoppler-cpp-dev libpam0g-dev liblz4-dev faenza-icon-theme gettext git imagemagick libasound2-dev libbluetooth-dev libfontconfig1-dev libfreetype6-dev libibus-1.0-dev libiconv-hook-dev libjpeg-dev libjpeg-turbo8-dev libpoppler-dev libpoppler-private-dev libproxy-dev librsvg2-dev libscim-dev libsystemd-dev libtool libudisks2-dev libunibreak-dev libxcb-keysyms1-dev libxine2-dev libxss-dev linux-tools-common libcurl4-openssl-dev systemd

24
.ci/efl.m4.diff Normal file
View File

@ -0,0 +1,24 @@
diff --git a/m4/efl.m4 b/m4/efl.m4
index d051155e56..4b91c60963 100644
--- a/m4/efl.m4
+++ b/m4/efl.m4
@@ -22,14 +22,14 @@ dnl dev_version = development version (svn revision).
dnl def_build_profile = dev or release based on 'dev' release parameter.
AC_DEFUN([EFL_VERSION],
[dnl
-m4_define([v_maj], [$1])dnl
-m4_define([v_min], [$2])dnl
-m4_define([v_mic], [$3])dnl
-m4_define([dev_version], m4_esyscmd([(git rev-list --count HEAD 2>/dev/null || echo 0) | tr -d '\n']))dnl
+m4_define([v_maj], [1])dnl
+m4_define([v_min], [99])dnl
+m4_define([v_mic], [99])dnl
+m4_define([dev_version], [0])
m4_define([v_rev], m4_if($4, dev, [dev_version], [0]))dnl
m4_define([v_rel], [])dnl
m4_define([def_build_profile], m4_if($4, dev, [dev], [release]))dnl
-m4_define([efl_version], m4_if($4, dev, [v_maj.v_min.v_mic.v_rev], [v_maj.v_min.v_mic]))dnl
+m4_define([efl_version], [v_maj.v_min.v_mic])dnl
dnl m4_define([efl_version], [v_maj.v_min.v_mic])dnl
])

24
.ci/travis.sh Executable file
View File

@ -0,0 +1,24 @@
#!/bin/sh
# https://github.com/travis-ci/travis-rubies/blob/9f7962a881c55d32da7c76baefc58b89e3941d91/build.sh#L38-L44
travis_fold() {
echo -e "travis_fold:start:$1\033[33;1m$2\033[0m"
}
travis_endfold() {
echo -e "\ntravis_fold:end:$1\r"
}
travis_time_start() {
travis_timer_id=$(printf %08x $(( RANDOM * RANDOM )))
travis_start_time=$(travis_nanoseconds)
echo -en "travis_time:start:$travis_timer_id\r${ANSI_CLEAR}"
}
travis_time_finish() {
local result=$?
travis_end_time=$(travis_nanoseconds)
local duration=$(($travis_end_time-$travis_start_time))
echo -en "\ntravis_time:end:$travis_timer_id:start=$travis_start_time,finish=$travis_end_time,duration=$duration\r${ANSI_CLEAR}"
return $result
}

View File

@ -1,5 +1,9 @@
language: c
cache:
directories:
- $HOME/cachedir
- $HOME/.ccache
- $HOME/autom4te.cache
sudo: required
dist: trusty
@ -8,57 +12,132 @@ os:
- osx
env:
-
- DISTRO=Ubuntu1804
- DISTRO=Fedora28 CI_BUILD_TYPE=wayland
- DISTRO=Fedora28 CI_BUILD_TYPE=misc
- DISTRO=Fedora28 CI_BUILD_TYPE=misc-disabled
- DISTRO=Fedora28 CI_BUILD_TYPE=release-ready
- DISTRO=Debian91
- DISTRO=Archlinux
global:
- MAKEFLAGS="-j5 -rR"
- EIO_MONITOR_POLL=1
- CC="ccache gcc"
- CXX="ccache g++"
jobs:
include:
- env:
- os: linux
- DISTRO=Fedora28-mingw
- CI_BUILD_TYPE=mingw
- env:
- os: linux
- DISTRO=Fedora28
- CI_BUILD_TYPE=options-enabled
- env:
- os: linux
- DISTRO=Fedora28
- CI_BUILD_TYPE=options-disabled
- env:
- os: linux
- DISTRO=Fedora28
- CI_BUILD_TYPE=options-enabled
- BUILDSYSTEM=ninja
- env:
- os: linux
- DISTRO=Fedora28
- CI_BUILD_TYPE=options-disabled
- BUILDSYSTEM=ninja
- if: type = cron
env:
- os: linux
- DISTRO=Ubuntu1804
- if: type = cron
env:
- os: linux
- DISTRO=Fedora28
- CI_BUILD_TYPE=release-ready
- if: type = cron
env:
- os: linux
- DISTRO=Debian91
- if: type = cron
env:
- os: linux
- DISTRO=Ubuntu1804
- BUILDSYSTEM=ninja
- if: type = cron
env:
- os: linux
- DISTRO=Fedora28
- CI_BUILD_TYPE=release-ready
- BUILDSYSTEM=ninja
- if: type = cron
env:
- os: linux
- DISTRO=Debian91
- BUILDSYSTEM=ninja
exclude:
- os: linux
services:
- docker
matrix:
fast_finish: true
exclude:
- os: osx
env: DISTRO=Ubuntu1804
- os: osx
env: DISTRO=Fedora28 CI_BUILD_TYPE=wayland
- os: osx
env: DISTRO=Fedora28 CI_BUILD_TYPE=misc
- os: osx
env: DISTRO=Fedora28 CI_BUILD_TYPE=misc-disabled
- os: osx
env: DISTRO=Fedora28 CI_BUILD_TYPE=release-ready
- os: osx
env: DISTRO=Debian91
- os: osx
env: DISTRO=Archlinux
- os: linux
env:
allow_failures:
- os: linux
env: DISTRO=Fedora28 CI_BUILD_TYPE=release-ready
before_install:
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then .ci/ci-osx-deps.sh ; fi
- |
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
rm -rf $HOME/Library/Caches/Homebrew
rm -rf $HOME/cachedir/Homebrew/Homebrew
mv $HOME/cachedir/Homebrew $HOME/Library/Caches/Homebrew
.ci/ci-osx-deps.sh
fi
before_script:
- |
if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ "$DISTRO" != "" ]]; then
docker pull stefanschmidt1/ci-support-files:$DISTRO
fi
- |
if [[ "$TRAVIS_OS_NAME" == "linux" ]] ; then
docker version
docker run --cidfile $HOME/cid -t -d -v `pwd`:/src -v $HOME/.ccache:/root/.ccache -w /src stefanschmidt1/ci-support-files:$DISTRO bash
cp $HOME/cachedir/config.cache . || true
fi
- .ci/ci-ccache-stats.sh
- |
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
cp $HOME/cachedir/config.cache . || true
fi
script:
- .ci/ci-configure.sh "$CI_BUILD_TYPE"
- .ci/ci-setup-ccache.sh "$CI_BUILD_TYPE"
- .ci/ci-make.sh "$CI_BUILD_TYPE"
- .ci/ci-make-checkbuild.sh "$CI_BUILD_TYPE"
#- .ci/ci-make-examples.sh "$CI_BUILD_TYPE"
- |
if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ "$DISTRO" != "" ]]; then
docker run -v `pwd`:/src -w /src stefanschmidt1/ci-support-files:$DISTRO /src/.ci/ci-linux-build.sh $CI_BUILD_TYPE
if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ "$CI_BUILD_TYPE" == "" ]]; then
.ci/ci-make-benchmark.sh "$CI_BUILD_TYPE"
fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then .ci/ci-osx-build.sh ; fi
#- .ci/ci-make-install.sh "$CI_BUILD_TYPE"
- .ci/ci-make-check.sh "$CI_BUILD_TYPE"
- .ci/ci-make-distcheck.sh "$CI_BUILD_TYPE"
#- |
#if [[ "$DISTRO" == "" ]] && [[ "$TRAVIS_OS_NAME" != "linux" ]] ; then
#true
#elif [[ "$CI_BUILD_TYPE" != "release-ready" ]] ; then
#docker exec --env MAKEFLAGS="-j5 -rR" --env EIO_MONITOR_POLL=1 $(cat $HOME/cid) .ci/build-efl-app.sh
#fi
before_cache:
- .ci/ci-ccache-stats.sh
- |
mkdir -p $HOME/cachedir
if [[ "$TRAVIS_OS_NAME" == "linux" ]] ; then
sudo chown travis:travis $HOME/.ccache
mkdir -p $HOME/cachedir/
sudo cp config.cache $HOME/cachedir/
sudo chown travis:travis $HOME/cachedir/config.cache
sudo chown travis:travis $HOME/autom4te.cache
else
cp config.cache $HOME/cachedir
mv $HOME/Library/Caches/Homebrew $HOME/cachedir/Homebrew
fi
after_success:
- |
@ -75,8 +154,9 @@ notifications:
- "chat.freenode.net#edevelop"
on_success: change
on_failure: always
on_cancel: never
template:
- "TravisCI build %{build_number} in branch %{branch}: %{result} - %{message}"
- "TravisCI build %{build_number} in branch %{branch}: %{result} - %{message} (%{elapsed_time})"
- "Commit: %{commit_subject} (%{commit}) from %{author}"
- "Change view : %{compare_url}"
- "Build details : %{build_url}"

View File

@ -687,3 +687,8 @@ Jinyong Park <j4939.park@samsung.com>
Woochan Lee <wc0917.lee@samsung.com>
Taehyub Kim <taehyub.kim@samsung.com>
Sungtaek Hong <taxi2se@gmail.com>
Bryce Harrington <bryce@osg.samsung.com>
YeongJong Lee <yj34.lee@samsung.com>
Bowon Ryu <bowon.ryu@samsung.com>
Wonki Kim <wonki_.kim@samsung.com>
Junsu Choi <jsuya.choi@samsung.com>

View File

@ -1,70 +0,0 @@
cmake_minimum_required(VERSION 3.4)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/helpers")
include(GNUInstallDirs)
include(EflMacros)
EFL_PROJECT(1.18.99)
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
message(FATAL_ERROR "In-source builds not allowed. Use: mkdir -p build && cmake -H. -Bbuild")
endif()
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}" CACHE PATH "Path to store built libraries")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}" CACHE PATH "Path to store built static libraries")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" CACHE PATH "Path to store built executables")
add_definitions(
"-DHAVE_CONFIG_H"
"-DLIB_INSTALL_DIR=\"${LIB_INSTALL_DIR}\""
"-DEXEC_INSTALL_DIR=\"${EXEC_INSTALL_DIR}\""
"-DPACKAGE_BIN_DIR=\"${CMAKE_INSTALL_FULL_BINDIR}\""
"-DPACKAGE_LIB_DIR=\"${CMAKE_INSTALL_FULL_LIBDIR}\""
"-DPACKAGE_BUILD_DIR=\"${CMAKE_SOURCE_DIR}\""
"-DPACKAGE_VERSION=\"${PROJECT_VERSION}\""
)
include_directories(
${PROJECT_SOURCE_DIR}/src/lib/efl
${PROJECT_BINARY_DIR}/src/lib/efl
)
include(${CMAKE_SOURCE_DIR}/cmake/config/common.cmake)
EFL_SUPPORT_LIB(lz4)
EFL_SUPPORT_LIB(draw)
EFL_SUPPORT_LIB(freetype)
EFL_SUPPORT_LIB(rg_etc)
EFL_SUPPORT_LIB(triangulator)
EFL_LIB(eina)
EFL_LIB(eolian)
EFL_LIB(eo)
EFL_LIB(efl)
EFL_LIB(emile)
EFL_LIB(eet)
EFL_LIB(ecore)
EFL_LIB(ecore_con)
EFL_LIB(ecore_ipc)
EFL_LIB(ecore_file)
EFL_LIB(eldbus)
EFL_LIB(embryo)
EFL_LIB(ector)
EFL_LIB(eeze)
EFL_LIB(ecore_input)
EFL_LIB(ecore_x)
EFL_OPTIONS_SUMMARY()
# TODO: when autotools is gone, rename this file in repository
# and remove this copy (using generate to skip @-subst)
file(GENERATE
OUTPUT ${PROJECT_BINARY_DIR}/src/lib/efl/config.h
INPUT ${PROJECT_SOURCE_DIR}/src/lib/efl/config.h.cmake)
EFL_HEADER_CHECKS_FINALIZE(${PROJECT_BINARY_DIR}/src/lib/efl/config_gen.h)
configure_file(
${PROJECT_SOURCE_DIR}/src/lib/efl/Efl_Config.h.cmake
${PROJECT_BINARY_DIR}/src/lib/efl/Efl_Config.h)
EFL_FINALIZE()

View File

@ -3,7 +3,8 @@ AM_MAKEFLAGS = --no-print-directory
AM_DISTCHECK_CONFIGURE_FLAGS = \
--with-tests=regular \
--with-systemdunitdir=. \
--enable-always-build-examples
--enable-always-build-examples \
--disable-dependency-tracking
SUBDIRS = src data doc

479
NEWS
View File

@ -1,7 +1,484 @@
==========
EFL 1.20.0
EFL 1.21.0
==========
Changes since 1.20.0:
---------------------
Features:
* evas: Make all EO canvas objects visible by default
* Eo: Allow multiple functions overrides (T5580)
* eo: Add debug_name read-only property to ease debugging
* evas/edje/elm: Override debug_name in core classes
* wayland: add efl-hints protocol for setting aspect on surfaces
* efl-wl: support min/max hinting
* efl-wl: add handling for external protocol interfaces
* edje - add embryo echo command for debugging
* layout: Implement missing edje APIs (T5315)
* ecore-wl2: Add support for Window Iconify State Change
* ecore-evas-wayland: Add handler for Iconify State Change event
* efl: Introduce Efl.Ui.Direction interface (T5870)
* Efl.Ui.Panes: implement allow_user_size_hints on parts (T5359)
* Efl.Ui.Panes: rename left/right_size_set to split_ratio (T5359)
* efl-wl: add EFL_WL_DEBUG env variable for enabling wayland debug
* efl-wl: add functionality for extracting surfaces for external use
* elput: Add API to set pointer acceleration speed (T4736)
* ecore-drm2: Add API function to allow setting pointer acceleration speed (T4736)
* ecore-drm2: Add API to allow setting pointer acceleration profile (T4736)
* Introduce text on path widget
* eina: Add convenience eina_rectangle_equal
* evas textblock: support ZWJ, ZWNJ, LRM, RLM in escaped form
* evas: Add EO API to get clipper in smart object
* evas: Add group_member_is to smart objects
* efl: Introduce Eina.Rect and switch EO APIs to it
* efl_ui_image: add new scale type: EFL_UI_IMAGE_SCALE_TYPE_TILE
* Canvas text async: add async layout functionality
* Ui text: add Efl.Ui.Text_Async object
* edje: Add part_type_get API
* ecore exe - add an "isolate io"f lag for sending io to /dev/null
* evas: Add scale feature for embedded bitmap fonts.
* eo_debug: Enable logging of all ref/unref
* eo: Add API to allow deletion by unref
* Efl text: add Efl.Text.Markup interface
* evas: Implement support for different H/V font DPI
* elm_config: add offline and powersave config members
* efl_wl: add function for returning the evas object for an extracted surface
* wayland: add support for efl weight hint propagation from elm_win to efl_wl
* evas textblocke: add align=end for putting a text at the opposite side of LTR/RTL
* eina: eina_value - Add "struct tm" support (T6204)
* edje_cc - add offset_scale/offscale per desc to allow offsets to scale
* Genlist Item Pin Feature (T6241)
* saver/svg: parse loaded tree data into svg XML file and save it
* build: improve configure accessibility
* eolian: Add API's for part enumeration
* evas filters: Add "alphaonly" flag for blend and blur
* elm: Add "shadow" part to all widgets
* efl-wl: add function to get the parent of an extracted surface
* ecore_imf: Add transaction start and end event callback
* entry: Add autofill hint
* eo: Add "destruct" event
* efl-wl: move to xdg-shell vfinal
* wayland: add xdg-shell vfinal support for client-side
* Canvas image: add Efl.Canvas.Text.Factory + use in Ui.Text
* efl-wl: add functionality for directly passing through xkb objects
* ecore-x: add more info to Ecore_X_Event_Xkb event
* ecore-x: add some useful xkb function wrappers
* eolian: deferred parsing of inherits + better static checks
* ecore: add function for prepending an event handler
* efl-wl: add functions for managing allowed client pids
* efl-wl: add function for passing ecore-exe flags to launched exes
* ecore-drm2: Add API functions to get/set output relative mode
* efl-wl: send surface enter/leave based on compositor object visibility
* ecore-drm2: Add API to get/set which output is relative to another
* ecore-drm2: Add API function to retrieve output user data
* edje: add ability to reference images from other edje files
* eolian: add API to query information about Objects
* eolian: clean rollback support
* evas: apply fribidi bracket types to show paired bracket properly
* efreet: add method for disabling efreetd connection
* efl_ui_spin: Added special value feature.
* elm_entry: add elm_entry_prediction_hint_hash_set/del API
* edje_cc: add option for verifying namespace usage (T6911)
* eio: add method for setting the global file polling rate for fallback monitors
* eina_debug: add function to reset debug subsystem after fork
* eio: add method for determining if a monitor is using the fallback mechanism
* edje_cc: add 'skip_namespace_validation' keyword (T7072)
Fixes:
* ecore-wl2: pass display to aux hint event_adds
* ecore-wl2: don't send null set_parent requests for every window
* ecore-wl2: sync aux hints after window creation
* efl-wl: block connection attempts from unmanaged clients
* wayland: fix min/max size setting
* efl-wl: do shm pool ref/unref for bm safety
* ecore-evas-wayland: update size when size hints are changed
* efl-wl: add handling for commit during canvas render
* efl-wl: set cursor surface roles
* theme: clip start gadget arrow to intended clipper
* edje crash with run program references - fix
* Allow to override build date (T5495)
* elm_win: simplify/fix recalc logic when changing csd
* elm_win: set shadow geometry based on borderless state
* elementary cursor: remove a warning message from Wayland supports
* elm: Add missing undef EAPI to Elementary.h
* ecore glib support - if we are not the main ctx owner loop to acquire
* evas: Fix crash in E (T5868)
* eolian: implement proper return type serialization (T5024)
* eo: Check refs in efl_data_scope_safe_get (T5869)
* wayland: fix xdg-shell popup windows
* efl-wl: use correct accessor method for keyboard resource hash
* elm_widget: do not reparent subobjs to top widget for non-elm objects
* efl-wl: always dismiss popups on hide
* efl-wl: handle case where eglBindWaylandDisplay fails
* ecore: always set delete_me before removing fd from poll
* efl-wl: initialize seat keymap fd to -1
* ecore_evas_extn: Fix socket & plug windows
* elm_test: Fail nicely if plug can't connect
* evas: make top object returning functions return the top object
* theme: handle e dialog sizing when no buttons are present
* wayland: fix num/caps lock handling in events (T5737)
* elm segment control: delete event cbs on obj delete.
* glview: Fix ALWAYS render policy
* elm_box: Fix support of aspect hints (T5888)
* theme: fix dialog sizing when no buttons are present
* edje: Fix warning message
* efl_ui_clock: Parses the format recursively.
* photocam: Fix key zoom in/out
* elm init - fix init seq and quicklaunch as we shut down x before evas
* ecore-wl2: normalize axis event values (T5427)
* efl-wl: match nested wl seats based on display ordering
* elm_win: update opaque region for fake windows
* elm_win: check for wayland engine during finalize by checking for wl win
* efl_ui_image: maintain geometry for prev image while preloading new image (T5936)
* access: Fix crash in ecore
* Canvas text: fix non-dirty paragraph width calculation (T5939)
* evas: fix invalid return of evas_textgrid_cellrow_get()
* eina file - use recursive locks for cache and file to avoid deadlock
* eina mmap safety - only map zeropages if it's an eina file that sigbuses
* multibuttonentry: Separate selected item and focused item logic.
* efl_ui_clock: Add 'O' character to ignore POSIX alternative format in format.
* elm focus manager - dont leak child lists when updating focus order (T5800)
* elm focus manager - dont leak child lists when updating focus order (T5800)
* eina_array: Fix magic checks to return
* evas: handle object names with a list hash
* evas: fix event grabber child stacking
* ecore_exe - fix failed finalize fork to reutrn NULL not ecore_exe_free
* evas: proceed glyph iterator to handle next index properly
* evas_thread: only join the thread if the thread is still alive (T5245)
* filters: Safety++
* cxx: generate a constructor with a parent and a lambda function (T5980)
* evas: don't search other fonts only for INHERITED script unicodes
* edje: Add legacy compatibility code (T5944)
* evas box - fix longstanding bug where min size is miscalculated
* ecore exe - fix fix malloc fail handling
* efl net - adapt to openssl 1.1.0 changes with tls method support
* eina: prevent memory corruption in chained mempool
* efl net http - fix protocol error handling to not crash and handle it
* flip: Fix invalid use of EOAPI in legacy header
* eina file: Fix map_populate on the global map
* eina file: Ensure populate is safe to call
* elm image: Fix async open to avoid multiple mmap
* Entry: use _edje_seat_name_get to get the seat
* edje: Fix invalid storage of efl_part objects (T6032)
* efl po files - fix LTR/RTL translation string to be correct for langs
* efl ui layout - handle content unset properly and remove the unset item
* hover: Fix hover parts usage
* ecore-x: reject successive MappingNotify events if they are identical
* elm hoversel - fix alignment in ephoto (T6078)
* evas textblock: use primary font's size as minimum size of a line
* elm: Fix module load with ELM_RUN_IN_TREE
* elm: Properly unregister providers on shutdown
* evas: Fix shutdown of async cmd cache
* eo: Fix crashes with call cache after init cycle
* elm: Delete atspi root object on shutdown
* ecore: Reset do_quit when ecore shuts down
* elm: Fix shutdown of atspi (unregister handlers)
* evas textblock: use main font's ascent/descent as minimum value
* evas: Fix dangling references with input devices
* eo: Fix unnecessary ERR logs with eo_debug
* eo: Allow efl_reuse to be called with a parent
* evas ector gl - fix leak of image data on data put (CID1374645)
* evas font: check returned value of FcPatternGet function
* edje entry: fill content info when text is deleted by imf event
* ecore-file: do not emit events when an inotify watch is removed
* elput: Fix issue of pointer rotation not being set on startup
* eolian-bin: Free previously allocated eina_strbuf (CID1381502)
* evas-gl-common: Fix dereference after null check (CID1374272)
* evas-gl-image: Fix dereference after null check (CID1374273)
* elementary: passing NULL to variadic funtion can be undefined.
* eet: wrong comparision to less than zero with unsigned integer.
* evas: there is no effect of variable assignment outside the function.
* efreet: unsigned int cannot be compared to less than zero.
* emotion gst1 - handle null imagwe data returrn and dont crash
* eina: same expression on both statement.
* eina: comparing less than zero with unsigned long int
* emile: comparing less than zero with unsigned interger.
* ephysic: comparing with same statement.
* evas: there is no effect of variable assignment while clean up.
* emotion: Properly unmap video frame
* efl_ui_bg: fix ELM_BG_OPTION_CENTER bg in left top side.
* edje_cc: fix a memory leak issue when edje_cc writes images
* evas gl generic/common - add more linking for gles mode to fix deb build (T6158)
* jp2k module - dont print ERR on llading if format wrong
* edje_edit: duplicate assignment to variable.
* ecore_wayland: fix assigned value is never used.
* ecore: remove doxygen warning messages
* win: Do not forward all key events on win (legacy) (T6148)
* evas: Prevent crash with image_data_get (T5957)
* elm_code_widget: make sure the widget is cleared properly. (T6185)
* ecore_wl2: Remove just the flush from the idle handler (T6250)
* elm_tooltip: set parent window for windowed tooltips
* efl_wl: more closely follow wl spec for input regions
* efl_wl: destroy extant shell surface upon surface deletion
* efl_wl: do not propagate hints to main widget for child surfaces
* ecore-wl2: correctly handle configure events on popup surfaces
* ecore_cocoa: fix the backspace key
* edje_cc: fix errors in documentation
* edje_cc: add missing default values to documentation
* edje_cc: fix color2 and color3 descriptions
* edje_cc: fix state.no_render description
* edje_cc: parse "fixed" as bool
* edje_cc: fix incorrect type in minmul defaults
* edje_cc: fix color_class description
* edje_cc: move part_remove and program_remove to group
* edje_cc: fix default color_class colors
* edje_cc: fix spelling
* edje_cc: make bool parsing consistent
* edje_cc: make color parsing consistent
* edje_cc: move box and table properties documentation
* edje_cc: limit map.zoom to non-negative values
* edje_cc: fix text.align description
* edje_cc: fix program.filter description
* edje_cc: fix item.max parsing
* edje_cc: fix parsing and documentation
* ecore-drm2: Fix issue of not being able to set output mode
* Efl.Ui.Radio: remove value{} api
* edje: don't return negative width and height from _parts_extends
* evas textblock: handle ellipsis when text's height exceed its area by "br"
* evas-software-generic: Check for render engine function before calling
* evas-wayland-shm: Do not dereference a potentially freed pointer (CID1381707)
* emotion: Fix data race condition (CID1381624)
* evas-object-main: Fix null dereference (CID1381710)
* evas-object-main: Fix null dereference (CID1381711)
* evas-object-main: Fix potential null dereference (CID1381713)
* evas_vg_cache: load svg from any file, not from defined only
* ector: use cairo_pattern_add_color_stop_rgba in gradient_radial
* vg_loaders/svg: set up default focal values for radialGradient
* efl_gfx_path: fix typo in _path_bounds_get
* evas_vg_load_svg: default stop opacity color should be 255, not 0
* evas_vg_load_svg: get rid of static Evas_SVG_Parsing
* efl ui win - make win centering work with multiple screens (T6323)
* eo - fix freeq usage to not use freeq for a vtable cleaning
* efl_ui_radio: keep radio state when theme is changed
* efl net - handle proxy helper fails better and abort proxy lookups
* elput - re-enable switches (power buttons, lid etc.)
* elm_code_widget: keep track of visibility.
* Ctxpopup: resizing ctxpopup after its content is removed (T6327)
* genlist: fix state corruption of content
* Efl.Ui.Slider: add default indicator format to %0.2f
* elm_genlist: fix rare segfault
* elput: Remove unreachable code (CID1382857)
* ecore-wl2: Destroy buffer before we exit the buffer_test function
* efl_ui_bg: fix unclipped image on EFL_UI_IMAGE_SCALE_TYPE_NONE
* eo - by default on 64bit only use 47 bits because of luajit
* elm ifrace scrollable - fix uninitialized values on scroll asjust
* ecore ipc/con: fix nasty ... they dont mutually exclude
* efl_ui_bg: add Efl.Gfx.color_get.
* eina_file: make sure we use a stringshare when virtualized. (T6449)
* ecore-evas-drm: Check for XDG_SEAT existence (T6455)
* efl_ui_text: apply new theme logic and use constructor/destructor
* Efl.Ui.Popup.Alert: add message signal process function for scroller size calculation
* elementary: Fix resource leak (CID1383549)
* elementary: Fix resource leak (CID1383550)
* elementary: Fix resource leak (CID1383551)
* eina: Fix typo in doxygen
* evas: Fix potential crash with draw context
* eeze: Don't leak udev enumeration
* eeze: Remove unused device variables
* eldbus test - del not unref obj as it has a parent ...
* eina: fix random segfaults when displaying BT
* Elementary: fix makefile ignore efl_ui_theme edc's change
* ecore_con: bug workaround SO_REUSEADDR and EADDRINUSE from bind (fix)
* elm - scroll manager - fix up momentum animator code to use real consts
* elm: fix memleak in combobox
* emotion: unset DISPLAY when loading an engine under wayland (T6418)
* ecore evas init - init ecore then evas not the other way...
* fix evas test suite to now init both ecore and evas.... correctly.
* ecore-drm2: Fix enabling outputs
* ecore-drm2: return supported rotations if not using hardware
* efl-wl: do not modify extracted surface visibility during commit (T6443)
* elementary: Remove use of implicit declaration
* evas sw generic - don't dlopen osmesa until first needed.
* ecore_audio - don't about destruction because of failed sndfile load
* elm_tooltip: force immediate hint recalc during tooltip creation if 0x0 size
* elm_tooltip: immediately show tooltip if callback is set for obj under pointer
* efl-wl: unset cursor role on existing cursor surface if new cursor is set
* ecore_audio wasapi - fix ecore win32 handler deletion and destruction (T6607)
* efl theme - fix bug in e init splash that would do hide anim 2x (T6619)
* efl-wl: send more mouse buttons to clients
* efl-wl: propagate surface activation back to parent if child is hidden
* efl-wl: set event ON_HOLD flag when they are sent to a surface
* efl-wl: remove some broken logic for activating toplevel parents
* efl-wl: only send keyboard enter and activation for mapped surfaces
* efl-wl: immediately unset a destroyed surface's cursor
* efl-wl: only perform mouse-out operations for a seat if the mouse was "in"
* wayland: always flush client display when protocol sends are pending
* ecore-wl2: correctly translate spacebar keyname into key events (T6620)
* ecore-x: perform internal shutdown on io error if callback is set
* ecore-x: add more null checks for functions
* elementary config: Fix to use ELEMENTARY_BASE_DIR for configure path
* ecore-x: filter XkbNewKeyboardNotifyEvent before emitting ecore-x event
* ecore-x: re-add implementation of ecore_x_connection_get()
* efl-wl: fix no-op of setting keyboard enter on already-entered surface
* efl-wl: unset kbd mods changed flag after sending modifiers
* ecore: prune existing thread_join callbacks during ecore_fork_reset
* edje_cc: make -thread option
* Efl.Ui.Image: remove previous image when NULL is set
* elm: call ecore_event_init() during init
* ecore-file: make monitoring truly fork-safe
* eio: make inotify monitors fork-safe
* disable async mode (use sync mode) for ibus when keymap changes
* ecore-drm2: Ensure output changed event is sent for removed outputs
* eio: remove broken pid-based monitor reset copied from ecore-file
* ecore-imf: do ecore-x init during ctx creation instead of module init
* elm: call ecore_app_args_set() after quicklaunch fork
* elm: remove ecore-x init from quicklaunch post-fork
* elm progressbar - fix val set (T6697)
* efl ui format - fix format checking to be correct (T6697)
* edje - entry - fix empty item handling (T6668)
* ecore-evas-drm: Use output viewport in ecore_evas_animator_tick calls
* evas drm engines: Fix variable type for output
* elementary: fix legacy widget type name for backward compat
* ecore - fix fd handlers to also set read/write/err flags on hup's
* ecore - loop handler - fix wakeup to reslect active flag mask
* evas event_grabber: fix child ordering when adding non-top children
* elm_datetime: Handle wrong param case for legacy.
* elm: set default theme name internally when applying config
* efreet_xml: make sure we unmap the right pointer. (T5949)
* evas: increase offset by 4 to do work for next map points
* efl_ui_multibuttonentry: maintainance legacy function type.
* elementary: add missed type for legacy.
* elementary: bg - keep file path and key string for legacy bg widget
* ecore-wl2: Reduce calls to strlen
* ecore-wl2: Check for valid string before passing to strlen()
* genlist: fix "insane" order [BUG COMPATIBILITY] (T5938)
* efl_ui_clock: Fix wrong target to compare with.
* ecore ipc - fix flush to not lose messages
* evas: fix Evas Map AA changes the alpha flag of an image issue. (T1975)
* eldbus: call ecore_init in eldbus_init
* efl selection - fix paste with multiple windows and filter by window
* efl selection manager - handle multi window selections properly
* evas - plug in dirty + pixels get hold in "is inside" for images (T6791)
* elm - selection manager - fix string buffer handling and format types (T6284)
* ecore: poll the thread pipe twice during shutdown
* ecore: reduce pipe wait time during shutdown
* edje: fix potential memory leak.
* edje: fix potential memory leak.
* ecore: fix a potential memory leak.
* ecore ipc - fix send to skip data payload if null/0
* evas - loading extension query - fix to not skip small extensions
* efl selection manager - fix crashes when doing selections on non-x11
* efl selection manager - fix anoyther binary buffer treated as string bug
* efl selection - fix entry <-> plain text compy and paste in wl
* efl selection - fix another binary buffer treates as string bug
* efl selection manager - fix dnd end handling to only handle on dnd
* efl selection manager - fix x11 cnp from entry to plain text conversion
* edje: Dont append font source if fonts are not embedded in edje
* edje edje_cc: fix memory leak.
* ecore: fix a potential memory leak.
* ecore_wl_dnd: correct wrong variable assignment
* elm: resolve possible memory leak.
* elm: resolve possible memory leak.
* ector cairo: fix a memory leak.
* elm: resolve possible memory leak.
* elm: resolve possible memory leak.
* elementary bg: allow NULL pointers in legacy usage
* elementary: fix build on X11.
* edje: remove recalc from content_get and text_get
* ecore animator, x, vsync ecore evas restore x vsync to work again
* evas: fix default return value of image-related legacy functions
* edje: fix backward compatibility issue caused by legacy cursor funcs
* ecore-evas-win32: set draw_block until the window receives a configure event (T6907)
* efl_ui_image: add NULL check in elm_image_memfile_set() function
* evas textblock: fix double free issue from user style push/pop and free
* Evas textblock: fix wrong hyphenation issues with non UTF8 encoded dictionary (T3221)
* edje: return proper value from the function.
* elm_multibuttonentry: Fix to install eo header files
* edje: Fix to support translation for textblock part
* evas textblock: update format nodes when a Evas Textblock Style is updated
* evas textblock: manage default style properly for new interfaces
* efl_ui_tags: Fixed bug when setting format string.
* evas: fix a map rendering problem.
* elm_main: call _elm_config_shutdown() after loop_iterate()
* efl_ui_win: fix wrong comparison in icon_object_set
* elm_interface_scrollable: change return value for post events.
* edje: don't give a wrong Edje data when an Edje object has group parts
* elm_notify: remove allow_events_set call in destructor
* elm_spinner: Spinner value adjust when round enabled.
* elementary textpath: update Evas map when text is updated
* elementary widget: fix to trigger object signal emit properly. (T6981)
* evas engines: do not immediately free native surface when unsetting it (T6970)
* edje_cc: fixup edje_collections_lookup hash ids during collection pruning
* evas vg: fix broken vg rendering. (T6993)
* edje: fix an issue "description.text.text" is not shown (T6997)
* evas vg: get rid of memory leak.
* ecore_evas: fix crash on free of smart data. (T6974)
* eina_barrier: handle PTHREAD_BARRIER_SERIAL_THREAD return from barrier_wait
* evas vg: fix broken morphing(interpolation) (T6996)
* evas vg: fix another memory leak
* efreet: mark efreet_menu_async_parse() deprecated. (T585)
* eina_lock: do not set PTHREAD_MUTEX_ERRORCHECK on recursive locks (T1984)
* eina_lock: modify mutex debugging to ignore recursive locks
* eina_lock: remove locks from eina tracking list on free while thread debugging
* eina: disable abort on shutdown when triggered by system monitoring thread
* eet: handle decode failures as errors in variant decoding (T5379)
* ecore - handle G_IO_ERR conditions for net sockets (T5725)
* emotion_generic: clean up event handlers on fork failure
* eina_threadqueue: fix spinlock destruction by using spinlock api
* eina_threadqueue: add locking for variable used between threads
* eina: call eina_threads_init from eina_debug_init
* eina: prevent threads subcomponent from being shutdown while eina is active
* eina_debug_bt: only enable SIGPROF handler when profiling is enabled (T7028)
* Edje load: add safecheck for TEXTBLOCK-specific code path (T6279)
* ecore_cocoa: fix ECORE_EVENT_KEY_DOWN/UP on MacOS. (T6944)
* efl: Bump required libinput version for Elput
* edje: fix text set/get issue without edje calculation
* Edje: recalc edje before fetching the real part (T7057)
* ecore/thread: track "no_queue" threads (T7041)
* ecore_con: make dns resolver thread stop blocking when canceled (T7041)
* elm/win: move trigger for "shot" to first pre-render callback (T6929)
* eina/lock: add errno wrapping for backtrace() calls in thread debug blocks
* ecore/thread: track "no_queue" threads (T7041)
* ecore/thread: flush main loop threads during ecore_thread_wait()
* eio/fallback: fix fallback shutdown when threads exist
* eio/fallback: remove intermediate idler
* eio/fallback: fix MODIFY event emission on base path when monitoring (T7042)
* eio/fallback: mark all fallback monitors as fallbacks, not just for win32
* eio/fallback: do not modify the children hash while iterating it
* tests: cancel the timeout timer when cleaning up eio tests
* evas map: check render condition more elaborately. (T6975)
* Elm label: fix "horizontal_fixed" usage with different styles (T5382)
* eet: set parent struct member when adding a child to a parent node (T4600)
* Evas font: fix inifinite loop problem for fallback fonts
* Evas font: add comparison for fallbacks in evas_font_desc_cmp()
* Evas font: simplify fallback parsing step
* Evas textblock: clear ellipsis item at start of layout (T6986)
* elm_test: fix invalid read in dnd image drop
* ecore-con/legacy: kill server with DEL event if a dialer error occurs (T6330)
* efreet: use correct path when generating error message about stale efreetd socket (T7045)
* eo/base_class: explicitly refuse to set an object as its own parent
* ecore-con/proxy_helper: fix in-tree run path (T6713)
* efreet: simplify and fix efreetd launch (T6713)
* build: always check for fork() and clearenv()
* popup: fix popup sizing when scroll enabled. (T6886)
* evas gl-x11 engine - nvidia driver - fix performance drop
* canvas vg_loader: close opened file after using it.
* elm/win: correctly track and set x11 shaped state
* evas textblock: adds missing legacy types
* canvas render: stop render_pre/post cb if it didn't render.
* Evas text textblock: call evas_font_free even on null fonts
* emile image: close file properly.
* examples/evas: do not attempt to free animator on window delete (T7000)
* ecore_evas: when window resized in ecore_evas, check evas rotate state.
* elm_code: (cherry-pick) Fix cusor pos after newline when indenting with tabs
* ecore x - fix vsync to not block amdgpu drivers
* elm_code_widget: resize cursor at time of font change. (T6470)
* evas canvas: fix not to trigger unnecessary events.
* build: fix rpath for binaries which use ecore-x dependencies
* elm/genlist: remove conditional in _calc_job for verifying show_item code (T6368)
* elementary image: don't calc size using empty ones.
* evas image: fix screen flickering issue at partial + image preloading
* edje_cc: change .mo file write location to be relative to the .edj file
* theme: add programs for deferred naviframe push/pop signals
* edje: unset internal _need_imf flag on shutdown
* elm_panel: return instead of EINA_SAFETY_ON_FALSE_RETURN (T7265)
* build: fix evas static build of gl engines
* ecore/main: only update loop_time during loop iteration if the change is monotonic
* evas gl: fix missing map texture target.
* elm_code: fix crash on backspace and selection delete. (T7259)
Changes since 1.19.0:
---------------------

51
README.meson Normal file
View File

@ -0,0 +1,51 @@
# BUILDING EFL WITH MESON
Building, testing, installing:
mkdir build
cd build
meson ..
ninja all
ninja test
sudo ninja install
In autotools there have been a few flags that are used to disable loaders. In meson the following four disbler arrays are used:
emotion-generic-loaders-disabler
emotion-loaders-disabler
ecore-imf-loaders-disabler
evas-loaders-disabler
Autotools options that are converted are:
--disable-poppler -> Disable pdf loader
--disable-spectre -> Disable ps loader
--disable-libraw -> Disable raw loader
--disable-librsvg -> Disable svg loader
--disable-xcf -> Disable xcf loader
--disable-xim -> Disable xim loader
--disable-scim -> Disable scim loader
--disable-ibus -> Disable ibus loader
--enable-xine -> Disable xine loader
--enable-libvlc -> Disable vlc loader
--disable-librsvg -> Disable svg loader
The following options are dropped as they did not affect compilation
--enable-lua-old
--enable-cancel-ok
--enable-debug
--disable-quick-launch
--enable-tile-rotate
The following options are merged into the pixman option
--enable-pixman-font
--enable-pixman-rect
--enable-pixman-line
--enable-pixman-poly
--enable-pixman-image
--enable-pixman-image-scale-sample
--disable-valgrind Is dropped, and handled due to the build profile, this can be handled with --buildtype release or plain.

View File

@ -1,67 +0,0 @@
Help Cmake build system come true by helping with the following
tasks. Most of them can be done on top of autotools only, then we'll
catch-up with the cmake parts.
General (non-CMake specific) Tasks:
- move each target (binary, lib, test) to its own directory, example:
src/lib/efreet contains efreet_mime and efreet_trash in addition to
efreet. Create src/lib/efreet_mime and src/lib/efreet_trash.
It also applies to tests (ie: src/tests/ector which contains both
ector_suite and cxx_compile_test), in the case of binaries and
tests make sure to contain them in the library folder:
src/tests/ector should then contain 2 folders, one for each
test. Another one is src/tests/eo, which contains lots of
stand-alone tests in addition to eo_suite.
- uniform installation (and lookup!) of modules, like
lib/evas/modules/engines/NAME/v-1.18/module.so versus
lib/ecore/system/NAME/v-1.18/module.so (missing 'modules/')
lib/ecore_evas/engines/NAME/v-1.18/module.so (missing 'modules/')
- uniform module enable variables:
{LIB}_MODULE_TYPE_{SCOPE}_{MODNAME}_STATIC (static/built-in, with scope)
{LIB}_MODULE_TYPE_{SCOPE}_{MODNAME}_DYNAMIC (dynamic, with scope)
{LIB}_MODULE_TYPE_{MODNAME}_STATIC (static/built-in, no scope)
{LIB}_MODULE_TYPE_{MODNAME}_DYNAMIC (dynamic, no scope)
Example:
EINA_MODULE_TYPE_MP_PASS_THROUGH_STATIC
instead of EINA_STATIC_BUILD_PASS_THROUGH
EVAS_MODULE_TYPE_ENGINE_FB
instead of EVAS_STATIC_BUILD_FB
As this will make clear we're dealing with modules and their scope
(if any, things like Ecore_IMF have no module scope).
CMake Tasks:
- add src/lib/NAME/CMakeLists.txt defining SOURCES, PUBLIC_HEADERS,
PKG_CONFIG_REQUIRES, PKG_CONFIG_REQUIRES_PRIVATE, LIBRARIES,
PUBLIC_LIBRARIES and so on. See src/lib/eina/CMakeLists.txt as an
example.
- add options and dependency detection to cmake/config/NAME.cmake,
see cmake/config/eina.cmake and cmake/config/common.cmake
- add src/modules/NAME/SCOPE/MODNAME/CMakeLists.txt or
src/modules/NAME/MODNAME/CMakeLists.txt (if no module scope). If
single source and no special requiresments (libs, etc), then it
should require no CMakeLists.txt and will be built automatically.
- add src/bin/NAME/CMakeLists.txt (single binary of a lib) or
src/bin/NAME/EXE_NAME/CMakeLists.txt (multiple binaries for a lib).
If single source (one .c), then no CMakeLists.txt should be needed,
see if it's already being built.
- add src/tests/NAME/CMakeLists.txt (single test of a lib) or
src/tests/NAME/EXE_NAME/CMakeLists.txt (multiple tests for a lib).
If single source (one .c), then no CMakeLists.txt should be needed,
see if it's already being built.
Since it's under development, check the code in cmake/helpers/*.cmake,
in particular cmake/helpers/EflMacros.cmake and check the comments and
also fix bugs :-)
Feedback on repetitive tasks and if you spot some
unification/simplification/automatization.

View File

@ -1,124 +0,0 @@
include(CheckSymbolExists)
include(CheckIncludeFile)
include(CheckTypeSize)
include(FindPkgConfig)
include(FindJPEG)
include(CTest)
find_package(Threads REQUIRED)
pkg_check_modules(CHECK check)
pkg_check_modules(LIBSYSTEMD libsystemd)
pkg_check_modules(VALGRIND valgrind)
pkg_check_modules(OPENSSL openssl>=1.0)
pkg_check_modules(GNUTLS gnutls>=2.12.16)
if (NOT JPEG_FOUND)
error("a jpeg library is needed.")
endif()
set(SUGGEST_VALGRIND OFF)
if("${BUILD_PROFILE}" STREQUAL "dev")
set(SUGGEST_VALGRIND ${VALGRIND_FOUND})
elseif("${BUILD_PROFILE}" STREQUAL "debug")
set(SUGGEST_VALGRIND ${VALGRIND_FOUND})
endif()
EFL_OPTION(BUILD_PROFILE "How to build EFL" dev CHOICE release;dev;debug)
EFL_OPTION(EFL_NOLEGACY_API_SUPPORT "Whenever to disable non-Eo (Legacy) APIs" ON)
EFL_OPTION(EFL_EO_API_SUPPORT "Whenever to enable new Eo APIs" ON)
if(NOT EFL_EO_API_SUPPORT)
EFL_OPTION_SET_MESSAGE(EFL_EO_API_SUPPORT "Risky!")
endif()
EFL_OPTION_BACKEND(WITH_CRYPTO "Choose crypto backend" OPENSSL GNUTLS)
EFL_OPTION(ENABLE_SYSTEMD "Enable systemd support" "${LIBSYSTEMD_FOUND}" DEPENDS "LIBSYSTEMD_FOUND" OFF)
EFL_OPTION(ENABLE_VALGRIND "Enable valgrind support" "${SUGGEST_VALGRIND}" DEPENDS "VALGRIND_FOUND" OFF)
# BEGIN: HEADER, TYPE and FUNCTION CHECKS
# KEEP EACH BLOCK SORTED
HEADER_CHECK(alloca.h)
HEADER_CHECK(asm/hwcap.h)
HEADER_CHECK(bsd/string.h)
HEADER_CHECK(dirent.h)
HEADER_CHECK(execinfo.h)
HEADER_CHECK(mcheck.h)
HEADER_CHECK(netinet/in.h)
HEADER_CHECK(stdlib.h)
HEADER_CHECK(sys/auxv.h)
HEADER_CHECK(sys/inotify.h)
HEADER_CHECK(sys/ioctl.h)
HEADER_CHECK(sys/mman.h)
HEADER_CHECK(sys/types.h)
FUNC_CHECK(alloca INCLUDE_FILES alloca.h)
FUNC_CHECK(backtrace INCLUDE_FILES execinfo.h)
FUNC_CHECK(backtrace_symbols INCLUDE_FILES execinfo.h)
FUNC_CHECK(clock_gettime INCLUDE_FILES time.h)
FUNC_CHECK(dirfd INCLUDE_FILES dirent.h sys/types.h)
FUNC_CHECK(dladdr INCLUDE_FILES dlfcn.h LIBRARIES dl DEFINITIONS "-D_GNU_SOURCE=1")
FUNC_CHECK(dlopen INCLUDE_FILES dlfcn.h LIBRARIES dl)
FUNC_CHECK(dlsym INCLUDE_FILES dlfcn.h LIBRARIES dl)
FUNC_CHECK(fchmod INCLUDE_FILES sys/stat.h)
FUNC_CHECK(fcntl INCLUDE_FILES fcntl.h)
FUNC_CHECK(fork INCLUDE_FILES unistd.h)
FUNC_CHECK(fpathconf INCLUDE_FILES unistd.h)
FUNC_CHECK(fstatat NAME HAVE_ATFILE_SOURCE INCLUDE_FILES sys/stat.h)
FUNC_CHECK(geteuid INCLUDE_FILES unistd.h)
FUNC_CHECK(getpagesize INCLUDE_FILES unistd.h)
FUNC_CHECK(getpwent INCLUDE_FILES sys/types.h pwd.h)
FUNC_CHECK(getuid INCLUDE_FILES unistd.h)
FUNC_CHECK(getxattr INCLUDE_FILES sys/types.h sys/xattr.h)
FUNC_CHECK(iconv INCLUDE_FILES iconv.h)
FUNC_CHECK(listxattr INCLUDE_FILES sys/types.h sys/xattr.h)
FUNC_CHECK(lround INCLUDE_FILES math.h LIBRARIES m)
FUNC_CHECK(mallinfo INCLUDE_FILES malloc.h)
FUNC_CHECK(malloc_info INCLUDE_FILES malloc.h)
FUNC_CHECK(malloc_usable_size INCLUDE_FILES malloc.h)
FUNC_CHECK(mkdirat INCLUDE_FILES sys/stat.h)
FUNC_CHECK(mmap INCLUDE_FILES sys/mman.h)
FUNC_CHECK(mtrace INCLUDE_FILES mcheck.h)
FUNC_CHECK(prctl INCLUDE_FILES sys/prctl.h)
FUNC_CHECK(realpath INCLUDE_FILES stdlib.h)
FUNC_CHECK(sched_getcpu INCLUDE_FILES sched.h DEFINITIONS "-D_GNU_SOURCE=1")
FUNC_CHECK(setxattr INCLUDE_FILES sys/types.h sys/xattr.h)
FUNC_CHECK(shm_open INCLUDE_FILES sys/mman.h sys/stat.h fcntl.h LIBRARIES rt)
FUNC_CHECK(siglongjmp INCLUDE_FILES setjmp.h)
FUNC_CHECK(splice INCLUDE_FILES fcntl.h DEFINITIONS "-D_GNU_SOURCE=1")
FUNC_CHECK(strerror_r INCLUDE_FILES string.h)
if(HAVE_BSD_STRING_H)
FUNC_CHECK(strlcpy INCLUDE_FILES bsd/string.h LIBRARIES bsd)
else()
FUNC_CHECK(strlcpy INCLUDE_FILES string.h)
endif()
TYPE_CHECK(siginfo_t INCLUDE_FILES signal.h)
# END: HEADER, TYPE and FUNCTION CHECKS
# TODO: move to a FindUnwind.cmake?
# or is pkg-config enough these days?
pkg_check_modules(UNWIND libunwind libunwind-generic)
CHECK_APPEND_DEFINE(EFL_EO_API_SUPPORT 1)
CHECK_APPEND_DEFINE(EFL_BETA_API_SUPPORT 1)
if(CMAKE_THREAD_LIBS_INIT)
set(EFL_HAVE_THREADS 1)
endif()
CHECK_APPEND_DEFINE(EFL_HAVE_THREADS "${EFL_HAVE_THREADS}")
CHECK_APPEND_DEFINE(HAVE_CIPHER ${WITH_CRYPTO_ENABLED})
CHECK_APPEND_DEFINE(HAVE_SIGNATURE ${WITH_CRYPTO_ENABLED})
CHECK_APPEND_DEFINE(HAVE_SYSTEMD ${ENABLE_SYSTEMD})
CHECK_APPEND_DEFINE(MODULE_ARCH "\"v-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}\"")
CHECK_APPEND_DEFINE(SHARED_LIB_SUFFIX "\"${CMAKE_SHARED_LIBRARY_SUFFIX}\"")
CHECK_APPEND_DEFINE(EXEEXT "\"${CMAKE_EXECUTABLE_SUFFIX}\"")
# TODO: change code and remove:
CHECK_APPEND_DEFINE(VMAJ ${PROJECT_VERSION_MAJOR})
CHECK_APPEND_DEFINE(VMIN ${PROJECT_VERSION_MINOR})
CHECK_APPEND_DEFINE(VMIC ${PROJECT_VERSION_PATCH})
CHECK_APPEND_DEFINE(VREV ${PROJECT_VERSION_TWEAK})

View File

@ -1,42 +0,0 @@
pkg_check_modules(GLIB glib-2.0)
pkg_check_modules(TIZEN vconf)
EFL_OPTION(ENABLE_GLIB "Whenever to integrate with Glib" ${GLIB_FOUND} DEPENDS GLIB_FOUND OFF)
EFL_OPTION(ENABLE_GLIB_ALWAYS "Always integrate with Glib, otheriwse needs explicit call to ecore_main_loop_glib_integrate()" OFF DEPENDS "ENABLE_GLIB" OFF)
EFL_OPTION(ENABLE_G_MAIN_LOOP "Enable ecore_main_loop based on g_main_loop" OFF DEPENDS "ENABLE_GLIB" OFF)
EFL_OPTION(ENABLE_TIZEN "Enable tizen support" OFF DEPENDS "TIZEN_FOUND" OFF)
set(ECORE_MODULE_TYPE_SYSTEM_SYSTEMD_DEFAULT ${ENABLE_SYSTEMD})
set(ECORE_MODULE_TYPE_SYSTEM_UPOWER_DEFAULT ON)
set(ECORE_MODULE_TYPE_SYSTEM_TIZEN_DEFAULT ${ENABLE_TIZEN})
# TODO libuv
# TODO gstreamer
# TODO gstreamer1
if("${BUILD_PROFILE}" STREQUAL "dev" AND HAVE_BACKTRACE)
CHECK_APPEND_DEFINE(WANT_ECORE_TIMER_DUMP 1)
else()
CHECK_APPEND_DEFINE(WANT_ECORE_TIMER_DUMP "")
endif()
CHECK_APPEND_DEFINE(GLIB_INTEGRATION_ALWAYS "${ENABLE_GLIB_ALWAYS}")
CHECK_APPEND_DEFINE(HAVE_GLIB "${ENABLE_GLIB}")
CHECK_APPEND_DEFINE(HAVE_TIZEN_CONFIGURATION_MANAGER "${ENABLE_TIZEN}")
CHECK_APPEND_DEFINE(USE_G_MAIN_LOOP "${ENABLE_G_MAIN_LOOP}")
FUNC_CHECK(epoll_create NAME HAVE_EPOLL INCLUDE_FILES sys/epoll.h)
FUNC_CHECK(execvp INCLUDE_FILES unistd.h)
FUNC_CHECK(gettimeofday INCLUDE_FILES sys/time.h)
FUNC_CHECK(isfinite INCLUDE_FILES math.h LIBRARIES m)
FUNC_CHECK(pause INCLUDE_FILES unistd.h)
FUNC_CHECK(timerfd_create INCLUDE_FILES sys/timerfd.h)
HEADER_CHECK(ieeefp.h)
HEADER_CHECK(langinfo.h)
HEADER_CHECK(sys/epoll.h)
HEADER_CHECK(sys/timerfd.h)
HEADER_CHECK(sys/wait.h)

View File

@ -1,14 +0,0 @@
EFL_OPTION(WITH_EFL_NET_CONTROL_BACKEND "Choose the Efl.Net.Control backend" "connman" CHOICE connman;none)
FUNC_CHECK(accept4 INCLUDE_FILES sys/types.h sys/socket.h DEFINITIONS "-D_GNU_SOURCE=1")
FUNC_CHECK(gmtime_r INCLUDE_FILES time.h DEFINITIONS "-D_POSIX_C_SOURCE=1 -D_BSD_SOURCE=1 -D_SVID_SOURCE=1")
HEADER_CHECK(arpa/inet.h)
HEADER_CHECK(net/if.h)
HEADER_CHECK(netinet/in.h)
HEADER_CHECK(netinet/ssl.h)
HEADER_CHECK(netinet/tcp.h)
HEADER_CHECK(netinet/udp.h)
HEADER_CHECK(sys/socket.h)
HEADER_CHECK(sys/un.h)
HEADER_CHECK(ws2tcpip.h)

View File

@ -1,110 +0,0 @@
include(FindX11)
EFL_OPTION(XGESTURE "Whenever you want ecore_x to use gesture" OFF)
EFL_OPTION(XPRESENT "Whenever you want ecore_x to use xpresent" OFF)
EFL_OPTION(XINPUT2 "Whenever you want ecore_x to use xinput2" ON)
EFL_OPTION(XINPUT22 "Whenever you want ecore_x to use xinput22" OFF)
#the rest is just statically enabled
CHECK_APPEND_DEFINE(HAVE_ECORE_X_XLIB ON)
CHECK_APPEND_DEFINE(ECORE_XKB ON)
CHECK_APPEND_DEFINE(ECORE_XCOMPOSITE ON)
CHECK_APPEND_DEFINE(ECORE_XDAMAGE ON)
CHECK_APPEND_DEFINE(ECORE_XDPMS ON)
CHECK_APPEND_DEFINE(ECORE_XFIXES ON)
CHECK_APPEND_DEFINE(ECORE_XINERAMA ON)
CHECK_APPEND_DEFINE(ECORE_XRANDR ON)
CHECK_APPEND_DEFINE(ECORE_XSS ON)
CHECK_APPEND_DEFINE(ECORE_XTEST ON)
#FindX11 does not cover all parts we need so here are the 4 extensions we need to check
#copied from https://github.com/Kitware/CMake/blob/master/Modules/FindX11.cmake#L65
set(X11_INC_SEARCH_PATH
/usr/pkg/xorg/include
/usr/X11R6/include
/usr/X11R7/include
/usr/include/X11
/usr/openwin/include
/usr/openwin/share/include
/opt/graphics/OpenGL/include
/opt/X11/include
)
set(X11_LIB_SEARCH_PATH
/usr/pkg/xorg/lib
/usr/X11R6/lib
/usr/X11R7/lib
/usr/openwin/lib
/opt/X11/lib
)
macro(find_lib_and_include name path lib)
string(TOUPPER ${name} ecore_name)
set(X11_${name}_FOUND OFF)
find_library(X11_${name}_LIB ${lib} ${X11_LIB_SEARCH_PATH})
find_path(X11_${name}_INCLUDE_PATH X11/extensions/${path} ${X11_INC_SEARCH_PATH})
if (X11_${name}_LIB AND X11_${name}_INCLUDE_PATH)
set(X11_${name}_FOUND ON)
endif()
CHECK_APPEND_DEFINE(ECORE_${ecore_name} ON)
endmacro()
if (${XGESTURE})
find_lib_and_include(XGesture gesture.h Xgesture)
endif()
if(${XPRESENT})
find_lib_and_include(Xpresent Xpresent.h Xpresent)
endif()
if(${XINPUT2})
find_lib_and_include(Xi2 XInput2.h Xi)
endif()
if(${XINPUT22})
find_lib_and_include(Xi2_2 Xpresent2.h Xi)
endif()
#build a list of all components we use
set(_X_EXTENSIONS
X11
X11_Xkb
X11_Xcomposite
X11_Xdamage
X11_dpms
X11_Xfixes
X11_Xinerama
X11_Xrandr
X11_Xrender
X11_XTest
X11_Xscreensaver
)
if(${XGESTURE})
list(APPEND _X_EXTENSIONS X11_Xgesture)
endif()
if(${XPRESENT})
list(APPEND _X_EXTENSIONS X11_Xpresent)
endif()
if(${XINPUT2})
list(APPEND _X_EXTENSIONS X11_Xi2)
endif()
if(${XINPUT22})
list(APPEND _X_EXTENSIONS X11_Xi2_2)
endif()
foreach(ext ${_X_EXTENSIONS})
if (NOT ${ext}_FOUND)
message(FATAL_ERROR "Xserver extension ${ext} not found")
endif()
list(APPEND X_EXTENSIONS find-${ext})
endforeach()
configure_file(
${PROJECT_SOURCE_DIR}/src/lib/ecore_x/ecore_x_version.h.cmake
${PROJECT_BINARY_DIR}/src/lib/ecore_x/ecore_x_version.h)

View File

@ -1,24 +0,0 @@
#check what versions of mount
pkg_check_modules(MOUNT mount)
EFL_OPTION(HAVE_EEZE_MOUNT "Whenever to use libmount" ${MOUNT_FOUND} DEPENDS MOUNT_FOUND OFF)
CHECK_APPEND_DEFINE(HAVE_EEZE_MOUNT ${HAVE_EEZE_MOUNT})
pkg_check_modules(UDEV REQUIRED udev>=148)
if(NOT ${UDEV_FOUND})
error("Udev is required")
endif()
#todo tizen
if(ENABLED_TIZEN)
pkg_check_modules(SENSORS REQUIRED capi-system-sensor>=0.1.17 )
endif()
set(EEZE_MODULE_TYPE_SENSOR_FAKE ON)
set(EEZE_MODULE_TYPE_SENSOR_TIZEN OFF)
set(EEZE_MODULE_TYPE_SENSOR_UDEV ON)
CHECK_APPEND_DEFINE(EEZE_MOUNT_BIN \"bla\")
CHECK_APPEND_DEFINE(EEZE_UNMOUNT_BIN \"bla\")
CHECK_APPEND_DEFINE(EEZE_EJECT_BIN \"bla\")

View File

@ -1,80 +0,0 @@
# set default option values based on BUILD_PROFILE
set(EINA_DEBUG_THREADS OFF)
if("${BUILD_PROFILE}" STREQUAL "dev")
elseif("${BUILD_PROFILE}" STREQUAL "debug")
set(EINA_DEBUG_THREADS ON)
elseif("${BUILD_PROFILE}" STREQUAL "release")
endif()
EFL_OPTION(EINA_MAGIC_DEBUG "magic debug of eina structure" ON)
EFL_OPTION(EINA_DEBUG_THREADS "debugging of eina threads" ${EINA_DEBUG_THREADS})
set(EINA_MODULE_TYPE_MP_CHAINED_POOL_DEFAULT "STATIC")
set(EINA_MODULE_TYPE_MP_ONE_BIG_DEFAULT "STATIC")
set(EINA_MODULE_TYPE_MP_PASS_THROUGH_DEFAULT "STATIC")
# no CHECK_INIT() yet, all CHECK_APPEND_DEFINE(), FUNC_CHECK(),
# HEADER_CHECK() and TYPE_CHECK() goes to src/lib/efl/config_gen.h
if(ENABLE_VALGRIND)
CHECK_APPEND_DEFINE(NVALGRIND "")
else()
CHECK_APPEND_DEFINE(NVALGRIND 1)
endif()
# we want the following checks inside src/lib/eina/eina_config.h to be
# generated from cmake/post/eina.cmake.
#
# By default all symbols are prefixed with EINA_
CHECK_INIT(eina)
if("${BUILD_PROFILE}" STREQUAL "dev")
elseif("${BUILD_PROFILE}" STREQUAL "debug")
set(EINA_STRINGSHARE_USAGE ON)
set(EINA_DEBUG_MALLOC ON)
set(EINA_COW_MAGIC_ON ON)
set(EINA_DEFAULT_MEMPOOL ON)
set(EINA_DEBUG_MALLOC ON)
elseif("${BUILD_PROFILE}" STREQUAL "release")
set(EINA_LOG_LEVEL_MAXIMUM 3)
endif()
CHECK_APPEND_DEFINE(EINA_MAGIC_DEBUG ${EINA_MAGIC_DEBUG})
CHECK_APPEND_DEFINE(EINA_SAFETY_CHECKS 1)
CHECK_APPEND_DEFINE(EINA_DEBUG_THREADS "${EINA_DEBUG_THREADS}")
CHECK_APPEND_DEFINE(EINA_STRINGSHARE_USAGE "${EINA_STRINGSHARE_USAGE}")
CHECK_APPEND_DEFINE(EINA_DEBUG_MALLOC "${EINA_DEBUG_MALLOC}")
CHECK_APPEND_DEFINE(EINA_COW_MAGIC_ON "${EINA_COW_MAGIC_ON}")
CHECK_APPEND_DEFINE(EINA_DEFAULT_MEMPOOL "${EINA_DEFAULT_MEMPOOL}")
CHECK_APPEND_DEFINE(EINA_DEBUG_MALLOC "${EINA_DEBUG_MALLOC}")
CHECK_APPEND_DEFINE(EINA_LOG_LEVEL_MAXIMUM "${EINA_LOG_LEVEL_MAXIMUM}")
CHECK_APPEND_DEFINE(EINA_HAVE_THREADS "${EFL_HAVE_THREADS}")
#check for symbols in pthread
#TODO Make the definitions depending on the platform
FUNC_CHECK(pthread_barrier_init NAME EINA_HAVE_PTHREAD_BARRIER INCLUDE_FILES pthread.h FLAGS ${CMAKE_THREAD_LIBS_INIT} DEFINITIONS "-D_GNU_SOURCE=1")
FUNC_CHECK(pthread_attr_setaffinity_np NAME EINA_HAVE_PTHREAD_AFFINITY INCLUDE_FILES pthread.h FLAGS ${CMAKE_THREAD_LIBS_INIT} DEFINITIONS "-D_GNU_SOURCE=1")
FUNC_CHECK(pthread_setname_np NAME EINA_HAVE_PTHREAD_SETNAME INCLUDE_FILES pthread.h FLAGS ${CMAKE_THREAD_LIBS_INIT} DEFINITIONS "-D_GNU_SOURCE=1")
FUNC_CHECK(pthread_spin_init NAME EINA_HAVE_POSIX_SPINLOCK INCLUDE_FILES pthread.h FLAGS ${CMAKE_THREAD_LIBS_INIT} DEFINITIONS "-D_GNU_SOURCE=1")
#check for eina header files that are required
HEADER_CHECK(alloca.h)
HEADER_CHECK(byteswap.h)
HEADER_CHECK(fnmatch.h)
#only enable log when fnmatch is there
CHECK_APPEND_DEFINE(EINA_ENABLE_LOG ${EINA_HAVE_FNMATCH_H})
HEADER_CHECK(dirent.h)
TYPE_CHECK(wchar_t)
TYPE_CHECK(uintptr_t)
TYPE_CHECK(wchar_t)
# TODO: fix define name to not need a name!
#check for swap16/32/64
FUNC_CHECK(bswap_16 NAME EINA_HAVE_BSWAP16 INCLUDE_FILES byteswap.h)
FUNC_CHECK(bswap_32 NAME EINA_HAVE_BSWAP32 INCLUDE_FILES byteswap.h)
FUNC_CHECK(bswap_64 NAME EINA_HAVE_BSWAP64 INCLUDE_FILES byteswap.h)
#Check if there is the alloca header

View File

@ -1 +0,0 @@
pkg_check_modules(DBUS dbus-1 REQUIRED)

View File

@ -1,10 +0,0 @@
pkg_check_modules(LZ4 liblz4)
set(_choices "internal")
set(_defval "internal")
if(LZ4_FOUND)
set(_choices system internal)
set(_defval system)
endif()
EFL_OPTION(WITH_LZ4 "Choose if system or internal liblz4 should be used" ${_defval} CHOICE ${_choices})

View File

@ -1,3 +0,0 @@
EFL_OPTION(HAVE_EO_ID "Have Eo id indirection" ON)
CHECK_APPEND_DEFINE(HAVE_EO_ID ${HAVE_EO_ID})

View File

@ -1 +0,0 @@
EFL_OPTION(EOLIAN_BIN "The eolian_gen binary to use" ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/eolian_gen FILEPATH)

File diff suppressed because it is too large Load Diff

View File

@ -1,27 +0,0 @@
# TODO: change code to avoid these
if(EINA_MODULE_TYPE_MP_CHAINED_POOL STREQUAL "STATIC")
CHECK_APPEND_DEFINE(EINA_STATIC_BUILD_CHAINED_POOL 1)
else()
CHECK_APPEND_DEFINE(EINA_STATIC_BUILD_CHAINED_POOL "")
endif()
if(EINA_MODULE_TYPE_MP_ONE_BIG STREQUAL "STATIC")
CHECK_APPEND_DEFINE(EINA_STATIC_BUILD_ONE_BIG 1)
else()
CHECK_APPEND_DEFINE(EINA_STATIC_BUILD_ONE_BIG "")
endif()
if(EINA_MODULE_TYPE_MP_PASS_THROUGH STREQUAL "STATIC")
CHECK_APPEND_DEFINE(EINA_STATIC_BUILD_PASS_THROUGH 1)
else()
CHECK_APPEND_DEFINE(EINA_STATIC_BUILD_PASS_THROUGH "")
endif()
# generate the file and close the scope started with CHECK_INIT(eina):
EFL_HEADER_CHECKS_FINALIZE(${CMAKE_CURRENT_BINARY_DIR}/src/lib/eina/eina_config_gen.h)
# TODO: when autotools is gone, rename this file in repository
# and remove this copy (using generate to skip @-subst)
file(GENERATE
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/src/lib/eina/eina_config.h
INPUT ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/eina/eina_config.h.cmake
)

61
cmakeconfig/meson.build Normal file
View File

@ -0,0 +1,61 @@
cmake_src = [
'Ecore',
'EcoreCxx',
'Edje',
'Eet',
'EetCxx',
'Eeze',
'Efl',
'Efreet',
'Eina',
'EinaCxx',
'Eio',
'Eldbus',
'Elementary',
'Elua',
'Emile',
'Emotion',
'Eo',
'EoCxx',
'Eolian',
'EolianCxx',
'EthumbClient',
'Ethumb',
'Evas',
'EvasCxx',
]
cmake_version_src = [
'EFL',
'Elementary',
]
foreach cmake_file : cmake_src
configure_file(
input: cmake_file+'Config.cmake.in',
output: cmake_file+'Config.cmake',
install_dir: join_paths(dir_lib, 'cmake', cmake_file),
copy: true,
)
endforeach
conf = configuration_data()
conf.set('VERSION', meson.version())
foreach cmake_version_file : cmake_version_src
configure_file(
input: cmake_version_file+'ConfigVersion.cmake.in',
output: cmake_version_file+'ConfigVersion.cmake',
install_dir: join_paths(dir_lib, 'cmake', cmake_version_file),
configuration : conf,
)
endforeach
configure_file(
input: 'EolianHelper.cmake.in',
output: 'EolianHelper.cmake',
install_dir: join_paths(dir_lib, 'cmake', 'Eolian'),
copy: true
)

View File

@ -1,4 +1,4 @@
EFL_VERSION([1], [20], [99], [dev])
EFL_VERSION([1], [21], [99], [dev])
AC_INIT([efl], [efl_version], [enlightenment-devel@lists.sourceforge.net])
AC_PREREQ([2.60])
@ -17,12 +17,13 @@ AH_BOTTOM([
AM_INIT_AUTOMAKE([1.6 dist-xz no-dist-gzip -Wall color-tests subdir-objects])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
AM_CONDITIONAL([HAVE_AM_16], [test $(echo "${am__api_version}"|cut -d. -f2) -ge 16])
# Due to a bug in automake 1.14 we need to use this after AM_INIT_AUTOMAKE
# http://debbugs.gnu.org/cgi/bugreport.cgi?bug=15981
AC_USE_SYSTEM_EXTENSIONS
CFOPT_WARNING=""
CXXFLAGS="${CXXFLAGS} -Wno-shadow" # No shadow warnings
#### Apply configuring with legacy api's only, eo api's or both.
@ -286,7 +287,15 @@ m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
LT_INIT([win32-dll disable-static pic-only])
EFL_INIT
if ! test "x${have_win32}" = "xyes" ; then
if test "x${have_win32}" = "xyes" ; then
# We should be using ${CXX} here, but there is a bug in
# autotools macro and CXX is always set to g++ even if
# it's not found. So we are using an internal variable
# that does the work for now, may get broken in the future.
if test "x${ac_ct_CXX}" = "x" -a "x${CXX}" = "xg++"; then
AC_MSG_ERROR([efl requires a C++ compiler got ${ac_ct_CXX} and ${CXX}.])
fi
else
CXXFLAGS="${CXXFLAGS} -fPIC -DPIC"
LDFLAGS="${LDFLAGS} -fPIC -DPIC"
fi
@ -337,13 +346,6 @@ AM_CONDITIONAL([BUILD_EFL_NATIVE], [test "x${cross_compiling}" = "xno"])
if test "x${ac_cv_prog_cc_c99}" = "xno" ; then
AC_MSG_ERROR([efl requires a c99-capable compiler])
fi
# We should be using ${CXX} here, but there is a bug in
# autotools macro and CXX is always set to g++ even if
# it's not found. So we are using an internal variable
# that does the work for now, may get broken in the future.
if test "x${ac_ct_CXX}" = "x" -a "x${CXX}" = "xg++"; then
AC_MSG_ERROR([efl requires a C++ compiler got ${ac_ct_CXX} and ${CXX}.])
fi
AC_SYS_LARGEFILE
@ -655,6 +657,7 @@ case $host_cpu in
AC_DEFINE([BUILD_NEON], [1], [Build NEON Code])
AC_DEFINE([BUILD_NEON_INTRINSICS], [1], [Build NEON Intrinsics])
build_cpu_neon="yes"
build_cpu_neon_intrinsics="yes"
],[
AC_MSG_RESULT([no])
build_cpu_neon="no"
@ -663,6 +666,9 @@ case $host_cpu in
;;
esac
AM_CONDITIONAL([BUILD_NEON], [test "${build_cpu_neon}" = "yes"])
AM_CONDITIONAL([BUILD_NEON_INTRINSICS], [test "${build_cpu_neon_intrinsics}" = "yes"])
AC_SUBST([ALTIVEC_CFLAGS])
AC_SUBST([SSE3_CFLAGS])
AC_SUBST([NEON_CFLAGS])
@ -798,7 +804,7 @@ EFL_SELECT_WINDOWS_VERSION
### Checks for libraries
EFL_ADD_LIBS([EVIL], [-lpsapi -lole32 -lws2_32 -lsecur32 -luuid])
EFL_ADD_LIBS([EVIL], [-lpsapi -lole32 -lws2_32 -lsecur32 -luuid -lmsvcr100])
### Checks for header files
@ -900,7 +906,7 @@ case "${build_profile}" in
;;
release)
with_max_log_level="3"
with_max_log_level=""
have_stringshare_usage="no"
want_valgrind="no"
want_debug_malloc="no"
@ -1126,15 +1132,25 @@ EFL_LIB_END([Eina])
#### Eina CXX
EFL_LIB_START([Eina_Cxx])
EFL_CXX_COMPILE_STDCXX_11([ext])
AC_ARG_ENABLE([cxx-bindings],
[AS_HELP_STRING([--disable-cxx-bindings],[disable C++11 bindings. @<:@default=enabled@:>@])],
[want_cxx11="${enableval}"], [want_cxx11="yes"])
if test "x${HAVE_CXX11}" = "x1" -a "x${want_cxx11}" = "xyes"; then
have_cxx11="yes"
else
have_cxx11="no"
have_cxx11="no"
if test "x${want_cxx11}" = "xyes"; then
EFL_CXX_COMPILE_STDCXX_11([ext])
if test "x${HAVE_CXX11}" = "x1" ; then
# We should be using ${CXX} here, but there is a bug in
# autotools macro and CXX is always set to g++ even if
# it's not found. So we are using an internal variable
# that does the work for now, may get broken in the future.
if test "x${ac_ct_CXX}" = "x" -a "x${CXX}" = "xg++"; then
AC_MSG_ERROR([efl requires a C++ compiler got ${ac_ct_CXX} and ${CXX}.])
fi
have_cxx11="yes"
fi
fi
AM_CONDITIONAL([HAVE_CXX], [test "x${have_cxx11}" = "xyes"])
@ -1333,6 +1349,17 @@ EFL_LIB_END_OPTIONAL([Eo_Js])
#### End of Eo JS
#### Efl C Sharp Bindings
want_csharp_beta="no"
AC_ARG_ENABLE([csharp-beta],
[AS_HELP_STRING([--enable-csharp-beta],[enable C Sharp bindings. @<:@default=disabled@:>@])],
[
if test "x${enableval}" = "xyes" ; then
want_csharp_beta="yes"
else
want_csharp_beta="no"
fi
],
[want_csharp_beta="no"])
want_csharp="no"
AC_ARG_ENABLE([csharp-bindings],
@ -1356,6 +1383,11 @@ AC_DEFINE_IF([HAVE_CSHARP], [test "x${want_csharp}" = "xyes"],
[1], [Compiling bindings for C Sharp])
AC_SUBST([want_csharp])
AM_CONDITIONAL([HAVE_CSHARP_BETA], [test "x${want_csharp_beta}" = "xyes"])
AC_DEFINE_IF([HAVE_CSHARP_BETA], [test "x${want_csharp_beta}" = "xyes"],
[1], [Compiling bindings for C Sharp with beta methods, properties and classes])
AC_SUBST([want_csharp_beta])
if test "x${have_windows}" = "xyes"; then
eflmonodlldir="$prefix/bin"
else
@ -2955,44 +2987,6 @@ AC_CHECK_LIB([m], [lround],
)
# Evas cserve2
AC_ARG_ENABLE([cserve],
[AS_HELP_STRING([--enable-cserve],[enable shared cache server (cserve2). @<:@default=enabled@:>@])],
[
if test "x${enableval}" = "xyes" ; then
want_evas_cserve2="yes"
else
want_evas_cserve2="no"
CFOPT_WARNING="xyes"
fi
],
[want_evas_cserve2="yes"])
if test "x${want_evas_image_loader_generic}" = "xyes" || test "x${want_evas_cserve2}" = "xyes" ; then
EFL_ADD_LIBS([EVAS], [${requirements_libs_shm}])
fi
# cserve2 only works on Linux so far.
if test "x${efl_func_shm_open}" = "xno" ; then
want_evas_cserve2="no"
fi
if test "x${want_evas_cserve2}" = "xyes"; then
if test "x${ac_cv_header_sys_epoll_h}" = "xno" || test "x${ac_cv_header_sys_inotify_h}" = "xno" || test "x${ac_cv_header_sys_signalfd_h}" = "xno"; then
want_evas_cserve2="no"
else
EVAS_CSERVE2_SLAVE_LIBS="${EFLALL_COV_LIBS} ${EFL_LIBS} ${requirements_libs_shm}"
AC_SUBST([EVAS_CSERVE2_SLAVE_LIBS])
fi
fi
AC_DEFINE_IF([EVAS_CSERVE2],
[test "x${want_evas_cserve2}" = "xyes"],
[1], [Shared cache server.])
AM_CONDITIONAL([EVAS_CSERVE2], [test "x${want_evas_cserve2}" = "xyes"])
### Configuration
## Tile rotation
@ -3030,7 +3024,6 @@ esac
EFL_ADD_FEATURE([EVAS], [fontconfig])
EFL_ADD_FEATURE([EVAS], [fribidi])
EFL_ADD_FEATURE([EVAS], [harfbuzz])
EFL_ADD_FEATURE([EVAS], [cserve], [${want_evas_cserve2}])
EFL_ADD_FEATURE([EVAS], [tile-rotate])
EFL_ADD_FEATURE([EVAS], [dither-mask], [${build_evas_dither_mask}])
EFL_ADD_FEATURE([EVAS], [hyphen])
@ -3098,6 +3091,16 @@ if test "x${want_poppler}" = "xyes"; then
PKG_CHECK_MODULES([POPPLER], [poppler-cpp >= 0.12], [have_poppler="yes"])
fi
if test "x${have_poppler}" = "xyes" ; then
# We should be using ${CXX} here, but there is a bug in
# autotools macro and CXX is always set to g++ even if
# it's not found. So we are using an internal variable
# that does the work for now, may get broken in the future.
if test "x${ac_ct_CXX}" = "x" -a "x${CXX}" = "xg++"; then
AC_MSG_ERROR([efl requires a C++ compiler got ${ac_ct_CXX} and ${CXX}.])
fi
fi
if test "x${want_spectre}" = "xyes"; then
PKG_CHECK_MODULES([SPECTRE], [libspectre], [have_spectre="yes"])
fi
@ -3609,8 +3612,6 @@ EFL_INTERNAL_DEPEND_PKG([ECORE_COCOA], [ecore])
EFL_INTERNAL_DEPEND_PKG([ECORE_COCOA], [eo])
EFL_INTERNAL_DEPEND_PKG([ECORE_COCOA], [efl])
EFL_INTERNAL_DEPEND_PKG([ECORE_COCOA], [eina])
EFL_INTERNAL_DEPEND_PKG([ECORE_COCOA], [evas])
EFL_INTERNAL_DEPEND_PKG([ECORE_COCOA], [emile])
### Checks for header files
@ -3949,8 +3950,22 @@ EFL_INTERNAL_DEPEND_PKG([ELPUT], [eina])
EFL_DEPEND_PKG([ELPUT], [LIBINPUT], [libinput >= 1.7.0 xkbcommon >= 0.3.0 libudev])
AC_ARG_ENABLE([elogind],
[AS_HELP_STRING([--enable-elogind],[enable elogind support.@<:@default=disabled@:>@])],
[
if test "x${enableval}" = "xyes" ; then
want_elogind="yes"
else
want_elogind="no"
fi
], [
want_elogind="no"
])
EFL_OPTIONAL_DEPEND_PKG([ELPUT], [${want_systemd}], [SYSTEMD], [libsystemd])
EFL_OPTIONAL_DEPEND_PKG([ELPUT], [${want_elogind}], [ELOGIND], [libelogind])
EFL_ADD_FEATURE([ELPUT], [systemd-logind], [${want_systemd}])
EFL_ADD_FEATURE([ELPUT], [elogind], [${want_elogind}])
EFL_ADD_LIBS([ELPUT], [-lm])
@ -4823,6 +4838,16 @@ AC_ARG_ENABLE([physics],
],
[want_physics="yes"])
if test "x${want_physics}" = "xyes" ; then
# We should be using ${CXX} here, but there is a bug in
# autotools macro and CXX is always set to g++ even if
# it's not found. So we are using an internal variable
# that does the work for now, may get broken in the future.
if test "x${ac_ct_CXX}" = "x" -a "x${CXX}" = "xg++"; then
AC_MSG_ERROR([efl requires a C++ compiler got ${ac_ct_CXX} and ${CXX}.])
fi
fi
EFL_LIB_START_OPTIONAL([EPhysics], [test "${want_physics}" = "yes"])
### Additional options to configure
@ -5189,18 +5214,29 @@ AC_ARG_ENABLE([elua],
want_elua="no"
fi
],
[want_elua="no"])
[want_elua="yes"])
# turn this into an AC_ARG_ENABLE when bindings are reenabled
want_lua_bindings="no"
have_elua="yes"
have_lua_bindings="yes"
if test "${want_lua_old}" = "yes" -o "x$want_elua" = "xno"; then
have_elua="no"
fi
if test "x$have_elua" = "xno" -o "x$want_lua_bindings" = "xno"; then
have_lua_bindings="no"
fi
AM_CONDITIONAL([HAVE_ELUA], [test "x${have_elua}" = "xyes"])
AM_CONDITIONAL([HAVE_LUA_BINDINGS], [test "x${have_lua_bindings}" = "xyes"])
EFL_LIB_START_OPTIONAL([Elua], [test "${have_elua}" = "yes"])
### Default values
AM_CONDITIONAL([HAVE_ELUA], [test "x${have_elua}" = "xyes"])
### Additional options to configure
### Checks for programs
@ -5562,9 +5598,7 @@ AC_FUNC_ALLOCA
AC_CHECK_FUNCS([geteuid getuid getpwent])
if test "x${want_quicklaunch}" != "xno"; then
AC_CHECK_FUNCS([fork clearenv])
fi
AC_CHECK_FUNCS([fork clearenv])
build_quicklaunch="no"
if test "x${ac_cv_func_fork}" = "xyes" -a "x${efl_func_dlopen}" = "xyes"; then
@ -5718,24 +5752,7 @@ src/bindings/mono/efl_mono/efl_libs.csv
src/benchmarks/eina/Makefile
src/benchmarks/eo/Makefile
src/benchmarks/evas/Makefile
src/examples/eina/Makefile
src/examples/eina_cxx/Makefile
src/examples/eet/Makefile
src/examples/evas/Makefile
src/examples/ecore/Makefile
src/examples/ecore_avahi/Makefile
src/examples/eio/Makefile
src/examples/eldbus/Makefile
src/examples/ephysics/Makefile
src/examples/edje/Makefile
src/examples/emotion/Makefile
src/examples/emile/Makefile
src/examples/ethumb_client/Makefile
src/examples/elua/Makefile
src/examples/eolian_cxx/Makefile
src/examples/efl_mono/Makefile
src/examples/elocation/Makefile
src/examples/elementary/Makefile
src/examples/Makefile
src/lib/eina/eina_config.h
src/lib/efl/Efl_Config.h
src/lib/elementary/Elementary_Options.h
@ -6129,14 +6146,6 @@ if test -n "$CFOPT_WARNING"; then
echo "some functionality as useless, leading to visible application bugs."
echo "_____________________________________________________________________"
fi
if test "x${want_evas_cserve2}" = "xno"; then
echo "_____________________________________________________________________"
echo "Evas Cserve is built and on by default and no testing is done"
echo "for the old non-cserve2 code paths, so by disabling this you"
echo "may be introducing bugs. Be aware of this and be prepared to"
echo "deal with the bugs as a result of this."
echo "_____________________________________________________________________"
fi
if test "x${want_audio}" = "xno"; then
echo "_____________________________________________________________________"
echo "You disabled audio support in Ecore. This is not tested and may"

View File

@ -0,0 +1,3 @@
install_data('edje.inc',
install_dir : join_paths(dir_data, 'edje', 'include')
)

5
data/edje/meson.build Normal file
View File

@ -0,0 +1,5 @@
subdir('include')
install_data(files('edje.xml'),
install_dir : join_paths(dir_data, 'mime', 'packages')
)

View File

@ -1,30 +1,41 @@
group "Elm_Config" struct {
value "config_version" int: 131089;
value "config_version" int: 131092;
value "entry_select_allow" uchar: 1;
value "engine" string: "";
value "vsync" uchar: 0;
//
value "thumbscroll_enable" uchar: 1;
value "thumbscroll_threshold" int: 24;
value "thumbscroll_hold_threshold" int: 24;
value "thumbscroll_momentum_threshold" double: 100.0;
value "thumbscroll_flick_distance_tolerance" int: 1000;
value "thumbscroll_friction" double: 1.0;
value "thumbscroll_min_friction" double: 1.0;
value "thumbscroll_friction_standard" double: 2000.0;
//
value "thumbscroll_bounce_friction" double: 0.5;
value "thumbscroll_bounce_enable" uchar: 1;
value "thumbscroll_border_friction" double: 0.5;
value "thumbscroll_sensitivity_friction" double: 0.25;
//
value "thumbscroll_momentum_threshold" double: 100.0;
value "thumbscroll_momentum_distance_max" int: 3000;
value "thumbscroll_momentum_friction" double: 0.95;
value "thumbscroll_momentum_animation_duration_min_limit" double: 0.3;
value "thumbscroll_momentum_animation_duration_max_limit" double: 1.3;
//
value "thumbscroll_acceleration_threshold" double: 500.0;
value "thumbscroll_acceleration_time_limit" double: 0.7;
value "thumbscroll_acceleration_weight" double: 1.5;
value "page_scroll_friction" double: 0.5;
value "bring_in_scroll_friction" double: 0.5;
value "zoom_friction" double: 0.5;
value "thumbscroll_border_friction" double: 0.5;
value "thumbscroll_sensitivity_friction" double: 0.25;
//
value "scroll_smooth_start_enable" uchar: 1;
value "scroll_smooth_amount" double: 1.0;
value "scroll_smooth_time_window" double: 0.15;
value "scroll_accel_factor" double: 7.0;
// deprecated
value "thumbscroll_min_friction" double: 1.0;
value "thumbscroll_friction_standard" double: 2000.0;
value "thumbscroll_friction" double: 0.95;
value "thumbscroll_flick_distance_tolerance" int: 1000;
//
value "page_scroll_friction" double: 0.5;
value "bring_in_scroll_friction" double: 0.5;
value "zoom_friction" double: 0.5;
value "focus_autoscroll_mode" uchar: 0;
value "slider_indicator_visible_mode" int: 0;
value "scale" double: 1.0;
@ -2623,6 +2634,29 @@ group "Elm_Config" struct {
}
}
}
group "Elm_Config_Bindings_Widget" struct {
value "name" string: "Efl.Ui.Tab_Bar";
group "key_bindings" list {
group "Elm_Config_Binding_Key" struct {
value "context" int: 0;
value "key" string: "Return";
value "action" string: "select";
value "params" string: "";
}
group "Elm_Config_Binding_Key" struct {
value "context" int: 0;
value "key" string: "KP_Enter";
value "action" string: "select";
value "params" string: "";
}
group "Elm_Config_Binding_Key" struct {
value "context" int: 0;
value "key" string: "space";
value "action" string: "select";
value "params" string: "";
}
}
}
group "Elm_Config_Bindings_Widget" struct {
value "name" string: "Efl.Ui.Video";
group "key_bindings" list {

View File

@ -0,0 +1,7 @@
custom_target('config_'+config,
input: config_file,
output: 'base.cfg',
command: [eet_bin, '-e', '@OUTPUT@', 'config', '@INPUT@', '0'],
install: true,
install_dir: join_paths(dir_data, 'elementary', 'config', config),
)

View File

@ -0,0 +1,21 @@
configs = ['default', 'mobile', 'standard']
foreach config : configs
config_file = join_paths(meson.current_source_dir(), config, 'base.src.in')
config_icon = join_paths(meson.current_source_dir(), config, 'icon.png')
config_desktop = join_paths(meson.current_source_dir(), config, 'profile.desktop')
install_data([config_icon, config_desktop],
install_dir : join_paths(dir_data, 'elementary', 'config', config)
)
subdir(config)
endforeach
custom_target('config_profile',
input: 'profile.src',
output: 'profile.cfg',
command: [eet_bin, '-i', '@OUTPUT@', 'config', '@INPUT@', '0'],
install: true,
install_dir: join_paths(dir_data, 'elementary', 'config'),
)

View File

@ -1,5 +1,5 @@
group "Elm_Config" struct {
value "config_version" int: 131089;
value "config_version" int: 131092;
value "entry_select_allow" uchar: 1;
value "engine" string: "";
value "vsync" uchar: 0;
@ -7,20 +7,24 @@ group "Elm_Config" struct {
value "thumbscroll_threshold" int: 24;
value "thumbscroll_hold_threshold" int: 100;
value "thumbscroll_momentum_threshold" double: 100.0;
value "thumbscroll_flick_distance_tolerance" int: 1000;
value "thumbscroll_friction" double: 1.0;
value "thumbscroll_flick_distance_tolerance" int: 3000;
value "thumbscroll_friction" double: 0.95;
value "thumbscroll_momentum_animation_duration_min_limit" double: 0.3;
value "thumbscroll_momentum_animation_duration_max_limit" double: 1.3;
// will not be used
value "thumbscroll_min_friction" double: 0.3;
value "thumbscroll_friction_standard" double: 3000.0;
//
value "thumbscroll_bounce_friction" double: 0.5;
value "thumbscroll_bounce_enable" uchar: 1;
value "thumbscroll_acceleration_threshold" double: 2000.0;
value "thumbscroll_acceleration_time_limit" double: 0.5;
value "thumbscroll_acceleration_weight" double: 1.5;
value "thumbscroll_border_friction" double: 0.5;
value "thumbscroll_sensitivity_friction" double: 0.7;
value "page_scroll_friction" double: 0.5;
value "bring_in_scroll_friction" double: 0.5;
value "zoom_friction" double: 0.5;
value "thumbscroll_border_friction" double: 0.5;
value "thumbscroll_sensitivity_friction" double: 0.7;
value "scroll_smooth_start_enable" uchar: 1;
value "scroll_smooth_amount" double: 1.0;
value "scroll_smooth_time_window" double: 0.15;
@ -2627,6 +2631,29 @@ group "Elm_Config" struct {
}
}
}
group "Elm_Config_Bindings_Widget" struct {
value "name" string: "Efl.Ui.Tab_Bar";
group "key_bindings" list {
group "Elm_Config_Binding_Key" struct {
value "context" int: 0;
value "key" string: "Return";
value "action" string: "select";
value "params" string: "";
}
group "Elm_Config_Binding_Key" struct {
value "context" int: 0;
value "key" string: "KP_Enter";
value "action" string: "select";
value "params" string: "";
}
group "Elm_Config_Binding_Key" struct {
value "context" int: 0;
value "key" string: "space";
value "action" string: "select";
value "params" string: "";
}
}
}
group "Elm_Config_Bindings_Widget" struct {
value "name" string: "Efl.Ui.Video";
group "key_bindings" list {

View File

@ -0,0 +1,7 @@
custom_target('config_'+config,
input: config_file,
output: 'base.cfg',
command: [eet_bin, '-e', '@OUTPUT@', 'config', '@INPUT@', '0'],
install: true,
install_dir: join_paths(dir_data, 'elementary', 'config', config),
)

View File

@ -1,5 +1,5 @@
group "Elm_Config" struct {
value "config_version" int: 131089;
value "config_version" int: 131092;
value "entry_select_allow" uchar: 1;
value "engine" string: "";
value "vsync" uchar: 0;
@ -9,8 +9,12 @@ group "Elm_Config" struct {
value "thumbscroll_momentum_threshold" double: 100.0;
value "thumbscroll_flick_distance_tolerance" int: 1000;
value "thumbscroll_friction" double: 1.0;
value "thumbscroll_momentum_animation_duration_min_limit" double: 0.3;
value "thumbscroll_momentum_animation_duration_max_limit" double: 1.3;
// will not be used
value "thumbscroll_min_friction" double: 1.0;
value "thumbscroll_friction_standard" double: 2000.0;
//
value "thumbscroll_bounce_friction" double: 0.5;
value "thumbscroll_bounce_enable" uchar: 0;
value "thumbscroll_acceleration_threshold" double: 500.0;
@ -2624,6 +2628,29 @@ group "Elm_Config" struct {
}
}
}
group "Elm_Config_Bindings_Widget" struct {
value "name" string: "Efl.Ui.Tab_Bar";
group "key_bindings" list {
group "Elm_Config_Binding_Key" struct {
value "context" int: 0;
value "key" string: "Return";
value "action" string: "select";
value "params" string: "";
}
group "Elm_Config_Binding_Key" struct {
value "context" int: 0;
value "key" string: "KP_Enter";
value "action" string: "select";
value "params" string: "";
}
group "Elm_Config_Binding_Key" struct {
value "context" int: 0;
value "key" string: "space";
value "action" string: "select";
value "params" string: "";
}
}
}
group "Elm_Config_Bindings_Widget" struct {
value "name" string: "Efl.Ui.Video";
group "key_bindings" list {

View File

@ -0,0 +1,7 @@
custom_target('config_'+config,
input: config_file,
output: 'base.cfg',
command: [eet_bin, '-e', '@OUTPUT@', 'config', '@INPUT@', '0'],
install: true,
install_dir: join_paths(dir_data, 'elementary', 'config', config),
)

View File

@ -0,0 +1,8 @@
[Desktop Entry]
Type=Application
Name=Elementary Perf
Comment=Elementary Performance Test Application
Icon=elementary
Exec=elementary_perf
Terminal=false
Categories=Development;Utility;

View File

@ -0,0 +1,13 @@
desktop_files = files(
'elementary_config.desktop',
'elementary_test.desktop',
'elementary_perf.desktop')
elementary_icon = files('elementary.png')
install_data(desktop_files,
install_dir : join_paths(dir_data, 'applications')
)
install_data(elementary_icon,
install_dir : join_paths(dir_data, 'icons', 'hicolor', '128x128', 'apps')
)

View File

@ -0,0 +1,11 @@
custom_target('edje_cc_edje_externals',
input : 'icons.edc',
output : '@BASENAME@.edj',
command : edje_cc_exe + [ '-beta',
'-id', join_paths(meson.current_source_dir()),
'-id', elm_themes_image_include,
'@INPUT@', '@OUTPUT@'],
depends : edje_cc,
install : true,
install_dir : join_paths(dir_data, 'elementary', 'edje_externals'),
)

View File

@ -0,0 +1,10 @@
subdir('config')
subdir('desktop')
subdir('themes')
subdir('objects')
subdir('edje_externals')
install_subdir('images',
install_dir : join_paths(dir_data, 'elementary'),
exclude_files : ['Makefile.am']
)

View File

@ -0,0 +1,41 @@
edc_files = [
'test.edc',
'test_external.edc',
'test_focus_style.edc',
'test_masking.edc',
'test_tab_pager.edc',
'test_tooltip.edc',
'test_prefs.edc',
'cursors.edc',
'font_preview.edc',
'multibuttonentry.edc',
'multip.edc',
'postit_ent.edc'
]
elm_themes = []
foreach edc_file : edc_files
elm_themes += custom_target('edje_cc_elm_' + edc_file,
input : edc_file,
output : '@BASENAME@.edj',
command : edje_cc_exe + [ '-beta',
'-sd', join_paths(meson.current_source_dir()),
'-id', elm_themes_image_include,
'-id', join_paths(meson.current_source_dir()),
'-fd', join_paths(meson.current_source_dir()),
'@INPUT@', '@OUTPUT@'],
depends : edje_cc,
install : true,
install_dir : join_paths(dir_data, 'elementary', 'objects'),
)
endforeach
custom_target('prefs_compile',
input: 'test_prefs.epc',
output: 'test_prefs.epb',
command : elm_prefs_cc_exe + ['@INPUT@', '@OUTPUT@'],
depends : elm_prefs_cc,
install : true,
install_dir : join_paths(dir_data, 'elementary', 'objects'),
)

View File

@ -149,6 +149,7 @@ elementary/themes/edc/elm/textpath.edc \
elementary/themes/edc/elm/thumb.edc \
elementary/themes/edc/elm/toolbar.edc \
elementary/themes/edc/elm/tooltip.edc \
elementary/themes/edc/elm/uiclock.edc \
elementary/themes/edc/elm/video.edc \
elementary/themes/edc/elm/win.edc \
\
@ -1021,9 +1022,11 @@ elementary/themes/edc/efl/uiclock.edc \
elementary/themes/edc/efl/cursor.edc \
elementary/themes/edc/efl/focus.edc \
elementary/themes/edc/efl/frame.edc \
elementary/themes/edc/efl/grid.edc \
elementary/themes/edc/efl/navigation_bar.edc \
elementary/themes/edc/efl/navigation_layout.edc \
elementary/themes/edc/efl/tags.edc \
elementary/themes/edc/efl/panel.edc \
elementary/themes/edc/efl/nstate.edc \
elementary/themes/edc/efl/panes.edc \
elementary/themes/edc/efl/photocam.edc \

View File

@ -35,6 +35,7 @@ collections {
#include "edc/elm/access.edc"
#include "edc/elm/photo.edc"
#include "edc/elm/focus.edc"
#include "edc/elm/uiclock.edc"
#include "edc/elm/player.edc"
#include "edc/elm/thumb.edc"
#include "edc/elm/pointer.edc"
@ -173,6 +174,7 @@ collections {
// XXX: mobile mode needs invisible scrollers... make signals that do this
#include "edc/efl/scroller.edc"
#include "edc/efl/list.edc"
#include "edc/efl/grid.edc"
// XXX: mobile mode needs different entry setup
#include "edc/efl/text.edc"
#include "edc/efl/frame.edc"
@ -184,6 +186,7 @@ collections {
#include "edc/efl/video.edc"
#include "edc/efl/focus.edc"
#include "edc/efl/tags.edc"
#include "edc/efl/panel.edc"
#include "edc/efl/tooltip.edc"
#include "edc/efl/photocam.edc"
#include "edc/efl/progress.edc"

View File

@ -221,13 +221,11 @@ group { name: "e/widgets/about/main";
signal: "mouse,down,1*"; source: "base";
action: STATE_SET "clicked" 0.0;
target: "base";
target: "e.text.label";
}
program {
signal: "mouse,up,1"; source: "base";
action: STATE_SET "default" 0.0;
target: "base";
target: "e.text.label";
}
program {
signal: "mouse,clicked,1*"; source: "base";

View File

@ -331,15 +331,3 @@ group { "efl/datepicker/spin_button";
}
}
}
group { "efl/datepicker/spin_button/text_button";
inherit: "efl/spin_button/text_button";
}
group { "efl/datepicker/spin_button/inc_button";
inherit: "efl/spin_button/inc_button:vertical";
}
group { "efl/datepicker/spin_button/dec_button";
inherit: "efl/spin_button/dec_button:vertical";
}

View File

@ -0,0 +1,269 @@
group { "efl/grid";
inherit: "efl/scroller";
}
group { "efl/view_grid";
inherit: "efl/grid";
}
group { "efl/grid_item";
data.item: "selectraise" "on";
data.item: "focusraise" "on";
images.image: "bevel_dark_out.png" COMP;
images.image: "shadow_rounded_horiz.png" COMP;
images.image: "vgrad_med_dark.png" COMP;
images.image: "bevel_out.png" COMP;
images.image: "shine.png" COMP;
parts {
// BASE PARTS //
rect { "event";
desc { "default";
color: 0 0 0 0;
}
desc { "disabled";
inherit: "default";
hid;
}
}
rect { "base"; mouse;
desc { "default";
}
}
image { "bevel"; nomouse;
desc { "default";
image.normal: "bevel_dark_out.png";
image.border: 2 2 2 2;
image.middle: 0;
fill.smooth: 0;
}
}
image { "sel_shadow"; nomouse;
desc { "default";
image.normal: "shadow_rounded_horiz.png";
image.border: 0 0 9 9;
rel1.offset: 0 -4;
rel2.offset: -1 5;
fill.smooth: 0;
hid;
}
desc { "selected";
inherit: "default";
vis;
}
}
image { "sel_base"; nomouse;
desc { "default";
image.normal: "vgrad_med_dark.png";
fill.smooth: 0;
hid;
TILED_HORIZ(120)
}
desc { "selected";
inherit: "default";
vis;
}
}
image { "sel_bevel"; nomouse;
desc { "default";
image.normal: "bevel_out.png";
image.border: 2 2 2 2;
image.middle: 0;
fill.smooth: 0;
hid;
}
desc { "selected";
inherit: "default";
vis;
}
}
// BASE PARTS //
// TEXT PARTS //
text { "efl.text"; nomouse;
effect: SHADOW BOTTOM;
scale: 1;
desc { "default";
fixed: 0 1;
rel1.relative: 0.0 1.0;
rel1.offset: 5 -5;
rel2.relative: 1.0 1.0;
rel2.offset: -5 -5;
color: FN_COL_DEFAULT;
color_class: "grid_item";
align: 0.5 1.0;
text { font: FN; size: 10;
min: 0 1;
align: 0.5 1.0;
text_class: "grid_item";
}
}
desc { "selected";
inherit: "default";
hid;
}
desc { "disabled";
inherit: "default";
hid;
}
}
text { "label2"; nomouse;
effect: SHADOW BOTTOM;
scale: 1;
desc { "default";
rel1.to: "efl.text";
rel2.to: "efl.text";
color: FN_COL_DISABLE;
color_class: "grid_item_disabled";
text { font: FN; size: 10;
text_source: "efl.text";
align: 0.5 1.0;
text_class: "grid_item";
}
hid;
}
desc { "selected";
inherit: "default";
hid;
}
desc { "disabled";
inherit: "default";
vis;
}
}
text { "label3"; nomouse;
effect: GLOW;
scale: 1;
desc { "default";
rel1.offset: -2 -2;
rel1.to: "efl.text";
rel2.offset: 1 0;
rel2.to: "efl.text";
color: FN_COL_HIGHLIGHT;
color_class: "grid_item_selected";
text { font: FN; size: 10;
text_source: "efl.text";
align: 0.5 1.0;
text_class: "grid_item";
}
hid;
}
desc { "selected";
inherit: "default";
vis;
}
desc { "disabled";
inherit: "default";
hid;
}
}
// TEXT PARTS //
// CONTENT PARTS //
rect { "icon_area";
desc { "default";
fixed: 1 0;
rel1.offset: 2 2;
rel2.to_y: "efl.text";
rel2.relative: 1.0 0.0;
rel2.offset: -3 -3;
}
desc { "disabled";
inherit: "default";
color: 255 255 255 64;
}
}
swallow { "efl.icon";
clip_to: "icon_area";
desc { "default";
rel1.to: "icon_area";
rel2.to: "icon_area";
}
}
swallow { "efl.end";
clip_to: "icon_area";
desc { "default";
fixed: 1 1;
align: 1.0 0.0;
rel1.relative: 1.0 0.0;
rel1.offset: -3 2;
rel2.relative: 1.0 0.0;
rel2.offset: -3 2;
}
}
// CONTENT PARTS //
// TOP PARTS //
image { "sel_shine"; nomouse;
desc { "default";
image.normal: "shine.png";
rel1.offset: 0 -2;
rel1.to: "sel_base";
rel2.relative: 1.0 0.0;
rel2.offset: -1 2;
rel2.to: "sel_base";
hid;
FIXED_SIZE(69, 5)
}
desc { "selected";
inherit: "default";
vis;
}
}
rect { "event_block";
desc { "default";
color: 0 0 0 0;
hid;
}
desc { "disabled";
inherit: "default";
vis;
}
}
// TOP PARTS //
}
programs {
program {
signal: "efl,state,selected"; source: "efl";
action: STATE_SET "selected";
target: "sel_shadow";
target: "sel_base";
target: "sel_bevel";
target: "sel_shine";
target: "efl.text";
target: "label2";
target: "label3";
}
program {
signal: "efl,state,unselected"; source: "efl";
action: STATE_SET "default";
target: "sel_shadow";
target: "sel_base";
target: "sel_bevel";
target: "sel_shine";
target: "efl.text";
target: "label2";
target: "label3";
}
program {
signal: "efl,state,disabled"; source: "efl";
action: STATE_SET "disabled";
target: "event";
target: "event_block";
target: "efl.text";
target: "label2";
target: "label3";
target: "icon_area";
}
program {
signal: "efl,state,enabled"; source: "efl";
action: STATE_SET "default";
target: "event";
target: "event_block";
target: "efl.text";
target: "label2";
target: "label3";
target: "icon_area";
}
}
}

View File

@ -2,7 +2,7 @@ group { "efl/list";
inherit: "efl/scroller";
}
group { "efl/view_list";
group { "efl/list_view";
inherit: "efl/list";
}
@ -468,4 +468,4 @@ group { "efl/list_item:empty";
target: "event_block";
}
}
}
}

View File

@ -0,0 +1,831 @@
group { name: "efl/panel";
data {
item: "handler_size" "30";
}
parts {
part { name: "efl.content";
type: SWALLOW;
description { state: "default" 0.0;
}
}
}
}
group { name: "efl/panel/scrollable/left";
parts {
part { name: "efl.panel_area";
type: SWALLOW;
description { state: "default" 0.0;
rel2.relative: 0.0 1.0;
align: 0.0 0.5;
fixed: 1 1;
visible: 0;
}
description { state: "visible" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
part { name: "efl.event_area";
type: SWALLOW;
description { state: "default" 0.0;
rel1 {
relative: 1.0 0.0;
to: "efl.panel_area";
}
rel2 {
relative: 1.0 1.0;
to: "efl.panel_area";
}
align: 0.0 0.5;
fixed: 1 1;
visible: 0;
}
description { state: "visible" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
part { name: "access.outline";
type: RECT;
repeat_events: 1;
description { state: "default" 0.0;
rel1.to: "efl.panel_area";
rel2.to: "efl.panel_area";
color: 0 0 0 0;
}
}
part { name: "bg";
type: RECT;
description { state: "default" 0.0;
rel1.to: "efl.panel_area";
rel2.to: "efl.panel_area";
color: 64 64 64 255;
visible: 0;
}
description { state: "visible" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
part { name: "efl.content";
type: SWALLOW;
description { state: "default" 0.0;
rel1.to: "efl.panel_area";
rel2.to: "efl.panel_area";
visible: 0;
}
description { state: "visible" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
}
programs {
program { name: "active";
signal: "efl,state,content,visible";
source: "efl";
action: STATE_SET "visible" 0.0;
target: "efl.panel_area";
target: "efl.event_area";
target: "bg";
target: "efl.content";
}
program { name: "inactive";
signal: "efl,state,content,hidden";
source: "efl";
action: STATE_SET "default" 0.0;
target: "efl.panel_area";
target: "efl.event_area";
target: "bg";
target: "efl.content";
}
}
}
group { name: "efl/panel/scrollable/right";
parts {
part { name: "efl.event_area";
type: SWALLOW;
description { state: "default" 0.0;
rel2.relative: 0.0 1.0;
align: 0.0 0.5;
fixed: 1 1;
visible: 0;
}
description { state: "visible" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
part { name: "efl.panel_area";
type: SWALLOW;
description { state: "default" 0.0;
rel1 {
relative: 1.0 0.0;
to: "efl.event_area";
}
rel2 {
relative: 1.0 1.0;
to: "efl.event_area";
}
align: 0.0 0.5;
fixed: 1 1;
visible: 0;
}
description { state: "visible" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
part { name: "access.outline";
type: RECT;
repeat_events: 1;
description { state: "default" 0.0;
rel1.to: "efl.panel_area";
rel2.to: "efl.panel_area";
color: 0 0 0 0;
}
}
part { name: "bg";
type: RECT;
description { state: "default" 0.0;
rel1.to: "efl.panel_area";
rel2.to: "efl.panel_area";
color: 64 64 64 255;
visible: 0;
}
description { state: "visible" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
part { name: "efl.content";
type: SWALLOW;
description { state: "default" 0.0;
rel1.to: "efl.panel_area";
rel2.to: "efl.panel_area";
visible: 0;
}
description { state: "visible" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
}
programs {
program { name: "active";
signal: "efl,state,content,visible";
source: "efl";
action: STATE_SET "visible" 0.0;
target: "efl.panel_area";
target: "efl.event_area";
target: "bg";
target: "efl.content";
}
program { name: "inactive";
signal: "efl,state,content,hidden";
source: "efl";
action: STATE_SET "default" 0.0;
target: "efl.panel_area";
target: "efl.event_area";
target: "bg";
target: "efl.content";
}
}
}
group { name: "efl/panel/scrollable/top";
parts {
part { name: "efl.panel_area";
type: SWALLOW;
description { state: "default" 0.0;
rel2.relative: 1.0 0.0;
align: 0.5 0.0;
fixed: 1 1;
visible: 0;
}
description { state: "visible" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
part { name: "efl.event_area";
type: SWALLOW;
description { state: "default" 0.0;
rel1 {
relative: 0.0 1.0;
to: "efl.panel_area";
}
rel2 {
relative: 1.0 1.0;
to: "efl.panel_area";
}
align: 0.5 0.0;
fixed: 1 1;
visible: 0;
}
description { state: "visible" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
part { name: "access.outline";
type: RECT;
repeat_events: 1;
description { state: "default" 0.0;
rel1.to: "efl.panel_area";
rel2.to: "efl.panel_area";
color: 0 0 0 0;
}
}
part { name: "bg";
type: RECT;
description { state: "default" 0.0;
rel1.to: "efl.panel_area";
rel2.to: "efl.panel_area";
color: 64 64 64 255;
visible: 0;
}
description { state: "visible" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
part { name: "efl.content";
type: SWALLOW;
description { state: "default" 0.0;
rel1.to: "efl.panel_area";
rel2.to: "efl.panel_area";
visible: 0;
}
description { state: "visible" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
}
programs {
program { name: "active";
signal: "efl,state,content,visible";
source: "efl";
action: STATE_SET "visible" 0.0;
target: "efl.panel_area";
target: "efl.event_area";
target: "bg";
target: "efl.content";
}
program { name: "inactive";
signal: "efl,state,content,hidden";
source: "efl";
action: STATE_SET "default" 0.0;
target: "efl.panel_area";
target: "efl.event_area";
target: "bg";
target: "efl.content";
}
}
}
group { name: "efl/panel/scrollable/bottom";
parts {
part { name: "efl.event_area";
type: SWALLOW;
description { state: "default" 0.0;
rel2.relative: 1.0 0.0;
align: 0.5 0.0;
fixed: 1 1;
visible: 0;
}
description { state: "visible" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
part { name: "efl.panel_area";
type: SWALLOW;
description { state: "default" 0.0;
rel1 {
relative: 0.0 1.0;
to: "efl.event_area";
}
rel2 {
relative: 1.0 1.0;
to: "efl.event_area";
}
align: 0.5 0.0;
fixed: 1 1;
visible: 0;
}
description { state: "visible" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
part { name: "access.outline";
type: RECT;
repeat_events: 1;
description { state: "default" 0.0;
rel1.to: "efl.panel_area";
rel2.to: "efl.panel_area";
color: 0 0 0 0;
}
}
part { name: "bg";
type: RECT;
description { state: "default" 0.0;
rel1.to: "efl.panel_area";
rel2.to: "efl.panel_area";
color: 64 64 64 255;
visible: 0;
}
description { state: "visible" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
part { name: "efl.content";
type: SWALLOW;
description { state: "default" 0.0;
rel1.to: "efl.panel_area";
rel2.to: "efl.panel_area";
visible: 0;
}
description { state: "visible" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
}
programs {
program { name: "active";
signal: "efl,state,content,visible";
source: "efl";
action: STATE_SET "visible" 0.0;
target: "efl.panel_area";
target: "efl.event_area";
target: "bg";
target: "efl.content";
}
program { name: "inactive";
signal: "efl,state,content,hidden";
source: "efl";
action: STATE_SET "default" 0.0;
target: "efl.panel_area";
target: "efl.event_area";
target: "bg";
target: "efl.content";
}
}
}
group { name: "efl/panel/left";
images.image: "bevel_out.png" COMP;
images.image: "shine.png" COMP;
images.image: "shadow_square_tiny.png" COMP;
images.image: "holes_tiny_glow_vert.png" COMP;
images.image: "holes_tiny_glow_horiz.png" COMP;
images.image: "win_glow.png" COMP;
images.image: "icon_arrow_right.png" COMP;
images.image: "icon_arrow_left.png" COMP;
images.image: "icon_arrow_up.png" COMP;
images.image: "icon_arrow_down.png" COMP;
data.item: "focus_highlight" "on";
script {
public is_rtl = 0;
}
parts {
part { name: "shadow"; mouse_events: 0;
description { state: "default" 0.0;
rel1.offset: -3 -2;
rel1.to: "base";
rel2.offset: 2 4;
rel2.to: "base";
image.normal: "shadow_square_tiny.png";
image.border: 6 6 6 6;
fill.smooth: 0;
}
}
part { name: "glow"; mouse_events: 0;
description { state: "default" 0.0;
image.normal: "win_glow.png";
image.border: 9 9 9 9;
image.middle: 0;
rel1.offset: -5 -5;
rel1.to: "base";
rel2.offset: 4 4;
rel2.to: "base";
fill.smooth: 0;
color: 255 255 255 0;
visible: 0;
}
description { state: "focused" 0.0;
inherit: "default" 0.0;
color: 255 255 255 255;
visible: 1;
}
}
part { name: "all"; type: SPACER;
description { state: "default" 0.0;
}
}
part { name: "base"; type: RECT;
description { state: "default" 0.0;
rel1.to_x: "all";
rel2.to_x: "efl.swallow.event";
rel2.relative: 0.0 1.0;
rel2.offset: -4 -1;
color: 64 64 64 255;
}
}
part { name: "efl.content"; type: SWALLOW;
description { state: "default" 0.0;
rel1.offset: 4 4;
rel1.to: "base";
rel2.offset: -5 -5;
rel2.to: "base";
}
}
part { name: "bevel"; mouse_events: 0;
description { state: "default" 0.0;
rel1.to: "base";
rel2.to: "base";
image.normal: "bevel_out.png";
image.border: 1 1 1 1;
image.middle: 0;
fill.smooth: 0;
}
}
part { name: "shine"; mouse_events: 0;
description { state: "default" 0.0;
image.normal: "shine.png";
rel1.offset: 0 -2;
rel1.to: "base";
rel2.relative: 1.0 0.0;
rel2.offset: -1 2;
rel2.to: "base";
FIXED_SIZE(69, 5)
}
}
part { name: "efl.swallow.event"; type: SWALLOW;
description { state: "default" 0.0;
fixed: 1 1;
min: 20 20;
max: 20 20;
align: 1.0 0.5;
rel1.relative: 1.0 0.0;
rel2.relative: 1.0 1.0;
color: 0 0 0 0;
}
description { state: "hidden" 0.0;
inherit: "default" 0.0;
align: 0.0 0.5;
rel1.relative: 0.0 0.0;
rel2.relative: 0.0 1.0;
}
}
part { name: "btn"; type: RECT;
description { state: "default" 0.0;
rel1.to: "efl.swallow.event";
rel2.to: "efl.swallow.event";
color: 0 0 0 0;
}
description { state: "hidden" 0.0;
rel1.to: "efl.swallow.event";
rel2.to: "efl.swallow.event";
}
}
part { name: "dots"; mouse_events: 0;
description { state: "default" 0.0;
rel1.to: "icn";
rel2.to: "icn";
align: 0.0 0.5;
image.normal: "holes_tiny_glow_vert.png";
FIXED_SIZE(11, 17)
}
}
part { name: "icn"; mouse_events: 0;
scale: 1;
description { state: "default" 0.0;
fixed: 1 1;
min: 20 20;
max: 20 20;
rel1.to: "btn";
rel2.to: "btn";
image.normal: "icon_arrow_left.png";
}
description { state: "hidden" 0.0;
inherit: "default" 0.0;
image.normal: "icon_arrow_right.png";
}
}
}
programs {
program {
signal: "mouse,clicked,1"; source: "btn";
action: SIGNAL_EMIT "efl,action,panel,toggle" "efl";
}
program {
signal: "efl,action,show"; source: "efl";
action: STATE_SET "default" 0.0;
transition: DECELERATE 0.3;
target: "efl.swallow.event";
target: "base";
}
program {
signal: "efl,action,show"; source: "efl";
script {
if (get_int(is_rtl) == 0)
set_state(PART:"icn", "default", 0.0);
else
set_state(PART:"icn", "hidden", 0.0);
}
}
program {
signal: "edje,state,rtl";
source: "edje";
script {
new st[31];
new Float:vl;
get_state(PART:"efl.swallow.event", st, 30, vl);
if (!strcmp(st, "default"))
set_state(PART:"icn", "hidden", 0.0);
else
set_state(PART:"icn", "default", 0.0);
set_int(is_rtl, 1);
}
}
program {
signal: "edje,state,ltr";
source: "edje";
script {
new st[31];
new Float:vl;
get_state(PART:"efl.swallow.event", st, 30, vl);
if (!strcmp(st, "default"))
set_state(PART:"icn", "default", 0.0);
else
set_state(PART:"icn", "hidden", 0.0);
set_int(is_rtl, 0);
}
}
program {
signal: "efl,action,hide"; source: "efl";
action: STATE_SET "hidden" 0.0;
transition: ACCELERATE 0.3;
target: "efl.swallow.event";
}
program {
signal: "efl,action,hide"; source: "efl";
script {
if (get_int(is_rtl) == 0)
set_state(PART:"icn", "hidden", 0.0);
else
set_state(PART:"icn", "default", 0.0);
}
}
program { name: "hide1";
signal: "efl,action,hide"; source: "efl";
script {
new x, y, w, h;
if (get_int(is_rtl) == 0)
{
custom_state(PART:"base", "default", 0.0);
set_state_val(PART:"base", STATE_REL1, -1.0, 0.0);
get_geometry(PART:"efl.swallow.event", x, y, w, h);
set_state_val(PART:"base", STATE_REL1_OFFSET, w, 0);
}
else
{
custom_state(PART:"base", "default", 0.0);
set_state_val(PART:"base", STATE_REL1, -1.0, 0.0);
set_state_val(PART:"base", STATE_REL2, -2.0, 1.0);
get_geometry(PART:"efl.swallow.event", x, y, w, h);
set_state_val(PART:"base", STATE_REL2_OFFSET, -w, 0);
}
}
after: "hide2";
}
program { name: "hide2";
action: STATE_SET "custom" 0.0;
transition: ACCELERATE 0.3;
target: "base";
}
program {
signal: "efl,action,focus_highlight,show"; source: "efl";
action: STATE_SET "focused" 0.0;
transition: ACCELERATE 0.2;
target: "glow";
}
program {
signal: "efl,action,focus_highlight,hide"; source: "efl";
action: STATE_SET "default" 0.0;
transition: DECELERATE 0.5;
target: "glow";
}
}
}
group { name: "efl/panel/right";
inherit: "efl/panel/left";
parts {
part { name: "base";
description { state: "default" 0.0;
rel1.relative: 1.0 0.0;
rel1.to_x: "efl.swallow.event";
rel1.offset: 3 0;
rel2.relative: 1.0 1.0;
rel2.to_x: "all";
rel2.offset: -1 -1;
}
}
part { name: "efl.swallow.event";
description { state: "default" 0.0;
align: 0.0 0.5;
rel1.relative: 0.0 0.0;
rel2.relative: 0.0 1.0;
}
description { state: "hidden" 0.0;
align: 1.0 0.5;
rel1.relative: 1.0 0.0;
rel2.relative: 1.0 1.0;
}
}
part { name: "dots";
description { state: "default" 0.0;
align: 1.0 0.5;
}
}
part { name: "icn";
description { state: "default" 0.0;
image.normal: "icon_arrow_right.png";
}
description { state: "hidden" 0.0;
image.normal: "icon_arrow_left.png";
}
}
}
programs {
program { name: "hide1";
script {
new x, y, w, h;
custom_state(PART:"base", "default", 0.0);
set_state_val(PART:"base", STATE_REL1, 1.0, 0.0);
set_state_val(PART:"base", STATE_REL2, 2.0, 1.0);
get_geometry(PART:"efl.swallow.event", x, y, w, h);
set_state_val(PART:"base", STATE_REL2_OFFSET, -w, 0);
}
}
}
}
group { name: "efl/panel/top";
inherit: "efl/panel/left";
parts {
part { name: "base";
description { state: "default" 0.0;
rel1.relative: 0.0 0.0;
rel1.to_x: "all";
rel1.to_y: "all";
rel1.offset: 0 0;
rel2.relative: 1.0 0.0;
rel2.to_x: "all";
rel2.to_y: "efl.swallow.event";
rel2.offset: -1 -4;
}
}
part { name: "efl.swallow.event";
description { state: "default" 0.0;
align: 0.5 1.0;
rel1.relative: 0.0 1.0;
rel2.relative: 1.0 1.0;
}
description { state: "hidden" 0.0;
align: 0.5 0.0;
rel1.relative: 0.0 0.0;
rel2.relative: 1.0 0.0;
}
}
part { name: "dots";
description { state: "default" 0.0;
align: 0.5 0.0;
image.normal: "holes_tiny_glow_horiz.png";
FIXED_SIZE(17, 11)
}
}
part { name: "icn";
description { state: "default" 0.0;
image.normal: "icon_arrow_up.png";
}
description { state: "hidden" 0.0;
image.normal: "icon_arrow_down.png";
}
}
}
programs {
program { name: "hide1";
script {
new x, y, w, h;
custom_state(PART:"base", "default", 0.0);
set_state_val(PART:"base", STATE_REL1, 0.0, -1.0);
set_state_val(PART:"base", STATE_REL2, 1.0, 0.0);
get_geometry(PART:"efl.swallow.event", x, y, w, h);
set_state_val(PART:"base", STATE_REL1_OFFSET, 0, h);
}
}
program {
signal: "efl,action,show"; source: "efl";
action: STATE_SET "default" 0.0;
target: "icn";
}
program {
signal: "edje,state,rtl";
source: "edje";
script {
new st[31];
new Float:vl;
get_state(PART:"efl.swallow.event", st, 30, vl);
if (!strcmp(st, "default"))
set_state(PART:"icn", "default", 0.0);
else
set_state(PART:"icn", "hidden", 0.0);
}
}
program {
signal: "edje,state,ltr";
source: "edje";
script {
new st[31];
new Float:vl;
get_state(PART:"efl.swallow.event", st, 30, vl);
if (!strcmp(st, "default"))
set_state(PART:"icn", "default", 0.0);
else
set_state(PART:"icn", "hidden", 0.0);
}
}
program {
signal: "efl,action,hide"; source: "efl";
action: STATE_SET "hidden" 0.0;
target: "icn";
}
}
}
group { name: "efl/panel/bottom";
inherit: "efl/panel/top";
parts {
part { name: "base";
description { state: "default" 0.0;
rel1.relative: 0.0 1.0;
rel1.to_x: "all";
rel1.to_y: "efl.swallow.event";
rel1.offset: 0 3;
rel2.relative: 1.0 1.0;
rel2.to_x: "all";
rel2.to_y: "all";
rel2.offset: -1 -1;
}
}
part { name: "efl.swallow.event";
description { state: "default" 0.0;
align: 0.5 0.0;
rel1.relative: 0.0 0.0;
rel2.relative: 1.0 0.0;
}
description { state: "hidden" 0.0;
align: 0.5 1.0;
rel1.relative: 0.0 1.0;
rel2.relative: 1.0 1.0;
}
}
part { name: "dots";
description { state: "default" 0.0;
align: 0.5 0.0;
image.normal: "holes_tiny_glow_horiz.png";
FIXED_SIZE(17, 11)
}
}
part { name: "icn";
description { state: "default" 0.0;
image.normal: "icon_arrow_down.png";
}
description { state: "hidden" 0.0;
image.normal: "icon_arrow_up.png";
}
}
}
programs {
program { name: "hide1";
script {
new x, y, w, h;
custom_state(PART:"base", "default", 0.0);
set_state_val(PART:"base", STATE_REL1, 0.0, 1.0);
set_state_val(PART:"base", STATE_REL2, 1.0, 2.0);
get_geometry(PART:"efl.swallow.event", x, y, w, h);
set_state_val(PART:"base", STATE_REL2_OFFSET, 0, -h);
}
}
}
}

View File

@ -23,9 +23,9 @@ group { "efl/popup";
}
}
group { "efl/popup_alert";
alias: "efl/popup_alert_scroll";
alias: "efl/popup_alert_text";
group { "efl/alert_popup";
alias: "efl/scroll_alert_popup";
alias: "efl/text_alert_popup";
images.image: "rounded_square.png" COMP;
parts {
alias: "title" "efl.text.title";
@ -111,15 +111,15 @@ group { "efl/popup_alert";
}
}
group { "efl/popup_anchor";
group { "efl/anchor_popup";
inherit: "efl/popup";
}
group { "efl/popup/backwall";
alias: "efl/popup_alert/backwall";
alias: "efl/popup_alert_scroll/backwall";
alias: "efl/popup_alert_text/backwall";
alias: "efl/popup_anchor/backwall";
alias: "efl/alert_popup/backwall";
alias: "efl/scroll_alert_popup/backwall";
alias: "efl/text_alert_popup/backwall";
alias: "efl/anchor_popup/backwall";
parts {
rect { "base";
desc { "default";
@ -168,18 +168,18 @@ group { "efl/popup/backwall";
}
}
group { "efl/popup_alert/button_layout1";
alias: "efl/popup_alert_scroll/button_layout1";
alias: "efl/popup_alert_text/button_layout1";
group { "efl/alert_popup/button_layout1";
alias: "efl/scroll_alert_popup/button_layout1";
alias: "efl/text_alert_popup/button_layout1";
parts {
swallow { "efl.button1";
}
}
}
group { "efl/popup_alert/button_layout2";
alias: "efl/popup_alert_scroll/button_layout2";
alias: "efl/popup_alert_text/button_layout2";
group { "efl/alert_popup/button_layout2";
alias: "efl/scroll_alert_popup/button_layout2";
alias: "efl/text_alert_popup/button_layout2";
parts {
spacer { "div1";
desc { "default";
@ -203,9 +203,9 @@ group { "efl/popup_alert/button_layout2";
}
}
group { "efl/popup_alert/button_layout3";
alias: "efl/popup_alert_scroll/button_layout3";
alias: "efl/popup_alert_text/button_layout3";
group { "efl/alert_popup/button_layout3";
alias: "efl/scroll_alert_popup/button_layout3";
alias: "efl/text_alert_popup/button_layout3";
parts {
spacer { "div1";
desc { "default";
@ -244,15 +244,15 @@ group { "efl/popup_alert/button_layout3";
}
}
group { "efl/popup_alert/button";
group { "efl/alert_popup/button";
inherit: "efl/button";
alias: "efl/popup_alert_scroll/button";
alias: "efl/popup_alert_text/button";
alias: "efl/scroll_alert_popup/button";
alias: "efl/text_alert_popup/button";
}
group { "efl/popup_alert_scroll/scroller";
group { "efl/scroll_alert_popup/scroller";
inherit: "efl/scroller";
alias: "efl/popup_alert_text/scroller";
alias: "efl/text_alert_popup/scroller";
parts {
swallow { "efl.content";
desc { "default";
@ -273,6 +273,6 @@ group { "efl/popup_alert_scroll/scroller";
}
}
group { "efl/popup_alert_text/text";
group { "efl/text_alert_popup/text";
inherit: "efl/text";
}

View File

@ -1,4 +1,4 @@
group { "efl/spin_button";
group { "efl/spin_button/horizontal";
images.image: "vert_bar_inset.png" COMP;
parts {
rect { "clip";
@ -53,11 +53,6 @@ group { "efl/spin_button";
scale;
desc { "default";
fixed: 1 0;
rel1.to: "inset";
rel1.offset: 1 1;
rel2.to: "inset";
rel2.offset: 1 -2;
rel2.relative: 0.0 1.0;
align: 0.0 0.5;
min: 15 15;
aspect: 1.0 1.0; aspect_preference: VERTICAL;
@ -67,11 +62,6 @@ group { "efl/spin_button";
scale;
desc { "default";
fixed: 1 0;
rel1.to: "inset";
rel1.offset: 1 1;
rel1.relative: 1.0 0.0;
rel2.to: "inset";
rel2.offset: 1 -2;
align: 1.0 0.5;
min: 15 15;
aspect: 1.0 1.0; aspect_preference: VERTICAL;
@ -160,47 +150,53 @@ group { "efl/spin_button";
}
}
group { "efl/spin_button:vertical";
inherit: "efl/spin_button";
group { "efl/spin_button/vertical";
inherit: "efl/spin_button/horizontal";
parts {
image { "inset"; nomouse;
desc { "default";
min: 40 150;
}
}
swallow { "efl.inc_button";
scale;
desc { "default";
rel1.to: "inset";
rel1.offset: 1 1;
rel1.relative: 1.0 0.0;
rel2.to: "inset";
rel2.offset: 1 -2;
align: 1.0 0.5;
}
}
swallow { "efl.text_button";
scale;
desc { "default";
vis;
rel1.to_y: "inset";
rel1.to_x: "efl.dec_button";
rel1.relative: 1.0 0.0;
rel1.offset: 1 1;
rel2.to_y: "inset";
rel2.to_x: "efl.inc_button";
rel2.relative: 0.0 1.0;
rel2.offset: -2 -2;
}
desc { "active";
inherit: "default";
hid;
rel.to: "inset";
align: 0.5 0.0;
min: 40 40;
max: 40 40;
fixed: 1 1;
}
}
swallow { "efl.dec_button";
scale;
desc { "default";
rel1.to: "inset";
rel1.offset: 1 1;
rel2.to: "inset";
rel2.offset: 1 -2;
rel2.relative: 0.0 1.0;
align: 0.0 0.5;
rel.to: "inset";
align: 0.5 1.0;
min: 40 40;
max: 40 40;
fixed: 1 1;
}
}
swallow { "efl.text_button";
scale;
desc { "default";
rel.to_x: "inset";
rel1 {
to_y: "efl.inc_button";
relative: 0.0 1.0;
}
rel2 {
to_y: "efl.dec_button";
relative: 1.0 0.0;
}
min: 0 70;
max: -1 70;
fixed: 0 1;
}
desc { "inactive";
inherit: "default";
hid;
}
}
}
@ -357,6 +353,7 @@ group { "efl/spin_button/inc_button";
}
group { "efl/spin_button/entry";
alias: "efl/spin_button/vertical/entry";
inherit: "efl/text";
}
@ -386,7 +383,7 @@ group { "efl/spin_button/dec_button";
}
group { "efl/spin_button/text_button";
alias: "efl/spin_button/text_button:vertical";
alias: "efl/spin_button/vertical/text_button";
parts {
part { name: "bg";
type: SPACER;
@ -462,7 +459,7 @@ group { "efl/spin_button/text_button";
}
}
group { "efl/spin_button/inc_button:vertical";
group { "efl/spin_button/vertical/inc_button";
inherit: "efl/spin_button/inc_button";
images.image: "sym_up_light_normal.png" COMP;
images.image: "sym_up_glow_normal.png" COMP;
@ -487,7 +484,7 @@ group { "efl/spin_button/inc_button:vertical";
}
}
group { "efl/spin_button/dec_button:vertical";
group { "efl/spin_button/vertical/dec_button";
inherit: "efl/spin_button/dec_button";
images.image: "sym_down_light_normal.png" COMP;
images.image: "sym_down_glow_normal.png" COMP;

View File

@ -484,7 +484,7 @@ group { "efl/tab_bar/tab";
action: SIGNAL_EMIT "efl,mouse,out" "efl";
}
program { name: "st1";
signal: "efl,text,hidden"; source: "efl";
signal: "efl,state,text,unset"; source: "efl";
script {
new m = get_int(btmode);
m &= ~LABEL; set_int(btmode, m);
@ -492,7 +492,7 @@ group { "efl/tab_bar/tab";
}
}
program { name: "st2";
signal: "efl,text,visible"; source: "efl";
signal: "efl,state,text,set"; source: "efl";
script {
new m = get_int(btmode);
m |= LABEL; set_int(btmode, m);
@ -500,7 +500,7 @@ group { "efl/tab_bar/tab";
}
}
program { name: "st3";
signal: "efl,icon,hidden"; source: "efl";
signal: "efl,state,icon,unset"; source: "efl";
script {
new m = get_int(btmode);
m &= ~ICON; set_int(btmode, m);
@ -508,7 +508,7 @@ group { "efl/tab_bar/tab";
}
}
program { name: "st4";
signal: "efl,icon,visible"; source: "efl";
signal: "efl,state,icon,set"; source: "efl";
script {
new m = get_int(btmode);
m |= ICON; set_int(btmode, m);
@ -537,16 +537,8 @@ group { "efl/tab_bar/tab";
target: "shadow1";
target: "shadow2";
}
program {
signal: "efl,state,icon_set,forward"; source: "efl";
after: "icon_set,animation";
}
program {
signal: "efl,state,icon_set,backward"; source: "efl";
after: "icon_set,animation";
}
program { name: "icon_set,animation";
signal: "efl,state,icon_set"; source: "efl";
signal: "efl,state,icon_new,set"; source: "efl";
action: STATE_SET "animation" 0.0;
target: "icon_clip1";
target: "icon_clip2";

View File

@ -506,6 +506,15 @@ group { "efl/text/anchor";
}
group { "efl/text";
data {
item: "font.name" "Sans";
item: "font.size" "10";
item: "style.color" "#fff";
item: "guide.font.name" "Sans";
item: "guide.font.size" "10";
item: "guide.style.color" "#666";
}
sounds {
sample { name: "key-tap1" LOSSY 64;
source: "kbd-tap.wav";
@ -536,21 +545,6 @@ group { "efl/text";
rel2.offset: -2 -2;
}
}
part { name: "efl.guide"; type: TEXTBLOCK; mouse_events: 0;
scale: 1;
description { state: "default" 0.0;
rel1.to: "efl.text";
rel2.to: "efl.text";
text { style: "efl_ui_text_guide_style";
min: 0 1;
align: 0.0 0.0;
}
}
description { state: "hidden" 0.0;
inherit: "default" 0.0;
visible: 0;
}
}
part { name: "efl.text"; type: SWALLOW;
scale: 1;
description { state: "default" 0.0;
@ -563,6 +557,17 @@ group { "efl/text";
inherit: "default" 0.0;
}
}
part { name: "efl.text_guide"; type: SWALLOW;
scale: 1;
description { state: "default" 0.0;
fixed: 0 0;
rel1.offset: 2 2;
rel2.offset: -3 -3;
}
description { state: "disabled" 0.0;
inherit: "default" 0.0;
}
}
}
programs {
program {

View File

@ -377,21 +377,6 @@ group { "efl/timepicker";
}
}
group { "efl/timepicker/spin_button";
inherit: "efl/datepicker/spin_button";
}
group { "efl/timepicker/spin_button/text_button";
inherit: "efl/spin_button/text_button";
}
group { "efl/timepicker/spin_button/inc_button";
inherit: "efl/spin_button/inc_button:vertical";
}
group { "efl/timepicker/spin_button/dec_button";
inherit: "efl/spin_button/dec_button:vertical";
}
group { "efl/timepicker/button";
inherit: "efl/button";
parts {

View File

@ -702,29 +702,6 @@ group { name: "elm/button/base/media_player/prev/default";
target: "shadow1";
target: "shadow2";
}
program {
signal: "mouse,up,1"; source: "event";
action: SIGNAL_EMIT "elm,action,unpress" "elm";
after: "button_unclick_anim";
}
program { name: "button_unclick_anim";
action: STATE_SET "default" 0.0;
target: "shadow1";
target: "shadow2";
}
program {
signal: "elm,anim,activate"; source: "elm";
action: STATE_SET "clicked" 0.0;
target: "shadow1";
target: "shadow2";
after: "button_unpressed_anim";
}
program { name: "button_unpressed_anim";
action: STATE_SET "default" 0.0;
in: 0.5 0.0;
target: "shadow1";
target: "shadow2";
}
program {
signal: "mouse,clicked,1"; source: "event";
action: SIGNAL_EMIT "elm,action,click" "elm";

View File

@ -38,7 +38,7 @@ group { name: "elm/gengrid/item/default/default";
} \
program { \
signal: "elm,state,odd"; source: "elm"; \
action: STATE_SET "odd" 1.0; \
action: STATE_SET "odd" 0.0; \
target: "base"; \
} \
program { \

View File

@ -3292,7 +3292,7 @@ group { "elm/genlist/item/edit/default"; nomouse;
}
program {
signal: "elm,state,odd";
action: STATE_SET "odd" 1.0;
action: STATE_SET "odd" 0.0;
target: "base";
}
program {

View File

@ -1134,12 +1134,12 @@ group { name: "elm/hover/base/main_menu_submenu/default";
program { name: "show";
signal: "elm,action,show"; source: "elm";
action: STATE_SET "visible" 0.0;
target: "base";
target: "top";
}
program { name: "hide";
signal: "elm,action,hide"; source: "elm";
action: STATE_SET "default" 0.0;
target: "base";
target: "top";
}
program { name: "bottomshow";
signal: "elm,action,slot,bottom,show"; source: "elm";

View File

@ -129,7 +129,7 @@ group { name: "elm/naviframe/item/basic/default";
} \
}
BOTTOMMAX()
part { name: "title1"; type: TEXT;
scale: 1;
description { state: "default" 0.0;
@ -375,7 +375,7 @@ group { name: "elm/naviframe/item/basic/default";
max: 1 1;
fixed: 1 1;
}
description { state: "hidden" 0.0;
description { state: "title-hidden" 0.0;
inherit: "default" 0.0;
visible: 0;
}
@ -396,7 +396,7 @@ group { name: "elm/naviframe/item/basic/default";
max: 1 1;
fixed: 1 1;
}
description { state: "hidden" 0.0;
description { state: "title-hidden" 0.0;
inherit: "default" 0.0;
visible: 0;
}
@ -463,6 +463,8 @@ group { name: "elm/naviframe/item/basic/default";
target: "shadow";
target: "elm.swallow.content";
target: "buttons_clip";
target: "elm.swallow.prev_btn";
target: "elm.swallow.next_btn";
}
program {
signal: "elm,action,title,show"; source: "elm";
@ -477,6 +479,8 @@ group { name: "elm/naviframe/item/basic/default";
action: STATE_SET "default" 0.0;
target: "buttons_clip";
after: "title_transition_finished";
target: "elm.swallow.prev_btn";
target: "elm.swallow.next_btn";
}
program {
signal: "elm,state,title,hide"; source: "elm";
@ -485,11 +489,15 @@ group { name: "elm/naviframe/item/basic/default";
target: "top";
target: "shadow";
target: "elm.swallow.content";
target: "elm.swallow.prev_btn";
target: "elm.swallow.next_btn";
}
program {
signal: "elm,action,title,hide"; source: "elm";
action: STATE_SET "title-hidden" 0.0;
target: "buttons_clip";
target: "elm.swallow.prev_btn";
target: "elm.swallow.next_btn";
after: "titlehide2";
}
program { name: "titlehide2";
@ -506,21 +514,23 @@ group { name: "elm/naviframe/item/basic/default";
program {
signal: "elm,state,prev_btn,show"; source: "elm";
action: STATE_SET "default" 0.0;
filter: "elm.swallow.content" "default";
target: "elm.swallow.prev_btn";
}
program {
signal: "elm,state,prev_btn,hide"; source: "elm";
action: STATE_SET "hidden" 0.0;
action: STATE_SET "title-hidden" 0.0;
target: "elm.swallow.prev_btn";
}
program {
signal: "elm,state,next_btn,show"; source: "elm";
action: STATE_SET "default" 0.0;
filter: "elm.swallow.content" "default";
target: "elm.swallow.next_btn";
}
program {
signal: "elm,state,next_btn,hide"; source: "elm";
action: STATE_SET "hidden" 0.0;
action: STATE_SET "title-hidden" 0.0;
target: "elm.swallow.next_btn";
}
program {
@ -559,9 +569,9 @@ group { name: "elm/naviframe/item/basic/default";
action: STATE_SET "default" 0.0;
target: "base";
target: "elements_clip";
after: "pushed2";
}
program { name: "pushed2";
program {
signal: "elm,state,cur,pushed,deferred"; source: "elm";
action: STATE_SET "prev" 0.0;
transition: DECEL 0.5;
target: "base";
@ -578,9 +588,9 @@ group { name: "elm/naviframe/item/basic/default";
action: STATE_SET "default" 0.0;
target: "base";
target: "elements_clip";
after: "popped2";
}
program { name: "popped2";
program {
signal: "elm,state,cur,popped,deferred"; source: "elm";
action: STATE_SET "next" 0.0;
transition: DECEL 0.5;
target: "base";
@ -597,9 +607,9 @@ group { name: "elm/naviframe/item/basic/default";
action: STATE_SET "next" 0.0;
target: "base";
target: "elements_clip";
after: "pushedb2";
}
program { name: "pushedb2";
program {
signal: "elm,state,new,pushed,deferred"; source: "elm";
action: STATE_SET "default" 0.0;
transition: DECELERATE 0.5;
target: "base";
@ -616,9 +626,9 @@ group { name: "elm/naviframe/item/basic/default";
action: STATE_SET "prev" 0.0;
target: "base";
target: "elements_clip";
after: "poppedb2";
}
program { name: "poppedb2";
program {
signal: "elm,state,prev,popped,deferred"; source: "elm";
action: STATE_SET "default" 0.0;
transition: DECELERATE 0.5;
target: "base";

View File

@ -0,0 +1,207 @@
#define DATETIME_FIELD(_pos) \
part { \
name: "elm.field"#_pos; type: SWALLOW; \
scale: 1; \
clip_to: "clip"; \
description { state: "default" 0.0; \
visible: 0; \
min: 0 0; \
align: 0.0 0.5; \
fixed: 1 1; \
rel1.relative: 1.0 0.0; \
rel1.to: "elm.separator"#_pos; \
rel2.relative: 1.0 1.0; \
rel2.to: "elm.separator"#_pos; \
} \
description { state: "enable" 0.0; \
inherit: "default" 0.0; \
visible: 1; \
min: 8 10; \
} \
} \
programs{ \
program { name: "field_"#_pos"enabled"; \
signal: "field"#_pos",enable"; source: "elm"; \
action: STATE_SET "enable" 0.0; \
target: "elm.field"#_pos; \
} \
program { name: "field_"#_pos"disabled"; \
signal: "field"#_pos",disable"; source: "elm"; \
action: STATE_SET "default" 0.0; \
target: "elm.field"#_pos; \
} \
}
#define DATETIME_SEPARATOR(_pos, _after) \
part { \
name: "elm.separator"#_pos; type: TEXT; \
scale: 1; \
effect: SHADOW BOTTOM; \
clip_to: "disclip"; \
description { state: "default" 0.0; \
visible: 0; \
min: 0 0; \
align: 0.0 0.5; \
fixed: 1 0; \
rel1 { \
relative: 1.0 0.0; \
to: "elm.field"#_after; \
} \
rel2 { \
relative: 1.0 1.0; \
to: "elm.field"#_after; \
} \
color_class: "datetime_separator_text"; \
text { \
font: "Sans"; size: 10; \
min: 1 0; \
ellipsis: -1; \
align: 0.5 0.5; \
text_class: "datetime_separator_text"; \
} \
} \
description { state: "enable" 0.0; \
inherit: "default" 0.0; \
visible: 1; \
min: 8 10; \
} \
} \
part { \
name: "separator"#_pos"d"; type: TEXT; \
scale: 1; \
effect: SHADOW BOTTOM; \
clip_to: "disclip2"; \
description { state: "default" 0.0; \
visible: 0; \
rel1.to: "elm.separator"#_pos; \
rel2.to: "elm.separator"#_pos; \
color_class: "datetime_separator_text_disabled"; \
text { \
text_source: "elm.separator"#_pos; \
font: "Sans"; size: 10; \
text_class: "datetime_separator_text_disabled"; \
} \
} \
description { state: "enable" 0.0; \
inherit: "default" 0.0; \
visible: 1; \
} \
} \
programs { \
program { \
signal: "field"#_after",enable"; source: "elm"; \
action: STATE_SET "enable" 0.0; \
target: "elm.separator"#_pos; \
target: "separator"#_pos"d"; \
} \
program { \
signal: "field"#_after",disable"; source: "elm"; \
action: STATE_SET "default" 0.0; \
target: "elm.separator"#_pos; \
target: "separator"#_pos"d"; \
} \
}
group { name: "elm/uiclock/base/default";
parts {
part { name: "bg"; type: RECT;
description { state: "default" 0.0;
color_class: "datetime_bg";
}
}
part { name: "clip"; type: RECT;
description { state: "default" 0.0;
rel1.to: "elm.separator0";
rel2.to: "elm.separator7";
}
}
part { name: "disclip"; type: RECT;
clip_to: "clip";
description { state: "default" 0.0;
rel1.to: "elm.separator0";
rel2.to: "elm.separator7";
}
description { state: "disabled" 0.0;
inherit: "default" 0.0;
visible: 0;
}
}
part { name: "disclip2"; type: RECT;
clip_to: "clip";
description { state: "default" 0.0;
rel1.to: "elm.separator0";
rel2.to: "elm.separator7";
visible: 0;
}
description { state: "disabled" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
part { name: "elm.separator0"; type: SPACER;
scale: 1;
description { state: "default" 0.0;
min: 8 10;
align: 0.0 0.5;
fixed: 1 0;
rel2.relative: 0.0 1.0;
}
}
DATETIME_FIELD(0)
DATETIME_SEPARATOR(1,0)
DATETIME_FIELD(1)
DATETIME_SEPARATOR(2,1)
DATETIME_FIELD(2)
DATETIME_SEPARATOR(3,2)
DATETIME_FIELD(3)
DATETIME_SEPARATOR(4,3)
DATETIME_FIELD(4)
DATETIME_SEPARATOR(5,4)
DATETIME_FIELD(5)
DATETIME_SEPARATOR(6,5)
DATETIME_FIELD(6)
DATETIME_SEPARATOR(7,6)
DATETIME_FIELD(7)
DATETIME_SEPARATOR(8,7)
part { name: "elm.separator9"; type: SPACER;
description { state: "default" 0.0;
rel1.to: "elm.separator7";
rel1.relative: 1.0 0.0;
min: 8 10;
}
}
part { name: "discover"; type: RECT;
description { state: "default" 0.0;
rel1.to: "elm.separator0";
rel2.to: "elm.separator7";
visible: 0;
color: 0 0 0 0;
}
description { state: "disabled" 0.0;
inherit: "default" 0.0;
visible: 1;
}
}
part { name: "elm.access"; type: RECT; repeat_events: 1;
description { state: "default" 0.0;
color: 0 0 0 0;
}
}
}
programs {
program {
signal: "elm,state,disabled"; source: "elm";
action: STATE_SET "disabled" 0.0;
target: "disclip";
target: "disclip2";
target: "discover";
}
program {
signal: "elm,state,enabled"; source: "elm";
action: STATE_SET "default" 0.0;
target: "disclip";
target: "disclip2";
target: "discover";
}
}
}
#undef DATETIME_SEPARATOR
#undef DATETIME_FIELD

View File

@ -1026,7 +1026,6 @@ group { name: "e/modules/everything/thumbview/main/scrollframe";
program {
signal: "mouse,down,1*"; source: "sb_vbar_a1";
action: STATE_SET "clicked" 0.0;
target: "sb_vbar_a1";
target: "arrow1_vbar";
}
program {
@ -1037,13 +1036,11 @@ group { name: "e/modules/everything/thumbview/main/scrollframe";
program {
signal: "mouse,up,1"; source: "sb_vbar_a1";
action: STATE_SET "default" 0.0;
target: "sb_vbar_a1";
target: "arrow1_vbar";
}
program {
signal: "mouse,down,1*"; source: "sb_vbar_a2";
action: STATE_SET "clicked" 0.0;
target: "sb_vbar_a2";
target: "arrow2_vbar";
}
program {
@ -1054,7 +1051,6 @@ group { name: "e/modules/everything/thumbview/main/scrollframe";
program {
signal: "mouse,up,1"; source: "sb_vbar_a2";
action: STATE_SET "default" 0.0;
target: "sb_vbar_a2";
target: "arrow2_vbar";
}
program {
@ -1218,7 +1214,6 @@ group { name: "e/modules/everything/thumbview/main/scrollframe";
program {
signal: "mouse,down,1*"; source: "e.dragable.vbar";
action: STATE_SET "clicked" 0.0;
target: "e.dragable.vbar";
target: "shadow_vbar";
target: "glow_vbar";
target: "center_glow_vbar";
@ -1226,7 +1221,6 @@ group { name: "e/modules/everything/thumbview/main/scrollframe";
program {
signal: "mouse,up,1"; source: "e.dragable.vbar";
action: STATE_SET "default" 0.0;
target: "e.dragable.vbar";
target: "shadow_vbar";
target: "glow_vbar";
target: "center_glow_vbar";

View File

@ -806,13 +806,11 @@ group { name: "e/fileman/default/window/main";
program {
signal: "e,toolbar,left"; source: "e";
action: STATE_SET "tb_left" 0.0;
target: "e.swallow.toolbar";
target: "region";
}
program {
signal: "e,toolbar,right"; source: "e";
action: STATE_SET "tb_right" 0.0;
target: "e.swallow.toolbar";
target: "region";
}
program {

View File

@ -778,8 +778,6 @@
target: "icon_box_shadow";
target: "icon_box";
target: "base";
target: "icon_zoom";
target: "e.swallow.content";
target: "events";
after: "thumb_gen2";
}
@ -1059,8 +1057,6 @@
target: "icon_box_shadow";
target: "icon_box";
target: "base";
target: "icon_zoom";
target: "e.swallow.content";
target: "events";
target: "theme";
after: "thumb_gen2";
@ -1272,8 +1268,6 @@
target: "icon_box_shadow";
target: "icon_box";
target: "base";
target: "icon_zoom";
target: "e.swallow.content";
target: "events";
after: "thumb_gen2";
}

View File

@ -0,0 +1,39 @@
edc_files = [
'default.edc',
]
elm_themes = []
elm_themes_image_include = join_paths(meson.current_source_dir(), 'img')
foreach edc_file : edc_files
elm_themes += custom_target('edje_cc_' + edc_file,
input : edc_file,
depfile: '@BASENAME@.edj.d',
output : '@BASENAME@.edj',
command : edje_cc_exe + [ '-beta',
'-deps', '@DEPFILE@',
'-sd', join_paths(meson.current_source_dir(), 'snd'),
'-id', elm_themes_image_include,
'-id', join_paths(meson.current_source_dir(), 'fdo'),
'-fd', join_paths(meson.current_source_dir(), 'fnt'),
'@INPUT@', '@OUTPUT@'],
depends : edje_cc,
install : true,
install_dir : join_paths(dir_data, 'elementary', 'themes'),
)
endforeach
install_subdir('fdo',
install_dir : join_paths(dir_data, 'icons', 'Enlightenment-X'),
strip_directory : true,
exclude_directories : [
join_paths('status', '128-svg'),
join_paths('places', '16-svg'),
join_paths('places', '128-svg'),
join_paths('emblems', '96-svg'),
join_paths('devices', '128-svg'),
join_paths('categories', '128-svg'),
join_paths('actions', '128-svg'),
]
)

3
data/embryo/meson.build Normal file
View File

@ -0,0 +1,3 @@
install_data('default.inc',
install_dir : join_paths(dir_data, 'embryo', 'include')
)

13
data/eo/meson.build Normal file
View File

@ -0,0 +1,13 @@
install_data('eo_gdb.py',
install_dir : join_paths(dir_data, 'eo', 'gdb')
)
configuration = configuration_data()
configuration.set('datadir', dir_data)
configure_file(
input: 'libeo-gdb.py.in',
output: 'libeo.so.'+meson.project_version()+'-gdb.py',
configuration: configuration,
install_dir: join_paths(dir_data, 'gdb', 'autoload', 'usr', 'lib')
)

View File

@ -0,0 +1,14 @@
ethumb_frame = files('default.edc')
custom_target('edje_cc_ethumb_frame',
input : ethumb_frame,
output : '@BASENAME@.edj',
command : edje_cc_exe + [ '-beta',
'-sd', join_paths(meson.current_source_dir()),
'-id', join_paths(meson.current_source_dir()),
'-fd', join_paths(meson.current_source_dir()),
'@INPUT@', '@OUTPUT@'],
depends : edje_cc,
install : true,
install_dir : join_paths(dir_data, 'ethumb', 'frames'),
)

12
data/meson.build Normal file
View File

@ -0,0 +1,12 @@
checkme_files = ['ecore', 'ecore_imf', 'ecore_x', 'eeze', 'efreet', 'elua', 'emotion', 'ethumb', 'ethumb_client', 'evas']
foreach checkme : checkme_files
install_data(join_paths(checkme, 'checkme'),
install_dir : join_paths(dir_data, checkme)
)
endforeach
subdir('eo')
subdir('edje')
subdir('embryo')
subdir(join_paths('ethumb', 'frames'))
subdir('elementary')

18
dbus-services/meson.build Normal file
View File

@ -0,0 +1,18 @@
dep = dependency('dbus-1')
org_enlightenment_ethumb_service_config = configuration_data()
org_enlightenment_ethumb_service_config.set('prefix', dir_prefix)
systemd_dbus_prefix = '# '
if get_option('systemd') == true
systemd_dbus_prefix = ''
endif
org_enlightenment_ethumb_service_config.set('systemd_dbus_prefix',
systemd_dbus_prefix)
configure_file(
input: 'org.enlightenment.Ethumb.service.in',
output: 'org.enlightenment.Ethumb.service',
configuration: org_enlightenment_ethumb_service_config,
install_dir: dep.get_pkgconfig_variable('session_bus_services_dir'))

11
doc/docfx/.gitignore vendored Normal file
View File

@ -0,0 +1,11 @@
###############
# folder #
###############
/**/DROP/
/**/TEMP/
/**/packages/
/**/bin/
/**/obj/
_site
images
articles

28
doc/docfx/README Normal file
View File

@ -0,0 +1,28 @@
EFL DocFX SUPPORT
-----------------
DocFX (https://dotnet.github.io/docfx/) generates documentation HTML pages
directly from source code and Markdown files for C# projects.
Although significantly slow, it is a simple alternative while our own
documentation generator for C# is being written.
The scripts in this folder create a documentation site which contains the API
reference guide and articles with tutorials and guides.
The API guide is generated from the EFL mono sources, which are generated as
part of the normal build process.
The articles are fetched from the EFL www-content repository and adapted to
DocFX syntax.
USAGE
-----
First off, build EFL with C# support enabled so the C# sources are generated
(you will need to have mono 5 installed for this).
Then, from this folder, run the `setup.sh` script to download and extract the
DocFX binaries to the `bin` folder, fetch the articles from the `www-content`
repository and adapt them to the DocFX syntax.
Finally, run the `gendoc.sh` script (also from this folder) to produce the HTML
files. First run can take a long time (from 10' to 1h), subsequent runs use
cached results and take about 5 minutes.

5
doc/docfx/api/.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
###############
# temp file #
###############
*.yml
.manifest

5
doc/docfx/api/index.md Normal file
View File

@ -0,0 +1,5 @@
---
uid: api-reference-root
---
# EFL C# API reference documentation
Use the menu on the left to select a namespace or class.

73
doc/docfx/docfx.json Normal file
View File

@ -0,0 +1,73 @@
{
"metadata": [
{
"src": [
{
"src": "../..",
"files": [
"**/*.cs"
]
}
],
"dest": "api",
"filter": "filterConfig.yml",
"disableGitFeatures": false,
"disableDefaultFilter": false
}
],
"build": {
"content": [
{
"files": [
"api/**.yml",
"api/index.md"
]
},
{
"files": [
"articles/**.md",
"articles/**/toc.yml",
"toc.yml",
"*.md"
]
}
],
"resource": [
{
"files": ["e-logo-title.png"]
},
{
"files": [
"images/**"
]
}
],
"overwrite": [
{
"files": [
"apidoc/**.md"
],
"exclude": [
"obj/**",
"_site/**"
]
}
],
"globalMetadata": {
"_appLogoPath": "e-logo-title.png",
"_appFaviconPath": "e-logo-title.png"
},
"dest": "_site",
"globalMetadataFiles": [],
"fileMetadataFiles": [],
"template": [
"default"
],
"postProcessors": [],
"markdownEngineName": "markdig",
"noLangKeyword": false,
"keepFileLink": false,
"cleanupCacheHistory": false,
"disableGitFeatures": false
}
}

BIN
doc/docfx/e-logo-title.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -0,0 +1,7 @@
apiRules:
- include:
uidRegex: ^Efl
- include:
uidRegex: ^Eina
- exclude:
uidRegex: ^.*

26
doc/docfx/gendoc.sh Executable file
View File

@ -0,0 +1,26 @@
#!/bin/bash
# This script invokes the locally-installed DocFX to produce the reference
# documentation. Run it every time EO documentation changes.
# DocFX Step 1: Generate metadata (*.yml) files
mono bin/docfx.exe metadata docfx.json
# Process the generated metadata files:
# DocFX uses short names for all <see> links which is inconvenient for us
# because we have multiple types with the same name in different namespaces
# ("Object" can be "Efl.Object" or "Efl.Canvas.Object").
# MarkDown files can add "?displayProperty=fullName" to crefs to show them
# fully-qualified, but this is stripped out from triple-slash comments in C#
# source files.
#
# This script adds the displayProperty suffix to all cref links from the
# metadata yml files (by that time links have been turned into <xref href="">
# tags).
for f in `ls api/*.yml`; do
sed -e 's/\(<xref href="[^"]*\)"/\1?displayProperty=fullName"/g' -i $f
sed -e 's/\(<xref href=\\"[^\\]*\)\\"/\1?displayProperty=fullName\\"/g' -i $f
done;
# DocFX Step 2: Generate HTML files
mono bin/docfx.exe build docfx.json && echo "Docs ready in the _site folder!"

2
doc/docfx/index.md Normal file
View File

@ -0,0 +1,2 @@
# EFL C# Documentation site
Use the top menu to access the API reference documentation and the tutorial guides.

100
doc/docfx/setup.sh Executable file
View File

@ -0,0 +1,100 @@
#!/bin/bash
#
# This script installs DocFX and brings all content pages from EFL's documentation
# content repository, transforming them from DokuWiki's format to DocFX's.
# This step only needs to be done once (or every time the content pages change).
# After this step, you can run the gendoc.sh script as many times as you want,
# to generate the actual HTML pages, including the reference guide extracted from
# libefl_mono.dll and libefl_mono.xml
#
# This script could be improved a lot, but it gets the job done.
# Xavi (xartigas@yahoo.es)
#
# Check mono version since DocFX has been known to fail with mono 4.
#
mono_version="$(mono --version | awk '/version/ { print $5 }')"
if [ $mono_version \< 5 ];
then
echo "Requires at least mono version 5, detected $mono_version"
exit 1
fi;
#
# Download and extract DocFX
#
if [ ! -d "bin" ]; then
rm -rf docfx.zip bin
wget https://github.com/dotnet/docfx/releases/download/v2.40.4/docfx.zip
unzip -q docfx.zip -d bin
rm docfx.zip
else
echo "Skipping DocFX download because 'bin' folder already exists."
fi
#
# Clone whole Content site
#
rm -rf www-content
git clone --depth 1 git+ssh://git@git.enlightenment.org/website/www-content.git www-content
#
# Copy all pages related to C# (those inside a folder called 'csharp') to the articles folder
#
rm -rf articles
mkdir articles
# Copy them
find www-content -wholename "*/csharp/*.md.txt" -exec cp --parents {} articles \;
# Except tutorials and guides summary pages (start.md)
find articles/www-content/pages/develop/tutorials -name "start.md.txt" -exec rm {} \;
find articles/www-content/pages/develop/guides -name "start.md.txt" -exec rm {} \;
# Remove the trailing .txt from filenames (DocFX wants only the .md)
for f in `find articles -name "*.md.txt"`; do mv $f $(echo $f | rev | cut -c5- | rev) ; done
# Copy all media files to the images folder
rm -rf images
mkdir images
cp -r www-content/media/* images
# Remove git clone now that we have everything we wanted
rm -rf www-content
#
# Parse all Markdown files to adapt them to DocFX
#
# Remove special Dokuwiki headers like ~~NOCACHE~~ because DocFX complains about them.
find articles -name "*.md" | xargs sed -i -e "s/^~~.*~~$//g"
# Transform media links in articles from /_media/* to ~/images/*
find articles -name "*.md" | xargs sed -i -e "s#/_media#~/images#g"
# Transform API root links from /develop/api/ to @api-reference-root (the UID of the API root)
find articles -name "*.md" | xargs sed -i -e "s#\(\[[^]]*\](\)/develop/api/)#\1xref:api-reference-root)#g"
# Transform API class links from */api/namespace/class to @Namespace.Class (that should be the UID of the reference page)
find articles -name "*.md" | xargs sed -i -e "s#\(\[[^]]*\](\)[^)]*/api/\([^/.]*\)/\([^/.]*\))#\1xref:\u\2.\u\3)#g"
# Point links to Legacy API to the www.enlightenment.org site
find articles -name "*.md" | xargs sed -i -e "s#\(\[[^]]*\](\)\(/develop/legacy/api/[^)]*)\)#\1https://www.enlightenment.org\2#g"
# Point the rest of links to /develop/api/* to the root the API, since we don't know how to transform them
find articles -name "*.md" | xargs sed -i -e "s#\(\[[^]]*\](\)/develop/api/[^)]*)#\1xref:api-reference-root)#g"
# Add start.md to links pointing to a folder inside ~/develop/
find articles -name "*.md" | xargs sed -i -e "s#\(\[[^]]*\](/develop/[^)]*/\))#\1start.md)#g"
# Transform absolute links from /develop/* to ~/articles/www-content/pages/develop/*
find articles -name "*.md" | xargs sed -i -e "s#\(\[[^]]*\]\)(\(/develop/[^)]*\))#\1(~/articles/www-content/pages\2)#g"
# Transform page anchor links from [label](#Anchor_Title) to [label](#anchor-title).
for f in `find articles -name "*.md"`; do
awk -v RS=' ' '{ if ($0 ~ ".*\(#.*\)") { gsub( /_/, "-" ); printf "%s ", tolower($0) } else { printf "%s ",$0 } }' $f > /tmp/efl_docfx_setup.tmp
mv /tmp/efl_docfx_setup.tmp $f
done
#
# Populate articles TOC file from the articles' titles
#
cd articles
rm -f toc.yml
echo "- name: Setup Guide" >> toc.yml
echo " href: www-content/pages/develop/setup/csharp/start.md" >> toc.yml
echo "- name: Tutorials" >> toc.yml
echo " items:" >> toc.yml
find www-content/pages/develop/tutorials -name "*.md" -exec sh -c "cat {} | grep '^# ' && echo ' href: {}'" \; >> toc.yml
echo "- name: Guides" >> toc.yml
echo " items:" >> toc.yml
find www-content/pages/develop/guides -name "*.md" -exec sh -c "cat {} | grep '^# ' && echo ' href: {}'" \; >> toc.yml
sed -i -e "s/^# \(.*\) #/ - name: '\1'/g" toc.yml
sed -i -e "s/ in C#//g" toc.yml
cd ..

5
doc/docfx/toc.yml Normal file
View File

@ -0,0 +1,5 @@
- name: REFERENCE
href: api/
homepage: api/index.md
- name: GUIDES
href: articles/

Some files were not shown because too many files have changed in this diff Show More