edbrowse-dev - development list for edbrowse
 help / color / mirror / Atom feed
From: Geoff McLane <ubuntu@geoffair.info>
To: Karl Dahlke <eklhad@comcast.net>,
	Edbrowse-dev@lists.the-brannons.com,
	Kevin Carhart <kevin_carhart@fastmail.fm>
Subject: Re: [edbrowse-dev] quick js
Date: Sun, 14 Mar 2021 21:36:02 +0100	[thread overview]
Message-ID: <3e29432c-e762-2f0a-c01c-9fc809738d7e@geoffair.info> (raw)
In-Reply-To: <20210210053836.eklhad@comcast.net>

20210314: Building the QuickJS library update

Just an update... persued 4 different tracks... some success, some 
failures... they are -

1. Using mingw-64 emulator - OK, but todo edbrowse with same mingw...
2. Using MSVC 2019 native .x64 - got close, but close is not good enough
3. Using the MS WSL emulator - wow, a million steps to do... so far only 
built tidy, edbrowse, ...
4. Using github.com/c-smile/quickjspp - the premake5.exe tool FAILED to 
build MSVC solution... hmmmm...

The detailed exploration is below... or jump to the 'Summary:'

1. Using mingw-64
###################

Encountered an error, I can NOT seem to get past... but sort of got 
there, eventually...

[  9%] Building C object CMakeFiles/quickjs.dir/quickjs.c.obj
D:\mingw-w64\mingw64\bin\gcc.exe -DCONFIG_BIGNUM 
-DCONFIG_VERSION=\"2020-11-08\" -D_GNU_SOURCE \
  -Wall -Wno-array-bounds -Wno-format-truncation -Wno-unused-variable 
-Wno-unused-but-set-variable \
-MMD -MF -O  -D_REENTRANT -O3 -DNDEBUG   -o 
CMakeFiles\quickjs.dir\quickjs.c.obj   -c D:\Projects\quickjs\quickjs.c

C:\Users\ubunt\AppData\Local\Temp\cchgmH6R.s: Assembler messages:
C:\Users\ubunt\AppData\Local\Temp\cchgmH6R.s:30898: Error: .seh_savexmm 
offset is negative
C:\Users\ubunt\AppData\Local\Temp\cchgmH6R.s:30899: Error: .seh_savexmm 
offset is negative

I am using mingw-64, with gcc version (x86_64-posix-seh-rev0, Built by 
MinGW-W64 project) 8.1.0

I searched long and hard, but can /NOT/ find an update to my 
installation of mingw-64 - from -
http://mingw-w64.org/doku.php/download
2020/05/13  19:30           960,504 mingw-w64-install.exe
Appears I have the 'latest'...

 From here https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86048 found -
(a) Which says: "not if -fno-reorder-blocks-and-partition" - to try
(b) Eric Botcazou 2018-06-13 11:26:27 UTC
This will be fixed in the 8.2 release.  Thanks for reporting the problem.

Ok, added '-fno-reorder-blocks-and-partition', and it compiled! WOW ;=)) 
success!!!

Now to figure out how to link edbrowse to this 'libquickjs.a'???

Probably need to build 'edbrowse' using the same emulator... TODO...


2. Using MSVC native
###################

A: Fixed the buildin crt with creating a "ctz_clz.h" header which adds 
these functions..
Add to cutils.h -
+#ifdef _MSC_VER
+#include "ctz_clz.h"
+#define __attribute__(x)
+#endif // _MSC_VER
+

B: Commented out <unistd.h>, in various places - like -

+#ifndef _MSC_VER
  #include <unistd.h>
+#endif /* #ifndef _MSC_VER */

C: Few other relatively minor fixes in the source... \

D: On __int128 being used. At the moment can not find a patch to cover 
this...

E: Swiched OFF CONFIG_BIGNUM support... eventually got 'quickjs.lib' to 
build

F: Big problem - the 'qjsc' compiler failed to convert 'repl.js' to 
'repl.c', and likewise with 'qjscalc.js' to C code... overcame this with 
copy the generated *.c files from the mingw-64 build... not a good solution!

So, I have a 'quickjs.lib'... need to sort out which headers to install 
- list looks like 'quickjs-atom.h, quickjs-libc.h, quickjs-opcode.h, 
quickjs.h'... so TODO: finish the INSTALL step... then TODO: build of 
eb-qjs...


3. More exploration into WSL - it's getting to be much more than expected!
###################

Per the install docs - 
https://docs.microsoft.com/en-us/windows/wsl/install-win10 -

Joined the Windows Insiders Program, as requested... hope I do not 
regret this... do not like words like -
you will receive emails, and the only way to stop this (spam), is to 
un-join the program... well, ok, but not nice...

Am running the min version - Microsoft Windows [Version 10.0.19041.804], 
so that's ok...
ran 2021/03/11  18:34        15,282,176 wsl_update_x64.msi
Did a Windows feature update, which took about 1/2 hour - must now reboot...

Had to jump through some other hoops, installed Ubuntu 20.04... and 
evenually got an 'Ubuntu' app, which opens as a terminal... and it 
certainly looks and feels like Ubuntu...

Then spent some time setting up this 'bash' terminal... add my own 
'.bash_aliases'... installed g++, cmake... even git cloned tidy, built, 
and installed it...

TODO: But still to figure out where all this is stored? So presently NO 
access to my native Windows filesystem... and when in Ubuntu, can't yet 
access outside of the unix root, '/'...

So at this time this is a MAJOR setback... yes I could re-download all 
the sources... TODO: but...

At this time this is no different to using a 2nd machine...

And really puts me no closer to building QuickJS in native Windows???

On WSL, in general, so far it feels like a very good linux emulator... 
single click access to terminal... much faster than a dual boot... just 
missing the native filesystem access... or at least access to my 
expansion drives - G: and H:

Hmmm, found /mnt/g, /mnt/h, and then /mnt/c and /mnt/d, so do have 
access to full filesystem... will try some more things...

Wow, I have to say that it is quite a 'complete' emulation... maybe more 
than an 'emulation'... it is running a linux kernel...
ubunt@DELL03:~/bin$ hvers
Show LSB version 'lsb_release -a'
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.2 LTS
Release:        20.04
Codename:       focal

Show version 'uname -a'
Linux DELL03 5.4.72-microsoft-standard-WSL2 #1 SMP Wed Oct 28 23:40:43 
UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
ubunt@DELL03:~/bin$

As indicated, really a 'Virtual Machine'... to download my 
edbrowse-fork, had to even copy a rca .pub to my github account...

And can now see my complete disk system, in terms that I know - A:, B:, 
C:, ... drives - namely -
$ df -H | grep -v /dev/loop
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb        270G  2.3G  254G   1% /
tmpfs            10G     0   10G   0% /mnt/wsl
tools           492G  180G  312G  37% /init
none             10G     0   10G   0% /dev
none             10G   17k   10G   1% /run
none             10G     0   10G   0% /run/lock
none             10G     0   10G   0% /run/shm
none             10G     0   10G   0% /run/user
tmpfs            10G     0   10G   0% /sys/fs/cgroup
C:\             492G  180G  312G  37% /mnt/c
D:\             1.1T  598G  403G  60% /mnt/d
G:\             2.1T  1.6T  430G  79% /mnt/g
H:\             2.1T  775G  1.3T  39% /mnt/h

There is quite a problem with line endings... git, in native windows, 
adds CR/LF pair to text/script files, which causes the '#! /bin/sh' 
shell to break, and need to do 'dos2unix <script>' to make it right...

Ran into a problem building in '/mnt/h/UTILS/eb-fork/temp' - can NOT 
find CURL, but curl IS installed... I think... DONE: Solved the build 
prob...

To start, cloned my eb-fork into this filesystem... at 
~/projects/eb-fork... and commenced a build - needed to install pcre - 
pcre-dev, libreadline-dev, duktape-dev, ... and it built fine... ran a 
../src/jsrt test... looks ok... http://yahoo.com loaded, seemingly 
fine... got links...

Then back to the native clone... ran my build-me.sh, and now it builds 
fine here too - log -
-- +++ Search using paths /home/ubunt
-- *** Tidy found inc /usr/include lib /usr/lib/libtidy.so
-- *** CURL found inc /usr/include/x86_64-linux-gnu lib 
/usr/lib/x86_64-linux-gnu/libcurl.so
-- cURL version 7.68.0
-- *** PCRE found inc /usr/include lib /usr/lib/x86_64-linux-gnu/libpcre.so
-- *** READLINE found inc /usr/include lib 
/usr/lib/x86_64-linux-gnu/libreadline.so
-- *** Duktape found inc /usr/include lib 
/usr/lib/x86_64-linux-gnu/libduktape.so
-- *** Building static library STATIC
-- Language ebrc files: 
LANG_EBRC_FILES=/mnt/h/UTILS/eb-fork/lang/ebrc-de;/mnt/h/UTILS/eb-fork/lang/ebrc-en;/mnt/h/UTIL>-- 
Doc guide files: 
DOC_GUIDE_FILES=/mnt/h/UTILS/eb-fork/doc/usersguide.html;/mnt/h/UTILS/eb-fork/doc/usersguide_fr.htm>-- 
Language msg files: 
LANG_MSG_FILES=/mnt/h/UTILS/eb-fork/lang/msg-de;/mnt/h/UTILS/eb-fork/lang/msg-en;/mnt/h/UTILS/eb>-- 
*** Setup build of ebrc.c, msg-strings.c, and startwindow.c
-- Configuring done
-- Generating done
-- Build files have been written to: /mnt/h/UTILS/eb-fork/temp
[100%] Built target edbrowse

Moved onto QuickJS - re-cloned it into ~/projects/quickjs - ran '$ 
make'... and it completed ok... did 'make install', and it put the 
compiled exes in /usr/local/bin, and the headers into /usr/local/include...

Back to edbrowse build, and can not find a target in the 'makefile'...

TODO: How to build eb-qjs, using the above 'quickjs' lib, in 
'/usr/local/lib'???0

4. Found c-smile:fork, using 'premake5' for MSVC 2019
###################

Cloned this repo - https://github.com/c-smile/quickjspp

And downloaded - https://premake.github.io/download.html - to get 
'premake5.exe'...

In a 'build' dir, did - premake5 "--file=..\premake5.lua" vs2019
Built MSVC sln in a '.build\vs2019\quickjs.sln, but it FAILED to load??? 
Could not find my MSVC 2019 installation...
Maybe if I run 'premake5 vs2019' in a MSVC command prompt... no still 
FAILED!
But from the gen'ed quikcjs.vcxproj noted some potential MACROS to add -
<PreprocessorDefinitions>JS_STRICT_NAN_BOXING;CONFIG_BIGNUM;_HAS_EXCEPTIONS=0
which may help, in my getting close MSVC build, and verifies a lot of 
things...

I am getting closer with my CMakeLists/MSVC build... so TODO: persue a 
build in this repo... especially interested in how the BIGNUM/__int128 
problem is dealt with... it it is...

Summary:
########

You can see quite a few TODO: markers, and will continue to work on 
these, as time permits...

TODO:mingw: build edbrowse in mingw-64 emulator...
TODO:msvc: set up a link for eb-qjs.exe build...
TODO:WSL: access or download 'edbrowse' source, and build... but does 
this help? Yes and NO! time sink...
TDOO:WSL: build eb-qjs version... need to mod CMakeLists.txt... shift 
most of the source to an eb.lib, then build various versions, with minor 
src changes - no repeated srcs...
TOTO:c-smile: take this a few steps further forward... a big maybe...


If interested, at this time, could push a win-bld branch, in my fork... 
if you have time to catch up to a few purely Windows things... not 
urgent... it may be a few commits behind master...

Any feedback appreciated... lots of FUN, and time, exploring...

Best regards, Geoff.



  parent reply	other threads:[~2021-03-14 20:36 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-07 13:26 Karl Dahlke
2021-03-07 16:15 ` Chris Brannon
2021-03-07 16:44   ` Karl Dahlke
2021-03-07 17:15     ` Chris Brannon
2021-03-07 18:40       ` Geoff McLane
2021-03-07 19:27         ` Karl Dahlke
2021-03-07 19:37           ` Chris Brannon
2021-03-08  8:46             ` Karl Dahlke
2021-03-08 19:31               ` Geoff McLane
2021-03-08 21:18                 ` Karl Dahlke
2021-03-09 10:23               ` Kevin Carhart
2021-03-09 14:37                 ` Geoff McLane
2021-03-09 22:52                   ` Kevin Carhart
     [not found]                   ` <20210210053836.eklhad@comcast.net>
2021-03-14 20:36                     ` Geoff McLane [this message]
2021-03-15  9:44                       ` Kevin Carhart

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3e29432c-e762-2f0a-c01c-9fc809738d7e@geoffair.info \
    --to=ubuntu@geoffair.info \
    --cc=Edbrowse-dev@lists.the-brannons.com \
    --cc=eklhad@comcast.net \
    --cc=kevin_carhart@fastmail.fm \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).