Static builds with chicken
This commit is contained in:
parent
b45b6e60e1
commit
1b02065f35
|
@ -6,7 +6,9 @@ test
|
||||||
*.c
|
*.c
|
||||||
*.o
|
*.o
|
||||||
*.o*
|
*.o*
|
||||||
|
*.a
|
||||||
*.so
|
*.so
|
||||||
!src
|
!src
|
||||||
*.rkt
|
*.rkt
|
||||||
README.txt
|
README.txt
|
||||||
|
*.import.*
|
||||||
|
|
49
Makefile
49
Makefile
|
@ -1,28 +1,24 @@
|
||||||
PREFIX=/usr/local
|
PREFIX=/usr/local
|
||||||
|
|
||||||
build:
|
build:
|
||||||
printf "#!/bin/sh\nsash --disable-cache -r7 -L ${PREFIX}/lib/compile-r7rs/snow ${PREFIX}/lib/compile-r7rs/main.scm \"\$$@\"\n" > compile-r7rs
|
csc -R r7rs -X r7rs -static -c -J -unit foreign.c -o foreign.c.o snow/foreign/c.sld
|
||||||
|
ar rcs foreign.c.a foreign.c.o
|
||||||
build-docker-images:
|
csc -R r7rs -X r7rs -static -c -J -unit srfi-170 -o srfi-170.o snow/srfi/170.sld
|
||||||
for implementation in $(shell sash -L ./snow -L . compile-r7rs.scm --list-schemes); \
|
ar rcs srfi-170.a srfi-170.o
|
||||||
do \
|
csc -R r7rs -X r7rs -static -c -J -unit libs.util -o libs.util.o libs/util.sld
|
||||||
echo "Building $${implementation}"; \
|
ar rcs libs.util.a libs.util.o
|
||||||
docker build . --build-arg COMPILE_R7RS=$${implementation} --tag=retropikzel1/compile-r7rs:$${implementation}; \
|
csc -R r7rs -X r7rs -static -c -J -unit libs.library-util -o libs.library-util.o libs/library-util.sld
|
||||||
done
|
ar rcs libs.library-util.a libs.library-util.o
|
||||||
|
csc -R r7rs -X r7rs -static -c -J -unit libs.data -o libs.data.o libs/data.sld
|
||||||
#for implementation in $(shell sash -L ./snow -L . compile-r7rs.scm --list-schemes);
|
ar rcs libs.data.a libs.data.o
|
||||||
|
csc -R r7rs -X r7rs -static \
|
||||||
push-docker-images:
|
-o compile-r7rs \
|
||||||
for implementation in $(shell sash -L ./snow -L . compile-r7rs.scm --list-schemes); \
|
-uses libs.util \
|
||||||
do \
|
-uses libs.library-util \
|
||||||
echo "Pushing $${implementation}"; \
|
-uses libs.data \
|
||||||
docker push retropikzel1/compile-r7rs:$${implementation}; \
|
-uses foreign.c \
|
||||||
done
|
-uses srfi-170 \
|
||||||
|
compile-r7rs.scm
|
||||||
snow:
|
|
||||||
mkdir -p snow
|
|
||||||
cp -r ../foreign-c/foreign snow/
|
|
||||||
cp -r ../foreign-c-srfi-170/srfi snow/
|
|
||||||
|
|
||||||
# Does uninstall because without that the changes do not seem to update
|
# Does uninstall because without that the changes do not seem to update
|
||||||
install: uninstall
|
install: uninstall
|
||||||
|
@ -32,6 +28,14 @@ install: uninstall
|
||||||
cp compile-r7rs.scm ${PREFIX}/lib/compile-r7rs/main.scm
|
cp compile-r7rs.scm ${PREFIX}/lib/compile-r7rs/main.scm
|
||||||
install compile-r7rs ${PREFIX}/bin/compile-r7rs
|
install compile-r7rs ${PREFIX}/bin/compile-r7rs
|
||||||
|
|
||||||
|
snow:
|
||||||
|
mkdir -p snow
|
||||||
|
cp -r ../foreign-c/foreign snow/
|
||||||
|
cp -r ../foreign-c-srfi-170/srfi snow/
|
||||||
|
|
||||||
|
clean-snow:
|
||||||
|
rm -rf snow
|
||||||
|
|
||||||
install-compile-r7rs-docker:
|
install-compile-r7rs-docker:
|
||||||
install compile-r7rs-docker.sh ${PREFIX}/bin/compile-r7rs-docker
|
install compile-r7rs-docker.sh ${PREFIX}/bin/compile-r7rs-docker
|
||||||
|
|
||||||
|
@ -87,6 +91,7 @@ clean-test:
|
||||||
clean:
|
clean:
|
||||||
find . -name "*.so" -delete
|
find . -name "*.so" -delete
|
||||||
find . -name "*.o*" -delete
|
find . -name "*.o*" -delete
|
||||||
|
find . -name "*.a*" -delete
|
||||||
find . -name "*.rkt" -delete
|
find . -name "*.rkt" -delete
|
||||||
find . -name "*.link" -delete
|
find . -name "*.link" -delete
|
||||||
find . -name "*.meta" -delete
|
find . -name "*.meta" -delete
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
(chibi ast)
|
(chibi ast)
|
||||||
(scheme inexact)
|
(scheme inexact)
|
||||||
(chibi))
|
(chibi))
|
||||||
(include-shared "c/lib/chibi"))
|
(include-shared "c/primitives/chibi/foreign-c"))
|
||||||
(chicken
|
(chicken
|
||||||
(import (scheme base)
|
(import (scheme base)
|
||||||
(scheme write)
|
(scheme write)
|
||||||
|
@ -193,6 +193,9 @@
|
||||||
bytevector->c-bytevector
|
bytevector->c-bytevector
|
||||||
c-bytevector->bytevector
|
c-bytevector->bytevector
|
||||||
|
|
||||||
|
;;;; Utilities
|
||||||
|
libc
|
||||||
|
|
||||||
;; TODO endianness
|
;; TODO endianness
|
||||||
native-endianness
|
native-endianness
|
||||||
make-c-bytevector
|
make-c-bytevector
|
||||||
|
@ -317,12 +320,14 @@
|
||||||
(include "c/primitives/ypsilon.scm")))
|
(include "c/primitives/ypsilon.scm")))
|
||||||
(cond-expand
|
(cond-expand
|
||||||
(chicken-6 (include-relative "c/main.scm")
|
(chicken-6 (include-relative "c/main.scm")
|
||||||
|
(include-relative "c/libc.scm")
|
||||||
(include-relative "c/c-bytevectors.scm")
|
(include-relative "c/c-bytevectors.scm")
|
||||||
(include-relative "c/pointer.scm")
|
(include-relative "c/pointer.scm")
|
||||||
;(include-relative "c/array.scm")
|
;(include-relative "c/array.scm")
|
||||||
;(include-relative "c/struct.scm")
|
;(include-relative "c/struct.scm")
|
||||||
)
|
)
|
||||||
(else (include "c/main.scm")
|
(else (include "c/main.scm")
|
||||||
|
(include "c/libc.scm")
|
||||||
;(include "c/struct.scm")
|
;(include "c/struct.scm")
|
||||||
(include "c/c-bytevectors.scm")
|
(include "c/c-bytevectors.scm")
|
||||||
(include "c/pointer.scm")
|
(include "c/pointer.scm")
|
||||||
|
|
|
@ -1,9 +1,14 @@
|
||||||
CC=gcc
|
CC=gcc
|
||||||
|
|
||||||
chibi: primitives/chibi/foreign-c.stub
|
chibi: foreign/c/primitives/chibi/foreign-c.stub
|
||||||
chibi-ffi primitives/chibi/foreign-c.stub
|
chibi-ffi foreign/c/primitives/chibi/foreign-c.stub
|
||||||
mkdir -p lib
|
${CC} \
|
||||||
${CC} -g3 -o lib/chibi.so primitives/chibi/foreign-c.c -fPIC -lffi -shared
|
-g3 \
|
||||||
|
-o foreign/c/primitives/chibi/foreign-c.so \
|
||||||
|
foreign/c/primitives/chibi/foreign-c.c \
|
||||||
|
-fPIC \
|
||||||
|
-lffi \
|
||||||
|
-shared
|
||||||
|
|
||||||
chicken:
|
chicken:
|
||||||
@echo "Nothing to build for Chicken"
|
@echo "Nothing to build for Chicken"
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
(cond-expand
|
||||||
|
(windows (define-c-library libc
|
||||||
|
'("stdlib.h" "stdio.h" "string.h")
|
||||||
|
"ucrtbase"
|
||||||
|
'()))
|
||||||
|
(else
|
||||||
|
(define c-library "c")
|
||||||
|
(when (get-environment-variable "BE_HOST_CPU")
|
||||||
|
(set! c-library "root"))
|
||||||
|
(define-c-library libc
|
||||||
|
'("stdlib.h" "stdio.h" "string.h")
|
||||||
|
"c"
|
||||||
|
'((additional-versions ("0" "6"))))))
|
|
@ -103,7 +103,9 @@
|
||||||
"/usr/lib"
|
"/usr/lib"
|
||||||
"/usr/lib64"
|
"/usr/lib64"
|
||||||
; NetBSD
|
; NetBSD
|
||||||
"/usr/pkg/lib")))))
|
"/usr/pkg/lib"
|
||||||
|
; Haiku
|
||||||
|
"/boot/system/lib")))))
|
||||||
(auto-load-versions (list ""))
|
(auto-load-versions (list ""))
|
||||||
(paths (append auto-load-paths additional-paths))
|
(paths (append auto-load-paths additional-paths))
|
||||||
(versions (append additional-versions auto-load-versions))
|
(versions (append additional-versions auto-load-versions))
|
||||||
|
|
|
@ -1,16 +1,15 @@
|
||||||
(cond-expand
|
|
||||||
(windows (define-c-library libc
|
|
||||||
'("stdlib.h" "string.h")
|
|
||||||
"ucrtbase"
|
|
||||||
'((additional-versions ("0" "6")))))
|
|
||||||
(else (define-c-library libc
|
|
||||||
'("stdlib.h" "string.h")
|
|
||||||
"c"
|
|
||||||
'((additional-versions ("0" "6"))))))
|
|
||||||
|
|
||||||
(define-c-procedure c-calloc libc 'calloc 'pointer '(int int))
|
(define-c-procedure c-calloc libc 'calloc 'pointer '(int int))
|
||||||
(define-c-procedure c-memset-address->pointer libc 'memset 'pointer '(uint64 uint8 int))
|
(cond-expand
|
||||||
(define-c-procedure c-memset-pointer->address libc 'memset 'uint64 '(pointer uint8 int))
|
(chicken (define c-memset-address->pointer
|
||||||
|
(lambda (address value offset)
|
||||||
|
(address->pointer address))))
|
||||||
|
(else (define-c-procedure c-memset-address->pointer libc 'memset 'pointer '(uint64 uint8 int))))
|
||||||
|
|
||||||
|
(cond-expand
|
||||||
|
(chicken (define c-memset-pointer->address
|
||||||
|
(lambda (pointer value offset)
|
||||||
|
(pointer->address pointer))))
|
||||||
|
(else (define-c-procedure c-memset-pointer->address libc 'memset 'uint64 '(pointer uint8 int))))
|
||||||
;(define-c-procedure c-memset-address libc 'memset 'pointer '(uint64 uint8 int))
|
;(define-c-procedure c-memset-address libc 'memset 'pointer '(uint64 uint8 int))
|
||||||
;(define-c-procedure c-printf libc 'printf 'int '(pointer pointer))
|
;(define-c-procedure c-printf libc 'printf 'int '(pointer pointer))
|
||||||
(define-c-procedure c-malloc libc 'malloc 'pointer '(int))
|
(define-c-procedure c-malloc libc 'malloc 'pointer '(int))
|
||||||
|
|
|
@ -1,16 +1,18 @@
|
||||||
(define slash (cond-expand (windows "\\") (else "/")))
|
(define slash (cond-expand (windows "\\") (else "/")))
|
||||||
|
|
||||||
(cond-expand
|
(cond-expand
|
||||||
(windows
|
(windows (define-c-library srfi-170-libc
|
||||||
(define-c-library libc
|
'("dirent.h" "stdlib.h" "stdio.h" "string.h")
|
||||||
'("stdlib.h" "stdio.h" "error.h")
|
"ucrtbase"
|
||||||
"ucrtbase"
|
'()))
|
||||||
'()))
|
|
||||||
(else
|
(else
|
||||||
(define-c-library libc
|
(define c-library "c")
|
||||||
'("stdlib.h" "stdio.h" "dirent.h" "error.h")
|
(when (get-environment-variable "BE_HOST_CPU")
|
||||||
"c"
|
(set! c-library "root"))
|
||||||
'((additional-versions ("6"))))))
|
(define-c-library srfi-170-libc
|
||||||
|
'("dirent.h" "stdlib.h" "stdio.h" "string.h")
|
||||||
|
"c"
|
||||||
|
'((additional-versions ("0" "6"))))))
|
||||||
|
|
||||||
(define-c-procedure c-perror libc 'perror 'void '(pointer))
|
(define-c-procedure c-perror libc 'perror 'void '(pointer))
|
||||||
(define-c-procedure c-mkdir libc 'mkdir 'int '(pointer int))
|
(define-c-procedure c-mkdir libc 'mkdir 'int '(pointer int))
|
||||||
|
|
Loading…
Reference in New Issue