summaryrefslogtreecommitdiffstats
path: root/lib/kross/configure.in.in
blob: 636c4b3a5cbea5010370048dba1e8ccd7a53872c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
AC_ARG_ENABLE(scripting,
    AC_HELP_STRING([--enable-scripting],
                   [build scripting library (Kross) [default=yes]]),
    compile_kross=$enableval, compile_kross=yes)
AM_CONDITIONAL(compile_kross, test "x$compile_kross" = "xyes")

###############################
# Check if Python is installed.

if test "x$compile_kross" = "xyes" ; then
    #KDE_CHECK_PYTHON(2.3)
    KDE_CHECK_PYTHON
fi

# Compile the Kross python plugin only if both, $LIBPYTHON and
# $PYTHONINC, are defined.
#
# WARNING: Building Kross python plugin is now prohibited at all times,
# because it is not compatible with Python >= 3.
AM_CONDITIONAL(compile_kross_python,
               false && test -n "$LIBPYTHON" && test -n "$PYTHONINC")

###############################
# Check for Ruby

if test "x$compile_kross" = "xyes" ; then
  AC_CHECK_PROG(RUBY_EXECUTABLE, ruby, ruby)

  if test -n "$RUBY_EXECUTABLE"; then
    AC_MSG_CHECKING(for Ruby dirs)

    RUBY_MAJOR=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(MAJOR))"`
    RUBY_MINOR=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(MINOR))"`

    RUBY_ARCHDIR=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(archdir))"`
    RUBY_SITEARCHDIR=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(sitearchdir))"`
    RUBY_SITEDIR=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(sitelibdir))"`
    RUBY_LIBDIR=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(libdir))"`
    RUBY_RUBYLIBDIR=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(rubylibdir))"`
    RUBY_LIBRUBYARG=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(LIBRUBYARG_SHARED))"`
    if test -n "$RUBY_LIBRUBYARG"; then
      RUBY_ENABLESHARED=yes
    fi

    RUBY_SERIES="$RUBY_MAJOR$RUBY_MINOR"
    RUBY_VERSION_DEFS=""
    if test "$RUBY_SERIES" -ge "19"; then
       AC_DEFINE_UNQUOTED(HAVE_RUBY_1_9, 1, [Defines if your system has Ruby 1.9.x])
       RUBY_VERSION_DEFS="${RUBY_VERSION_DEFS} -DHAVE_RUBY_1_9"
    fi
    if test "$RUBY_SERIES" -ge "30"; then
       AC_DEFINE_UNQUOTED(HAVE_RUBY_3, 1, [Defines if your system has Ruby 3.x])
       RUBY_VERSION_DEFS="${RUBY_VERSION_DEFS} -DHAVE_RUBY_3"
    fi

    if test `${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.key?(%q(rubyhdrdir))"` = "true"; then
       RUBY_INCLUDEDIR=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(rubyhdrdir))"`
       if test `${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.key?(%q(rubyarchhdrdir))"` = "true"; then
          RUBY_ARCHINCLUDEDIR=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(rubyarchhdrdir))"`
       else
          RUBY_ARCH=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(arch))"`
          RUBY_ARCHINCLUDEDIR=${RUBY_INCLUDEDIR}/${RUBY_ARCH}
       fi
       RUBY_CFLAGS="-I${RUBY_INCLUDEDIR} -I${RUBY_ARCHINCLUDEDIR}"
    else
       RUBY_INCLUDEDIR=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(archdir))"`
       RUBY_CFLAGS="-I${RUBY_INCLUDEDIR}"
    fi

    # Removes trailing slashes, if any, to avoid fail to install with recent libtool.
    RUBY_ARCHDIR=${RUBY_ARCHDIR%/}
    RUBY_SITEDIR=${RUBY_SITEDIR%/}
    RUBY_LIBDIR=${RUBY_LIBDIR%/}
    RUBY_RUBYLIBDIR=${RUBY_RUBYLIBDIR%/}

    AC_MSG_RESULT([
                    archdir $RUBY_ARCHDIR,
                    sitearchdir $RUBY_SITEARCHDIR,
                    sitedir $RUBY_SITEDIR,
                    rubylibdir $RUBY_RUBYLIBDIR,
                    libdir $RUBY_LIBDIR,
                    includedir $RUBY_INCLUDEDIR,
                    librubyarg $RUBY_LIBRUBYARG,
                    cflags $RUBY_CFLAGS])
    AC_SUBST(RUBY_ARCHDIR)
    AC_SUBST(RUBY_SITEARCHDIR)
    AC_SUBST(RUBY_SITEDIR)
    AC_SUBST(RUBY_RUBYLIBDIR)
    AC_SUBST(RUBY_LIBDIR)
    AC_SUBST(RUBY_INCLUDEDIR)
    AC_SUBST(RUBY_LIBRUBYARG)
    AC_SUBST(RUBY_CFLAGS)
    AC_SUBST(RUBY_ENABLESHARED)
    AC_SUBST(RUBY_VERSION_DEFS)


    AC_MSG_CHECKING(Ruby shared library)
    if test "x$RUBY_ENABLESHARED" != "xyes" ; then
      AC_MSG_RESULT([shared library not found])
      RUBY_LIBDIR=""
    else
      AC_MSG_RESULT([found]) # shared library link arg

      AC_MSG_CHECKING([if C++ program with ruby can be compiled])
      AC_LANG_SAVE
      AC_LANG_CPLUSPLUS
      ac_save_CXXFLAGS="$CXXFLAGS"
      CXXFLAGS="$CXXFLAGS -I$RUBY_INCLUDEDIR $RUBY_CFLAGS"
      AC_CACHE_VAL(ruby_build,
      [
        AC_TRY_COMPILE([
            #include <ruby.h>
        ],[
            ruby_init();
            return 0;
        ], ruby_build=yes,
        ruby_build=no)
      ])
      AC_MSG_RESULT($ruby_build)
      if test "$ruby_build" = "no"; then
        RUBY_LIBDIR=""
      fi
      CXXFLAGS="$ac_save_CXXFLAGS"
      AC_LANG_RESTORE
    fi # have shared lib
  fi # have ruby
fi # compiling kross

AM_CONDITIONAL(compile_kross_ruby, test -n "$RUBY_LIBDIR")