textclient: test to see whether iconv requires -liconv in ldflags. Now it should...
[citadel.git] / textclient / configure
1 #!/bin/sh
2
3 # CONFIGURE SCRIPT FOR CITADEL TEXT CLIENT
4 # This file is part of "conf-IG-ure"
5 # Copyright (C) 2016-2019 by Art Cancro
6 #
7 # This program is open source software.  Use, duplication, and/or
8 # disclosure are subject to the GNU General Purpose License version 3.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 # GNU General Public License for more details.
14
15 echo 
16 echo 
17 echo Running the configure script to create config.mk
18 echo
19
20 # Parse the command line arguments
21 for x in $*
22 do
23         a=$1
24         k=`echo $a | awk -F= ' { print $1 } '`
25         v=`echo $a | awk -F= ' { print $2 } '`
26
27         case $k in
28                 --prefix)
29                         PREFIX=$v
30                 ;;
31                 --bindir)
32                         BINDIR=$v
33                 ;;
34                 --etcdir)
35                         ETCDIR=$v
36                 ;;
37                 --ctdldir)
38                         CTDLDIR=$v
39                 ;;
40                 --with-ssl)
41                         SSL=yes
42                 ;;
43                 --without-ssl)
44                         SSL=no
45                 ;;
46                 *)
47                         echo $0 : unknown option $k
48                         echo
49                         echo Valid options are:
50                         echo '  --prefix=PREFIX         Install files in PREFIX [/usr/local]'
51                         echo '  --bindir=DIR            Install executables in DIR [PREFIX/bin]'
52                         echo '  --etcdir=DIR            Install citadel.rc in DIR [PREFIX/etc]'
53                         echo '  --ctdldir=DIR           Look for Citadel server in DIR [/usr/local/citadel]'
54                         echo '  --with-ssl              Force build with OpenSSL support [normally autodetected]'
55                         echo '  --without-ssl           Force build without OpenSSL support [normally autodetected]'
56                         exit 1
57                 ;;
58         esac
59         shift
60 done
61
62
63 ########################################################################
64 # Set any missing values
65 ########################################################################
66
67 [ "$PREFIX" = "" ]      && PREFIX=/usr/local
68 [ "$BINDIR" = "" ]      && BINDIR=${PREFIX}/bin
69 [ "$CTDLDIR" = "" ]     && CTDLDIR=/usr/local/citadel
70 [ "$CFLAGS" = "" ]      && CFLAGS='-Wformat-truncation=0 -ggdb'
71 [ "$LDFLAGS" = "" ]     && LDFLAGS=''
72
73
74 ########################################################################
75 # Test for OpenSSL
76 ########################################################################
77 [ "$SSL" != "yes" ] && [ "$SSL" != "no" ] && {
78         echo Testing for OpenSSL...
79         tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/configure.$$
80         tempcc=${tempfile}.c
81         cat >$tempcc <<!
82 #include <openssl/ssl.h>
83 int main(int argc, char **argv) {
84         SSL_load_error_strings();
85         exit(0);
86 }
87 !
88         SSL='no';
89         cc $tempcc -lssl -lcrypto -o $tempfile && $tempfile && SSL='yes'
90         rm -f $tempfile 2>/dev/null
91         rm -f $tempcc 2>/dev/null
92 }
93 echo SSL: $SSL
94 [ "$SSL" = "yes" ] && {
95         CFLAGS=${CFLAGS}' -DHAVE_OPENSSL'
96         LDFLAGS=${LDFLAGS}' -lssl -lcrypto -lz'
97 }
98
99
100 ########################################################################
101 # Test for iconv
102 ########################################################################
103 echo Testing for iconv...
104 tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/configure.$$
105 tempcc=${tempfile}.c
106 cat >$tempcc <<!
107 #include <stdlib.h>
108 #include <unistd.h>
109 #include <stdio.h>
110 #include <iconv.h>
111 int main(int argc, char **argv) {
112         size_t wow = iconv(NULL, NULL, NULL, NULL, NULL);
113         return(0);
114 }
115 !
116
117 cc $tempcc -o $tempfile && {
118         ICONV='yes'
119         echo iconv.h is present and requires no additional libraries
120 } || {
121         echo Trying again with -liconv...
122         cc $tempcc -liconv -o $tempfile && {
123                 ICONV='yes'
124                 LDFLAGS=${LDFLAGS}' -liconv'
125         } || {
126                 echo Citadel Server requires iconv character set conversion.
127                 exit 1
128         }
129 }
130
131
132 ########################################################################
133 # Output the config.mk
134 ########################################################################
135
136 (
137         echo "CFLAGS := ${CFLAGS}"
138         echo "LDFLAGS := ${LDFLAGS}"
139         echo "PREFIX := ${PREFIX}"
140         echo "BINDIR := ${BINDIR}"
141         echo "CTDLDIR := ${CTDLDIR}"
142 ) >config.mk
143
144 cat config.mk
145 echo