borodust / cl-bodge

Feature-rich game framework for Common Lisp
http://borodust.org/projects/cl-bodge/
MIT License
174 stars 14 forks source link

When running on a "freebsd-gnu", plataform is unknown #99

Open ercdude opened 3 years ago

ercdude commented 3 years ago

Hello!

I'm trying to run cl-bodge with sbcl, but it seems that my plataform is not recognized? I'm not sure why it has gnu on it, but seems to be a problem.

I've tried to add the key to the constant +known-plataforms+, but I guess it needs more than that.

I'm a newbie at common-lisp, maybe I'm losing something?

Thanks!

I've made a fresh install of quick lisp, installed bodge with (ql-dist:install-dist "http://bodge.borodust.org/dist/org.borodust.bodge.txt"). Restarted the sbcl and then:

CL-USER> (load "/usr/home/eric/quicklisp/setup.lisp")
T
CL-USER> (ql:quickload :bodge-demo)
; file: /.../quicklisp/dists/org.borodust.bodge/software/bodge-libc-essentials-20200824142303/bodge-libc-essentials.lisp
; in:
;      CLAW.WRAPPER:DEFWRAPPER (BODGE-LIBC-ESSENTIALS::BODGE-LIBC-ESSENTIALS
;                           (:HEADERS "assert.h" "ctype.h" "errno.h" "limits.h"
;                            "locale.h" "math.h" "setjmp.h" "signal.h" "stdarg.h"
;                            "stddef.h" "stdio.h" ...)
;                           (:INCLUDE-DEFINITIONS "memcpy" "memcmp" "strcmp"
;                            "strcpy")
;                           (:EXCLUDE-DEFINITIONS "^_\\w*"))
;     (CLAW.WRAPPER:DEFWRAPPER (BODGE-LIBC-ESSENTIALS::BODGE-LIBC-ESSENTIALS
;                               (:HEADERS "assert.h" "ctype.h" "errno.h" "limits.h"
;                                "locale.h" "math.h" "setjmp.h" "signal.h"
;                                "stdarg.h" "stddef.h" "stdio.h" ...)
;                               (:INCLUDE-DEFINITIONS "memcpy" "memcmp" "strcmp"
;                                "strcpy")
;                               (:EXCLUDE-DEFINITIONS "^_\\w*"))
;       :IN-PACKAGE
;       :%LIBC.ES)
; 
; caught ERROR:
;   (during macroexpansion of (CLAW.WRAPPER:DEFWRAPPER (BODGE-LIBC-ESSENTIALS::BODGE-LIBC-ESSENTIALS # ...)
;     ...))
;   No specification defined for current paltform x86_64-unknown-freebsd-gnu
borodust commented 3 years ago

Thank you for the report. Unfortunately, freebsd is not supported at the moment.

ercdude commented 3 years ago

Oh, okay :/ I saw that +known-plataforms+ already knows about freebsd and I fought that it was supported.

How hard it is to implement it? May you point some path where I could look at?

borodust commented 3 years ago

For a newcomer that will require a tremendous effort. cl-bodge uses foreign libraries extensively, meaning you would need to port a bunch of those to FreeBSD (compile them and generate bindings). To accomplish this, one would need to understand how C (and related tech), CFFI and :claw works. :claw doesn't have any docs atm and is undergoing a HUGE rewrite to support C++. This is a massive task even for a seasoned Common Lisp programmer.

Once I'm done with :claw rewrite, I might look into FreeBSD support myself, but no promises. This mostly depends on whether those foreign libraries do actually support it.

For a FreeBSD user, I suggest looking into other CL game engines for now. Candidates are (in no particular order): Sketch, Xelf, Trial.

ercdude commented 3 years ago

thank you for the detailed information! it seems a lot, indeed.

I will start with those libraries while keeping an eye over cl-bodge :) maybe I can help in the future, if it's still needed.

Thanks! And have a good day :)