]> OCCT Git - occt-wok.git/commitdiff
23445: Improve configure.ac script to check native products properly
authorvsr <vsr@opencascade.com>
Fri, 26 Oct 2012 11:14:46 +0000 (15:14 +0400)
committeribs <ibs@opencascade.com>
Tue, 20 Nov 2012 07:12:38 +0000 (11:12 +0400)
FREETYPE and FTGL search algorithms have been refactored

src/WOKTclLib/templates/template.ac

index 3d1280e9c75e9025add1ab2064f4d23fdffacf62..3e9f6ffc7e78d556c50b9b9ad547296fa231ae32 100644 (file)
@@ -425,105 +425,170 @@ AM_CONDITIONAL( HAVE_GL, [test "xyes" = "x$HAVE_GL"] )
 #---------------------------------------------------------------------
 #
 # Check for FREETYPE Libraries
-#  
-#  
+# 
+# 
 #---------------------------------------------------------------------
 AC_ARG_WITH([freetype],
   [AC_HELP_STRING([--with-freetype=DIR],[Location of FREETYPE])],
-  [freetype="${withval}"],[freetype=])
+  [freetype="${withval}"],[freetype=yes])
 
 CSF_FREETYPE_INCLUDES=""
 CSF_FREETYPE_LIB=""
+HAVE_FREETYPE=no
 
 if test "xyes" = "x${HAVE_GL}"; then
   AC_LANG([C++])
-  HAVE_FREETYPE=no
-  HAVE_FREETYPE_INC=yes
-  CPPFLAGS="-I$freetype/include -I$freetype/include/freetype2 $CPPFLAGS"
-  AC_CHECK_HEADER( [ft2build.h], [], [HAVE_FREETYPE=no] )
-  if test ! -d $freetype; then
-       DISABLE_FREETYPE_REASON="($freetype directory is not exists)"
-       AC_MSG_ERROR([$freetype directory is not exists])
-  elif test "x$HAVE_FREETYPE_INC" = "xyes"; then
-    CSF_FREETYPE_INCLUDES="-I$freetype/include -I$freetype/include/freetype2"
-    LDFLAGS="-L$freetype/lib"
-    AC_CHECK_LIB(freetype, FT_Init_FreeType,
-    [
-       HAVE_FREETYPE=yes
-       CSF_FREETYPE_LIB="$LDFLAGS `$freetype/bin/freetype-config --libs`"
-       LIBS="$CSF_FREETYPE_LIB $LIBS"
-       CSF_OPT_INC="$freetype/include:$freetype/include/freetype2:${CSF_OPT_INC}"
-       CSF_OPT_LIB="$freetype/lib:${CSF_OPT_LIB}"
-    ],
-    [
-       DISABLE_FREETYPE_REASON="(freetype was not found)"
-       AC_MSG_ERROR([Unable to locate the required FreeType library])
-    ])
+  if test "xno" = "x${freetype}"; then
+    dnl freetype check is explicitly disabled by --without-freetype or --with-freetype=no
+    AC_MSG_NOTICE([freetype check is explicitly disabled])
+    DISABLE_FREETYPE_REASON="(freetype check was explicitly disabled)"
   else
-       DISABLE_FREETYPE_REASON="(freetype was not found)"
+    if test "xyes" = "x${freetype}" -o "x/usr" = "x${freetype}"; then
+      dnl try native freetype (default)
+      AC_MSG_NOTICE(try system freetype)
+      FREETYPE_INCLUDES="-I/usr/include/freetype2"
+      FREETYPE_LIBS="-lfreetype"
+      FREETYPE_OPT_INC="/usr/include/freetype2"
+      FREETYPE_OPT_LIB=
+    else
+      AC_MSG_NOTICE(try freetype in $freetype)
+      if test ! -d ${freetype}; then
+    DISABLE_FREETYPE_REASON="(${freetype} directory does not exists)"
+    AC_MSG_ERROR([${freetype} directory does not exists])
+      fi
+      FREETYPE_INCLUDES="-I${freetype}/include -I${freetype}/include/freetype2"
+      FREETYPE_LIBS="-L${freetype}/lib -lfreetype"
+      FREETYPE_OPT_INC="${freetype}/include:${freetype}/include/freetype2"
+      FREETYPE_OPT_LIB="${freetype}/lib"
+    fi
+    CPPFLAGS_old=${CPPFLAGS}
+    LDFLAGS_old=${LDFLAGS}
+    CPPFLAGS="${FREETYPE_INCLUDES} $CPPFLAGS"
+    LDFLAGS="${FREETYPE_LIBS} $LDFLAGS"
+    AC_CHECK_HEADER( [ft2build.h], [HAVE_FREETYPE_INC=yes], [HAVE_FREETYPE_INC=no] )
+    if test "x${HAVE_FREETYPE_INC}" = "xyes"; then
+      AC_CHECK_LIB(freetype, FT_Init_FreeType,
+      [
+    HAVE_FREETYPE=yes
+        CSF_FREETYPE_INCLUDES="${FREETYPE_INCLUDES}"
+    CSF_FREETYPE_LIB="${FREETYPE_LIBS}"
+        LIBS="$CSF_FREETYPE_LIB $LIBS"
+        CSF_OPT_INC="${FREETYPE_OPT_INC}:${CSF_OPT_INC}"
+        CSF_OPT_LIB="${FREETYPE_OPT_LIB}:${CSF_OPT_LIB}"
+      ],
+      [
+    DISABLE_FREETYPE_REASON="(freetype was not found)"
+    AC_MSG_ERROR([Unable to locate the required FreeType library])
+      ])
+    else
+      DISABLE_FREETYPE_REASON="(freetype was not found)"
+    fi
+    CPPFLAGS=${CPPFLAGS_old}
+    LDFLAGS=${LDFLAGS_old}
   fi
 else
-  DISABLE_FREETYPE_REASON="(--with-freetype=DIR option was not defined)"
+  DISABLE_FREETYPE_REASON="(freetype requires OpenGL support)"
 fi
 AM_CONDITIONAL( HAVE_FREETYPE, [test "xyes" = "x$HAVE_FREETYPE"] )
 
 #---------------------------------------------------------------------
 #
 # Check for FTGL Libraries
-#  
-#  
+# 
+# 
 #---------------------------------------------------------------------
 AC_ARG_WITH([ftgl],
   [AC_HELP_STRING([--with-ftgl=DIR],[Location of FTGL])],
-  [ftgl="${withval}"],[ftgl=])
+  [ftgl="${withval}"],[ftgl=yes])
 
 CSF_FTGL_INCLUDES=""
 CSF_FTGL_LIB=""
+HAVE_FTGL=no
 
 if test "xno" = "x${HAVE_FREETYPE}"; then
-  HAVE_FTGL=no
   DISABLE_FTGL_REASON=$DISABLE_FREETYPE_REASON
 else
   AC_LANG([C++])
-  HAVE_FTGL=no
-  HAVE_FTGL_INC=yes
-  CPPFLAGS="-I$ftgl/include -I$ftgl/include/FTGL $CPPFLAGS";
-  AC_CHECK_HEADERS([FTGL/ftgl.h ftgl.h], [], [
-  AC_CHECK_HEADERS([FTGL/FTGL.h FTGL.h], [HAVE_FTGL_UPPERCASE=-DHAVE_FTGL_UPPERCASE], 
-                                         [HAVE_FTGL_INC=no])])
-  if test ! -d $ftgl; then
-       DISABLE_FTGL_REASON="($ftgl directory is not exists)"
-       AC_MSG_ERROR([$ftgl directory is not exists])
-  elif test "x$HAVE_FTGL_INC" = "xyes"; then
-    CSF_FTGL_INCLUDES="-I$ftgl/include -I$ftgl/include/FTGL $HAVE_FTGL_UPPERCASE"
-    CPPFLAGS="$CSF_FTGL_INCLUDES $CPPFLAGS";
-    HAVE_FTGL_LIB=yes
-    AC_MSG_CHECKING([for FTGLTextureFont in -lftgl])
-    LDFLAGS="-L$ftgl/lib"
-    LIBS_sv=$LIBS
-    LIBS="-lftgl $CSF_OpenGlLibs_LIB $LIBS"
-    CSF_FTGL_LIB="-L$ftgl/lib -lftgl"
-    AC_TRY_LINK([
-#ifdef HAVE_FTGL_UPPERCASE
-#include <FTGL/FTGL.h>
-#else
-#include <FTGL/ftgl.h>
-#endif
-#include <FTGL/FTGLTextureFont.h>
-], [
-FTGLTextureFont font("");], [
-CSF_OPT_INC="$ftgl/include:${CSF_OPT_INC}"
-CSF_OPT_LIB="$ftgl/lib:${CSF_OPT_LIB}"
-AC_MSG_RESULT(yes)
-], [
-AC_MSG_RESULT(no)
-]) 
-    LIBS=$LIBS_sv
-  fi
-  if test "xyes" = "x$HAVE_FTGL_LIB"; then
-    HAVE_FTGL=yes
+  if test "xno" = "x${ftgl}"; then
+    dnl ftgl check is explicitly disabled by --without-ftgl or --with-ftgl=no
+    AC_MSG_NOTICE([ftgl check is explicitly disabled])
+    DISABLE_FTGL_REASON="(ftgl check was explicitly disabled)"
   else
-    DISABLE_FTGL_REASON="(ftgl was not found)"
+    if test "xyes" = "x${ftgl}" -o "x/usr" = "x${ftgl}"; then
+      dnl try native ftgl (default)
+      ftgl=/usr
+      AC_MSG_NOTICE(try system ftgl)
+      FTGL_INCLUDES="-I/usr/include/FTGL"
+      FTGL_LIBS="-lftgl"
+      FTGL_OPT_INC="/usr/include/FTGL"
+      FTGL_OPT_LIB=
+    else
+      AC_MSG_NOTICE(try ftgl in ${ftgl})
+      if test ! -d ${ftgl}; then
+    DISABLE_FTGL_REASON="(${ftgl} directory does not exists)"
+    AC_MSG_ERROR([${ftgl} directory does not exists])
+      fi
+      FTGL_INCLUDES="-I${ftgl}/include -I${ftgl}/include/FTGL"
+      FTGL_LIBS="-L${ftgl}/lib -lftgl"
+      FTGL_OPT_INC="${ftgl}/include:${ftgl}/include/FTGL"
+      FTGL_OPT_LIB="${ftgl}/lib"
+    fi
+    for hf in ftgl.h FTGL.h; do
+      dnl check presence of ftgl header file in the specified directory
+      test -f ${ftgl}/include/FTGL/${hf} -o -f ${ftgl}/include/${hf} && HAVE_FTGL_INC=yes
+      test "xyes" = "x${HAVE_FTGL_INC}" -a "${hf}" = "FTGL.h" && HAVE_FTGL_UPPERCASE=-DHAVE_FTGL_UPPERCASE
+      test "xyes" = "x${HAVE_FTGL_INC}" && break
+    done
+    if test "xyes" = "x${HAVE_FTGL_INC}" ; then
+      CPPFLAGS_old=${CPPFLAGS}
+      LDFLAGS_old=${LDFLAGS}
+      CPPFLAGS="${FTGL_INCLUDES} ${HAVE_FTGL_UPPERCASE} ${CSF_FREETYPE_INCLUDES} $CPPFLAGS"
+      LDFLAGS="${FTGL_LIBS} ${CSF_FREETYPE_LIB} $LDFLAGS"
+      AC_CHECK_HEADERS([${hf}], 
+      [
+        HAVE_FTGL_INC=yes
+        break
+      ],
+      [
+        HAVE_FTGL_INC=no
+      ])
+      if test "x${HAVE_FTGL_INC}" = "xyes"; then
+        AC_MSG_CHECKING([for FTGLTextureFont in -lftgl])
+        CPPFLAGS="${FTGL_INCLUDES} ${HAVE_FTGL_UPPERCASE} ${CSF_FREETYPE_INCLUDES} ${CPPFLAGS_old}"
+        AC_TRY_LINK(
+        [
+          #ifdef HAVE_FTGL_UPPERCASE
+          #include <FTGL/FTGL.h>
+          #include <FTGL/FTGLTextureFont.h>
+          #else
+          #include <FTGL/ftgl.h>
+          #endif
+        ],
+        [
+          FTGLTextureFont font("");
+        ],
+        [
+          AC_MSG_RESULT(yes)
+          HAVE_FTGL=yes
+          CSF_FTGL_INCLUDES="${FTGL_INCLUDES} ${HAVE_FTGL_UPPERCASE}"
+          CSF_FTGL_LIB="${FTGL_LIBS}"
+          CSF_OPT_INC="${FTGL_OPT_INC}:${CSF_OPT_INC}"
+          CSF_OPT_LIB="${FTGL_OPT_LIB}:${CSF_OPT_LIB}"
+        ],
+        [
+          AC_MSG_RESULT(no)
+          DISABLE_FTGL_REASON="(ftgl was not found)"
+      AC_MSG_ERROR([Unable to locate the required ftgl library])
+        ]) 
+      else
+        DISABLE_FTGL_REASON="(ftgl was not found)"
+      fi
+      CPPFLAGS=${CPPFLAGS_old}
+      LDFLAGS=${LDFLAGS_old}
+    else
+      AC_MSG_RESULT([ftgl was not found])
+      DISABLE_FTGL_REASON="(ftgl was not found)"
+    fi
   fi
 fi
 AM_CONDITIONAL( HAVE_FTGL, [test "xyes" = "x$HAVE_FTGL"] )