fixes, pgsql
[libpgclient.git] / Jamrules.configure
blob8e07b35349ef377f2c8cc9ced3fdc212a6cc8a01
1 rule -configure-options-help- {
2     Echo "jam configure supports" ;
3     Echo "  --prefix=dir       [/usr/local]" ;
4     Echo "  --debug            build with debug symbols" ;
5     Echo "  --tests            build tests" ;
6     Echo "  --install-arch     install to multiarch directory" ;
7     Echo "  --shared           build with shared library" ;
8     Exit "" ;
11 rule -configure-options-debug- {
12     BUILDDEBUG = tan ;
15 rule -configure-options-tests- {
16     BUILDTESTS = tan ;
19 rule -configure-options-install-arch- {
20     INSTALLARCH = tan ;
23 rule -configure-test-gmp- {
24     return [
25         -configure-test-compile-cc- "libgmp" :
26         "#include <gmp.h>"
27         "int main () {"
28         "mpz_t x;"
29         "mpz_init_set_str(x, "1234567", 10);"
30         "return 0;"
31         "}"
32         : : "-lgmp"
33     ] ;
36 # $(1) -- program, string list
37 # $(2) -- additional compiler flags (optional)
38 # $(3) -- additional linker flags (optional)
39 rule -configure-try-exec-cc- {
40   local rc = ;
41   local res = ;
42   if $(CC) && $(LINK) {
43     local tfn = [ RandName ] ;
44     tfn = $(tfn:S=.c) ;
45     if [ ListWrite $(tfn) : $(1) ] {
46       rc = [ Command $(CC) $(CFLAGS.all) -c $(tfn:Q) -o $(tfn:S=.o:Q) $(2) '2>/dev/null' : exit-code no-output ] ;
47       if $(rc) = '0' {
48         rc = [ Command $(LINK) $(tfn:S=.o:Q) -o $(tfn:S=.elf:Q) $(3) '2>/dev/null' : exit-code no-output ] ;
49         if $(rc) = '0' {
50             res = [ Command $(tfn:S=.elf:Q) : parse-output no-space-break no-tab-break no-cr-break ] ;
51         }
52       }
53       Command rm $(tfn:Q) $(tfn:S=.o:Q) $(tfn:S=.elf:Q) '2>/dev/null' ;
54     }
55   }
56   return $(res) ;
59 # $(1) -- test name
60 # $(2) -- program, string list
61 # $(3) -- additional compiler flags (optional)
62 # $(4) -- additional linker flags (optional)
63 rule -configure-test-exec-cc- {
64   local r ;
65   Echo 'generate code for' $(1) '... ' : -n ;
66   r = [ -configure-try-exec-cc- $(2) : $(3) : $(4) ] ;
67   if $(r) {
68     if ( $(r) = "-D__m32__" ) {
69         Echo "32 bit" : -n ;
70     } else if ( $(r) = "-D__m64__" ) {
71         Echo "64 bit" : -n ;
72     } else {
73         Echo "unknown" : -n ;
74     }
75     Echo ' mode' ;
76   }
77   return $(r);
80 rule -configure-test-arch- {
81     return [
82         -configure-test-exec-cc- "" :
83         "#include <stdio.h>"
84         "int main () {"
85         "switch (sizeof(void*)) {"
86         "case 4: printf(\"-D__m32__\"); break;"
87         "case 8: printf(\"-D__m64__\"); break;"
88         "}"
89         "return 0;"
90         "}"
91         : :
92     ];
95 rule -configure- {
96     if ! $(PREFIX) {
97         PREFIX = /usr/local ;
98     }
99     local arch = [ -configure-test-arch- ] ;
100     switch $(OS) {
101         case LINUX :
102             if ( $(arch) = '-D__m32__' ) {
103                 ARCH_LIB = "/i386-linux-gnu" ;
104             } else {
105                 ARCH_LIB = "/x86_64-linux-gnu" ;
106             }
107         case AIX :
108             if ( $(arch) = '-D__m32__' ) {
109                 ARCH_LIB = "/powerpc-aix-ibm" ;
110             } else {
111                 ARCH_LIB = "/powerpc64-aix-ibm" ;
112             }
113     }
114     if ! $(INSTALLARCH) {
115         ARCH_LIB = ;
116     } else {
117         if ! $(ARCH_LIB) {
118             Exit "Architecture not supported" ;
119         }
120     }
121     local pl = [ Command "echo $(ARCH_LIB) | sed \"s/\\//\\\\\\\\\\\//g\"" : dummy ] ;
122     -configure-add-line- "ARCH_LIB = $(ARCH_LIB) ;" ;
123     -configure-pkg-config-necessary-
124         "libex"         "libex"
125     ;
126     local pp = [ Command "echo $(PREFIX) | sed \"s/\\//\\\\\\\\\\\//g\"" : dummy ] ;
127     if [ -configure-test-gmp- ] == 1 {
128         -configure-add-line- "CFLAGS.all += -DHAVE_GMP ;" ;
129         -configure-add-line- "LINKLIBS.all += -lgmp ;" ;
130         Command "sed -e \"s/@prefix/\\$(pp)/\" -e \"s/@cflags/-DHAVE_GMP/\" ./libpgcli.pc.in > ./libpgcli.pc" ;
131     } else {
132         Command "sed -e \"s/@prefix/\\$(pp)/\" -e \"s/@cflags//\" ./libpgcli.pc.in > ./libpgcli.pc" ;
133     }
134     if $(BUILDDEBUG) {
135         if $(CC) == "gcc" {
136             -configure-add-line- "CFLAGS.all += -O0 -g3 ;" ;
137         } else {
138             -configure-add-line- "CFLAGS.all += -O0 -g ;" ;
139         }
140     } else {
141         -configure-add-line- "set-profile ;" ;
142     }
143     -configure-add-line- "BUILDDEBUG =" "$(BUILDDEBUG)" ";" ;
144     -configure-add-line- "BUILDTESTS =" "$(BUILDTESTS)" ";" ;
145     -configure-add-line- "INSTALLARCH =" "$(INSTALLARCH)" ";" ;
148 rule -configure-preinit- {
149     BUILDDEBUG = ;
150     BUILDTESTS = ;
151     INSTALLARCH = ;
154 configure ;