The pinebook is a $100.00 laptop from China, 2GB Ram and a quad core
Arm64 cortex-a53 processor.
I upgraded my pinebook with a 64GB eMMC chip, $31, to make room for
software development files.
The environment is Ubuntu Mate 16.04 Linux, running in ArmV8-a, aarch64.
See: http:www.pine64.org/pinebook/ for more about this laptop.
1. Downloaded, jsource-j805-release-final from the gpl repositories.
2. Compiled 47k lines of code on the pinebook in 6 minutes.
3. Ran all the jconsole engine test scripts successfully.
4. Successfully ran my own j programs from my x86-64, iMac and Linux
machines.
5. To update run, install all in jconsole, then copy jconsole, libj.so
and libtsdll.so to bin.
6. Also copy jqtide binary files.
NB. install 'all' downloads x86-64 binaries.
NB. -j5 added to make options.
NB. -march=armv8-a+crc -mtune=cortex-a53 and -DC_NA=1 added to COMPILE
A patch for the j805-source-final is attached.
Note: Information on porting the jqtide appears in another e-mail.
Ed Deveaux
e...@rawbw.com
470-330-0655
diff -crBN jsource-j805-release-final/jsrc/jversion.h
jsource-j805-release-finalPinebook/jsrc/jversion.h
*** jsource-j805-release-final/jsrc/jversion.h 1969-12-31 19:00:00.000000000
-0500
--- jsource-j805-release-finalPinebook/jsrc/jversion.h 2017-08-02
19:17:34.000000000 -0400
***************
*** 0 ****
--- 1,5 ----
+ #define jversion "805"
+ #define jplatform "linuxA64" // AArch64-Arm64
windows/linux/darwin/raspberry/android/...
+ #define jtype "release-final" // release,beta,... may include
bug level such as beta-3
+ #define jlicense "GPL3"
+ #define jbuilder "e...@rawbw.com" // website or email
diff -crBN jsource-j805-release-final/make/build_all.sh
jsource-j805-release-finalPinebook/make/build_all.sh
*** jsource-j805-release-final/make/build_all.sh 2016-12-10
22:06:13.000000000 -0500
--- jsource-j805-release-finalPinebook/make/build_all.sh 2017-08-02
19:17:34.000000000 -0400
***************
*** 1,13 ****
#!/bin/bash
! # build all binaries
cd ~
! . jvars.sh
$jmake/install.sh
! $jmake/build_jconsole.sh j32
! $jmake/build_libj.sh j32
! $jmake/build_tsdll.sh j32
if [ $jplatform = "raspberry" ]; then
exit 0
--- 1,13 ----
#!/bin/bash
! # build all binaries bypass j32 binaries
cd ~
! . ./jvars.sh
$jmake/install.sh
! #$jmake/build_jconsole.sh j32
! #$jmake/build_libj.sh j32
! #$jmake/build_tsdll.sh j32
if [ $jplatform = "raspberry" ]; then
exit 0
diff -crBN jsource-j805-release-final/make/build_jconsole.sh
jsource-j805-release-finalPinebook/make/build_jconsole.sh
*** jsource-j805-release-final/make/build_jconsole.sh 2016-12-10
22:06:13.000000000 -0500
--- jsource-j805-release-finalPinebook/make/build_jconsole.sh 2017-08-02
19:17:34.000000000 -0400
***************
*** 1,12 ****
#!/bin/bash
# $1 is j32 or j64
cd ~
! . jvars.sh
common=" -fPIC -O1 -Wextra "
case $jplatform\_$1 in
linux_j32)
COMPILE="$common -m32 -DREADLINE"
LINK=" $jgit/unix/libedit.a -m32 -ldl -l:libncursesw.so.5.9
-l:libtinfo.so.5.9 -o jconsole "
--- 1,17 ----
#!/bin/bash
# $1 is j32 or j64
cd ~
! . ./jvars.sh
common=" -fPIC -O1 -Wextra "
case $jplatform\_$1 in
+ linuxA64_j64)
+ COMPILE="-fpic -march=armv8-a+crc -mtune=cortex-a53 -O2 -pipe -DC_NA=1
-DREADLINE"
+ LINK=" -ledit -ldl -lncursesw -o jconsole "
+ ;;
+
linux_j32)
COMPILE="$common -m32 -DREADLINE"
LINK=" $jgit/unix/libedit.a -m32 -ldl -l:libncursesw.so.5.9
-l:libtinfo.so.5.9 -o jconsole "
diff -crBN jsource-j805-release-final/make/build_libj.sh
jsource-j805-release-finalPinebook/make/build_libj.sh
*** jsource-j805-release-final/make/build_libj.sh 2016-12-10
22:06:13.000000000 -0500
--- jsource-j805-release-finalPinebook/make/build_libj.sh 2017-08-02
19:17:34.000000000 -0400
***************
*** 1,7 ****
#!/bin/bash
# $1 is j32 or j64
cd ~
! . jvars.sh
# gcc 5 vs 4 - killing off linux asm routines (overflow detection)
# new fast code uses builtins not available in gcc 4
--- 1,7 ----
#!/bin/bash
# $1 is j32 or j64
cd ~
! . ./jvars.sh
# gcc 5 vs 4 - killing off linux asm routines (overflow detection)
# new fast code uses builtins not available in gcc 4
***************
*** 18,23 ****
--- 18,28 ----
case $jplatform\_$1 in
+ linuxA64_j64) # linux Arm64 aarch64 Little Endian
+ TARGET=libj.so
+ COMPILE="-fpic -march=armv8-a+crc -mtune=cortex-a53 -O2 -pipe -DC_NA=1
-DREADLINE"
+ LINK=" -shared -Wl,-soname,libj.so -lm -ldl -o libj.so "
+ ;;
linux_j32) # linux x86
TARGET=libj.so
diff -crBN jsource-j805-release-final/make/build_tsdll.sh
jsource-j805-release-finalPinebook/make/build_tsdll.sh
*** jsource-j805-release-final/make/build_tsdll.sh 2016-12-10
22:06:13.000000000 -0500
--- jsource-j805-release-finalPinebook/make/build_tsdll.sh 2017-08-02
19:17:34.000000000 -0400
***************
*** 1,12 ****
#!/bin/bash
# $1 is j32 or j64
cd ~
! . jvars.sh
common=" -fPIC -O1 -Werror -Wextra -Wno-unused-parameter"
case $jplatform\_$1 in
linux_j32)
TARGET=libtsdll.so
COMPILE="$common -m32 "
--- 1,18 ----
#!/bin/bash
# $1 is j32 or j64
cd ~
! . ./jvars.sh
common=" -fPIC -O1 -Werror -Wextra -Wno-unused-parameter"
case $jplatform\_$1 in
+ linuxA64_j64)
+ TARGET=libtsdll.so
+ COMPILE="-fpic -march=armv8-a+crc -mtune=cortex-a53 -O2 -pipe -DC_NA=1"
+ LINK=" -shared -Wl,-soname,libtsdll.so -o libtsdll.so "
+ ;;
+
linux_j32)
TARGET=libtsdll.so
COMPILE="$common -m32 "
diff -crBN jsource-j805-release-final/make/domake.sh
jsource-j805-release-finalPinebook/make/domake.sh
*** jsource-j805-release-final/make/domake.sh 2016-12-10 22:06:13.000000000
-0500
--- jsource-j805-release-finalPinebook/make/domake.sh 2017-08-02
19:17:34.000000000 -0400
***************
*** 4,10 ****
# $1 is j32 or j64
cd ~
! . jvars.sh
echo $TARGET
echo $COMPILE
--- 4,10 ----
# $1 is j32 or j64
cd ~
! . ./jvars.sh
echo $TARGET
echo $COMPILE
***************
*** 12,16 ****
mkdir -p $jbld/jout/$TARGET/$1
cd $jbld/jout/$TARGET/$1
! make -f $jmake/makefile
cp $TARGET $jbld/$1/bin
--- 12,16 ----
mkdir -p $jbld/jout/$TARGET/$1
cd $jbld/jout/$TARGET/$1
! make -j5 -f $jmake/makefile
cp $TARGET $jbld/$1/bin
diff -crBN jsource-j805-release-final/make/install.sh
jsource-j805-release-finalPinebook/make/install.sh
*** jsource-j805-release-final/make/install.sh 2016-12-10 22:06:13.000000000
-0500
--- jsource-j805-release-finalPinebook/make/install.sh 2017-08-02
19:17:34.000000000 -0400
***************
*** 8,21 ****
fi
cd ~
! . jvars.sh
rm -f -r $jbld
mkdir $jbld
! mkdir $jbld/j32
mkdir $jbld/j64
mkdir $jbld/jout
! cp -r $jgit/jlibrary/* $jbld/j32
cp -r $jgit/jlibrary/* $jbld/j64
echo "install complete"
--- 8,21 ----
fi
cd ~
! . ./jvars.sh
rm -f -r $jbld
mkdir $jbld
! #mkdir $jbld/j32
mkdir $jbld/j64
mkdir $jbld/jout
! #cp -r $jgit/jlibrary/* $jbld/j32
cp -r $jgit/jlibrary/* $jbld/j64
echo "install complete"
diff -crBN jsource-j805-release-final/make/jvars.sh
jsource-j805-release-finalPinebook/make/jvars.sh
*** jsource-j805-release-final/make/jvars.sh 2016-12-10 22:06:13.000000000
-0500
--- jsource-j805-release-finalPinebook/make/jvars.sh 2017-08-02
19:17:34.000000000 -0400
***************
*** 1,16 ****
! # source shell script (read with . jvars.sh) so stuff is easy to find
# edit following if your install is not standard
jgit=~/gitdev/jsource # git jsource folder
jbld=~/jbld # test libraries and binaries will be put here
# edit platform to build - linux darwin raspberry
! jplatform=linux
# should not be necessary to edit after here
! j32=$jbld/j32/bin/jconsole
j64=$jbld/j64/bin/jconsole
jmake=$jgit/make
! export jgit jbld j32 j64 jmake
--- 1,19 ----
! # source shell script (read with . ./jvars.sh) so stuff is easy to find
# edit following if your install is not standard
jgit=~/gitdev/jsource # git jsource folder
jbld=~/jbld # test libraries and binaries will be put here
# edit platform to build - linux darwin raspberry
! #jplatform=linux
! # aarch64 Arm V8 a 64 bit
! jplatform=linuxA64
# should not be necessary to edit after here
! #j32=$jbld/j32/bin/jconsole
j64=$jbld/j64/bin/jconsole
jmake=$jgit/make
! export jgit jbld j64 jmake
! #export jgit jbld j32 j64 jmake
diff -crBN jsource-j805-release-final/make/jversion.h
jsource-j805-release-finalPinebook/make/jversion.h
*** jsource-j805-release-final/make/jversion.h 1969-12-31 19:00:00.000000000
-0500
--- jsource-j805-release-finalPinebook/make/jversion.h 2017-08-02
19:17:34.000000000 -0400
***************
*** 0 ****
--- 1,5 ----
+ #define jversion "805"
+ #define jplatform "linuxA64" // AArch64-Arm64
windows/linux/darwin/raspberry/android/...
+ #define jtype "release-final" // release,beta,... may include
bug level such as beta-3
+ #define jlicense "GPL3"
+ #define jbuilder "e...@rawbw.com" // website or email
diff -crBN jsource-j805-release-final/make/make.txt
jsource-j805-release-finalPinebook/make/make.txt
*** jsource-j805-release-final/make/make.txt 2016-12-10 22:06:13.000000000
-0500
--- jsource-j805-release-finalPinebook/make/make.txt 2017-08-02
19:17:34.000000000 -0400
***************
*** 4,9 ****
--- 4,11 ----
$jplatform is a simple name that implies OS and hardware
+ linuxA64 implies Arm64 aarch64 Cortex A53 little-endian
+
linux implies intel
darwin implies intel
raspberry implies linux/arm/little-endian
***************
*** 26,32 ****
# valid platforms are: linux darwin raspberry
# create clean build folders
! . jvars.sh
$jmake/install.sh
# ensure proper jsrc/jversion.h (jversion-x.h template)
--- 28,34 ----
# valid platforms are: linux darwin raspberry
# create clean build folders
! . ./jvars.sh
$jmake/install.sh
# ensure proper jsrc/jversion.h (jversion-x.h template)
***************
*** 52,57 ****
$jmake/build_all.sh
# release clean builds to the repo release folder
! . jvars.sh
$jmake/release.sh
--- 54,59 ----
$jmake/build_all.sh
# release clean builds to the repo release folder
! . ./jvars.sh
$jmake/release.sh
diff -crBN jsource-j805-release-final/make/release.sh
jsource-j805-release-finalPinebook/make/release.sh
*** jsource-j805-release-final/make/release.sh 2016-12-10 22:06:13.000000000
-0500
--- jsource-j805-release-finalPinebook/make/release.sh 2017-08-02
19:17:34.000000000 -0400
***************
*** 1,15 ****
#!/bin/bash
# copy binaries to release folder
cd ~
! . jvars.sh
! mkdir -p $jgit/release/$jplatform/j32
! rm -f $jgit/release/$jplatform/j32/*
! cp $jbld/j32/bin/jconsole $jgit/release/$jplatform/j32/jconsole
! cp $jbld/j32/bin/libj.so $jgit/release/$jplatform/j32/libj.so
! cp $jbld/j32/bin/libj.dylib $jgit/release/$jplatform/j32/libj.dylib
! cp $jbld/j32/bin/libtsdll.so $jgit/release/$jplatform/j32/libtsdll.so
! cp $jbld/j32/bin/libtsdll.dylib $jgit/release/$jplatform/j32/libtsdll.dylib
if [ $jplatform = "raspberry" ]; then
--- 1,15 ----
#!/bin/bash
# copy binaries to release folder
cd ~
! . ./jvars.sh
! #mkdir -p $jgit/release/$jplatform/j32
! #rm -f $jgit/release/$jplatform/j32/*
! #cp $jbld/j32/bin/jconsole $jgit/release/$jplatform/j32/jconsole
! #cp $jbld/j32/bin/libj.so $jgit/release/$jplatform/j32/libj.so
! #cp $jbld/j32/bin/libj.dylib $jgit/release/$jplatform/j32/libj.dylib
! #cp $jbld/j32/bin/libtsdll.so $jgit/release/$jplatform/j32/libtsdll.so
! #cp $jbld/j32/bin/libtsdll.dylib $jgit/release/$jplatform/j32/libtsdll.dylib
if [ $jplatform = "raspberry" ]; then
***************
*** 20,26 ****
rm -f $jgit/release/$jplatform/j64/*
cp $jbld/j64/bin/jconsole $jgit/release/$jplatform/j64/jconsole
cp $jbld/j64/bin/libj.so $jgit/release/$jplatform/j64/libj.so
! cp $jbld/j64/bin/libj.dylib $jgit/release/$jplatform/j64/libj.dylib
cp $jbld/j64/bin/libtsdll.so $jgit/release/$jplatform/j64/libtsdll.so
! cp $jbld/j64/bin/libtsdll.dylib $jgit/release/$jplatform/j64/libtsdll.dylib
--- 20,26 ----
rm -f $jgit/release/$jplatform/j64/*
cp $jbld/j64/bin/jconsole $jgit/release/$jplatform/j64/jconsole
cp $jbld/j64/bin/libj.so $jgit/release/$jplatform/j64/libj.so
! #cp $jbld/j64/bin/libj.dylib $jgit/release/$jplatform/j64/libj.dylib
cp $jbld/j64/bin/libtsdll.so $jgit/release/$jplatform/j64/libtsdll.so
! #cp $jbld/j64/bin/libtsdll.dylib $jgit/release/$jplatform/j64/libtsdll.dylib
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm