Yes, I already have the support libs: Android SDK manager shows Rev 20
And I found it installed here: $ ls $ANDROID_SDK/extras/android/compatibility/v7/appcompat AndroidManifest.xml libs project.properties README.txt res src On 07/13/2014 12:11 PM, Armin Novak wrote: > appcompat is part of the sdk support libraries, check that they are installed. > > On 13 July 2014 18:04:00 CEST, Gerry Reno <gr...@verizon.net> wrote: > > This OpenSLES issue was fixed by making sure that the default NDK api is > set to 9 inside the updated > AndroidToolchain.cmake file. > > So now cmake configures things. > > And make successfully builds the libraries necessary for building the > apk's under client/Android. > > But there is now a problem with appcompat_v7. > > When I run 'ant debug' in aFreeRDP I see this: > > aFreeRDP]$ ant debug > Buildfile: > /home/greno/build/g-reno/FreeRDP/client/Android/aFreeRDP/build.xml > > -set-mode-check: > > -set-debug-files: > > -check-env: > [checkenv] Android SDK Tools Revision 23.0.0 > [checkenv] Installed at /usr/local/android-sdk-linux_x86 > > -setup: > [echo] Project Name: aFreeRDP > [gettype] Project Type: Application > > -set-debug-mode: > > -debug-obfuscation-check: > > -pre-build: > > -build-setup: > [getbuildtools] Using latest Build Tools: 20.0.0 > [echo] Resolving Build Target for aFreeRDP... > [gettarget] Project Target: Android 4.0 > [gettarget] API level: 14 > [echo] ---------- > [echo] Creating output directories if needed... > [mkdir] Created dir: > /home/greno/build/g-reno/FreeRDP/client/Android/aFreeRDP/bin > [mkdir] Created dir: > /home/greno/build/g-reno/FreeRDP/client/Android/aFreeRDP/bin/res > [mkdir] Created dir: > /home/greno/build/g-reno/FreeRDP/client/Android/aFreeRDP/bin/rsObj > [mkdir] Created dir: > /home/greno/build/g-reno/FreeRDP/client/Android/aFreeRDP/bin/rsLibs > [mkdir] Created dir: > /home/greno/build/g-reno/FreeRDP/client/Android/aFreeRDP/gen > [mkdir] Created dir: > /home/greno/build/g-reno/FreeRDP/client/Android/aFreeRDP/bin/classes > [mkdir] Created dir: > /home/greno/build/g-reno/FreeRDP/client/Android/aFreeRDP/bin/dexedLibs > [echo] ---------- > [echo] Resolving Dependencies for aFreeRDP... > > BUILD FAILED > /usr/local/android-sdk-linux_x86/tools/ant/build.xml:577: > ../appcompat_v7 resolve to a path with no > project.properties file for project > /home/greno/build/g-reno/FreeRDP/client/Android/FreeRDPCore > > Total time: 1 second > > And when I look under client/Android/appcompat_v7 it is empty directory. > > Either this library reference in project.properties is not right or there > needs to be content added under appcompat_v7. > > > > > On 07/11/2014 04:48 PM, Gerry Reno wrote: > > According to comments in the file, it appears that > cmake/FindOpenSLES.cmake looks for certain sound header > files like dsound.h and OpenSLES.h to determine whether OpenSLES is > found: dsound.h is not found anywhere but > OpenSLES.h is found FreeRDP]$ find /usr/local/android-ndk-r9d -iname > "dsound.h" FreeRDP]$ find /usr -iname > "dsound.h" FreeRDP]$ find /usr/local/android-ndk-r9d -iname > "opensles.h" > > /usr/local/android-ndk-r9d/platforms/android-18/arch-arm/usr/include/SLES/OpenSLES.h > > /usr/local/android-ndk-r9d/platforms/android-18/arch-mips/usr/include/SLES/OpenSLES.h > > /usr/local/android-ndk-r9d/platforms/android-18/arch-x86/usr/include/SLES/OpenSLES.h > ... Since dsound.h is not > found that appears to be causing the cmake to fail. But I didn't find > dsound.h in any NDK. So is this right? > On 07/11/2014 04:07 PM, Gerry Reno wrote: > > So even when this change is applied to > scripts/android_setup_build_env.sh <http://env.sh> we still have > two errors remaining: FreeRDP]$ cmake > -DCMAKE_TOOLCHAIN_FILE=cmake/AndroidToolchain.cmake > -DANDROID_NDK="$ANDROID_NDK" > -DFREERDP_EXTERNAL_SSL_PATH="/home/greno/build/FreeRDP/external/openssl" > > -DFREERDP_EXTERNAL_JPEG_PATH="/home/greno/build/FreeRDP/external/jpeg8d" > -DANDROID_SDK="$ANDROID_SDK" > -DANDROID_BUILD_JAVA=OFF -DCMAKE_BUILD_TYPE=Debug -- Could NOT > find PkgConfig (missing: > PKG_CONFIG_EXECUTABLE) -- FreeRDP GIT-dirty -- Git Revision > 1.2.0-beta1+android7-302-gc99d4 -- Performing > Test Wno-unused-result -- Performing Test Wno-unused-result - > Success -- Performing Test > Wno-unused-but-set-variable -- Performing Test > Wno-unused-but-set-variable - Success -- Performing Test > Wno-deprecated-declarations -- Performing Test > Wno-deprecated-declarations - Success -- Performing Test > Wno-deprecated-declarationsCXX -- Performing Test > Wno-deprecated-declarationsCXX - Success -- Looking for > include file fcntl.h -- Looking for include file fcntl.h - found > -- Looking for include file unistd.h -- > Looking for include file unistd.h - found -- Looking for include > file stdint.h -- Looking for include file > stdint.h - found -- Looking for include file inttypes.h -- > Looking for include file inttypes.h - found -- > Looking for include file sys/modem.h -- Looking for include file > sys/modem.h - not found. -- Looking for > include file sys/filio.h -- Looking for include file sys/filio.h > - not found. -- Looking for include file > sys/strtio.h -- Looking for include file sys/strtio.h - not > found. -- Looking for include file > sys/select.h -- Looking for include file sys/select.h - found -- > Performing Test HAVE_TM_GMTOFF -- > Performing Test HAVE_TM_GMTOFF - Success -- Looking for > pthread_tryjoin_np in pthread -- Looking for > pthread_tryjoin_np in pthread - not found -- Looking for include > file sys/eventfd.h -- Looking for include > file sys/eventfd.h - not found. -- Looking for include file > sys/eventfd.h -- Looking for include file > sys/eventfd.h - not found. -- Looking for include file > sys/timerfd.h -- Looking for include file > sys/timerfd.h - not found. -- Looking for include file poll.h -- > Looking for include file poll.h - found > -- Skipping disabled feature X11 for X11 (X11 client and server) > -- Skipping disabled feature DirectFB for > DirectFB (DirectFB client) -- Finding required feature ZLIB for > compression (data compression) -- Found > ZLIB: > /usr/local/android-ndk/platforms/android-8/arch-arm/usr/lib/libz.so > <http://libz.so> (found version > "1.2.3") -- Finding required feature OpenSSL for cryptography > (encryption, certificate validation, hashing > functions) -- Found OpenSSL: > > /home/greno/build/FreeRDP/external/openssl/lib/libssl.a;/home/greno/build/FreeRDP/external/openssl/lib/libcrypto.a > (found version "1.0.1h") -- Finding required feature OpenSLES for > multimedia (OpenSLES audio / video) -- > Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE) -- > Could NOT find OPENSLES (missing: > OPENSLES_INCLUDE_DIR OPENSLES_LIBRARY) CMake Error at > cmake/FindOpenSLES.cmake:32 (message): Could NOT > find OPENSLES Call Stack (most recent call first): > cmake/FindFeature.cmake:16 (find_package) > CMakeLists.txt:501 (find_feature) -- Configuring incomplete, > errors occurred! I have pkg-config installed > so I don't understand the pkg-config error: FreeRDP]$ which > pkg-config /usr/bin/pkg-config And OpenSLES is > in the NDK so I don't understand this error either: FreeRDP]$ > find $ANDROID_NDK -iname "*sles*" -follow > /usr/local/android-ndk/docs/opensles > > /usr/local/android-ndk/tests/build/issue53163-OpenSLES_AndroidConfiguration > > /usr/local/android-ndk/tests/build/issue53163-OpenSLES_AndroidConfiguration/jni/issue53163-OpenSLES_AndroidConfiguration.c > > /usr/local/android-ndk/platforms/android-18/arch-arm/usr/include/SLES > > /usr/local/android-ndk/platforms/android-18/arch-arm/usr/include/SLES/OpenSLES_Android.h > > /usr/local/android-ndk/platforms/android-18/arch-arm/usr/include/SLES/OpenSLES.h > ... On 07/11/2014 12:53 > PM, Gerry Reno wrote: > > Can someone apply this patch to FreeRDP master: FreeRDP]$ git > diff scripts/android_setup_build_env.sh > <http://env.sh> diff --git > a/scripts/android_setup_build_env.sh <http://env.sh> > b/scripts/android_setup_build_env.sh <http://env.sh> index > d8d6e8d..8a4208e 100755 --- > a/scripts/android_setup_build_env.sh <http://env.sh> +++ > b/scripts/android_setup_build_env.sh > <http://env.sh> @@ -45,7 +45,8 @@ echo "Preparing OpenSSL..." > OPENSSL_SRC=$ROOT/openssl-build if [ -d > $OPENSSL_SRC ]; then cd $OPENSSL_SRC - git pull + git > checkout 1.0.1h + git pull origin 1.0.1h > RETVAL=$? else git clone $OPENSSL_SCM $OPENSSL_SRC @@ -58,7 > +59,7 @@ fi cd $OPENSSL_SRC # We want to > build a specific TAG -git checkout $OPENSSL_TAG +# git > checkout $OPENSSL_TAG make clean With this > change I can get openssl-android pulled in and building > correctly while master is being reconfigured. > Notice I had to remove the git checkout $OPENSSL_TAG because > it blows out the changes that were made > to setenv-android-4.1.sh <http://setenv-android-4.1.sh>. If > there's a better way please do it. Maybe > updating the tag. But then it would need updated for every > change or new tag defined. On 07/11/2014 > 10:04 AM, Gerry Reno wrote: > > Thanks for adding r9d test but it needs modified. It gets > incorrectly set back to r9c because the > script has r9d tested before r9c and so it resets back to > r9c. also how about this for setting > ARCH and the PATH? : for i in linux darwin do > ARCH="$(echo $ANDROID_NDK/prebuilt/$i-x86* | sed > "s:$ANDROID_NDK/prebuilt/$i-::")" if [ -d > > $ANDROID_NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/$i-$ARCH/bin ]; > then > > PATH=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/$i-$ARCH/bin:$PATH > break; fi done > On 07/11/2014 08:53 AM, Gerry Reno wrote: > > On 07/11/2014 08:21 AM, Armin Novak wrote: > > Ok, fixed the bug with the wrong FIPS version in > setenv-android-4.1.sh > <http://setenv-android-4.1.sh>. As for 32bit NDK > on a 64bit system, well I don't know an > easy way to detect such a kind of setup. You will > have to continue editing the file or > just use the 64bit NDK. > > In linux shell you can set NDK ARCH using this: > ARCH="$(echo $ANDROID_NDK/prebuilt/linux-x86* > | sed "s:$ANDROID_NDK/prebuilt/linux-::")" Also could > you please add in the test for NDK r9d? > if [ -d /usr/local/android-ndk-r9d ]; then export > ANDROID_NDK=/usr/local/android-ndk-r9d fi > > On Fri, 2014-07-11 at 07:39 -0400, Gerry Reno > wrote: > > Answers inline. On 07/11/2014 04:16 AM, Armin > Novak wrote: > > On Thu, 2014-07-10 at 20:39 -0400, Gerry > Reno wrote: > > After I make a few modifications to > > external/openssl-build/setenv-android-4.1.sh <http://setenv-android-4.1.sh> > for my environment then... This is > the only error I get from building the > external libs. > > /home/greno/build/FreeRDP/external/openssl-build/openssl-1.0.1h/../fips/bin/fipsld: > line 186: > > /home/greno/build/FreeRDP/external/openssl-build/openssl-fips-2.0.5/util/incore: > No such file or directory make[3]: > *** [link_app.] Error 1 make[3]: Leaving > directory > > `/home/greno/build/FreeRDP/external/openssl-build/openssl-1.0.1h/apps' > make[2]: *** [openssl] Error 2 > make[2]: Leaving directory > > `/home/greno/build/FreeRDP/external/openssl-build/openssl-1.0.1h/apps' > make[1]: *** [build_apps] Error 1 > make[1]: Leaving directory > > `/home/greno/build/FreeRDP/external/openssl-build/openssl-1.0.1h' Q: Is this > missing incore a problem or can I > ignore it? > > Well, the unmodified script from current > FreeRDP master works without this error. > So this must be a problem with your > modifications. > > I don't think it's a problem with my > modification. I use x86 NDK on Linux x86_64 so > you cannot just set ARCH=`uname -m` to > properly set it. You have to find out what arch > type of NDK is installed. For now I just set > ARCH=x86 And the fips version is what is > wrong: FreeRDP]$ ls > > /home/greno/build/FreeRDP/external/openssl-build/openssl-fips-2.0.5/util/incore > ls: > cannot access > > /home/greno/build/FreeRDP/external/openssl-build/openssl-fips-2.0.5/util/incore: > No > such file or directory You have new mail in > /var/spool/mail/greno FreeRDP]$ FreeRDP]$ > ls > /home/greno/build/FreeRDP/external/openssl-build/openssl-fips-2.0.7/util/incore > > /home/greno/build/FreeRDP/external/openssl-build/openssl-fips-2.0.7/util/incore > There > is an incore under openssl-fips-2.0.7 but not > under openssl-fips-2.0.5 So checking > setenv-android-4.1.sh > <http://setenv-android-4.1.sh> I see that openssl-fips-2.0.5 is > hard-coded in setenv-android-4.1.sh > <http://setenv-android-4.1.sh> even though now > openssl-fips-2.0.7 is what you get from git. > > I see that now static libs get built: > FreeRDP]$ ls external/openssl/lib > libcrypto.a libssl.a FreeRDP]$ ls > external/jpeg8d/lib libjpeg.a FreeRDP]$ ls > > external/android-ndk-profiler/obj/local/armeabi-v7a/ libandroid-ndk-profiler.a > objs > > Good, so the libraries are created... > > This drives the android cmake script > in the proper direction now. Only see two > errors remaining: -- Could NOT find > PkgConfig (missing: PKG_CONFIG_EXECUTABLE) > -- Could NOT find OPENSLES (missing: > OPENSLES_INCLUDE_DIR OPENSLES_LIBRARY) Q: > Does Android cross compile need > PkgConfig? Q: And isn't OpenSLES part of NDK? > > Is ANDROID_NDK properly defined? > > Yes. Had to modify setenv-android-4.1.sh > <http://setenv-android-4.1.sh> script to > support ndk r9d. And it does set properly. if > [ -d /usr/local/android-ndk-r9d ]; then > export ANDROID_NDK=/usr/local/android-ndk-r9d > fi It looks like the compiles use it: > > /usr/local/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc > ... > > Did you remove an old CMakeCache.txt file > (cmake caches previous detection results)? > > Yes. Multiple times. > > On 07/08/2014 03:26 PM, Gerry Reno > wrote: > > Tried this again today and here's > what happens when you run cmake in a new > clone tree (after running > scripts/android_setup_build_env.sh > <http://env.sh> edited to add > 'git checkout 1.0.1h'): Using CMake 2.8.9 > FreeRDP]$ cmake > -DCMAKE_TOOLCHAIN_FILE=cmake/AndroidToolchain.cmake > -DANDROID_NDK="$ANDROID_NDK" > > -DFREERDP_EXTERNAL_SSL_PATH="/home/greno/build/FreeRDP/external/openssl" > > -DFREERDP_EXTERNAL_JPEG_PATH="/home/greno/build/FreeRDP/external/jpeg8d" > -DANDROID_SDK="$ANDROID_SDK" > -DANDROID_BUILD_JAVA=OFF > -DCMAKE_BUILD_TYPE=Debug -- > FreeRDP GIT-dirty -- Git Revision > 1.2.0-beta1+android7-222-g190c -- > Finding recommended feature X11 for X11 > (X11 client and server) -- > Disable feature X11 using "-DWITH_X11=OFF" -- > Skipping optional feature > DirectFB for DirectFB (DirectFB client) -- > Enable feature DirectFB using > "-DWITH_DIRECTFB=ON" -- Finding required > feature ZLIB for compression > (data compression) -- Finding required > feature OpenSSL for cryptography > (encryption, certificate validation, > hashing functions) -- Skipping > optional feature OpenSLES for multimedia > (OpenSLES audio / video) -- > Enable feature OpenSLES using > "-DWITH_OPENSLES=ON" -- Finding > recommended feature ALSA for sound (audio > input, audio output and > multimedia redirection) -- Disable feature ALSA > using "-DWITH_ALSA=OFF" -- > Skipping optional feature Pulse for sound > (audio input, audio output and > multimedia redirection) -- Enable feature > Pulse using "-DWITH_PULSE=ON" -- > Skipping optional feature Cups for > printing (printer device > redirection) -- Enable feature Cups using > "-DWITH_CUPS=ON" -- Skipping > optional feature PCSC for smart card (smart > card device redirection) -- > Enable feature PCSC using "-DWITH_PCSC=ON" -- > Skipping recommended feature > FFmpeg for multimedia (multimedia > redirection, audio and video > playback) -- Skipping optional feature > GStreamer_0_10 for multimedia > (multimedia redirection, audio and video > playback, gstreamer 0.10 version) > -- Enable feature GStreamer_0_10 using > "-DWITH_GSTREAMER_0_10=ON" -- > Skipping recommended feature GStreamer_1_0 > for multimedia (multimedia > redirection, audio and video playback) -- > Skipping optional feature JPEG > for codec (use JPEG library) -- Enable > feature JPEG using > "-DWITH_JPEG=ON" -- Skipping optional feature GSM for > codec (GSM audio codec library) > -- Enable feature GSM using > "-DWITH_GSM=ON" -- Skipping > optional feature IPP for performance (Intel > Integrated Performance Primitives > library) -- Enable feature IPP using > "-DWITH_IPP=ON" -- FreeRDP > GIT-dirty -- Finding recommended feature > XKBFile for X11 keyboard (X11 > keyboard file extension) -- Disable feature > XKBFile using > "-DWITH_XKBFILE=OFF" -- Adding static channel client server > "rdpdr": Device Redirection > Virtual Channel Extension -- Adding dynamic > channel client "rdpgfx": Graphics > Pipeline Extension -- Adding static > channel client server "remdesk": > Remote Assistance Virtual Channel > Extension -- Adding dynamic > channel client "tsmf": Video Redirection > Virtual Channel Extension -- > Adding dynamic channel client server "audin": > Audio Input Redirection Virtual > Channel Extension -- Adding device channel > client "parallel": Parallel Port > Virtual Channel Extension -- Adding > static channel client server > "rdpsnd": Audio Output Virtual Channel > Extension -- Adding static > channel client server "cliprdr": Clipboard > Virtual Channel Extension -- > Adding static channel client server > "drdynvc": Dynamic Virtual > Channel Extension -- Adding device channel > client "serial": Serial Port > Virtual Channel Extension -- Adding dynamic > channel client "disp": Display > Update Virtual Channel Extension -- Adding > dynamic channel client "echo": > Echo Virtual Channel Extension -- Adding > static channel client "rail": > Remote Programs Virtual Channel Extension -- > Adding device channel client > "smartcard": Smart Card Virtual Channel > Extension -- Adding dynamic > channel client "rdpei": Input Virtual Channel > Extension -- Adding device > channel client "drive": Drive Redirection > Virtual Channel Extension -- > Adding static channel client server > "encomsp": Multiparty Virtual > Channel Extension -- Could NOT find DocBook > XSL stylesheets (missing: > DOCBOOKXSL_DIR) CMake Warning at > client/X11/CMakeLists.txt:119 > (message): WITH_MANPAGES was set, but > xsltproc was not found. man-pages > will not be installed -- Finding > required feature XShm for X11 > shared memory (X11 shared memory extension) > -- Finding recommended feature > Xinerama for multi-monitor (X11 > multi-monitor extension) -- > Disable feature Xinerama using > "-DWITH_XINERAMA=OFF" -- Finding > recommended feature Xext for X11 > extension (X11 core extensions) > -- Disable feature Xext using > "-DWITH_XEXT=OFF" -- Finding > recommended feature Xcursor for cursor (X11 > cursor extension) -- Disable > feature Xcursor using "-DWITH_XCURSOR=OFF" -- > Finding recommended feature Xv > for video (X11 video extension) -- Disable > feature Xv using "-DWITH_XV=OFF" > -- Finding recommended feature Xi for > input (X11 input extension) -- > Disable feature Xi using "-DWITH_XI=OFF" -- > Finding recommended feature > Xrender for rendering (X11 render extension) > -- Disable feature Xrender using > "-DWITH_XRENDER=OFF" -- Configuring done > -- Generating done CMake Warning: > Manually-specified variables were not > used by the project: > ANDROID_BUILD_JAVA ANDROID_NDK ANDROID_SDK > FREERDP_EXTERNAL_JPEG_PATH > FREERDP_EXTERNAL_SSL_PATH -- Build files have > been written to: > /home/greno/build/FreeRDP And then here is what happens > when you run make: FreeRDP]$ make > Scanning dependencies of target > winpr-crt [ 0%] Building C object > > winpr/libwinpr/crt/CMakeFiles/winpr-crt.dir/alignment.c.o [ 0%] Building C > object > winpr/libwinpr/crt/CMakeFiles/winpr-crt.dir/conversion.c.o [ 1%] > Building C object > winpr/libwinpr/crt/CMakeFiles/winpr-crt.dir/buffer.c.o [ > 1%] Building C object > > winpr/libwinpr/crt/CMakeFiles/winpr-crt.dir/memory.c.o [ 1%] Building C > object > winpr/libwinpr/crt/CMakeFiles/winpr-crt.dir/string.c.o [ 1%] > Building C object > winpr/libwinpr/crt/CMakeFiles/winpr-crt.dir/unicode.c.o > [ 2%] Building C object > > winpr/libwinpr/crt/CMakeFiles/winpr-crt.dir/utf.c.o Linking C shared > library libwinpr-crt.so > <http://libwinpr-crt.so> [ 2%] Built target > winpr-crt Scanning dependencies > of target winpr-nt [ 2%] Building C object > > winpr/libwinpr/nt/CMakeFiles/winpr-nt.dir/nt.c.o Linking C shared library > libwinpr-nt.so > <http://libwinpr-nt.so> [ 2%] Built target winpr-nt > Scanning dependencies of target > winpr-error [ 2%] Building C object > > winpr/libwinpr/error/CMakeFiles/winpr-error.dir/error.c.o Linking C shared > library libwinpr-error.so > <http://libwinpr-error.so> [ 2%] Built target > winpr-error Scanning dependencies > of target winpr-environment [ 2%] > Building C object > > winpr/libwinpr/environment/CMakeFiles/winpr-environment.dir/environment.c.o > Linking > C shared library > libwinpr-environment.so <http://libwinpr-environment.so> > [ 2%] Built target > winpr-environment Scanning dependencies of target > winpr-heap [ 3%] Building C object > > winpr/libwinpr/heap/CMakeFiles/winpr-heap.dir/heap.c.o Linking C shared > library libwinpr-heap.so > <http://libwinpr-heap.so> [ 3%] Built target > winpr-heap Scanning dependencies > of target winpr-path [ 3%] Building C > object > winpr/libwinpr/path/CMakeFiles/winpr-path.dir/path.c.o [ 4%] > Building C object > winpr/libwinpr/path/CMakeFiles/winpr-path.dir/shell.c.o > Linking C shared library > libwinpr-path.so <http://libwinpr-path.so> [ 4%] > Built target winpr-path Scanning > dependencies of target winpr-handle [ 4%] > Building C object > > winpr/libwinpr/handle/CMakeFiles/winpr-handle.dir/handle.c.o Linking C > shared library libwinpr-handle.so > <http://libwinpr-handle.so> [ 4%] Built > target winpr-handle Sc > > > -- > Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet. ------------------------------------------------------------------------------ _______________________________________________ FreeRDP-devel mailing list FreeRDP-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freerdp-devel