# HG changeset patch # User David Demelier # Date 1632318276 -7200 # Node ID 6c15d37b751899311eec30a27a8cb68e58f316ec # Parent 617c88eb9da9cfbded46f66d4945d62d4e21a7da cmake: switch back to CMake because of portability issues diff -r 617c88eb9da9 -r 6c15d37b7518 .hgignore --- a/.hgignore Mon Sep 20 10:06:54 2021 +0200 +++ b/.hgignore Wed Sep 22 15:44:36 2021 +0200 @@ -1,53 +1,13 @@ -# temporary files. -\.a$ -\.d$ -\.o$ -\.so$ +# CMake files. +^build # vim/emacs specific. ^tags$ -^cscope\.out$ ^tags\.lock$ ^tags\.temp$ +^cscope\.out$ \.swp$ \.swo$ -# executables. -^irccd/irccd$ -^irccdctl/irccdctl$ - -# generated files. -^irccd/conf\.c$ -^irccd/conf\.h$ -^irccd/lex\.c$ -^lib/irccd/config\.h$ - # macOS specific. \.DS_Store$ -\.dSYM - -# tests files. -^tests/test-bot$ -^tests/test-channel$ -^tests/test-dl-plugin$ -^tests/test-event$ -^tests/test-jsapi-chrono$ -^tests/test-jsapi-directory$ -^tests/test-jsapi-file$ -^tests/test-jsapi-irccd$ -^tests/test-jsapi-system$ -^tests/test-jsapi-timer$ -^tests/test-jsapi-unicode$ -^tests/test-jsapi-util$ -^tests/test-log$ -^tests/test-plugin-ask$ -^tests/test-plugin-auth$ -^tests/test-plugin-hangman$ -^tests/test-plugin-history$ -^tests/test-plugin-joke$ -^tests/test-plugin-logger$ -^tests/test-plugin-plugin$ -^tests/test-plugin-tictactoe$ -^tests/test-rule$ -^tests/test-subst$ -^tests/test-util$ diff -r 617c88eb9da9 -r 6c15d37b7518 CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,75 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +cmake_minimum_required(VERSION 2.20) +cmake_policy(SET CMP0048 NEW) +project(irccd + LANGUAGES C + DESCRIPTION "IRC Client Daemon" + HOMEPAGE_URL "http://projects.malikania.fr/irccd" + VERSION 4.0.0 +) + +set_property(GLOBAL PROPERTY USE_FOLDERS On) + +set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD_REQUIRED On) +set(CMAKE_C_EXTENSIONS Off) + +if (CMAKE_C_COMPILER_ID MATCHES "GNU|Clang") + set(CMAKE_C_FLAGS "-Wall -Wextra -pedantic ${CMAKE_C_FLAGS}") +endif () + +option(IRCCD_WITH_EXAMPLES "Enable example files" On) +option(IRCCD_WITH_JS "Enable Javascript" On) +option(IRCCD_WITH_MAN "Enable manual pages" On) +option(IRCCD_WITH_SSL "Enable SSL (requires OpenSSL)" On) +option(IRCCD_WITH_TESTS "Enable unit tests" On) + +include(GNUInstallDirs) + +include(cmake/IrccdDefinePlugin.cmake) + +if (IRCCD_WITH_SSL) + find_package(OpenSSL REQUIRED) +endif () + +if (IRCCD_WITH_JS) + add_subdirectory(extern/libduktape) +endif () + +add_subdirectory(extern/libutlist) +add_subdirectory(extern/libketopt) + +add_subdirectory(lib) +add_subdirectory(irccd) +add_subdirectory(irccdctl) +add_subdirectory(plugins) + +if (IRCCD_WITH_EXAMPLES) + add_subdirectory(examples) +endif () +if (IRCCD_WITH_MAN) + add_subdirectory(man) +endif () + +if (IRCCD_WITH_TESTS) + enable_testing() + add_subdirectory(extern/libgreatest) + add_subdirectory(tests) +endif () diff -r 617c88eb9da9 -r 6c15d37b7518 cmake/IrccdDefinePlugin.cmake --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cmake/IrccdDefinePlugin.cmake Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,85 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +function(irccd_define_native_plugin) + set(options "") + set(oneValueArgs "MAN;NAME") + set(multiValueArgs "FLAGS;INCLUDES;LIBRARIES;SOURCES") + + cmake_parse_arguments(PLG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + if (NOT PLG_NAME) + message(FATAL_ERROR "Missing NAME") + elseif (NOT PLG_SOURCES) + message(FATAL_ERROR "Missing SOURCES") + endif () + + add_library(irccd-plugin-${PLG_NAME} MODULE ${PLG_SOURCES} ${PLG_MAN}) + target_link_libraries(irccd-plugin-${PLG_NAME} irccd) + + if (PLG_FLAGS) + target_compile_definitions(irccd-plugin-${PLG_NAME} ${PLG_FLAGS}) + endif () + if (PLG_INCLUDES) + target_include_directories(irccd-plugin-${PLG_NAME} ${PLG_INCLUDES}) + endif () + if (PLG_LIBRARIES) + target_link_libraries(irccd-plugin-${PLG_NAME} ${PLG_LIBRARIES}) + endif () + + set_target_properties( + irccd-plugin-${PLG_NAME} + PROPERTIES + OUTPUT_NAME ${PLG_NAME} + PREFIX "" + FOLDER plugins + ) + + install( + TARGETS irccd-plugin-${PLG_NAME} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/irccd + ) + + if (PLG_MAN) + install( + FILES ${PLG_MAN} + DESTINATION ${CMAKE_INSTALL_MANDIR}/man7 + RENAME irccd-plugin-${PLG_NAME}.7 + ) + endif () +endfunction() + +function(irccd_define_javascript_plugin) + set(options "") + set(oneValueArgs "MAN;NAME") + set(multiValueArgs "SCRIPT") + + cmake_parse_arguments(PLG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + add_custom_target(irccd-plugin-${PLG_NAME} SOURCES ${PLG_SCRIPT}) + set_target_properties(irccd-plugin-${PLG_NAME} PROPERTIES FOLDER plugins) + install(FILES ${PLG_SCRIPT} DESTINATION ${CMAKE_INSTALL_LIBDIR}/irccd) + + if (PLG_MAN) + install( + FILES ${PLG_MAN} + DESTINATION ${CMAKE_INSTALL_MANDIR}/man7 + RENAME irccd-plugin-${PLG_NAME}.7 + ) + endif () +endfunction() diff -r 617c88eb9da9 -r 6c15d37b7518 examples/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,28 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +project(examples) + +set( + FILES + ${examples_SOURCE_DIR}/sample-plugin.c + ${examples_SOURCE_DIR}/sample-plugin.js +) + +add_custom_target(doc SOURCES ${FILES}) +install(FILES ${FILES} DESTINATION ${CMAKE_INSTALL_DOCDIR}) diff -r 617c88eb9da9 -r 6c15d37b7518 extern/libduktape/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extern/libduktape/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,34 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +project(libirccd-duktape) + +set( + SOURCES + ${libirccd-duktape_SOURCE_DIR}/duktape.c + ${libirccd-duktape_SOURCE_DIR}/duk_config.h + ${libirccd-duktape_SOURCE_DIR}/duktape.h +) + +add_library(libirccd-duktape STATIC ${SOURCES}) +target_include_directories( + libirccd-duktape + PUBLIC + $ +) +set_target_properties(libirccd-duktape PROPERTIES PREFIX "" FOLDER extern) diff -r 617c88eb9da9 -r 6c15d37b7518 extern/libgreatest/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extern/libgreatest/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,23 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +project(libirccd-greatest) + +add_library(libirccd-greatest INTERFACE ${libirccd-greatest_SOURCE_DIR}/greatest.h) +target_include_directories(libirccd-greatest INTERFACE $) +set_target_properties(libirccd-greatest PROPERTIES FOLDER extern) diff -r 617c88eb9da9 -r 6c15d37b7518 extern/libketopt/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extern/libketopt/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,23 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +project(libirccd-ketopt) + +add_library(libirccd-ketopt INTERFACE ${libirccd-ketopt_SOURCE_DIR}/ketopt.h) +target_include_directories(libirccd-ketopt INTERFACE $) +set_target_properties(libirccd-ketopt PROPERTIES FOLDER extern) diff -r 617c88eb9da9 -r 6c15d37b7518 extern/libutlist/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extern/libutlist/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,27 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +project(libirccd-utlist) + +add_library(libirccd-utlist INTERFACE ${libirccd-utlist_SOURCE_DIR}/utlist.h) +target_include_directories( + libirccd-utlist + INTERFACE + $ +) +set_target_properties(libirccd-utlist PROPERTIES FOLDER extern) diff -r 617c88eb9da9 -r 6c15d37b7518 irccd/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/irccd/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,102 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +project(irccd) + +set( + SOURCES + ${irccd_SOURCE_DIR}/dl-plugin.c + ${irccd_SOURCE_DIR}/dl-plugin.h + ${irccd_SOURCE_DIR}/js-plugin.c + ${irccd_SOURCE_DIR}/js-plugin.h + ${irccd_SOURCE_DIR}/jsapi-chrono.c + ${irccd_SOURCE_DIR}/jsapi-chrono.h + ${irccd_SOURCE_DIR}/jsapi-directory.c + ${irccd_SOURCE_DIR}/jsapi-directory.h + ${irccd_SOURCE_DIR}/jsapi-file.c + ${irccd_SOURCE_DIR}/jsapi-file.h + ${irccd_SOURCE_DIR}/jsapi-hook.c + ${irccd_SOURCE_DIR}/jsapi-hook.h + ${irccd_SOURCE_DIR}/jsapi-irccd.c + ${irccd_SOURCE_DIR}/jsapi-irccd.h + ${irccd_SOURCE_DIR}/jsapi-logger.c + ${irccd_SOURCE_DIR}/jsapi-logger.h + ${irccd_SOURCE_DIR}/jsapi-plugin.c + ${irccd_SOURCE_DIR}/jsapi-plugin.h + ${irccd_SOURCE_DIR}/jsapi-rule.c + ${irccd_SOURCE_DIR}/jsapi-rule.h + ${irccd_SOURCE_DIR}/jsapi-server.c + ${irccd_SOURCE_DIR}/jsapi-server.h + ${irccd_SOURCE_DIR}/jsapi-system.c + ${irccd_SOURCE_DIR}/jsapi-system.h + ${irccd_SOURCE_DIR}/jsapi-timer.c + ${irccd_SOURCE_DIR}/jsapi-timer.h + ${irccd_SOURCE_DIR}/jsapi-unicode.c + ${irccd_SOURCE_DIR}/jsapi-unicode.h + ${irccd_SOURCE_DIR}/jsapi-util.c + ${irccd_SOURCE_DIR}/jsapi-util.h + ${irccd_SOURCE_DIR}/peer.c + ${irccd_SOURCE_DIR}/peer.h + ${irccd_SOURCE_DIR}/transport.c + ${irccd_SOURCE_DIR}/transport.h + ${irccd_SOURCE_DIR}/unicode.c + ${irccd_SOURCE_DIR}/unicode.h +) + +find_package(BISON REQUIRED) +find_package(FLEX REQUIRED) + +bison_target(yacc ${irccd_SOURCE_DIR}/conf.y + ${irccd_BINARY_DIR}/conf.c + DEFINES_FILE ${irccd_BINARY_DIR}/conf.h +) +flex_target(lex ${irccd_SOURCE_DIR}/lex.l ${irccd_BINARY_DIR}/lex.c) +add_flex_bison_dependency(lex yacc) + +# Intermediate library (for unit tests purposes). +add_library( + irccd-static OBJECT + ${SOURCES} + ${irccd_BINARY_DIR}/lex.c + ${irccd_BINARY_DIR}/conf.c + ${irccd_BINARY_DIR}/conf.h +) +target_include_directories(irccd-static + PRIVATE $ + PUBLIC $ +) +target_link_libraries(irccd-static libirccd-static) +set_target_properties(irccd-static PROPERTIES PREFIX "") + +# Final irccd executable. +add_executable(irccd ${irccd_SOURCE_DIR}/main.c) +target_link_libraries(irccd irccd-static) +set_target_properties(irccd PROPERTIES ENABLE_EXPORTS On) + +# Installation. +install(TARGETS irccd RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + +# Source grouping. +source_group(TREE ${irccd_SOURCE_DIR} FILES ${SOURCES} ${irccd_SOURCE_DIR}/main.c) +source_group( + build + FILES + ${irccd_BINARY_DIR}/lex.c + ${irccd_BINARY_DIR}/conf.c + ${irccd_BINARY_DIR}/conf.h +) diff -r 617c88eb9da9 -r 6c15d37b7518 irccdctl/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/irccdctl/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,24 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +project(irccdctl) + +add_executable(irccdctl ${irccdctl_SOURCE_DIR}/irccdctl.c) +target_link_libraries(irccdctl libirccd-static libirccd-ketopt) +source_group(TREE ${irccdctl_SOURCE_DIR} FILES ${irccdctl_SOURCE_DIR}/irccdctl.c) +install(TARGETS irccdctl DESTINATION ${CMAKE_INSTALL_BINDIR}) diff -r 617c88eb9da9 -r 6c15d37b7518 lib/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,74 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +project(libirccd) + +set( + SOURCES + ${irccd_SOURCE_DIR}/extern/libbsd/strlcpy.c + ${irccd_SOURCE_DIR}/extern/libbsd/strlcat.c + ${irccd_SOURCE_DIR}/extern/libbsd/reallocarray.c + ${libirccd_SOURCE_DIR}/irccd/channel.c + ${libirccd_SOURCE_DIR}/irccd/channel.h + ${libirccd_SOURCE_DIR}/irccd/conn.c + ${libirccd_SOURCE_DIR}/irccd/conn.h + ${libirccd_SOURCE_DIR}/irccd/event.c + ${libirccd_SOURCE_DIR}/irccd/event.h + ${libirccd_SOURCE_DIR}/irccd/hook.c + ${libirccd_SOURCE_DIR}/irccd/hook.h + ${libirccd_SOURCE_DIR}/irccd/irccd.c + ${libirccd_SOURCE_DIR}/irccd/irccd.h + ${libirccd_SOURCE_DIR}/irccd/limits.h + ${libirccd_SOURCE_DIR}/irccd/log.c + ${libirccd_SOURCE_DIR}/irccd/log.h + ${libirccd_SOURCE_DIR}/irccd/plugin.c + ${libirccd_SOURCE_DIR}/irccd/plugin.h + ${libirccd_SOURCE_DIR}/irccd/rule.c + ${libirccd_SOURCE_DIR}/irccd/rule.h + ${libirccd_SOURCE_DIR}/irccd/server.c + ${libirccd_SOURCE_DIR}/irccd/server.h + ${libirccd_SOURCE_DIR}/irccd/subst.c + ${libirccd_SOURCE_DIR}/irccd/subst.h + ${libirccd_SOURCE_DIR}/irccd/util.c + ${libirccd_SOURCE_DIR}/irccd/util.h +) + +configure_file( + ${libirccd_SOURCE_DIR}/irccd/config.h.in + ${libirccd_BINARY_DIR}/irccd/config.h +) + +add_library(libirccd-static STATIC ${SOURCES}) +target_link_libraries(libirccd-static PUBLIC libirccd-utlist) +target_include_directories( + libirccd-static + PUBLIC + $ + $ + $ + PRIVATE + $ +) +set_target_properties(libirccd-static PROPERTIES PREFIX "") + +if (IRCCD_WITH_JS) + target_link_libraries(libirccd-static PUBLIC libirccd-duktape) +endif () +if (IRCCD_WITH_SSL) + target_link_libraries(libirccd-static PUBLIC OpenSSL::SSL OpenSSL::Crypto) +endif () diff -r 617c88eb9da9 -r 6c15d37b7518 lib/irccd/config.h.in --- a/lib/irccd/config.h.in Mon Sep 20 10:06:54 2021 +0200 +++ b/lib/irccd/config.h.in Wed Sep 22 15:44:36 2021 +0200 @@ -19,17 +19,17 @@ #ifndef IRCCD_CONFIG_H #define IRCCD_CONFIG_H -#define IRCCD_VERSION_MAJOR @MAJOR@ -#define IRCCD_VERSION_MINOR @MINOR@ -#define IRCCD_VERSION_PATCH @PATCH@ -#define IRCCD_VERSION "@MAJOR@.@MINOR@.@PATCH@" +#define IRCCD_VERSION_MAJOR @irccd_VERSION_MAJOR@ +#define IRCCD_VERSION_MINOR @irccd_VERSION_MINOR@ +#define IRCCD_VERSION_PATCH @irccd_VERSION_PATCH@ +#define IRCCD_VERSION "@irccd_VERSION@" -#define IRCCD_CACHEDIR "@VARDIR@/cache/irccd" -#define IRCCD_SYSCONFDIR "@ETCDIR@" -#define IRCCD_LIBDIR "@LIBDIR@" -#define IRCCD_DATADIR "@SHAREDIR@/irccd" +#define IRCCD_CACHEDIR "@CMAKE_INSTALL_FULL_LOCALSTATEDIR@/cache/irccd" +#define IRCCD_SYSCONFDIR "@CMAKE_INSTALL_FULL_SYSCONFDIR@" +#define IRCCD_LIBDIR "@CMAKE_INSTALL_FULL_LIBDIR@" +#define IRCCD_DATADIR "@CMAKE_INSTALL_FULL_DATADIR@/irccd" -@define WITH_JS@ -@define WITH_SSL@ +#cmakedefine IRCCD_WITH_JS +#cmakedefine IRCCD_WITH_SSL #endif /* !IRCCD_CONFIG_H */ diff -r 617c88eb9da9 -r 6c15d37b7518 lib/irccd/server.c --- a/lib/irccd/server.c Mon Sep 20 10:06:54 2021 +0200 +++ b/lib/irccd/server.c Wed Sep 22 15:44:36 2021 +0200 @@ -817,7 +817,7 @@ fail(s); } else if (irc_conn_flush(s->conn, pfd) < 0) { irc_log_warn("server %s: %s", s->name, strerror(errno)); - return fail(s); + fail(s); } break; case IRC_SERVER_STATE_CONNECTING: diff -r 617c88eb9da9 -r 6c15d37b7518 man/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/man/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,76 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +project(man) + +set( + MANPAGES_1 + ${man_SOURCE_DIR}/irccdctl.1 + ${man_SOURCE_DIR}/irccd.1 +) + +set( + MANPAGES_3 + ${man_SOURCE_DIR}/irccd-api-chrono.3 + ${man_SOURCE_DIR}/irccd-api-directory.3 + ${man_SOURCE_DIR}/irccd-api-file.3 + ${man_SOURCE_DIR}/irccd-api-hook.3 + ${man_SOURCE_DIR}/irccd-api-logger.3 + ${man_SOURCE_DIR}/irccd-api-plugin.3 + ${man_SOURCE_DIR}/irccd-api-rule.3 + ${man_SOURCE_DIR}/irccd-api-server.3 + ${man_SOURCE_DIR}/irccd-api-system.3 + ${man_SOURCE_DIR}/irccd-api-timer.3 + ${man_SOURCE_DIR}/irccd-api-unicode.3 + ${man_SOURCE_DIR}/irccd-api-util.3 + ${man_SOURCE_DIR}/irccd-api.3 + ${man_SOURCE_DIR}/libirccd-channel.3 + ${man_SOURCE_DIR}/libirccd-event.3 + ${man_SOURCE_DIR}/libirccd-hook.3 + ${man_SOURCE_DIR}/libirccd-log.3 + ${man_SOURCE_DIR}/libirccd-rule.3 + ${man_SOURCE_DIR}/libirccd-server.3 + ${man_SOURCE_DIR}/libirccd-subst.3 + ${man_SOURCE_DIR}/libirccd-util.3 + ${man_SOURCE_DIR}/libirccd.3 +) + +set( + MANPAGES_5 + ${man_SOURCE_DIR}/irccd.conf.5 +) + +set( + MANPAGES_7 + ${man_SOURCE_DIR}/irccd-ipc.7 + ${man_SOURCE_DIR}/irccd-templates.7 +) + +add_custom_target( + man + SOURCES + ${MANPAGES_1} + ${MANPAGES_3} + ${MANPAGES_5} + ${MANPAGES_7} +) + +install(FILES ${MANPAGES_1} DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) +install(FILES ${MANPAGES_3} DESTINATION ${CMAKE_INSTALL_MANDIR}/man3) +install(FILES ${MANPAGES_5} DESTINATION ${CMAKE_INSTALL_MANDIR}/man5) +install(FILES ${MANPAGES_7} DESTINATION ${CMAKE_INSTALL_MANDIR}/man7) diff -r 617c88eb9da9 -r 6c15d37b7518 plugins/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,28 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +project(plugins) + +foreach (p ask auth hangman history joke links logger plugin roulette tictactoe) + string(TOUPPER ${p} var) + option(IRCCD_WITH_PLUGIN_${var} "Enable ${p} plugin" On) + + if (IRCCD_WITH_PLUGIN_${var}) + add_subdirectory(${p}) + endif () +endforeach () diff -r 617c88eb9da9 -r 6c15d37b7518 plugins/ask/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/ask/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,25 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +project(plugin-ask) + +irccd_define_javascript_plugin( + NAME ask + SCRIPT ${plugin-ask_SOURCE_DIR}/ask.js + MAN ${plugin-ask_SOURCE_DIR}/ask.7 +) diff -r 617c88eb9da9 -r 6c15d37b7518 plugins/auth/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/auth/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,25 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +project(plugin-auth) + +irccd_define_javascript_plugin( + NAME auth + SCRIPT ${plugin-auth_SOURCE_DIR}/auth.js + MAN ${plugin-auth_SOURCE_DIR}/auth.7 +) diff -r 617c88eb9da9 -r 6c15d37b7518 plugins/hangman/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/hangman/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,25 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +project(plugin-hangman) + +irccd_define_javascript_plugin( + NAME hangman + SCRIPT ${plugin-hangman_SOURCE_DIR}/hangman.js + MAN ${plugin-hangman_SOURCE_DIR}/hangman.7 +) diff -r 617c88eb9da9 -r 6c15d37b7518 plugins/history/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/history/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,25 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +project(plugin-history) + +irccd_define_javascript_plugin( + NAME history + SCRIPT ${plugin-history_SOURCE_DIR}/history.js + MAN ${plugin-history_SOURCE_DIR}/history.7 +) diff -r 617c88eb9da9 -r 6c15d37b7518 plugins/joke/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/joke/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,25 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +project(plugin-joke) + +irccd_define_javascript_plugin( + NAME joke + SCRIPT ${plugin-joke_SOURCE_DIR}/joke.js + MAN ${plugin-joke_SOURCE_DIR}/joke.7 +) diff -r 617c88eb9da9 -r 6c15d37b7518 plugins/links/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/links/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,28 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +project(plugin-links) + +find_package(CURL REQUIRED) + +irccd_define_native_plugin( + NAME links + MAN ${plugin-links_SOURCE_DIR}/links.7 + SOURCES ${plugin-links_SOURCE_DIR}/links.c + LIBRARIES CURL::libcurl +) diff -r 617c88eb9da9 -r 6c15d37b7518 plugins/logger/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/logger/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,25 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +project(plugin-logger) + +irccd_define_javascript_plugin( + NAME logger + SCRIPT ${plugin-logger_SOURCE_DIR}/logger.js + MAN ${plugin-logger_SOURCE_DIR}/logger.7 +) diff -r 617c88eb9da9 -r 6c15d37b7518 plugins/plugin/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/plugin/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,25 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +project(plugin-plugin) + +irccd_define_javascript_plugin( + NAME plugin + SCRIPT ${plugin-plugin_SOURCE_DIR}/plugin.js + MAN ${plugin-plugin_SOURCE_DIR}/plugin.7 +) diff -r 617c88eb9da9 -r 6c15d37b7518 plugins/roulette/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/roulette/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,25 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +project(plugin-roulette) + +irccd_define_javascript_plugin( + NAME roulette + SCRIPT ${plugin-roulette_SOURCE_DIR}/roulette.js + MAN ${plugin-roulette_SOURCE_DIR}/roulette.7 +) diff -r 617c88eb9da9 -r 6c15d37b7518 plugins/tictactoe/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/tictactoe/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,25 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +project(plugin-tictactoe) + +irccd_define_javascript_plugin( + NAME tictactoe + SCRIPT ${plugin-tictactoe_SOURCE_DIR}/tictactoe.js + MAN ${plugin-tictactoe_SOURCE_DIR}/tictactoe.7 +) diff -r 617c88eb9da9 -r 6c15d37b7518 tests/CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/CMakeLists.txt Wed Sep 22 15:44:36 2021 +0200 @@ -0,0 +1,66 @@ +# +# CMakeLists.txt -- CMake build system for irccd +# +# Copyright (c) 2013-2021 David Demelier +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +project(tests) + +set( + TESTS + bot + channel + dl-plugin + event + jsapi-chrono + jsapi-directory + jsapi-file + jsapi-irccd + jsapi-system + jsapi-timer + jsapi-unicode + jsapi-util + log + plugin-ask + plugin-auth + plugin-hangman + plugin-history + plugin-joke + plugin-logger + plugin-plugin + plugin-tictactoe + rule + subst + util +) + +foreach (t ${TESTS}) + add_executable(test-${t} ${tests_SOURCE_DIR}/test-${t}.c) + add_test(NAME test-${t} COMMAND test-${t}) + set_target_properties(test-${t} PROPERTIES FOLDER tests ENABLE_EXPORTS On) + target_link_libraries(test-${t} irccd-static libirccd-greatest) + target_compile_definitions(test-${t} PRIVATE TOP="${CMAKE_SOURCE_DIR}") +endforeach () + +# +# Test: dl-plugin +# +# We need a sample plugin to open. +# +add_library(plugin-dl-example MODULE ${tests_SOURCE_DIR}/data/example-dl-plugin.c) +add_dependencies(test-dl-plugin plugin-dl-example) +set_target_properties(plugin-dl-example PROPERTIES PREFIX "" FOLDER tests) +target_compile_definitions(test-dl-plugin PRIVATE EXAMPLE_DL_PLUGIN="$") +target_link_libraries(plugin-dl-example irccd) diff -r 617c88eb9da9 -r 6c15d37b7518 tests/data/example-dl-plugin.c --- a/tests/data/example-dl-plugin.c Mon Sep 20 10:06:54 2021 +0200 +++ b/tests/data/example-dl-plugin.c Wed Sep 22 15:44:36 2021 +0200 @@ -85,76 +85,76 @@ } void -example_dl_plugin_set_option(const char *key, const char *value) +plugin_dl_example_set_option(const char *key, const char *value) { set(options, IRC_UTIL_SIZE(options), key, value); } const char * -example_dl_plugin_get_option(const char *key) +plugin_dl_example_get_option(const char *key) { return get(options, IRC_UTIL_SIZE(options), key); } const char ** -example_dl_plugin_get_options(void) +plugin_dl_example_get_options(void) { return options_list; } void -example_dl_plugin_set_template(const char *key, const char *value) +plugin_dl_example_set_template(const char *key, const char *value) { set(templates, IRC_UTIL_SIZE(templates), key, value); } const char * -example_dl_plugin_get_template(const char *key) +plugin_dl_example_get_template(const char *key) { return get(templates, IRC_UTIL_SIZE(templates), key); } const char ** -example_dl_plugin_get_templates(void) +plugin_dl_example_get_templates(void) { return templates_list; } void -example_dl_plugin_set_path(const char *key, const char *value) +plugin_dl_example_set_path(const char *key, const char *value) { set(paths, IRC_UTIL_SIZE(paths), key, value); } const char * -example_dl_plugin_get_path(const char *key) +plugin_dl_example_get_path(const char *key) { return get(paths, IRC_UTIL_SIZE(paths), key); } const char ** -example_dl_plugin_get_paths(void) +plugin_dl_example_get_paths(void) { return paths_list; } void -example_dl_plugin_event(const struct irc_event *ev) +plugin_dl_example_event(const struct irc_event *ev) { irc_server_send(ev->server, "EVENT"); } void -example_dl_plugin_load(void) +plugin_dl_example_load(void) { } void -example_dl_plugin_reload(void) +plugin_dl_example_reload(void) { } void -example_dl_plugin_unload(void) +plugin_dl_example_unload(void) { } diff -r 617c88eb9da9 -r 6c15d37b7518 tests/test-dl-plugin.c --- a/tests/test-dl-plugin.c Mon Sep 20 10:06:54 2021 +0200 +++ b/tests/test-dl-plugin.c Wed Sep 22 15:44:36 2021 +0200 @@ -37,7 +37,7 @@ (void)udata; /* TODO: No idea how to stop greatest from here. */ - if ((plugin = dl_plugin_open("example", TOP "/tests/data/example-dl-plugin.so")) == NULL) + if ((plugin = dl_plugin_open("example", EXAMPLE_DL_PLUGIN)) == NULL) irc_util_die("dlopen: %s\n", strerror(errno)); }