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