;;;; -*- Scheme -*- (use srfi-1) (include "lib/version.scm") (define version (apply sprintf "~A.~A.~A" (egg-version))) (define modules '(sdl2-internals sdl2)) (define known-sdl-versions '("2.0.0" "2.0.1" "2.0.2" "2.0.3" "2.0.4" )) (define known-egg-versions '("0.2.0" )) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define sdl2-flags-list (if (get-environment-variable "SDL2_FLAGS") (string-split (get-environment-variable "SDL2_FLAGS")) (with-input-from-pipe "sdl2-config --cflags --libs" read-lines))) (compile ,@sdl2-flags-list "print-sdl-version.scm" -o "./print-sdl-version") (define sdl-version (with-input-from-pipe "./print-sdl-version" read)) (remove-file* "./print-sdl-version") (printf "~Nsdl2 egg version ~A~%" version) (printf "Compiling with SDL version ~A" sdl-version) ;;; Generate a list with a "sdl2-X.Y.Z" string for every egg version ;;; less than or equal to the current egg version. (define egg-version-features (filter-map (lambda (v) (if (version>=? version v) (sprintf "sdl2-~A+" v) #f)) known-egg-versions)) ;;; Generate a list with a "libSDL-X.Y.Z" string for every SDL version ;;; less than or equal to the current SDL version. (define sdl-version-features (filter-map (lambda (v) (if (version>=? sdl-version v) (sprintf "libSDL-~A+" v) #f)) known-sdl-versions)) ;;; Generate lib/_features.scm which registers feature identifiers. (with-output-to-file "lib/_features.scm" (lambda () (define registrations `((register-feature! #:sdl2) ,@(map (lambda (v) `(register-feature! ,(string->keyword v))) (append egg-version-features sdl-version-features)))) (print "\n;;; NOTE: This file is automatically generated during installation.\n") (pp `(begin-for-syntax ,@registrations)) (print) (pp `(eval-when (compile load eval) ,@registrations)))) (define emit-types? (version>=? (chicken-version) "4.7.4")) (define profile? (cond-expand (sdl2-profile #t) (else #f))) (define verbose? (get-environment-variable "SDL2_VERBOSE_INSTALL")) (define (module-file module extension) (string-append (symbol->string module) extension)) (define (compile-module module #!optional (extra-flags-list '())) (newline) (printf "COMPILING MODULE: ~A~N~%" module) (compile -J -s -O3 -d1 ,@extra-flags-list ,@(if verbose? '(-v) '()) ,@(if profile? '(-profile) '()) ,@(if emit-types? `(-emit-type-file ,(module-file module ".types")) '()) ,(module-file module ".scm")) (compile -v -s -O3 -d0 ,(module-file module ".import.scm")) (newline)) (newline) (compile-module 'sdl2-internals sdl2-flags-list) (compile-module 'sdl2 '()) (newline) (define products (append-map (lambda (module) (cons* (module-file module ".so") (module-file module ".import.so") (if emit-types? (list (module-file module ".types")) '()))) modules)) (install-extension 'sdl2 products `((version ,version)))