Blitzmax NG Installation Tutorial?

Started by Krischan, February 28, 2018, 21:21:09

Previous topic - Next topic

Krischan

I still have problems to compile a current version of Blitzmax NG on Windows 10. I've compiled the new BCC/BMK with my current Blitzmax installation and updated the Blitzmax NG installation with the new files including the bmk files. Then I was able to compile the new brl.mod, pub.mod and maxgui.mod I've downloaded from the repository. But I still have problems with SDL and B3D - they both don't compile, B3D because it has a dependency to SDL. Looks like some secret rocket science knowledge is needed again to get the "Blitzmax Heavy" into orbit...

[ 59%] Compiling:SDL_xinput.c
In file included from c:/Apps/Coding/BlitzMaxNG/mod/sdl.mod/sdl.mod/SDL/src/core/windows/SDL_xinput.c:24:0:
c:/Apps/Coding/BlitzMaxNG/mod/sdl.mod/sdl.mod/SDL/src/core/windows/SDL_xinput.h:136:5: error: unknown type name 'XINPUT_STATE_EX'
     XINPUT_STATE_EX* pState     /* [out] Receives the current state */

My versions are:
bcc[ng] Release Version 0.93
bmk 3.21 win32-x86 / gcc 050100 (cpu x8)

Could somebody post a step-by-step guide for dumb people like me how to install it properly? I've noticed that in the bmx-ng branch there is an automated install script, but this looks like it is for Linux only :( And it looks like my old setup guide doesn't fit 100% anymore due some changes in the branch content.

A download link to a zipped current full installation would be nice, too as the latest release build is already one year old. I'm still dreaming of a packaged installer for Windows with nice examples and a full documentation to start with. Like the Blitz3D exe I've downloaded in 2005 out of pure curiosity and stayed with it until today. ;D
Kind regards
Krischan

Windows 10 Pro | i7 9700K@ 3.6GHz | RTX 2080 8GB]
Metaverse | Blitzbasic Archive | My Github projects

Derron

#1
Using these MinGW:
Win32: i686-7.2.0-release-posix-sjlj-rt_v5-rev1.7z from
https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/7.2.0/threads-posix/sjlj/

Win64: x86_64-7.2.0-release-posix-sjlj-rt_v5-rev1.7z from
https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/7.2.0/threads-posix/sjlj/



I get the very similar error:

[ 23%] Compiling:typd_mlc.c
[ 23%] Compiling:win32_threads.c
[ 23%] Compiling:blitz_app.c
[...]
[ 51%] Compiling:SDL.c
[ 51%] Compiling:SDL_assert.c
[ 51%] Compiling:SDL_dataqueue.c
[ 52%] Compiling:SDL_error.c
[ 52%] Compiling:SDL_hints.c
[ 52%] Compiling:SDL_log.c
[ 52%] Compiling:SDL_atomic.c
[ 52%] Compiling:SDL_spinlock.c
[ 52%] Compiling:SDL_audio.c
[ 52%] Compiling:SDL_audiocvt.c
[ 52%] Compiling:SDL_audiotypecvt.c
[ 53%] Compiling:SDL_mixer.c
[ 53%] Compiling:SDL_wave.c
[ 53%] Compiling:SDL_directsound.c
[ 53%] Compiling:SDL_diskaudio.c
[ 53%] Compiling:SDL_dummyaudio.c
[ 53%] Compiling:SDL_wasapi.c
[ 53%] Compiling:SDL_wasapi_win32.c
[ 53%] Compiling:SDL_winmm.c
[ 54%] Compiling:SDL_windows.c
[ 54%] Compiling:SDL_xinput.c
[ 54%] Compiling:SDL_cpuinfo.c
[ 54%] Compiling:SDL_dynapi.c
[ 54%] Compiling:SDL_clipboardevents.c
[ 54%] Compiling:SDL_dropevents.c
[ 54%] Compiling:SDL_events.c
[ 54%] Compiling:SDL_gesture.c
[ 54%] Compiling:SDL_keyboard.c
In file included from E:/BlitzMaxNG.2018/mod/sdl.mod/sdl.mod/SDL/src/core/window
s/SDL_xinput.c:24:0:
E:/BlitzMaxNG.2018/mod/sdl.mod/sdl.mod/SDL/src/core/windows/SDL_xinput.h:136:5:
error: unknown type name 'XINPUT_STATE_EX'; did you mean 'XINPUT_STATE'?
     XINPUT_STATE_EX* pState     /* [out] Receives the current state */
     ^~~~~~~~~~~~~~~
     XINPUT_STATE
E:/BlitzMaxNG.2018/mod/sdl.mod/sdl.mod/SDL/src/core/windows/SDL_xinput.h:162:8:
error: [ 55%] Compiling:SDL_mouse.cunknown type name 'XInputGetState_t'
extern
XInputGetState_t SDL_XInputGetState;
        ^~~~~~~~~~~~~~~~
E:/BlitzMaxNG.2018/mod/sdl.mod/sdl.mod/SDL/src/core/windows/SDL_xinput.c:29:1: e
rror: unknown type name 'XInputGetState_t'; did you mean 'XInputSetState_t'?
XInputGetState_t SDL_XInputGetState = NULL;
^~~~~~~~~~~~~~~~
XInputSetState_t
E:/BlitzMaxNG.2018/mod/sdl.mod/sdl.mod/SDL/src/core/windows/SDL_xinput.c: In fun
ction 'WIN_LoadXInputDLL':
E:/BlitzMaxNG.2018/mod/sdl.mod/sdl.mod/SDL/src/core/windows/SDL_xinput.c:107:27:
error: 'XInputGetState_t' undeclared (first use in this function); did you mean
'XInputSetState_t'?
     SDL_XInputGetState = (XInputGetState_t)GetProcAddress((HMODULE)s_pXInputDLL
, (LPCSTR)100);
                           ^~~~~~~~~~~~~~~~
                           XInputSetState_t
E:/BlitzMaxNG.2018/mod/sdl.mod/sdl.mod/SDL/src/core/windows/SDL_xinput.c:107:27:
note: each undeclared identifier is reported only once for each function it app
ears in
E:/BlitzMaxNG.2018/mod/sdl.mod/sdl.mod/SDL/src/core/windows/SDL_xinput.c:107:44:
error: expected ';' before 'GetProcAddress'
     SDL_XInputGetState = (XInputGetState_t)GetProcAddress((HMODULE)s_pXInputDLL
, (LPCSTR)100);
                                            ^~~~~~~~~~~~~~
E:/BlitzMaxNG.2018/mod/sdl.mod/sdl.mod/SDL/src/core/windows/SDL_xinput.c:109:48:
error: expected ';' before 'GetProcAddress'
         SDL_XInputGetState = (XInputGetState_t)GetProcAddress[ 55%] Compiling:S
DL_quit.c
((HMODULE)s_pXInputDLL, "XInputGetState");
                                                ^~~~~~~~~~~~~~
Build Error: failed to compile (1) E:/BlitzMaxNG.2018/mod/sdl.mod/sdl.mod/SDL/sr
c/core/windows/SDL_xinput.c
E:\BlitzMaxNG.2018\bin>


As I am not using SDL on Windows I never came across this limitations.


@ B3D
Did you check openb3d from:
https://github.com/markcwm/openb3d.mod
?

Edit: created an issue on github.com/bmx-ng/sdl.mod

bye
Ron

Derron

#2
Created issue is closed - please give the updated SDL.mod a new try (download + compile module).

For other issues - and if you are having a github-account: please open up issues there, so Brucey has a better overview on what is still open or already tackled.

bye
Ron

Kippykip

I found that some of the modules just flat out don't let BMXNG compile that are pre-included. Had to delete them myself or use an old from my downloads. One of them was TTimer I'm pretty sure

Derron

Which one is preincluded?

you downloaded bcc, bmk, brl.mod and pub.mod ... and one of these is not compiling?


bye
Ron

degac

Quick question:

is there a pre-built .zip package to download and install?

I just found this (https://github.com/bmx-ng/bmx-ng/releases) and it seems 'old' (I mean the last update Brucey did are surely not included)
If there's a problem, there's at least one solution.
www.blitzmax.org

Derron

There is no official prebuilt variant available.

Just download the most current releases of bcc, bmk, brl.mod and pub.mod
Download the "outdated latest release"

Download MinGW:
Win32: i686-7.2.0-release-posix-sjlj-rt_v5-rev1.7z from
https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/7.2.0/threads-posix/sjlj/
or
Win64: x86_64-7.2.0-release-posix-sjlj-rt_v5-rev1.7z from
https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/7.2.0/threads-posix/sjlj/

Extract the outdated variant into "BlitzMaxNG" and remove the "mod/..."-subfolders (brl.mod and pub.mod)

Compile bcc and bmk with your "vanilla" BlitzMax.
Copy and override bcc[.exe] in BlitzMaxNG\bin
Copy and override bmk[.exe] (+ the core.bmk and make.bmk) in BlitzMaxNG\bin

Place the newly downloaded brl.mod and pub.mod in the BlitzMaxNG\mod folder
Extract your MinGW into BlitzMaxNG\MinGW32

that should be all.

bye
Ron

degac

Ok, it seems I need to go 'manually'.
Well, outside is a typical winter day so I should have the time to make this experiment!
Thanks!
If there's a problem, there's at least one solution.
www.blitzmax.org

degac

#8
OK, it seems I have no so much luck at the end!

[ 42%] Compiling:inet_pton.c
F:/BlitzMaxNG/mod/pub.mod/stdc.mod/inet_pton.c:21:23: fatal error: sys/cdefs.h: No such file or directory
compilation terminated.
Build Error: failed to compile F:/BlitzMaxNG/mod/pub.mod/stdc.mod/inet_pton.c
Process complete

I'm using BCC 0.93, no info about BMK version (it's not displayed, neither in the console)

Edit:

it seems there was a problem with my MinGW installation... checking now!

Windows10 64bit
If there's a problem, there's at least one solution.
www.blitzmax.org

degac

#9
Ok, it seems to work at the end!

After a VERY LONG TIME (!) building/compiling the modules, I found different errors in compilation.
The problem is that you NEED to choose the CORRECT combination of factors.

In my case: Window10 (64bit), on a X64 machine (AMD) - I need to select as 'architecture' X64, otherwise I got a bunch of errors!

I believe that the X64 version should be able to compile for both the targets (x86 and x64) - maybe I've misunderstood the thing.

EDIT:

just a post about the speed

I've tested the BMX example bench.bmx (in the folder example/hitoro) - debug off

BMX NG : 0.333000004 seconds
BMX Vanilla : 0.430000007 seconds. (FASM 1.72)

it's 23% faster, not so bad !

If there's a problem, there's at least one solution.
www.blitzmax.org

IanMartin

Quotezipped current full installation
Yes, please! 
I'd love to see this too.  It would go a long way to making new users see this as something with a future as well :)
Platfinity (made with BlitzMax) on Steam:
http://store.steampowered.com/app/365440/Platfinity/

Derron

Brucey wrote a "bootstrapper" some weeks ago - dunno if he has a more updated variant on his local drives. Basic idea is to download the bootstrapper (a binary with download + unzip functions and some configuration). This then downloads a precompiled variant of bmk/bcc (so the ng-created "c files"), the right MinGW you need and the modules (brl and pub).

With the help of MinGW it then would compile the intermediate files of BMK and BCC into BMK.exe and BCC.exe.
Now you would have an NG in the version state of "precompiled + new modules". So the bootstrapper would also download the most current BCC and BMK - and then compile these with the help of the now available BCC.exe and BMK.exe. Afterwards both would get overridden and you are done.

Dunno about MaxIDE - maybe this shoul be built too (but then needs Brucey's bah.mod/scintilla.mod) or if one just fetches a prebuilt one and ... done.



bye
Ron

degac

What?
there's a MaxIDE with scintilla working?


ps: I did some experiments  :-X downloading other modules... but something get wrongs in my NG installation... so at the moment not everything is 'stable', I mean the 'examples' seems to run without problems, but others (like MaxGUI examples) no (I've used the last version from GitHub)

In this moment I'm trying to recompile (again) everything!
If there's a problem, there's at least one solution.
www.blitzmax.org

degac

In any case just a .zip package like the one on GitHUB a little more updated (maybe once every 6 months!) could be suffice!

Yesterday I got problems with MinGW *while* the package try to download, then I switched to the .zip file to do thing manually... of course this is a problem of the network.
If there's a problem, there's at least one solution.
www.blitzmax.org

Derron

@ Scintilla
Yes, it should - at least on Linux :-)

https://github.com/bmx-ng/maxide

Code (BlitzMax) Select

?macos
Import MaxGUI.CocoaMaxGui
?win32
Import MaxGUI.Win32MaxGUIEx
?linux
Import bah.gtkmaxgui
Import bah.gtkwebgtkhtml
'Import bah.gtkwebmozilla
Import bah.maxguitextareascintilla
?


But that variant still uses the borked up Undo-system of the default MaxIDE. Brucey once wrote (I am pretty sure but wont swear) that he replaced the undo with the scintilla one (it has its own undo handling - so why not use it...)

bye
Ron