make.ss
#lang scheme

(require dynext/compile 
         dynext/link 
         dynext/file)

(define name "extension")
(define source (append-c-suffix name))
(define obj (append-object-suffix name))
(define libdir (build-path
             "compiled" "native" (system-library-subpath)))
(when (not (directory-exists? libdir))
    (make-directory* libdir))
(define lib (build-path
             libdir
             (append-extension-suffix (string-append name "_ss"))))

(define (newer-than? dest source)
  (call/cc 
   (λ (return)
     (> (file-or-directory-modify-seconds source #f (λ () (return #f)))
        (file-or-directory-modify-seconds dest #f (λ () (return #t)))))))

(when (newer-than? obj source)
    (compile-extension #f source obj null))
(when (newer-than? lib obj)
  (link-extension #f (list obj) lib))