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

Reply via email to