summaryrefslogtreecommitdiffstats
path: root/lib/kross/ConfigureChecks.cmake
blob: 5949ee22042123d197ddf36c5925195166046bfd (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
###############################################################################
# Trinity KOffice                                                             #
# ---------------                                                             #
# This file is licensed under the terms of GNU GPL v3 or later.               #
# Improvements and feedback are welcome.                                      #
###############################################################################

### Python ####################################################################
if (WITH_KROSS_PYTHON)
#   find_package(Python3 COMPONENTS Interpreter Development)
#   if (NOT Python3_FOUND)
#     message(WARNING "Python developement files were not found, Python scripting support for "
#                     "KOffice will not be built. If you don't need Python scripting, you "
#                     "can ignore this message.")
    message(WARNING "The Python bindings of Kross don't support Python3."
                    "Python scripting support for KOffice will not be built. If you don't "
                    "need Python scripting, you can ignore this message.")
    set(WITH_KROSS_PYTHON OFF)
#   endif()
endif()


if (WITH_KROSS_RUBY)
  find_program(RUBY ruby)
  if (NOT RUBY)
    message(WARNING "The Ruby executable was not found. "
                    "Ruby scripting support for KOffice will not be built. If you don't "
                    "need Ruby scripting, you can ignore this message.")
    set(WITH_KROSS_RUBY OFF)
  else()
    execute_process(COMMAND ${RUBY} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(MAJOR))"
                    OUTPUT_VARIABLE RUBY_MAJOR OUTPUT_STRIP_TRAILING_WHITESPACE)
    execute_process(COMMAND ${RUBY} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(MINOR))"
                    OUTPUT_VARIABLE RUBY_MINOR OUTPUT_STRIP_TRAILING_WHITESPACE)

    execute_process(COMMAND ${RUBY} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(archdir))"
                    OUTPUT_VARIABLE RUBY_ARCHDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
    execute_process(COMMAND ${RUBY} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(sitearchdir))"
                    OUTPUT_VARIABLE RUBY_SITEARCHDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
    execute_process(COMMAND ${RUBY} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(sitedir))"
                    OUTPUT_VARIABLE RUBY_SITEDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
    execute_process(COMMAND ${RUBY} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(libdir))"
                    OUTPUT_VARIABLE RUBY_LIBDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
    execute_process(COMMAND ${RUBY} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(sitelibdir))"
                    OUTPUT_VARIABLE RUBY_SITELIBDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
    execute_process(COMMAND ${RUBY} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(rubylibdir))"
                    OUTPUT_VARIABLE RUBY_RUBYLIBDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
    execute_process(COMMAND ${RUBY} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(LIBRUBYARG_SHARED))"
                    OUTPUT_VARIABLE RUBY_LIBRUBYARG OUTPUT_STRIP_TRAILING_WHITESPACE)

    ###
    if (RUBY_LIBRUBYARG)
      set(RUBY_ENABLESHARED ON)
    else()
      set(RUBY_ENABLESHARED OFF)
    endif()

    ###
    set(RUBY_SERIES "${RUBY_MAJOR}.${RUBY_MINOR}")
    set(RUBY_VERSION_DEFS "")

    if (RUBY_SERIES VERSION_GREATER_EQUAL "1.9")
      set(HAVE_RUBY_1_9 1)
      set(RUBY_VERSION_DEFS "${RUBY_VERSION_DEFS} -DHAVE_RUBY_1_9")
    endif()

    if (RUBY_SERIES VERSION_GREATER_EQUAL "3.0")
      set(HAVE_RUBY_3 1)
      set(RUBY_VERSION_DEFS "${RUBY_VERSION_DEFS} -DHAVE_RUBY_3")
    endif()

    ###
    execute_process(COMMAND ${RUBY} -r rbconfig -e "puts RbConfig::CONFIG.key?(%q(rubyhdrdir))"
                    OUTPUT_VARIABLE RUBY_HAS_INCLUDEDIR OUTPUT_STRIP_TRAILING_WHITESPACE)

    if (RUBY_HAS_INCLUDEDIR STREQUAL "true")
      execute_process(COMMAND ${RUBY} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(rubyhdrdir))"
                      OUTPUT_VARIABLE RUBY_INCLUDEDIR OUTPUT_STRIP_TRAILING_WHITESPACE)

      execute_process(COMMAND ${RUBY} -r rbconfig -e "puts RbConfig::CONFIG.key?(%q(rubyarchhdrdir))"
                      OUTPUT_VARIABLE RUBY_HAS_ARCHINCLUDEDIR OUTPUT_STRIP_TRAILING_WHITESPACE)

      if (RUBY_HAS_ARCHINCLUDEDIR STREQUAL "true")
        execute_process(COMMAND ${RUBY} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(rubyarchhdrdir))"
                        OUTPUT_VARIABLE RUBY_ARCHINCLUDEDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
      else()
        execute_process(COMMAND ${RUBY} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(arch))"
                        OUTPUT_VARIABLE RUBY_ARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
        set(RUBY_ARCHINCLUDEDIR "${RUBY_INCLUDEDIR}/${RUBY_ARCH}")
      endif()

      set(RUBY_CFLAGS "-I${RUBY_INCLUDEDIR} -I${RUBY_ARCHINCLUDEDIR}")
    else()
      execute_process(COMMAND ${RUBY} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(archdir))"
                      OUTPUT_VARIABLE RUBY_INCLUDEDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
      set(RUBY_CFLAGS "-I${RUBY_INCLUDEDIR}")
      message("set RUBY_CFLAGS 2 ${RUBY_CFLAGS}")
    endif()
  endif()

  ###
  if (NOT EXISTS "${RUBY_INCLUDEDIR}/ruby/config.h" AND
      NOT EXISTS "${RUBY_ARCHINCLUDEDIR}/ruby/config.h")
    message(WARNING "Ruby development files were not found, or Ruby <= 1.8.1 was found, "
                    "Ruby scripting support for KOffice will not be built. If you don't "
                    "need Ruby scripting, you can ignore this message.")
    set(WITH_KROSS_RUBY OFF)
  else()
    message(STATUS "Ruby executable:  ${RUBY}")
    message(STATUS "Ruby archdir:     ${RUBY_ARCHDIR}")
    message(STATUS "Ruby sitearchdir: ${RUBY_SITEARCHDIR}")
    message(STATUS "Ruby sitedir:     ${RUBY_SITEDIR}")
    message(STATUS "Ruby sitelibdir:  ${RUBY_SITELIBDIR}")
    message(STATUS "Ruby libdir:      ${RUBY_LIBDIR}")
    message(STATUS "Ruby includedir:  ${RUBY_INCLUDEDIR}")
    message(STATUS "Ruby librubyarg:  ${RUBY_LIBRUBYARG}")
    message(STATUS "Ruby cflags:      ${RUBY_CFLAGS}")
  endif()
endif()