pre-installer.ss
(module pre-installer mzscheme
        (require (lib "setup-extension.ss" "make")
                 (lib "compile.ss" "dynext")
                 (lib "link.ss" "dynext")
                 (lib "process.ss")
                 (lib "file.ss"))
        (provide pre-installer)

        (define (inserr env message)
          (display
           (format "  ~a~%" message))
          (display
           (format "  Setting environment variable ~a might help.~%  It will be used as PLT_EXTENSION_LIB_PATHS variable~%"
                   env )))

        (define saved-plt-extension-lib-paths #f)

        (define (cond-set-extension_lib_path env)
          (let ((var (getenv env)))
            (if (eq? var #f)
                (begin
                  (display (format "  ~a has not been set, will *not* be used for PLT_EXTENSION_LIB_PATHS~%" env))
                  (if saved-plt-extension-lib-paths
                      (begin
                        (display (format "  Resetting PLT_EXTENSION_LIB_PATHS=~a~%" saved-plt-extension-lib-paths))
                        (putenv "PLT_EXTENSION_LIB_PATHS" saved-plt-extension-lib-paths))))
                (begin
                  (display (format "  Setting PLT_EXTENSION_LIB_PATHS=~a~%" var))
                  (putenv "PLT_EXTENSION_LIB_PATHS" var)))))

        (define (pre-installer plthome package-dir)
          (with-handlers ((exn:fail? (lambda (exn) (inserr "PSQL_EXTENSION_LIB_PATH" "POSTGRESQL DRIVER NOT INSTALLED"))))
            (cond-set-extension_lib_path "PSQL_EXTENSION_LIB_PATH")
            (display (format "  PLT_EXTENSION_LIB_PATHS=~a~%" (getenv "PLT_EXTENSION_LIB_PATHS")))
            (begin
              (current-directory package-dir)
              (let ((type (system-type 'os)))
                (if (eq? type 'windows)
                    (begin
                      (system "cl /LD c-sqld-psql.c")
                      )
                    (begin
                      (system "gcc -shared -o c-sqld-psql.so c-sqld-psql.c -lpthread")
                      )
                    ))
              ))
          )


        )