source: project/release/4/postgresql/trunk/postgresql.setup @ 30481

Last change on this file since 30481 was 30481, checked in by sjamaan, 7 years ago

Tag postgresql 3.9

File size: 2.3 KB
Line 
1;;; postgresql.setup -*- Scheme -*-
2
3(use files)
4
5(define libpq-flags
6  `(-C -I -C "\"`pg_config --includedir`\"" "-L\"`pg_config --libdir`\"" -rpath "`pg_config --libdir`" -lpq))
7
8(define PQescapeIdentifier-presence-checker #<<EOF
9  #include <libpq-fe.h>
10  int main(void)
11  {
12     PGconn *conn = NULL; /* Bork */
13     return PQescapeIdentifier(conn, "test", 4) != NULL;
14  }
15EOF
16)
17
18(define PQconnectdbParams-presence-checker #<<EOF
19  #include <libpq-fe.h>
20  int main(void)
21  {
22     const char *kw[] = {"a", NULL};
23     const char *val[] = {"b", NULL};
24     return PQconnectdbParams(kw, val, 0) != NULL;
25  }
26EOF
27)
28
29(define PG_DIAG_INTERNAL_QUERY+POSITION-checker #<<EOF
30  #include <libpq-fe.h>
31  int main(void)
32  {
33     int foo = PG_DIAG_INTERNAL_QUERY;
34     int bar = PG_DIAG_INTERNAL_POSITION;
35     return foo + bar;
36  }
37EOF
38)
39
40(define PG_DIAG_SCHEMA_INFO-checker #<<EOF
41  #include <libpq-fe.h>
42  int main(void)
43  {
44     int s = PG_DIAG_SCHEMA_NAME;
45     int t = PG_DIAG_TABLE_NAME;
46     int col = PG_DIAG_COLUMN_NAME;
47     int d = PG_DIAG_DATATYPE_NAME;
48     int con = PG_DIAG_CONSTRAINT_NAME;
49     return s + t + col + d + con;
50  }
51EOF
52)
53
54(define feature-checks
55  `((has-PQescapeIdentifier . ,PQescapeIdentifier-presence-checker)
56    (has-PQconnectdbParams . ,PQconnectdbParams-presence-checker)
57    (has-PG_DIAG_INTERNAL_QUERY+POSITION . ,PG_DIAG_INTERNAL_QUERY+POSITION-checker)
58    (has-PG_DIAG_SCHEMA_INFO . ,PG_DIAG_SCHEMA_INFO-checker)))
59
60(define-syntax try-compile-pgsql-prog
61  (syntax-rules ()
62    ((_ str)
63     (begin
64      (with-output-to-file "attempt.c" (lambda () (display str) (newline)))
65      (let ((result (handle-exceptions ex #f (compile "attempt.c" ,@libpq-flags))))
66        (delete-file* "attempt.c")
67        (delete-file* "attempt.o")
68        (delete-file* "attempt")
69        result)))))
70
71(define (check-features)
72  (fold (lambda (feature/test features)
73          (if (try-compile-pgsql-prog (cdr feature/test))
74              (append! `(-feature ,(car feature/test)) features)
75              features))
76        '()
77        feature-checks))
78
79(compile -s -O2 -d0 postgresql.scm -j postgresql ,@(check-features) ,@libpq-flags)
80
81(compile postgresql.import.scm -s -O2 -d0)
82
83(install-extension
84 'postgresql
85 '("postgresql.so" "postgresql.import.so")
86 '((version "3.10")
87   (documentation "postgresql.html")))
Note: See TracBrowser for help on using the repository browser.