mirror of
https://github.com/servalproject/serval-dna.git
synced 2024-12-22 06:27:51 +00:00
Added code to build NaCl in with Serval DNA when doing a JNI build.
This commit is contained in:
parent
60e391ecd5
commit
fff5c5ddae
42
Android-without-NaCl.mk
Normal file
42
Android-without-NaCl.mk
Normal file
@ -0,0 +1,42 @@
|
||||
LOCAL_PATH:= $(call my-dir)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES:= \
|
||||
client.c \
|
||||
export.c \
|
||||
overlay.c \
|
||||
overlay_abbreviations.c \
|
||||
overlay_advertise.c \
|
||||
overlay_buffer.c \
|
||||
overlay_interface.c \
|
||||
overlay_packetformats.c \
|
||||
overlay_payload.c \
|
||||
overlay_route.c \
|
||||
responses.c \
|
||||
srandomdev.c \
|
||||
batman.c \
|
||||
dataformats.c \
|
||||
gateway.c \
|
||||
packetformats.c \
|
||||
server.c \
|
||||
ciphers.c \
|
||||
dna.c \
|
||||
hlrdata.c \
|
||||
peers.c \
|
||||
simulate.c
|
||||
|
||||
LOCAL_MODULE:= dna
|
||||
|
||||
LOCAL_CFLAGS += \
|
||||
-DSHELL -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" \
|
||||
-DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" \
|
||||
-DHAVE_LIBC=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 \
|
||||
-DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 \
|
||||
-DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDIO_H=1 \
|
||||
-DHAVE_ERRNO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRINGS_H=1 -DHAVE_UNISTD_H=1 \
|
||||
-DHAVE_STRING_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_SOCKET_H=1 \
|
||||
-DHAVE_SYS_MMAN_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_POLL_H=1 -DHAVE_NETDB_H=1
|
||||
|
||||
include $(BUILD_EXECUTABLE)
|
||||
|
25
nacl-jni-prep
Executable file
25
nacl-jni-prep
Executable file
@ -0,0 +1,25 @@
|
||||
# Fetch latest version of source as recommended by nacl installation page
|
||||
[ -e nacl-source.tar.bz2 ] || \
|
||||
`wget -q -O - http://nacl.cr.yp.to/install.html | grep wget | sed -e 's/^ *//g' -e 's/^wget /wget -O nacl-source.tar.bz2 /'`
|
||||
|
||||
# Extract tarball
|
||||
bzip2 -d nacl-source.tar.bz2
|
||||
mkdir nacl-source
|
||||
cd nacl-source
|
||||
tar xvf ../nacl-source.tar
|
||||
nacldir=`echo *`
|
||||
cd ${nacldir}
|
||||
|
||||
# Now build the actual compilable sources using our
|
||||
# hacked version of NaCl's 'do' script
|
||||
cp ../../nacl-prepare-sources .
|
||||
chmod 755 nacl-prepare-sources
|
||||
./nacl-prepare-sources
|
||||
cd nacl-source
|
||||
|
||||
# Now build Android.mk with the extra .c files listed
|
||||
sources=`echo -n *.c`
|
||||
cat ../../../Android-without-nacl.mk | sed -e 's/LOCAL_SRC_FILES:= \\/LOCAL_SRC_FILES:= '"${sources}"' \\/' > ../../../Android.mk
|
||||
|
||||
ls -1 *.c *.h >../../../nacl-sources.list
|
||||
mv *.c *.h ../../../
|
142
nacl-prepare-sources
Executable file
142
nacl-prepare-sources
Executable file
@ -0,0 +1,142 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Prepare NaCl source files and include files for compilation with Serval DNA,
|
||||
# possibly using the Android NDK to produce a JNI compatible library.
|
||||
# Android and JNI complicate matters substantially, and prevent us just building
|
||||
# the .a the way that NaCl was intended. The cross compilation environment
|
||||
# will play havoc for a start.
|
||||
|
||||
# Derived from:
|
||||
# nacl/do
|
||||
# D. J. Bernstein
|
||||
# Public domain.
|
||||
|
||||
version=`cat version`
|
||||
project=nacl
|
||||
work=nacl-source
|
||||
|
||||
# and work around bug in GNU sort
|
||||
LANG=C
|
||||
export LANG
|
||||
|
||||
rm -rf "$work"
|
||||
mkdir -p "$work"
|
||||
|
||||
# PGS - Create a couple of missing files needed
|
||||
cp randombytes/devurandom.h ${work}/randombytes.h
|
||||
cat <<EOF > ${work}/crypto_uint32.h
|
||||
#ifndef CRYPTO_UINT32
|
||||
#define CRYPTO_UINT32
|
||||
|
||||
typedef unsigned int crypto_uint32;
|
||||
|
||||
#endif
|
||||
EOF
|
||||
|
||||
# loop over operations
|
||||
cat OPERATIONS \
|
||||
| while read o
|
||||
do
|
||||
[ -d "$o" ] || continue
|
||||
|
||||
selected=''
|
||||
[ -f "$o/selected" ] && selected=`cat "$o/selected"`
|
||||
|
||||
# for each operation, loop over primitives
|
||||
ls "$o" \
|
||||
| sort \
|
||||
| while read p
|
||||
do
|
||||
[ -d "$o/$p" ] || continue
|
||||
expectedchecksum=''
|
||||
[ -f "$o/$p/checksum" ] && expectedchecksum=`cat "$o/$p/checksum"`
|
||||
op="${o}_${p}"
|
||||
|
||||
startdate=`date +%Y%m%d`
|
||||
|
||||
# for each operation primitive abi, loop over implementations
|
||||
find "$o/$p" -follow -name "api.h" \
|
||||
| grep ref \
|
||||
| sort \
|
||||
| while read doth
|
||||
do
|
||||
implementationdir=`dirname $doth`
|
||||
opi=`echo "$implementationdir" | tr ./- ___`
|
||||
|
||||
echo "=== `date` === $abi $implementationdir"
|
||||
|
||||
cfiles=`ls "$implementationdir" | grep '\.c$' || :`
|
||||
sfiles=`ls "$implementationdir" | grep '\.[sS]$' || :`
|
||||
cppfiles=`ls "$o" | grep '\.cpp$' || :`
|
||||
|
||||
cp -p "$o"/*.c "$work"
|
||||
cp -p "$o"/*.cpp "$work"
|
||||
|
||||
cp -pr "$implementationdir"/* "$work"
|
||||
|
||||
cp -p MACROS "$work/MACROS"
|
||||
cp -p PROTOTYPES.c "$work/compile/PROTOTYPES.c"
|
||||
cp -p PROTOTYPES.cpp "$work/compile/PROTOTYPES.cpp"
|
||||
|
||||
(
|
||||
cd "$work"
|
||||
(
|
||||
echo "#ifndef ${o}_H"
|
||||
echo "#define ${o}_H"
|
||||
echo ""
|
||||
echo "#include \"${op}.h\""
|
||||
echo ""
|
||||
egrep "${o}"'$|'"${o}"'\(|'"${o}"'_' < MACROS \
|
||||
| sed "s/$o/$op/" | while read mop
|
||||
do
|
||||
echo "#define ${mop} ${mop}" | sed "s/$op/$o/"
|
||||
done
|
||||
echo "#define ${o}_PRIMITIVE \"${p}\""
|
||||
echo "#define ${o}_IMPLEMENTATION ${op}_IMPLEMENTATION"
|
||||
echo "#define ${o}_VERSION ${op}_VERSION"
|
||||
echo ""
|
||||
echo "#endif"
|
||||
) > "$o.h"
|
||||
(
|
||||
echo "#ifndef ${op}_H"
|
||||
echo "#define ${op}_H"
|
||||
echo ""
|
||||
sed 's/[ ]CRYPTO_/ '"${opi}"'_/g' < api.h
|
||||
echo '#ifdef __cplusplus'
|
||||
echo '#include <string>'
|
||||
egrep "${o}"'$|'"${o}"'\(|'"${o}"'_' < PROTOTYPES.cpp \
|
||||
| sed "s/$o/$opi/"
|
||||
echo 'extern "C" {'
|
||||
echo '#endif'
|
||||
egrep "${o}"'$|'"${o}"'\(|'"${o}"'_' < PROTOTYPES.c \
|
||||
| sed "s/$o/$opi/"
|
||||
echo '#ifdef __cplusplus'
|
||||
echo '}'
|
||||
echo '#endif'
|
||||
echo ""
|
||||
egrep "${o}"'$|'"${o}"'\(|'"${o}"'_' < MACROS \
|
||||
| sed "s/$o/$opi/" | while read mopi
|
||||
do
|
||||
echo "#define ${mopi} ${mopi}" | sed "s/$opi/$op/"
|
||||
done
|
||||
echo "#define ${op}_IMPLEMENTATION \"${implementationdir}\""
|
||||
echo "#ifndef ${opi}_VERSION"
|
||||
echo "#define ${opi}_VERSION \"-\""
|
||||
echo "#endif"
|
||||
echo "#define ${op}_VERSION ${opi}_VERSION"
|
||||
echo ""
|
||||
echo "#endif"
|
||||
) > "$op.h"
|
||||
cd ..
|
||||
)
|
||||
done
|
||||
|
||||
echo "=== `date` === $abi $o/$p measuring"
|
||||
|
||||
done
|
||||
done
|
||||
|
||||
# PGS - Remove testing files that we don't care about.
|
||||
rm ${work}/measure.c ${work}/try.c
|
||||
|
||||
echo "=== `date` === finishing"
|
Loading…
Reference in New Issue
Block a user