fix
[libpgclient.git] / Jamrules.configure
blobc6ff5f0b3c28908ae87ef3fb84b54b5dd71dd31f
1 #Copyright (c) Brian B.
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 3 of the License, or (at your option) any later version.
7 # See the file LICENSE included with this distribution for more
8 # information.
9 rule -configure-options-help- {
10     Echo "jam configure supports" ;
11     Echo "  --prefix=dir       [/usr/local]" ;
12     Echo "  --debug            build with debug symbols" ;
13     Echo "  --multiarch        multiarch support" ;
14     Echo "  --shared           build with shared library" ;
15     Exit "" ;
18 rule -configure-options-debug- {
19     BUILDDEBUG = tan ;
22 rule -configure-options-multiarch- {
23     MULTIARCH = tan ;
26 rule -configure-test-gmp- {
27     return [
28         -configure-test-compile-cc- "libgmp" :
29         "#include <gmp.h>"
30         "int main () {"
31         "mpz_t x;"
32         "mpz_init_set_str(x, "1234567", 10);"
33         "return 0;"
34         "}"
35         : : "-lgmp"
36     ] ;
39 # $(1) -- program, string list
40 # $(2) -- additional compiler flags (optional)
41 # $(3) -- additional linker flags (optional)
42 rule -configure-try-exec-cc- {
43   local rc = ;
44   local res = ;
45   if $(CC) && $(LINK) {
46     local tfn = [ RandName ] ;
47     tfn = $(tfn:S=.c) ;
48     if [ ListWrite $(tfn) : $(1) ] {
49       rc = [ Command $(CC) -c $(tfn:Q) -o $(tfn:S=.o:Q) $(2) '2>/dev/null' : exit-code no-output ] ;
50       if $(rc) = '0' {
51         rc = [ Command $(LINK) $(tfn:S=.o:Q) -o $(tfn:S=.elf:Q) $(3) '2>/dev/null' : exit-code no-output ] ;
52         if $(rc) = '0' {
53             res = [ Command $(tfn:S=.elf:Q) : parse-output no-space-break no-tab-break no-cr-break ] ;
54         }
55       }
56       Command rm $(tfn:Q) $(tfn:S=.o:Q) $(tfn:S=.elf:Q) '2>/dev/null' ;
57     }
58   }
59   return $(res) ;
62 # $(1) -- test name
63 # $(2) -- program, string list
64 # $(3) -- additional compiler flags (optional)
65 # $(4) -- additional linker flags (optional)
66 rule -configure-test-exec-cc- {
67   local r ;
68   Echo 'generate code for' $(1) '... ' : -n ;
69   r = [ -configure-try-exec-cc- $(2) : $(3) : $(4) ] ;
70   if $(r) {
71     if ( $(r) = "-D__m32__" ) {
72         Echo "32 bit" : -n ;
73     } else if ( $(r) = "-D__m64__" ) {
74         Echo "64 bit" : -n ;
75     } else {
76         Echo "unknown" : -n ;
77     }
78     Echo ' mode' ;
79   }
80   return $(r);
83 rule -configure-test-arch- {
84     return [
85         -configure-test-exec-cc- "" :
86         "#include <stdio.h>"
87         "int main () {"
88         "switch (sizeof(void*)) {"
89         "case 4: printf(\"-D__m32__\"); break;"
90         "case 8: printf(\"-D__m64__\"); break;"
91         "}"
92         "return 0;"
93         "}"
94         : :
95     ];
98 rule -configure- {
99     if ! $(PREFIX) {
100         PREFIX = /usr/local ;
101     }
102     local arch = [ -configure-test-arch- ] ;
103     switch $(OS) {
104         case LINUX :
105             if ( $(arch) = '-D__m32__' ) {
106                 ARCH_LIB = "/i386-linux-gnu" ;
107             } else {
108                 ARCH_LIB = "/x86_64-linux-gnu" ;
109             }
110         case AIX :
111             if ( $(arch) = '-D__m32__' ) {
112                 ARCH_LIB = "/powerpc-aix-ibm" ;
113             } else {
114                 ARCH_LIB = "/powerpc64-aix-ibm" ;
115             }
116     }
117     if ! $(MULTIARCH) {
118         ARCH_LIB = ;
119     } else {
120         if ! $(ARCH_LIB) {
121             Exit "Architecture not supported" ;
122         }
123     }
124     local pl = [ Command "echo $(ARCH_LIB) | sed \"s/\\//\\\\\\\\\\\//g\"" : dummy ] ;
125     -configure-add-line- "ARCH_LIB = $(ARCH_LIB) ;" ;
126     -configure-pkg-config-necessary-
127         "libex"         "libex"
128     ;
129     local pp = [ Command "echo $(PREFIX) | sed \"s/\\//\\\\\\\\\\\//g\"" : dummy ] ;
130     if [ -configure-test-gmp- ] == 1 {
131         -configure-add-line- "CFLAGS.all += -DHAVE_GMP ;" ;
132         -configure-add-line- "LINKLIBS.all += -lgmp ;" ;
133         if $(ARCH_LIB) {
134             Command "sed -e \"s/@prefix/\\$(pp)/\" -e \"s/@cflags/-DHAVE_GMP/\" -e \"s/@arch_lib/\\$(pl)/g\" -e \"s/@ldflags/-lgmp/g\" ./libpgcli.pc.in > ./libpgcli.pc" ;
135         } else {
136             Command "sed -e \"s/@prefix/\\$(pp)/\" -e \"s/@cflags/-DHAVE_GMP/\" -e \"s/@arch_lib//g\" -e \"s/@ldflags/-lgmp/g\" ./libpgcli.pc.in > ./libpgcli.pc" ;
137         }
138     } else {
139         if $(ARCH_LIB) {
140             Command "sed -e \"s/@prefix/\\$(pp)/\" -e \"s/@cflags//\" -e \"s/@arch_lib/\\$(pl)/g\" -e \"s/@ldflags//g\" ./libpgcli.pc.in > ./libpgcli.pc" ;
141         } else {
142             Command "sed -e \"s/@prefix/\\$(pp)/\" -e \"s/@cflags//\" -e \"s/@arch_lib//g\" -e \"s/@ldflags//g\" ./libpgcli.pc.in > ./libpgcli.pc" ;
143         }
144     }
145     if $(BUILDDEBUG) {
146         if $(CC) == "gcc" {
147             -configure-add-line- "CFLAGS.all += -O0 -g3 ;" ;
148         } else {
149             -configure-add-line- "CFLAGS.all += -O0 -g ;" ;
150         }
151     } else {
152         -configure-add-line- "set-profile ;" ;
153     }
154     -configure-add-line- "BUILDDEBUG =" "$(BUILDDEBUG)" ";" ;
155     -configure-add-line- "MULTIARCH =" "$(MULTIARCH)" ";" ;
158 rule -configure-preinit- {
159     BUILDDEBUG = ;
160     MULTIARCH = ;
163 configure ;