Reordering FFI libs
This commit is contained in:
0
libao/lib/libao-play-async.so → lib/linux-x86_64/libao-play-async.so
Executable file → Normal file
0
libao/lib/libao-play-async.so → lib/linux-x86_64/libao-play-async.so
Executable file → Normal file
Binary file not shown.
Binary file not shown.
@@ -3,9 +3,7 @@
|
|||||||
|
|
||||||
(require ffi/unsafe
|
(require ffi/unsafe
|
||||||
ffi/unsafe/define
|
ffi/unsafe/define
|
||||||
setup/dirs
|
|
||||||
"../utils/utils.rkt"
|
"../utils/utils.rkt"
|
||||||
racket/runtime-path
|
|
||||||
"libao-ffi.rkt"
|
"libao-ffi.rkt"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -17,20 +15,8 @@
|
|||||||
ao_clear_async
|
ao_clear_async
|
||||||
)
|
)
|
||||||
|
|
||||||
(define-runtime-path libao-async-lib-path "./lib")
|
(define lib (get-lib '("ao-play-async" "libao-play-async") '(#f)))
|
||||||
|
(define-ffi-definer define-libao-async lib)
|
||||||
(define lib (if (eq? (system-type 'os) 'windows)
|
|
||||||
(build-path libao-async-lib-path "ao-play-async")
|
|
||||||
(build-path libao-async-lib-path "libao-play-async")))
|
|
||||||
|
|
||||||
(define-ffi-definer define-libao-async
|
|
||||||
(ffi-lib lib '("0" #f)
|
|
||||||
#:get-lib-dirs (λ ()
|
|
||||||
(let ((sp (cons (build-path ".") (get-lib-search-dirs))))
|
|
||||||
;(displayln sp)
|
|
||||||
sp))
|
|
||||||
#:fail (λ () (error "Cannot load libao-play-async"))
|
|
||||||
))
|
|
||||||
|
|
||||||
(define _libao-async-handle-pointer (_cpointer 'ao-async-handle))
|
(define _libao-async-handle-pointer (_cpointer 'ao-async-handle))
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
(require ffi/unsafe
|
(require ffi/unsafe
|
||||||
ffi/unsafe/define
|
ffi/unsafe/define
|
||||||
setup/dirs
|
|
||||||
"../utils/utils.rkt"
|
"../utils/utils.rkt"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -27,16 +26,7 @@
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
(define ao_lib (ffi-lib "libao" '("3" "4" "5" #f)
|
(define ao_lib (get-lib '("libao") '("5" "4" "3" #f)))
|
||||||
#:get-lib-dirs (λ ()
|
|
||||||
(let ((sp (cons (build-path ".") (get-lib-search-dirs))))
|
|
||||||
(displayln sp)
|
|
||||||
sp))
|
|
||||||
#:fail (λ ()
|
|
||||||
(ffi-lib (get-lib-path "libao-4.dll")))
|
|
||||||
))
|
|
||||||
|
|
||||||
|
|
||||||
(define-ffi-definer define-libao ao_lib)
|
(define-ffi-definer define-libao ao_lib)
|
||||||
|
|
||||||
(define _libao-pointer (_cpointer 'ao_device))
|
(define _libao-pointer (_cpointer 'ao_device))
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
(require ffi/unsafe
|
(require ffi/unsafe
|
||||||
ffi/unsafe/define
|
ffi/unsafe/define
|
||||||
setup/dirs
|
|
||||||
"../utils/utils.rkt"
|
"../utils/utils.rkt"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -15,14 +14,9 @@
|
|||||||
FLAC__int32**
|
FLAC__int32**
|
||||||
)
|
)
|
||||||
|
|
||||||
(define-ffi-definer define-libflac
|
|
||||||
(ffi-lib "libFLAC" '(#f)
|
|
||||||
#:get-lib-dirs (lambda ()
|
|
||||||
(cons (build-path ".") (get-lib-search-dirs)))
|
|
||||||
#:fail (lambda ()
|
|
||||||
(ffi-lib (get-lib-path "libFLAC.dll")))
|
|
||||||
))
|
|
||||||
|
|
||||||
|
(define lib (get-lib '("libFLAC") '(#f)))
|
||||||
|
(define-ffi-definer define-libflac lib)
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; Some FLAC Constants
|
;; Some FLAC Constants
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
(require ffi/unsafe
|
(require ffi/unsafe
|
||||||
ffi/unsafe/define
|
ffi/unsafe/define
|
||||||
setup/dirs
|
|
||||||
"../utils/utils.rkt"
|
"../utils/utils.rkt"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -45,22 +44,30 @@
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
;(define-ffi-definer define-tag-lib
|
;(define-runtime-path lib-path "..");
|
||||||
; (ffi-lib "tag" '("0" #f)
|
;
|
||||||
; #:get-lib-dirs (lambda ()
|
;(define libs (let ((os-type (system-type 'os*)))
|
||||||
; (cons (build-path ".") (get-lib-search-dirs)))
|
; (if (eq? os-type 'windows)
|
||||||
; #:fail (lambda ()
|
; (list
|
||||||
; (ffi-lib (get-lib-path "tag.dll")))
|
; (build-path lib-path "lib" "dll" "tag")
|
||||||
; ))d
|
; (build-path lib-path "lib" "dll" "tag_c"))
|
||||||
|
; (let* ((arch (symbol->string (system-type 'arch)))
|
||||||
|
; (subdir (string-append (symbol->string os-type) "-" arch)))
|
||||||
|
; (list
|
||||||
|
; (build-path lib-path "lib" subdir "libtag")
|
||||||
|
; (build-path lib-path "lib" subdir "libtag_c"))))))
|
||||||
|
|
||||||
(define-ffi-definer define-tag-c-lib
|
;(define (get-lib l)
|
||||||
(ffi-lib "libtag_c" '("2" #f)
|
; (ffi-lib l '("2" #f)
|
||||||
#:get-lib-dirs (lambda ()
|
; #:get-lib-dirs (λ ()
|
||||||
(cons (build-path ".") (get-lib-search-dirs)))
|
; (cons (build-path ".") (get-lib-search-dirs)))
|
||||||
#:fail (lambda ()
|
; #:fail (λ ()
|
||||||
(let ((path (get-lib-path "tag_c.dll")))
|
; (error (format "Cannot find library ~a" l)))
|
||||||
(ffi-lib path)))
|
; ))
|
||||||
))
|
|
||||||
|
(define libtag (get-lib '("tag" "libtag") '("2" #f)))
|
||||||
|
(define libtag_c (get-lib '("tag_c" "libtag_c") '("#2" #f)))
|
||||||
|
(define-ffi-definer define-tag-c-lib libtag_c)
|
||||||
|
|
||||||
(define TagLib_File_Type
|
(define TagLib_File_Type
|
||||||
(_enum '(
|
(_enum '(
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
#lang racket/base
|
#lang racket/base
|
||||||
(require "libao/libao.rkt"
|
(require ;"libao/libao.rkt"
|
||||||
"libflac/flac-decoder.rkt"
|
;"libflac/flac-decoder.rkt"
|
||||||
data/queue
|
;data/queue
|
||||||
|
racket-sound
|
||||||
)
|
)
|
||||||
|
|
||||||
(define test-file3 #f)
|
(define test-file3 #f)
|
||||||
|
|||||||
@@ -1,8 +1,15 @@
|
|||||||
(module utils racket/base
|
(module utils racket/base
|
||||||
|
|
||||||
|
(require racket/path
|
||||||
|
racket/runtime-path
|
||||||
|
ffi/unsafe
|
||||||
|
setup/dirs
|
||||||
|
)
|
||||||
|
|
||||||
(provide while
|
(provide while
|
||||||
until
|
until
|
||||||
get-lib-path
|
build-lib-path
|
||||||
|
get-lib
|
||||||
do-for
|
do-for
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -47,23 +54,27 @@
|
|||||||
(do-for-f))))))
|
(do-for-f))))))
|
||||||
(do-for-f))))))
|
(do-for-f))))))
|
||||||
|
|
||||||
(define (get-lib-path lib)
|
|
||||||
(let ((platform (system-type)))
|
(define-runtime-path lib-path "..")
|
||||||
(cond
|
|
||||||
[(eq? platform 'windows)
|
(define (build-lib-path)
|
||||||
(let ((try1 (build-path (current-directory) ".." "lib" "dll" lib))
|
(let ((os-type (system-type 'os*)))
|
||||||
(try2 (build-path (current-directory) "lib" "dll" lib)))
|
(if (eq? os-type 'windows)
|
||||||
(if (file-exists? try1)
|
(build-path lib-path "lib" "dll")
|
||||||
try1
|
(let* ((arch (symbol->string (system-type 'arch)))
|
||||||
try2)
|
(subdir (string-append (symbol->string os-type) "-" arch)))
|
||||||
)]
|
(let ((path (build-path lib-path "lib" subdir)))
|
||||||
[(eq? platform 'unix)
|
path)))))
|
||||||
(let ((try1 (build-path (current-directory) "lib" lib)))
|
|
||||||
(when (file-exists? try1)
|
(define (get-lib* libs-to-try orig-libs versions)
|
||||||
try1))]
|
(if (null? libs-to-try)
|
||||||
[else
|
(error (format "Cannot find library, tried ~a" orig-libs))
|
||||||
(error (format "Install the shared library: ~a" lib))]
|
(ffi-lib (car libs-to-try) versions
|
||||||
|
#:get-lib-dirs (λ () (cons (build-lib-path) (get-lib-search-dirs)))
|
||||||
|
#:fail (λ () (get-lib* (cdr libs-to-try) orig-libs versions))
|
||||||
)))
|
)))
|
||||||
|
|
||||||
|
(define (get-lib libs-to-try versions)
|
||||||
|
(get-lib* libs-to-try libs-to-try versions))
|
||||||
|
|
||||||
) ; end of module
|
) ; end of module
|
||||||
|
|||||||
Reference in New Issue
Block a user