1dnl ######################################################################### 2dnl ### Init 3dnl ######################################################################### 4 5dnl ------------------------------------------------------------------------- 6dnl Name and version 7dnl 8AC_INIT([libzen], [0.4.39]) 9 10dnl ------------------------------------------------------------------------- 11dnl Test if we are at the good place 12dnl 13AC_CONFIG_SRCDIR([../../../Source/ZenLib/Ztring.cpp]) 14 15dnl ------------------------------------------------------------------------- 16dnl sets build, host, target variables and the same with _alias 17dnl 18AC_CANONICAL_BUILD 19AM_INIT_AUTOMAKE([foreign -Wall]) 20 21dnl ------------------------------------------------------------------------- 22dnl Autotools init 23dnl 24AC_PROG_CC 25AC_PROG_CXX 26AC_PROG_CPP 27AC_DISABLE_STATIC 28AC_LIBTOOL_WIN32_DLL 29AC_PROG_LIBTOOL 30AC_PROG_INSTALL 31 32dnl ######################################################################### 33dnl ### Options 34dnl ######################################################################### 35 36dnl ------------------------------------------------------------------------- 37dnl Enable 38dnl 39AC_ARG_ENABLE([debug], [AS_HELP_STRING([--enable-debug], [Enable full debug])], , [enable_debug=no]) 40AC_ARG_ENABLE([gprof], [AS_HELP_STRING([--enable-gprof], [Enable gprof log])], , [enable_gprof=no]) 41AC_ARG_ENABLE([universal_binary], [AS_HELP_STRING([--enable-universal_binary], [Create Mac PPC/i386 Universal binary])], , [enable_universal_binary=no]) 42AC_ARG_ENABLE([arch-ppc], [AS_HELP_STRING(([--enable-arch-ppc], [Create Mac PPC architecture]))], , [enable_arch_ppc=no]) 43AC_ARG_ENABLE([arch-ppc64], [AS_HELP_STRING(([--enable-arch-ppc64], [Create Mac PPC64 architecture]))], , [enable_arch_ppc64=no]) 44AC_ARG_ENABLE([arch-i386], [AS_HELP_STRING(([--enable-arch-i386], [Create Mac/iPhone i386 architecture]))], , [enable_arch_i386=no]) 45AC_ARG_ENABLE([arch-x86_64], [AS_HELP_STRING(([--enable-arch-x86_64], [Create Mac/iPhone x86_64 architecture]))], , [enable_arch_x86_64=no]) 46AC_ARG_ENABLE([arch-armv7], [AS_HELP_STRING(([--enable-arch-armv7], [Create iPhone ARMv7 architecture]))], , [enable_arch_armv7=no]) 47AC_ARG_ENABLE([arch-armv7s], [AS_HELP_STRING(([--enable-arch-armv7s], [Create iPhone ARMv7s architecture]))], , [enable_arch_armv7s=no]) 48AC_ARG_ENABLE([arch-arm64], [AS_HELP_STRING(([--enable-arch-arm64], [Create Mac/iPhone ARM64 architecture]))], , [enable_arch_arm64=no]) 49AC_ARG_ENABLE([unicode], [AS_HELP_STRING(([--disable-unicode], [Disable unicode]))], , [enable_unicode=yes]) 50AC_ARG_ENABLE([wstring_missing], [AS_HELP_STRING(([--enable-wstring_missing], [Disable wstring support (old compilers)]))], , [enable_wstring_missing=no]) 51AC_ARG_ENABLE([stream_missing], [AS_HELP_STRING(([--enable-stream_missing], [Disable stream support (old compilers)]))], , [enable_stream_missing=no]) 52AC_ARG_ENABLE([large_files], [AS_HELP_STRING(([--disable-large_files], [Disable large files support]))], , [enable_large_files=yes]) 53dnl AC_ARG_ENABLE([threads], [AS_HELP_STRING(([--disable-threads], [Disable threads support]))], , [enable_threads=yes]) 54 55 56dnl ------------------------------------------------------------------------- 57dnl With 58dnl 59AC_ARG_WITH([macosx-sdk], [AS_HELP_STRING(([--with-macosx-sdk], [Force the Mac SDK]))], , [with_macosx_sdk=no]) 60AC_ARG_WITH([macosx-version-min], [AS_HELP_STRING(([--with-macosx-version-min], [Force the Mac Version]))], , [with_macosx_version_min=no]) 61AC_ARG_WITH([iphoneos-sdk], [AS_HELP_STRING(([--with-iphoneos-sdk], [Force the iPhone SDK]))], , [with_iphoneos_sdk=no]) 62AC_ARG_WITH([iphoneos-version-min], [AS_HELP_STRING(([--with-iphoneos-version-min], [Force the iPhone Version]))], , [with_iphoneos_version_min=no]) 63 64dnl ######################################################################### 65dnl ### Compiler specific 66dnl ######################################################################### 67 68dnl ------------------------------------------------------------------------- 69case "${build}" in 70 powerpc-montavista* ) 71 CFLAGS="$CFLAGS -D__MONTAVISTA__" 72 CXXFLAGS="$CXXFLAGS -D__MONTAVISTA__" 73 ;; 74esac 75 76dnl ------------------------------------------------------------------------- 77dnl Mac/iPhone Architecture and SDK 78dnl 79if test "$enable_universal_binary" = "yes"; then 80 enable_arch_ppc=yes 81 enable_arch_i386=yes 82fi 83if test "$enable_arch_ppc" = "yes"; then 84 CXXFLAGS="$CXXFLAGS -arch ppc" 85 CFLAGS="$CFLAGS -arch ppc" 86 LDFLAGS="$LDFLAGS -arch ppc" 87fi 88if test "$enable_arch_ppc64" = "yes"; then 89 CXXFLAGS="$CXXFLAGS -arch ppc64" 90 CFLAGS="$CFLAGS -arch ppc64" 91 LDFLAGS="$LDFLAGS -arch ppc64" 92fi 93if test "$enable_arch_i386" = "yes"; then 94 CXXFLAGS="$CXXFLAGS -arch i386" 95 CFLAGS="$CFLAGS -arch i386" 96 LDFLAGS="$LDFLAGS -arch i386" 97fi 98if test "$enable_arch_x86_64" = "yes"; then 99 CXXFLAGS="$CXXFLAGS -arch x86_64" 100 CFLAGS="$CFLAGS -arch x86_64" 101 LDFLAGS="$LDFLAGS -arch x86_64" 102fi 103if test "$enable_arch_armv7" = "yes"; then 104 CXXFLAGS="$CXXFLAGS -arch armv7" 105 CFLAGS="$CFLAGS -arch armv7" 106 LDFLAGS="$LDFLAGS -arch armv7" 107fi 108if test "$enable_arch_armv7s" = "yes"; then 109 CXXFLAGS="$CXXFLAGS -arch armv7s" 110 CFLAGS="$CFLAGS -arch armv7s" 111 LDFLAGS="$LDFLAGS -arch armv7s" 112fi 113if test "$enable_arch_arm64" = "yes"; then 114 CXXFLAGS="$CXXFLAGS -arch arm64" 115 CFLAGS="$CFLAGS -arch arm64" 116 LDFLAGS="$LDFLAGS -arch arm64" 117fi 118if test "x$with_macosx_sdk" != xno ; then 119 CXXFLAGS="-isysroot $with_macosx_sdk $CXXFLAGS" 120 CFLAGS="-isysroot $with_macosx_sdk $CFLAGS" 121 LDFLAGS="-isysroot $with_macosx_sdk $LDFLAGS" 122fi 123if test "x$with_macosx_version_min" != xno ; then 124 CXXFLAGS="-mmacosx-version-min=$with_macosx_version_min $CXXFLAGS" 125 CFLAGS="-mmacosx-version-min=$with_macosx_version_min $CFLAGS" 126 LDFLAGS="-mmacosx-version-min=$with_macosx_version_min $LDFLAGS" 127fi 128if test "x$with_iphoneos_sdk" != xno ; then 129 CXXFLAGS="-isysroot $with_iphoneos_sdk $CXXFLAGS" 130 CFLAGS="-isysroot $with_iphoneos_sdk $CFLAGS" 131 LDFLAGS="-isysroot $with_iphoneos_sdk $LDFLAGS" 132fi 133if test "x$with_iphoneos_version_min" != xno ; then 134 CXXFLAGS="-miphoneos-version-min=$with_iphoneos_version_min $CXXFLAGS" 135 CFLAGS="-miphoneos-version-min=$with_iphoneos_version_min $CFLAGS" 136 LDFLAGS="-miphoneos-version-min=$with_iphoneos_version_min $LDFLAGS" 137fi 138 139dnl ######################################################################### 140dnl ### ZenLib flags 141dnl ######################################################################### 142 143dnl ------------------------------------------------------------------------- 144dnl Common 145dnl 146if test "$enable_shared" = "yes"; then 147 ZenLib_LIBS="-L$(pwd)/.libs -lzen -lpthread $ZenLib_LIBS" 148fi 149if test "$enable_static" = "yes"; then 150 ZenLib_LIBS_Static="$(pwd)/.libs/libzen.a -lpthread $ZenLib_LIBS_Static" 151fi 152 153dnl ######################################################################### 154dnl ### C/C++ compiler options used to compile 155dnl ######################################################################### 156 157dnl ------------------------------------------------------------------------- 158dnl wstring 159dnl 160if test "$enable_wstring_missing" = "yes"; then 161 CXXFLAGS="$CXXFLAGS -DWSTRING_MISSING" 162 ZenLib_CXXFLAGS="$ZenLib_CXXFLAGS -DWSTRING_MISSING" 163 ZenLib_wstring_missing="yes" 164 enable_unicode="no" 165else 166 ZenLib_wstring_missing="no" 167fi 168 169dnl ------------------------------------------------------------------------- 170dnl Unicode 171dnl 172if test "$enable_unicode" = "yes"; then 173 CXXFLAGS="$CXXFLAGS -DUNICODE" 174 ZenLib_CXXFLAGS="$ZenLib_CXXFLAGS -DUNICODE" 175 ZenLib_Unicode="yes" 176else 177 ZenLib_Unicode="no" 178fi 179 180dnl ------------------------------------------------------------------------- 181dnl Large files 182dnl 183if test "$enable_large_files" = "yes"; then 184 CXXFLAGS="$CXXFLAGS -D_LARGE_FILES -D_FILE_OFFSET_BITS=64" 185 ZenLib_LargeFiles="yes" 186else 187 ZenLib_LargeFiles="no" 188fi 189 190dnl ------------------------------------------------------------------------- 191dnl Threads 192dnl 193 194dnl ------------------------------------------------------------------------- 195dnl Check if size_t is long 196dnl 197AC_LANG([C++]) 198AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 199 #include <cstdlib> 200 void foo(signed int) {} 201 void foo(unsigned int) {} 202 int main () {foo(size_t(0)); return 0;}])], [size_t_is_long="no"], [size_t_is_long="yes"]) 203 204if test "$size_t_is_long" = "yes"; then 205 CXXFLAGS="$CXXFLAGS -DSIZE_T_IS_LONG" 206 ZenLib_CXXFLAGS="$ZenLib_CXXFLAGS -DSIZE_T_IS_LONG" 207fi 208 209dnl ------------------------------------------------------------------------- 210dnl Check if stream is available 211dnl 212AC_LANG([C++]) 213if test "$enable_unicode" = "yes"; then 214 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 215 #include <sstream> 216 int main () {std::wstringstream message; message<<1.0; return 0;}])], , [enable_stream_missing="yes"]) 217else 218 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 219 #include <sstream> 220 int main () {std::stringstream message; message<<1.0; return 0;}])], , [enable_stream_missing="yes"]) 221fi 222 223if test "$enable_stream_missing" = "yes"; then 224 CXXFLAGS="$CXXFLAGS -DSTREAM_MISSING" 225fi 226 227dnl ------------------------------------------------------------------------- 228dnl GNU compiler 229dnl 230if test "$GXX" = yes ; then 231 case "${build}" in 232 *mingw* | *cygwin* ) ;; 233 *) 234 CFLAGS="$CFLAGS -fPIC" 235 CXXFLAGS="$CXXFLAGS -fPIC" 236 LDFLAGS="$LDFLAGS -fPIC" 237 ;; 238 esac 239 if test "$enable_debug" = "yes"; then 240 CFLAGS="$CFLAGS -O0 -g -Wall -Wundef" 241 CXXFLAGS="$CXXFLAGS -O0 -g -Wall -W -Wundef -Wcast-qual -Wno-ctor-dtor-privacy" 242 else 243 CFLAGS="$CFLAGS -O2" 244 CXXFLAGS="$CXXFLAGS -O2" 245 fi 246 if test "$enable_gprof" = "yes"; then 247 CFLAGS="$CFLAGS -pg -g" 248 CXXFLAGS="$CXXFLAGS -pg -g" 249 fi 250fi 251 252dnl ------------------------------------------------------------------------- 253dnl External libs 254dnl 255LDFLAGS="$LDFLAGS -lpthread" 256 257dnl ------------------------------------------------------------------------- 258dnl Check if thread safe variants of time functions are available 259dnl 260AC_CHECK_FUNCS(gmtime_r localtime_r) 261 262dnl ######################################################################### 263dnl ### Output 264dnl ######################################################################### 265 266AC_SUBST(ZenLib_CXXFLAGS) 267AC_SUBST(ZenLib_LIBS) 268AC_SUBST(ZenLib_LIBS_Static) 269AC_SUBST(ZenLib_Unicode) 270AC_SUBST(ZenLib_wstring_missing) 271AC_SUBST(ZenLib_LargeFiles) 272AC_CONFIG_FILES(libzen-config, [chmod u+x libzen-config]) 273AC_CONFIG_FILES(libzen.pc) 274 275AC_OUTPUT(Makefile) 276 277dnl ######################################################################### 278dnl ### Report how we have been configured 279dnl ######################################################################### 280 281echo "" 282echo "Configured ZenLib for '$build'" 283echo "" 284echo " Unicode? $enable_unicode" 285echo " Large files support? $enable_large_files" 286echo " wstring missing support? $enable_wstring_missing" 287echo " stream missing support? $enable_stream_missing" 288echo "" 289echo " Create static lib? $enable_static" 290echo " Create shared lib? $enable_shared" 291echo "" 292echo " CXXFLAGS: $CXXFLAGS" 293echo " LIBS: $LIBS" 294