From 307a1a53261669dc8d1d2ee031a8927f64ddb27a Mon Sep 17 00:00:00 2001 From: gregory guy Date: Wed, 3 Apr 2019 18:19:30 +0200 Subject: [PATCH] conversion to the cmake building system Signed-off-by: gregory guy --- CMakeLists.txt | 92 ++++++++++++++++++++++++ ConfigureChecks.cmake | 93 +++++++++++++++++++++++++ acl-updater/CMakeLists.txt | 1 + acl-updater/plugin/CMakeLists.txt | 31 +++++++++ cert-updater/CMakeLists.txt | 31 +++++++++ cert-updater/main.cpp | 4 +- config.h.cmake | 35 ++++++++++ confskel/CMakeLists.txt | 3 + confskel/heimdal/CMakeLists.txt | 9 +++ confskel/openldap/CMakeLists.txt | 7 ++ confskel/openldap/ldap/CMakeLists.txt | 7 ++ confskel/openldap/ldif/CMakeLists.txt | 6 ++ confskel/sasl/CMakeLists.txt | 7 ++ pics/CMakeLists.txt | 7 ++ po/CMakeLists.txt | 5 ++ src/CMakeLists.txt | 51 ++++++++++++++ src/ldapcontroller.cpp | 28 ++++++-- src/primaryrealmwizard/CMakeLists.txt | 32 +++++++++ src/secondaryrealmwizard/CMakeLists.txt | 32 +++++++++ 19 files changed, 474 insertions(+), 7 deletions(-) create mode 100644 CMakeLists.txt create mode 100644 ConfigureChecks.cmake create mode 100644 acl-updater/CMakeLists.txt create mode 100644 acl-updater/plugin/CMakeLists.txt create mode 100644 cert-updater/CMakeLists.txt create mode 100644 config.h.cmake create mode 100644 confskel/CMakeLists.txt create mode 100644 confskel/heimdal/CMakeLists.txt create mode 100644 confskel/openldap/CMakeLists.txt create mode 100644 confskel/openldap/ldap/CMakeLists.txt create mode 100644 confskel/openldap/ldif/CMakeLists.txt create mode 100644 confskel/sasl/CMakeLists.txt create mode 100644 pics/CMakeLists.txt create mode 100644 po/CMakeLists.txt create mode 100644 src/CMakeLists.txt create mode 100644 src/primaryrealmwizard/CMakeLists.txt create mode 100644 src/secondaryrealmwizard/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..4d99b0e --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,92 @@ +############################################ +# # +# Improvements and feedbacks are welcome # +# # +# This file is released under GPL >= 3 # +# # +############################################ + + +cmake_minimum_required( VERSION 2.8 ) + + +#### general package setup + +project( kcmldapcontroller ) +set( VERSION R14.1.0 ) + + +#### include essential cmake modules + +include( FindPkgConfig ) +include( CheckFunctionExists ) +include( CheckSymbolExists ) +include( CheckIncludeFile ) +include( CheckLibraryExists ) +include( CheckCSourceCompiles ) +include( CheckCXXSourceCompiles ) + + +#### include our cmake modules + +set( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules" ) +include( TDEMacros ) + + +##### setup install paths + +include( TDESetupPaths ) +tde_setup_paths( ) + + +##### optional stuff + +option( WITH_ALL_OPTIONS "Enable all optional support" OFF ) +option( WITH_GCC_VISIBILITY "Enable fvisibility and fvisibility-inlines-hidden" ${WITH_ALL_OPTIONS} ) + + +##### user requested modules + +option( BUILD_ALL "Build all" ON ) +option( BUILD_TRANSLATIONS "Build translations" ${BUILD_ALL} ) + + +##### user defined options + +set( KDE_CONFDIR "/etc/trinity" CACHE STRING "Path for the config system" ) +set( TDE_LIBDIR "/opt/trinity/lib" CACHE STRING "Path for the libraries" ) +set( LDAP_KEYTAB_FILE "/etc/ldap/ldap.keytab" CACHE STRING "Location for ldap.keytab" ) +set( LDAP_DEFAULT_FILE "/etc/default/slapd" CACHE STRING "ldap default file" ) +set( HEIMDAL_DEFAULT_FILE "/etc/default/heimdal-kdc" CACHE STRING "Heimdal default file" ) +set( HEIMDAL_ACL_FILE "/etc/heimdal-kdc/kadmind.acl" CACHE STRING "Heimdal acl file" ) +set( SASL_DEFAULT_FILE "/etc/default/saslauthd" CACHE STRING "Sasl default file" ) +set( SASL_CONTROL_FILE "/etc/ldap/sasl2/slapd.conf" CACHE STRING "sladp config file" ) + + +##### configure checks + +include( ConfigureChecks.cmake ) + + +###### global compiler settings + +add_definitions( -DHAVE_CONFIG_H -UTQT_NO_ASCII_CAST ) + +set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TQT_CXX_FLAGS}" ) +set( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined" ) +set( CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--no-undefined" ) + + +##### directories + +add_subdirectory( src ) +add_subdirectory( acl-updater ) +add_subdirectory( cert-updater ) +add_subdirectory( confskel ) +add_subdirectory( pics ) +tde_conditional_add_subdirectory( BUILD_TRANSLATIONS po ) + + +##### write configure files + +configure_file( config.h.cmake config.h @ONLY ) diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake new file mode 100644 index 0000000..ab447c2 --- /dev/null +++ b/ConfigureChecks.cmake @@ -0,0 +1,93 @@ +########################################### +# # +# Improvements and feedback are welcome # +# # +# This file is released under GPL >= 3 # +# # +########################################### + +# required stuff +find_package( TQt ) +find_package( TDE ) + +tde_setup_architecture_flags( ) + +include(TestBigEndian) +test_big_endian(WORDS_BIGENDIAN) + +tde_setup_largefiles( ) + + +##### check for gcc visibility support + +if( WITH_GCC_VISIBILITY ) + tde_setup_gcc_visibility( ) +endif( WITH_GCC_VISIBILITY ) + + +##### check for headers + +check_include_file( "slapi-plugin.h" HAVE_SLAPI_PLUGIN_H ) + + +##### check for ldap + +find_library( HAVE_LIBLDAP ldap ) +if( HAVE_LIBLDAP ) + set( LDAP_LIBRARIES "ldap" ) + else() + tde_message_fatal( "ldap is required, but was not found on your system" ) +endif( HAVE_LIBLDAP ) + + +##### check for openldap-server + +find_library( HAVE_SLAPI slapi ) +if( HAVE_SLAPI ) + set( SLAPI_LIBRARIES slapi ) + else() + tde_message_fatal( "The slapi library ( openldap-server ) is required, but was not found on your system" ) +endif( HAVE_SLAPI ) + + +##### check for tdeldap + +find_library( HAVE_LIBTDELDAP tdeldap ) +if( HAVE_LIBTDELDAP ) + set( TDELDAP_LIBRARIES "tdeldap" ) + else() + tde_message_fatal( "libtdeldap is required, but was not found on your system" ) +endif( ) + + +##### check for krb5 + +pkg_search_module( KRB5 heimdal-krb5 krb5 ) +if( NOT KRB5_FOUND) + if( NOT DEFINED KRB5_CONFIG_EXECUTABLE ) + find_program( KRB5_CONFIG_EXECUTABLE NAMES krb5-config.heimdal krb5-config ) + if( NOT KRB5_CONFIG_EXECUTABLE ) + tde_message_fatal( "krb5 library is required but not found on your system" ) + endif( ) + endif( ) + + execute_process( + COMMAND ${KRB5_CONFIG_EXECUTABLE} --libs + OUTPUT_VARIABLE KRB5_LIBRARIES + ERROR_VARIABLE KRB5_LIBRARIES + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE + ) + + execute_process( + COMMAND ${KRB5_CONFIG_EXECUTABLE} --cflags + OUTPUT_VARIABLE KRB5_INCLUDE_DIRS + ERROR_VARIABLE KRB5_INCLUDE_DIRS + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE + ) + + if( NOT "${KRB5_LIBRARIES}" STREQUAL "" ) + set( KRB5_FOUND 1 ) + endif( ) +endif( ) diff --git a/acl-updater/CMakeLists.txt b/acl-updater/CMakeLists.txt new file mode 100644 index 0000000..18b1325 --- /dev/null +++ b/acl-updater/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory( plugin ) diff --git a/acl-updater/plugin/CMakeLists.txt b/acl-updater/plugin/CMakeLists.txt new file mode 100644 index 0000000..d9bf81d --- /dev/null +++ b/acl-updater/plugin/CMakeLists.txt @@ -0,0 +1,31 @@ +include_directories( + ${CMAKE_BINARY_DIR} + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + ${TDE_INCLUDE_DIR} + ${TQT_INCLUDE_DIRS} + ${TDE_INCLUDE_DIR}/tde + ${KRB5_INCLUDE_DIRS} +) + +link_directories( + ${TQT_LIBRARY_DIRS} + ${TDE_LIB_DIR} +) + + +##### slapi-acl-manager (module) + +tde_add_library( slapi-acl-manager MODULE + + SOURCES + interface.c + plugin.cpp + LINK + tdecore-shared + ${TDELDAP_LIBRARIES} + ${KRB5_LIBRARIES} + ${SLAPI_LIBRARIES} + + DESTINATION ${LIB_INSTALL_DIR} +) diff --git a/cert-updater/CMakeLists.txt b/cert-updater/CMakeLists.txt new file mode 100644 index 0000000..08ed081 --- /dev/null +++ b/cert-updater/CMakeLists.txt @@ -0,0 +1,31 @@ +include_directories( + ${CMAKE_BINARY_DIR} + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + ${TDE_INCLUDE_DIR} + ${TQT_INCLUDE_DIRS} + ${TDE_INCLUDE_DIR}/tde + ${KRB5_INCLUDE_DIRS} +) + +link_directories( + ${TQT_LIBRARY_DIRS} + ${TDE_LIB_DIR} +) + + +##### primaryrccertupdater (executable) + +tde_add_executable( primaryrccertupdater + + SOURCES + main.cpp + LINK + tdecore-shared + tdeui-shared + tdeio-shared + ${TDELDAP_LIBRARIES} + ${KRB5_LIBRARIES} + + DESTINATION ${BIN_INSTALL_DIR} +) diff --git a/cert-updater/main.cpp b/cert-updater/main.cpp index dc338df..4f76223 100644 --- a/cert-updater/main.cpp +++ b/cert-updater/main.cpp @@ -35,9 +35,9 @@ #include -// FIXME -// Connect this to CMake/Automake +#ifndef KDE_CONFDIR #define KDE_CONFDIR "/etc/trinity" +#endif static const char description[] = I18N_NOOP("TDE utility for updating realm certificates"); diff --git a/config.h.cmake b/config.h.cmake new file mode 100644 index 0000000..1684891 --- /dev/null +++ b/config.h.cmake @@ -0,0 +1,35 @@ +#define VERSION "@VERSION@" + +// Defined if you have fvisibility and fvisibility-inlines-hidden support. +#cmakedefine __KDE_HAVE_GCC_VISIBILITY 1 + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#cmakedefine WORDS_BIGENDIAN @WORDS_BIGENDIAN@ + +/* Defined to 1 if you have the header */ +#cmakedefine HAVE_SLAPI_PLUGIN_H @HAVE_SLAPI_PLUGIN_H@ + +/* Path for the config system */ +#cmakedefine KDE_CONFDIR "@KDE_CONFDIR@" + +/* Path for the libraries */ +#cmakedefine TDE_LIBDIR "@TDE_LIBDIR@" + +/* Location for the ldap.keytab file */ +#cmakedefine LDAP_KEYTAB_FILE "@LDAP_KEYTAB_FILE@" + +/* ldap default file */ +#cmakedefine LDAP_DEFAULT_FILE "@LDAP_DEFAULT_FILE@" + +/* Heimdal default file */ +#cmakedefine HEIMDAL_DEFAULT_FILE "@HEIMDAL_DEFAULT_FILE@" + +/* Heimdal acl file */ +#cmakedefine HEIMDAL_ACL_FILE "@HEIMDAL_ACL_FILE@" + +/* Sasl default file */ +#cmakedefine SASL_DEFAULT_FILE "@SASL_DEFAULT_FILE@" + +/* sladp config file */ +#cmakedefine SASL_CONTROL_FILE "@SASL_CONTROL_FILE@" diff --git a/confskel/CMakeLists.txt b/confskel/CMakeLists.txt new file mode 100644 index 0000000..3c244fa --- /dev/null +++ b/confskel/CMakeLists.txt @@ -0,0 +1,3 @@ +add_subdirectory( heimdal ) +add_subdirectory( openldap ) +add_subdirectory( sasl ) diff --git a/confskel/heimdal/CMakeLists.txt b/confskel/heimdal/CMakeLists.txt new file mode 100644 index 0000000..3704863 --- /dev/null +++ b/confskel/heimdal/CMakeLists.txt @@ -0,0 +1,9 @@ +install( + FILES + heimdal.defaults + kadmind.acl + kdc.conf + krb5.conf + + DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME}/skel/heimdal +) diff --git a/confskel/openldap/CMakeLists.txt b/confskel/openldap/CMakeLists.txt new file mode 100644 index 0000000..a6077a8 --- /dev/null +++ b/confskel/openldap/CMakeLists.txt @@ -0,0 +1,7 @@ +add_subdirectory( ldap ) +add_subdirectory( ldif ) + +install( + FILES skel.ldif + DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME}/skel/openldap +) diff --git a/confskel/openldap/ldap/CMakeLists.txt b/confskel/openldap/ldap/CMakeLists.txt new file mode 100644 index 0000000..c3a5422 --- /dev/null +++ b/confskel/openldap/ldap/CMakeLists.txt @@ -0,0 +1,7 @@ +install( + FILES + slapd.conf + slapd.defaults + + DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME}/skel/openldap/ldap +) diff --git a/confskel/openldap/ldif/CMakeLists.txt b/confskel/openldap/ldif/CMakeLists.txt new file mode 100644 index 0000000..c7d84fa --- /dev/null +++ b/confskel/openldap/ldif/CMakeLists.txt @@ -0,0 +1,6 @@ +file( GLOB _ldifs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.ldif ) + +install( + FILES ${_ldifs} + DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME}/skel/openldap/ldif +) diff --git a/confskel/sasl/CMakeLists.txt b/confskel/sasl/CMakeLists.txt new file mode 100644 index 0000000..c22e8a1 --- /dev/null +++ b/confskel/sasl/CMakeLists.txt @@ -0,0 +1,7 @@ +install( + FILES + slapd.conf + saslauthd.defaults + + DESTINATION ${DATA_INSTALL_DIR}/${PROJECT_NAME}/skel/sasl +) diff --git a/pics/CMakeLists.txt b/pics/CMakeLists.txt new file mode 100644 index 0000000..cf2e871 --- /dev/null +++ b/pics/CMakeLists.txt @@ -0,0 +1,7 @@ +install( + FILES + kcmldapcontroller_step4.png + kcmldapcontroller_step1.png + + DESTINATION ${SHARE_INSTALL_PREFIX}/pixmaps +) diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt new file mode 100644 index 0000000..ad36a01 --- /dev/null +++ b/po/CMakeLists.txt @@ -0,0 +1,5 @@ +file( GLOB _srcs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.po ) + +if( _srcs ) + tde_create_translation( LANG auto OUTPUT_NAME ${PROJECT_NAME} ) +endif( ) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..d061fb2 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,51 @@ +add_subdirectory( primaryrealmwizard ) +add_subdirectory( secondaryrealmwizard ) + +include_directories( + ${CMAKE_BINARY_DIR} + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + ${TDE_INCLUDE_DIR} + ${TQT_INCLUDE_DIRS} + ${KRB5_INCLUDE_DIRS} +) + +link_directories( + ${TQT_LIBRARY_DIRS} + ${TDE_LIB_DIR} +) + + +##### kcm_ldapcontroller (kpart) + +tde_add_kpart( kcm_ldapcontroller AUTOMOC + + SOURCES + ldapcontrollerconfigbase.ui + multimasterreplicationconfigbase.ui + ldapcontroller.cpp + processingdialog.cpp + sha1.cc + multimasterreplicationconfigdlg.cpp + LINK + tdecore-shared + tdeio-shared + tdeui-shared + ${TDELDAP_LIBRARIES} + primaryrealmwizard-static + secondaryrealmwizard-static + + DEPENDENCIES + primaryrealmwizard-static + secondaryrealmwizard-static + + DESTINATION ${PLUGIN_INSTALL_DIR} +) + + +##### other data + +install( + FILES ldapcontroller.desktop + DESTINATION ${XDG_APPS_INSTALL_DIR} +) diff --git a/src/ldapcontroller.cpp b/src/ldapcontroller.cpp index 8572b2f..7ed2a7e 100644 --- a/src/ldapcontroller.cpp +++ b/src/ldapcontroller.cpp @@ -61,21 +61,37 @@ #include "ldapcontrollerconfigbase.h" -// FIXME -// Connect this to CMake/Automake +#ifndef KDE_CONFDIR #define KDE_CONFDIR "/etc/trinity" +#endif + +#ifndef TDE_LIBDIR #define TDE_LIBDIR "/opt/trinity/lib" +#endif + +#ifndef LDAP_KEYTAB_FILE #define LDAP_KEYTAB_FILE "/etc/ldap/ldap.keytab" +#endif -// FIXME -// This assumes Debian! -// RedHat would be "/etc/sysconfig/ldap" +#ifndef LDAP_DEFAULT_FILE #define LDAP_DEFAULT_FILE "/etc/default/slapd" +#endif + +#ifndef HEIMDAL_DEFAULT_FILE #define HEIMDAL_DEFAULT_FILE "/etc/default/heimdal-kdc" +#endif + +#ifndef SASL_DEFAULT_FILE #define SASL_DEFAULT_FILE "/etc/default/saslauthd" +#endif + +#ifndef SASL_CONTROL_FILE #define SASL_CONTROL_FILE "/etc/ldap/sasl2/slapd.conf" +#endif +#ifndef HEIMDAL_ACL_FILE #define HEIMDAL_ACL_FILE "/etc/heimdal-kdc/kadmind.acl" +#endif #define KEY_STRENGTH 2048 @@ -2206,3 +2222,5 @@ TQString LDAPController::quickHelp() const { return i18n("This module configures an LDAP Realm Controller."); } + +#include "ldapcontroller.moc" diff --git a/src/primaryrealmwizard/CMakeLists.txt b/src/primaryrealmwizard/CMakeLists.txt new file mode 100644 index 0000000..c8d27ec --- /dev/null +++ b/src/primaryrealmwizard/CMakeLists.txt @@ -0,0 +1,32 @@ +include_directories( + ${CMAKE_BINARY_DIR} + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + ${TDE_INCLUDE_DIR} + ${TQT_INCLUDE_DIRS} + ${TDE_INCLUDE_DIR}/tde + ${CMAKE_SOURCE_DIR}/src + ${KRB5_INCLUDE_DIRS} +) + +link_directories( + ${TQT_LIBRARY_DIRS} + ${TDE_LIB_DIR} +) + + +##### primaryrealmwizard (static) + +tde_add_library( primaryrealmwizard STATIC_PIC AUTOMOC + + SOURCES + realmintropagedlg.ui + certconfigpagedlg.ui + realmconfigpagedlg.ui + realmfinishpagedlg.ui + primaryrealmwizard.cpp + certconfigpage.cpp + realmintropage.cpp + realmconfigpage.cpp + realmfinishpage.cpp +) diff --git a/src/secondaryrealmwizard/CMakeLists.txt b/src/secondaryrealmwizard/CMakeLists.txt new file mode 100644 index 0000000..fce3301 --- /dev/null +++ b/src/secondaryrealmwizard/CMakeLists.txt @@ -0,0 +1,32 @@ +include_directories( + ${CMAKE_BINARY_DIR} + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + ${TDE_INCLUDE_DIR} + ${TQT_INCLUDE_DIRS} + ${TDE_INCLUDE_DIR}/tde + ${CMAKE_SOURCE_DIR}/src + ${KRB5_INCLUDE_DIRS} +) + +link_directories( + ${TQT_LIBRARY_DIRS} + ${TDE_LIB_DIR} +) + + +##### secondaryrealmwizard (static) + +tde_add_library( secondaryrealmwizard STATIC_PIC AUTOMOC + + SOURCES + realmintropagedlg.ui + certconfigpagedlg.ui + realmconfigpagedlg.ui + realmfinishpagedlg.ui + secondaryrealmwizard.cpp + certconfigpage.cpp + realmintropage.cpp + realmconfigpage.cpp + realmfinishpage.cpp +)