summaryrefslogtreecommitdiffstats
path: root/lib/kross
diff options
context:
space:
mode:
authorMavridis Philippe <mavridisf@gmail.com>2024-09-30 00:04:56 +0300
committerPhilippe Mavridis <philippe.mavridis@yandex.com>2025-05-15 21:00:25 +0300
commit04e86613f67d171cc965fce64a4310c0d25c98e1 (patch)
tree08a85d43bc40568f94259601339ccd7e1de11773 /lib/kross
parentcf85b9c285a2b9baa87c9d0cb9d683b48e82a475 (diff)
downloadkoffice-feat/cmake-port.tar.gz
koffice-feat/cmake-port.zip
WIP: CMake portfeat/cmake-port
Signed-off-by: Philippe Mavridis <philippe.mavridis@yandex.com>
Diffstat (limited to 'lib/kross')
-rw-r--r--lib/kross/CMakeLists.txt17
-rw-r--r--lib/kross/ConfigureChecks.cmake119
-rw-r--r--lib/kross/api/CMakeLists.txt38
-rw-r--r--lib/kross/main/CMakeLists.txt39
-rw-r--r--lib/kross/ruby/CMakeLists.txt35
-rw-r--r--lib/kross/runner/CMakeLists.txt27
-rw-r--r--lib/kross/test/CMakeLists.txt27
7 files changed, 302 insertions, 0 deletions
diff --git a/lib/kross/CMakeLists.txt b/lib/kross/CMakeLists.txt
new file mode 100644
index 000000000..e083e027c
--- /dev/null
+++ b/lib/kross/CMakeLists.txt
@@ -0,0 +1,17 @@
+###############################################################################
+# Trinity KOffice #
+# --------------- #
+# This file is licensed under the terms of GNU GPL v3 or later. #
+# Improvements and feedback are welcome. #
+###############################################################################
+
+tde_conditional_add_subdirectory(WITH_KROSS_PYTHON python)
+tde_conditional_add_subdirectory(WITH_KROSS_RUBY ruby)
+
+add_subdirectory(api)
+add_subdirectory(main)
+add_subdirectory(runner)
+
+if (BUILD_TESTS)
+ add_subdirectory(test)
+endif() \ No newline at end of file
diff --git a/lib/kross/ConfigureChecks.cmake b/lib/kross/ConfigureChecks.cmake
new file mode 100644
index 000000000..5949ee220
--- /dev/null
+++ b/lib/kross/ConfigureChecks.cmake
@@ -0,0 +1,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() \ No newline at end of file
diff --git a/lib/kross/api/CMakeLists.txt b/lib/kross/api/CMakeLists.txt
new file mode 100644
index 000000000..077b3bebf
--- /dev/null
+++ b/lib/kross/api/CMakeLists.txt
@@ -0,0 +1,38 @@
+###############################################################################
+# Trinity KOffice #
+# --------------- #
+# This file is licensed under the terms of GNU GPL v3 or later. #
+# Improvements and feedback are welcome. #
+###############################################################################
+
+include_directories(
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_BINARY_DIR}
+ ${TDE_INCLUDE_DIR}
+ ${TQT_INCLUDE_DIRS}
+)
+
+link_directories(
+ ${TQT_LIBRARY_DIRS}
+)
+
+### Libraries #################################################################
+tde_add_library(libkrossapi SHARED AUTOMOC
+ SOURCES
+ object.cpp variant.cpp list.cpp dict.cpp exception.cpp callable.cpp
+ eventaction.cpp eventsignal.cpp eventslot.cpp eventscript.cpp
+ qtobject.cpp script.cpp interpreter.cpp
+ LINK
+ tdecore-shared
+ DESTINATION ${LIB_INSTALL_DIR}
+)
+
+### Headers ###################################################################
+install(
+ FILES
+ callable.h class.h dict.h eventaction.h event.h eventscript.h eventsignal.h
+ eventslot.h exception.h function.h interpreter.h list.h module.h object.h
+ proxy.h qtobject.h script.h value.h variant.h
+ DESTINATION ${INCLUDE_INSTALL_DIR}/kross/api
+) \ No newline at end of file
diff --git a/lib/kross/main/CMakeLists.txt b/lib/kross/main/CMakeLists.txt
new file mode 100644
index 000000000..3eee58de6
--- /dev/null
+++ b/lib/kross/main/CMakeLists.txt
@@ -0,0 +1,39 @@
+###############################################################################
+# Trinity KOffice #
+# --------------- #
+# This file is licensed under the terms of GNU GPL v3 or later. #
+# Improvements and feedback are welcome. #
+###############################################################################
+
+include_directories(
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_SOURCE_DIR}/lib/kross/
+ ${CMAKE_BINARY_DIR}/lib/kross/
+ ${TDE_INCLUDE_DIR}
+ ${TQT_INCLUDE_DIRS}
+)
+
+link_directories(
+ ${TQT_LIBRARY_DIRS}
+)
+
+### Libraries #################################################################
+tde_add_library(libkrossmain SHARED AUTOMOC
+ SOURCES
+ krossconfig.cpp mainmodule.cpp scriptcontainer.cpp manager.cpp
+ scriptaction.cpp scriptguiclient.cpp wdgscriptsmanagerbase.ui
+ wdgscriptsmanager.cpp
+ LINK
+ tdecore-shared tdeio-shared tdeui-shared tdenewstuff-shared
+ libkrossapi-shared
+ DESTINATION ${LIB_INSTALL_DIR}
+)
+
+### Headers ###################################################################
+install(
+ FILES
+ krossconfig.h mainmodule.h manager.h scriptaction.h scriptcontainer.h
+ scriptguiclient.h wdgscriptsmanager.h
+ DESTINATION ${INCLUDE_INSTALL_DIR}/KOffice
+) \ No newline at end of file
diff --git a/lib/kross/ruby/CMakeLists.txt b/lib/kross/ruby/CMakeLists.txt
new file mode 100644
index 000000000..4ec25f67d
--- /dev/null
+++ b/lib/kross/ruby/CMakeLists.txt
@@ -0,0 +1,35 @@
+###############################################################################
+# Trinity KOffice #
+# --------------- #
+# This file is licensed under the terms of GNU GPL v3 or later. #
+# Improvements and feedback are welcome. #
+###############################################################################
+
+include_directories(
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_SOURCE_DIR}/lib/kross
+ ${CMAKE_BINARY_DIR}
+ ${TDE_INCLUDE_DIR}
+ ${TQT_INCLUDE_DIRS}
+ ${RUBY_INCLUDEDIR}
+ ${RUBY_INCLUDEDIR}/ruby
+ ${RUBY_ARCHINCLUDEDIR}
+ ${RUBY_ARCHINCLUDEDIR}/ruby
+)
+
+link_directories(
+ ${TQT_LIBRARY_DIRS}
+)
+
+add_compile_options(${RUBY_LIBRUBYARG})
+
+### Libraries #################################################################
+tde_add_kpart(krossruby SHARED AUTOMOC
+ SOURCES
+ rubyinterpreter.cpp rubyextension.cpp rubyscript.cpp rubymodule.cpp
+ rubywrapper.c
+ LINK
+ tdecore-shared libkrossapi-shared libkrossmain-shared
+ DESTINATION ${PLUGIN_INSTALL_DIR}
+) \ No newline at end of file
diff --git a/lib/kross/runner/CMakeLists.txt b/lib/kross/runner/CMakeLists.txt
new file mode 100644
index 000000000..7577d32e4
--- /dev/null
+++ b/lib/kross/runner/CMakeLists.txt
@@ -0,0 +1,27 @@
+###############################################################################
+# Trinity KOffice #
+# --------------- #
+# This file is licensed under the terms of GNU GPL v3 or later. #
+# Improvements and feedback are welcome. #
+###############################################################################
+
+include_directories(
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_BINARY_DIR}
+ ${TDE_INCLUDE_DIR}
+ ${TQT_INCLUDE_DIRS}
+)
+
+link_directories(
+ ${TQT_LIBRARY_DIRS}
+)
+
+### Programs ##################################################################
+tde_add_executable(krossrunner AUTOMOC
+ SOURCES main.cpp
+ LINK
+ tdecore-shared tdeui-shared tdefx-shared tdeio-shared
+ tdetexteditor-shared libkrossapi-shared libkrossmain-shared
+ DESTINATION ${BIN_INSTALL_DIR}
+) \ No newline at end of file
diff --git a/lib/kross/test/CMakeLists.txt b/lib/kross/test/CMakeLists.txt
new file mode 100644
index 000000000..7068c6f54
--- /dev/null
+++ b/lib/kross/test/CMakeLists.txt
@@ -0,0 +1,27 @@
+###############################################################################
+# Trinity KOffice #
+# --------------- #
+# This file is licensed under the terms of GNU GPL v3 or later. #
+# Improvements and feedback are welcome. #
+###############################################################################
+
+include_directories(
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_BINARY_DIR}
+ ${TDE_INCLUDE_DIR}
+ ${TQT_INCLUDE_DIRS}
+)
+
+link_directories(
+ ${TQT_LIBRARY_DIRS}
+)
+
+### Programs ##################################################################
+tde_add_executable(krosstest AUTOMOC
+ SOURCES
+ testobject.cpp testaction.cpp testplugin.cpp testwindow.cpp main.cpp
+ LINK
+ tdecore-shared tdeui-shared tdefx-shared dcop-shared tdetexteditor-shared
+ libkrossapi-shared libkrossmain-shared
+) \ No newline at end of file