ENH: add real-world-tested and used KDE3 support, and obsolete FindKDE.cmake, which wasn't used by anybody that I heard of
Alex
This commit is contained in:
parent
26e1fea95b
commit
d253baab99
|
@ -1,148 +1,9 @@
|
|||
# - Locate KDE include paths and libraries
|
||||
# KDE_INCLUDE_DIR
|
||||
# KDE_LIB_DIR
|
||||
# KDE_KDE_CONFIG
|
||||
# KDE_DCOP_IDL
|
||||
# KDE_VERSION
|
||||
|
||||
# the macro ADD_DCOP_SOURCES(src_headers dest_srcs)
|
||||
# I don't think anybody actually used this file
|
||||
# at least not in any large scale
|
||||
# so it should be safe to obsolete it now
|
||||
#
|
||||
# usage:
|
||||
# SET(MY_APP_SOURCES main.cpp kfoo.cpp)
|
||||
# SET(MY_DCOP_SOURCES kfooiface.h)
|
||||
# ADD_DCOP_SOURCES(MY_DCOP_SOURCES MY_APP_SOURCES)
|
||||
# uses KDE_MIN_VERSION
|
||||
# Alex <neundorf@kde.org>
|
||||
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.0.0)
|
||||
MESSAGE(FATAL_ERROR "FindKDE.cmake is obsolete, please use FindKDE3.cmake or FindKDE4.cmake instead.")
|
||||
|
||||
FIND_PATH(KDE_INCLUDE_DIR kurl.h
|
||||
$ENV{KDEDIR}/include
|
||||
/opt/kde/include
|
||||
/opt/kde3/include
|
||||
/usr/local/include
|
||||
/usr/include/
|
||||
/usr/include/kde
|
||||
/usr/local/include/kde
|
||||
)
|
||||
|
||||
IF(KDE_INCLUDE_DIR)
|
||||
MESSAGE(STATUS "Found KDE header files in ${KDE_INCLUDE_DIR}")
|
||||
ELSE(KDE_INCLUDE_DIR)
|
||||
MESSAGE(FATAL_ERROR "Didn't find KDE headers")
|
||||
ENDIF(KDE_INCLUDE_DIR)
|
||||
|
||||
FIND_PROGRAM(KDE_CONFIG NAME kde-config PATHS
|
||||
$ENV{KDEDIR}/bin
|
||||
/opt/kde/bin
|
||||
/opt/kde3/bin)
|
||||
|
||||
IF(NOT KDE_CONFIG)
|
||||
MESSAGE(FATAL_ERROR "Didn't find the kde-config utility")
|
||||
ENDIF(NOT KDE_CONFIG)
|
||||
|
||||
FIND_PATH(KDE_LIB_DIR libkdecore.so
|
||||
$ENV{KDEDIR}/lib
|
||||
/opt/kde/lib
|
||||
/opt/kde3/lib
|
||||
)
|
||||
|
||||
IF(KDE_LIB_DIR)
|
||||
MESSAGE(STATUS "Found KDE libraries in ${KDE_LIB_DIR}")
|
||||
ELSE(KDE_LIB_DIR)
|
||||
MESSAGE(FATAL_ERROR "Didn't find KDE core library")
|
||||
ENDIF(KDE_LIB_DIR)
|
||||
|
||||
IF (KDE_MIN_VERSION)
|
||||
#extract the version from kdeversion.h
|
||||
|
||||
FILE(READ ${KDE_INCLUDE_DIR}/kdeversion.h KDE_VERSION_H)
|
||||
|
||||
STRING(REGEX REPLACE ".*#define[\\t\\ ]+KDE_VERSION_STRING[\\t\\ ]+\"([0-9]+\\.[0-9]+\\.[0-9]+)\".*" "\\1" KDE_VERSION "${KDE_VERSION_H}")
|
||||
STRING(REGEX REPLACE ".*#define[\\t\\ ]+KDE_VERSION_MAJOR[\\t\\ ]+([0-9]+).*" "\\1" kde_major_vers "${KDE_VERSION_H}")
|
||||
STRING(REGEX REPLACE ".*#define[\\t\\ ]+KDE_VERSION_MINOR[\\t\\ ]+([0-9]+).*" "\\1" kde_minor_vers "${KDE_VERSION_H}")
|
||||
STRING(REGEX REPLACE ".*#define[\\t\\ ]+KDE_VERSION_RELEASE[\\t\\ ]+([0-9]+).*" "\\1" kde_vers_release "${KDE_VERSION_H}")
|
||||
|
||||
#now parse the parts of the user given version string into variables
|
||||
STRING(REGEX MATCH "^[0-9]+\\.[0-9]+\\.[0-9]+$" req_kde_major_vers "${KDE_MIN_VERSION}")
|
||||
IF (NOT req_kde_major_vers)
|
||||
MESSAGE( FATAL_ERROR "Invalid KDE version string given: \"${KDE_MIN_VERSION}\", expected e.g. \"3.1.5\"")
|
||||
ENDIF (NOT req_kde_major_vers)
|
||||
|
||||
STRING(REGEX REPLACE "([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" req_kde_major_vers "${KDE_MIN_VERSION}")
|
||||
STRING(REGEX REPLACE "[0-9]+\\.([0-9])+\\.[0-9]+" "\\1" req_kde_minor_vers "${KDE_MIN_VERSION}")
|
||||
STRING(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" req_kde_patch_vers "${KDE_MIN_VERSION}")
|
||||
|
||||
# req = "6.5.4", qt = "3.2.1"
|
||||
|
||||
IF (req_kde_major_vers GREATER kde_major_vers) # (6 > 3) ?
|
||||
MESSAGE( FATAL_ERROR "KDE major version not matched (required: ${KDE_MIN_VERSION}, found: ${KDE_VERSION})") # yes
|
||||
ELSE (req_kde_major_vers GREATER kde_major_vers) # no
|
||||
IF (req_kde_major_vers LESS kde_major_vers) # (6 < 3) ?
|
||||
SET( QT_VERSION_BIG_ENOUGH "YES" ) # yes
|
||||
ELSE (req_kde_major_vers LESS kde_major_vers) # ( 6==3) ?
|
||||
IF (req_kde_minor_vers GREATER kde_minor_vers) # (5>2) ?
|
||||
MESSAGE( FATAL_ERROR "KDE minor version not matched (required: ${KDE_MIN_VERSION}, found: ${KDE_VERSION})") # yes
|
||||
ELSE (req_kde_minor_vers GREATER kde_minor_vers) # no
|
||||
IF (req_kde_minor_vers LESS kde_minor_vers) # (5<2) ?
|
||||
SET( QT_VERSION_BIG_ENOUGH "YES" ) # yes
|
||||
ELSE (req_kde_minor_vers LESS kde_minor_vers) # (5==2)
|
||||
IF (req_kde_patch_vers GREATER kde_vers_release) # (4>1) ?
|
||||
MESSAGE( FATAL_ERROR "KDE release version not matched (required: ${KDE_MIN_VERSION}, found: ${KDE_VERSION})") # yes
|
||||
ELSE (req_kde_patch_vers GREATER kde_patch_vers) # (4>1) ?
|
||||
SET( QT_VERSION_BIG_ENOUGH "YES" ) # yes
|
||||
ENDIF (req_kde_patch_vers GREATER kde_vers_release) # (4>1) ?
|
||||
ENDIF (req_kde_minor_vers LESS kde_minor_vers)
|
||||
ENDIF (req_kde_minor_vers GREATER kde_minor_vers)
|
||||
ENDIF (req_kde_major_vers LESS kde_major_vers)
|
||||
ENDIF (req_kde_major_vers GREATER kde_major_vers)
|
||||
MESSAGE(STATUS "KDE version ok (required: ${KDE_MIN_VERSION}, found: ${KDE_VERSION})")
|
||||
ENDIF (KDE_MIN_VERSION)
|
||||
|
||||
#now search for the dcop utilities
|
||||
FIND_PROGRAM(KDE_DCOPIDL NAME dcopidl PATHS
|
||||
$ENV{KDEDIR}/bin
|
||||
/opt/kde/bin
|
||||
/opt/kde3/bin)
|
||||
|
||||
IF(NOT KDE_DCOPIDL)
|
||||
MESSAGE(FATAL_ERROR "Didn't find the dcopidl preprocessor")
|
||||
ENDIF(NOT KDE_DCOPIDL)
|
||||
|
||||
FIND_PROGRAM(KDE_DCOPIDL2CPP NAME dcopidl2cpp PATHS
|
||||
$ENV{KDEDIR}/bin
|
||||
/opt/kde/bin
|
||||
/opt/kde3/bin)
|
||||
|
||||
IF(NOT KDE_DCOPIDL2CPP)
|
||||
MESSAGE(FATAL_ERROR "Didn't find the dcopidl2cpp preprocessor")
|
||||
ENDIF(NOT KDE_DCOPIDL2CPP)
|
||||
|
||||
MACRO(DCOP_WRAP SKEL_SOURCES)
|
||||
FOREACH(dcop_source ${ARGN})
|
||||
|
||||
GET_FILENAME_COMPONENT(dcop_source_basename ${dcop_source} NAME_WE)
|
||||
|
||||
SET(idl_file ${CMAKE_BINARY_DIR}/${dcop_source_basename}.kidl)
|
||||
SET(skel_file ${CMAKE_BINARY_DIR}/${dcop_source_basename}_skel.cpp)
|
||||
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${idl_file}
|
||||
COMMAND ${KDE_DCOPIDL}
|
||||
ARGS ${CMAKE_SOURCE_DIR}/${dcop_source} > ${idl_file}
|
||||
DEPENDS ${CMAKE_SOURCE_DIR}/${dcop_source})
|
||||
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${skel_file}
|
||||
COMMAND ${KDE_DCOPIDL2CPP}
|
||||
ARGS --c++-suffix cpp --no-signals --no-stub ${idl_file}
|
||||
DEPENDS ${idl_file})
|
||||
|
||||
SET( SKEL_SOURCES ${${SKEL_SOURCES}}
|
||||
${skel_file})
|
||||
ENDFOREACH(dcop_source)
|
||||
ENDMACRO (DCOP_WRAP)
|
||||
|
||||
MARK_AS_ADVANCED(
|
||||
KDE_INCLUDE_DIR
|
||||
KDE_LIB_DIR
|
||||
)
|
||||
|
|
|
@ -0,0 +1,211 @@
|
|||
# - Find the KDE3 include and library dirs, KDE preprocessors and define a some macros
|
||||
#
|
||||
# This module defines the following variables:
|
||||
# KDE3_DEFINITIONS - compiler definitions required for compiling KDE software
|
||||
# KDE3_INCLUDE_DIR - the KDE include directory
|
||||
# KDE3_INCLUDE_DIRS - the KDE and the Qt include directory, for use with INCLUDE_DIRECTORIES()
|
||||
# KDE3_LIB_DIR - the directory where the KDE libraries are installed, for use with LINK_DIR()
|
||||
# QT_AND_KDECORE_LIBRARIES - this contains both the Qt and the kdecore library
|
||||
# KDE3_DCOPIDL_EXECUTABLE - the dcopidl executable
|
||||
# KDE3_DCOPIDL2CPP_EXECUTABLE - the dcopidl2cpp executable
|
||||
# KDE3_KCFGC_EXECUTABLE - the kconfig_compiler executable
|
||||
# KDE3_FOUND - set to TRUE if all of the above has been found
|
||||
#
|
||||
# The following user adjustable options are provided:
|
||||
#
|
||||
# KDE3_ENABLE_FINAL - enable this for KDE-style enable-final all-in-one compilation
|
||||
# KDE3_BUILD_TESTS - enable this to build KDE testcases
|
||||
#
|
||||
#
|
||||
# It also adds the following macros (from KDE3Macros.cmake)
|
||||
# SRCS_VAR is always the variable which contains the list of source files for your application or library.
|
||||
#
|
||||
# KDE3_AUTOMOC(file1 ... fileN)
|
||||
# Call this if you want to have automatic moc file handling.
|
||||
# This means if you include "foo.moc" in the source file foo.cpp
|
||||
# a moc file for the header foo.h will be created automatically.
|
||||
# You can set the property SKIP_AUTOMAKE using SET_SOURCE_FILES_PROPERTIES()
|
||||
# to exclude some files in the list from being processed.
|
||||
#
|
||||
# KDE3_ADD_MOC_FILES(SRCS_VAR file1 ... fileN )
|
||||
# If you don't use the KDE3_AUTOMOC() macro, for the files
|
||||
# listed here moc files will be created (named "foo.moc.cpp")
|
||||
#
|
||||
# KDE3_ADD_DCOP_SKELS(SRCS_VAR header1.h ... headerN.h )
|
||||
# Use this to generate DCOP skeletions from the listed headers.
|
||||
#
|
||||
# KDE3_ADD_DCOP_STUBS(SRCS_VAR header1.h ... headerN.h )
|
||||
# Use this to generate DCOP stubs from the listed headers.
|
||||
#
|
||||
# KDE3_ADD_UI_FILES(SRCS_VAR file1.ui ... fileN.ui )
|
||||
# Use this to add the Qt designer ui files to your application/library.
|
||||
#
|
||||
# KDE3_ADD_KCFG_FILES(SRCS_VAR file1.kcfgc ... fileN.kcfgc )
|
||||
# Use this to add KDE kconfig compiler files to your application/library.
|
||||
#
|
||||
# KDE3_INSTALL_LIBTOOL_FILE(target)
|
||||
# This will create and install a simple libtool file for the given target.
|
||||
#
|
||||
# KDE3_ADD_EXECUTABLE(name file1 ... fileN )
|
||||
# Equivalent to ADD_EXECUTABLE(), but additionally supports KDE3_ENABLE_FINAL
|
||||
#
|
||||
# KDE3_ADD_KPART(name [WITH_PREFIX] file1 ... fileN )
|
||||
# Create a KDE plugin (KPart, kioslave, etc.) from the given source files.
|
||||
# It supports KDE3_ENABLE_FINAL
|
||||
# If WITH_PREFIX is given, the resulting plugin will have the prefix "lib", otherwise it won't.
|
||||
# It creates and install an appropriate libtool la-file.
|
||||
#
|
||||
# KDE3_ADD_KDEINIT_EXECUTABLE(name file1 ... fileN )
|
||||
# Create a KDE application in the form of a module loadable via kdeinit.
|
||||
# It supports KDE3_ENABLE_FINAL.
|
||||
# A library named kdeinit_<name> will be created and a small executable which links to it.
|
||||
# Supports KDE3_ENABLE_FINAL
|
||||
#
|
||||
# Author: Alexander Neundorf <neundorf@kde.org>
|
||||
|
||||
IF(NOT UNIX)
|
||||
MESSAGE(FATAL_ERROR "Compiling KDE3 applications and libraries under Windows is not supported")
|
||||
ENDIF(NOT UNIX)
|
||||
|
||||
|
||||
SET(QT_MT_REQUIRED TRUE)
|
||||
#SET(QT_MIN_VERSION "3.0.0")
|
||||
|
||||
#this line includes FindQt.cmake, which searches the Qt library and headers
|
||||
FIND_PACKAGE(Qt3 REQUIRED)
|
||||
FIND_PACKAGE(X11 REQUIRED)
|
||||
|
||||
|
||||
SET(QT_AND_KDECORE_LIBS ${QT_LIBRARIES} kdecore)
|
||||
|
||||
#add some KDE specific stuff
|
||||
SET(KDE3_DEFINITIONS -DQT_CLEAN_NAMESPACE -D_GNU_SOURCE)
|
||||
|
||||
#only on linux, but NOT e.g. on FreeBSD:
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
SET (KDE3_DEFINITIONS ${KDE3_DEFINITIONS} -D_XOPEN_SOURCE=500 -D_BSD_SOURCE)
|
||||
SET ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-long-long -ansi -Wundef -Wcast-align -Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -O2 -Wformat-security -Wmissing-format-attribute -fno-common")
|
||||
SET ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wcast-align -Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -O2 -Wformat-security -fno-exceptions -fno-check-new -fno-common")
|
||||
ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
|
||||
# works on FreeBSD, NOT tested on NetBSD and OpenBSD
|
||||
IF (CMAKE_SYSTEM_NAME MATCHES BSD)
|
||||
SET ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-long-long -ansi -Wundef -Wcast-align -Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -O2 -Wformat-security -Wmissing-format-attribute -fno-common")
|
||||
SET ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -Wundef -Wcast-align -Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -O2 -Wformat-security -Wmissing-format-attribute -fno-exceptions -fno-check-new -fno-common")
|
||||
ENDIF (CMAKE_SYSTEM_NAME MATCHES BSD)
|
||||
|
||||
|
||||
#SET(CMAKE_SHARED_LINKER_FLAGS "-avoid-version -module -Wl,--no-undefined -Wl,--allow-shlib-undefined")
|
||||
#SET(CMAKE_SHARED_LINKER_FLAGS "-Wl,--fatal-warnings -avoid-version -Wl,--no-undefined -lc")
|
||||
#SET(CMAKE_MODULE_LINKER_FLAGS "-Wl,--fatal-warnings -avoid-version -Wl,--no-undefined -lc")
|
||||
|
||||
#now try to find some kde stuff
|
||||
|
||||
#at first the KDE include direcory
|
||||
# kpassdlg.h comes from kdeui and doesn't exist in KDE4 anymore
|
||||
FIND_PATH(KDE3_INCLUDE_DIR kpassdlg.h
|
||||
$ENV{KDEDIR}/include
|
||||
/opt/kde/include
|
||||
/opt/kde3/include
|
||||
/usr/local/include
|
||||
/usr/include/
|
||||
/usr/include/kde
|
||||
/usr/local/include/kde
|
||||
)
|
||||
|
||||
#now the KDE library directory
|
||||
FIND_LIBRARY(KDE3_LIB_DIR NAMES kdecore
|
||||
PATHS
|
||||
$ENV{KDEDIR}/lib
|
||||
/opt/kde/lib
|
||||
/opt/kde3/lib
|
||||
/usr/lib
|
||||
/usr/local/lib
|
||||
)
|
||||
|
||||
#now the KDE service types directory
|
||||
#FIND_PATH(KDE3_SERVICETYPES_DIR ktexteditor.desktop
|
||||
# $ENV{KDEDIR}/share/servicetypes/
|
||||
# /opt/kde/share/servicetypes/
|
||||
# /opt/kde3/share/servicetypes/
|
||||
#)
|
||||
|
||||
#now search for the dcop utilities
|
||||
FIND_PROGRAM(KDE3_DCOPIDL_EXECUTABLE NAME dcopidl PATHS
|
||||
$ENV{KDEDIR}/bin
|
||||
/opt/kde/bin
|
||||
/opt/kde3/bin
|
||||
)
|
||||
|
||||
FIND_PROGRAM(KDE3_DCOPIDL2CPP_EXECUTABLE NAME dcopidl2cpp PATHS
|
||||
$ENV{KDEDIR}/bin
|
||||
/opt/kde/bin
|
||||
/opt/kde3/bin)
|
||||
|
||||
FIND_PROGRAM(KDE3_KCFGC_EXECUTABLE NAME kconfig_compiler PATHS
|
||||
$ENV{KDEDIR}/bin
|
||||
/opt/kde/bin
|
||||
/opt/kde3/bin)
|
||||
|
||||
|
||||
# KDE3Macros.cmake contains all the KDE specific macros
|
||||
INCLUDE(KDE3Macros)
|
||||
|
||||
|
||||
#SET KDE3_FOUND
|
||||
IF (KDE3_INCLUDE_DIR AND KDE3_LIB_DIR AND KDE3_DCOPIDL_EXECUTABLE AND KDE3_DCOPIDL2CPP_EXECUTABLE AND KDE3_KCFGC_EXECUTABLE)
|
||||
SET(KDE3_FOUND TRUE)
|
||||
ELSE (KDE3_INCLUDE_DIR AND KDE3_LIB_DIR AND KDE3_DCOPIDL_EXECUTABLE AND KDE3_DCOPIDL2CPP_EXECUTABLE AND KDE3_KCFGC_EXECUTABLE)
|
||||
SET(KDE3_FOUND FALSE)
|
||||
ENDIF (KDE3_INCLUDE_DIR AND KDE3_LIB_DIR AND KDE3_DCOPIDL_EXECUTABLE AND KDE3_DCOPIDL2CPP_EXECUTABLE AND KDE3_KCFGC_EXECUTABLE)
|
||||
|
||||
|
||||
MACRO (KDE3_PRINT_RESULTS)
|
||||
IF(KDE3_INCLUDE_DIR)
|
||||
MESSAGE(STATUS "Found KDE3 include dir: ${KDE3_INCLUDE_DIR}")
|
||||
ELSE(KDE3_INCLUDE_DIR)
|
||||
MESSAGE(STATUS "Didn't find KDE3 headers")
|
||||
ENDIF(KDE3_INCLUDE_DIR)
|
||||
|
||||
IF(KDE3_LIB_DIR)
|
||||
MESSAGE(STATUS "Found KDE3 library dir: ${KDE3_LIB_DIR}")
|
||||
ELSE(KDE3_LIB_DIR)
|
||||
MESSAGE(STATUS "Didn't find KDE3 core library")
|
||||
ENDIF(KDE3_LIB_DIR)
|
||||
|
||||
IF(KDE3_DCOPIDL_EXECUTABLE)
|
||||
MESSAGE(STATUS "Found KDE3 dcopidl preprocessor: ${KDE3_DCOPIDL_EXECUTABLE}")
|
||||
ELSE(KDE3_DCOPIDL_EXECUTABLE)
|
||||
MESSAGE(STATUS "Didn't find the KDE3 dcopidl preprocessor")
|
||||
ENDIF(KDE3_DCOPIDL_EXECUTABLE)
|
||||
|
||||
IF(KDE3_DCOPIDL2CPP_EXECUTABLE)
|
||||
MESSAGE(STATUS "Found KDE3 dcopidl2cpp preprocessor: ${KDE3_DCOPIDL2CPP_EXECUTABLE}")
|
||||
ELSE(KDE3_DCOPIDL2CPP_EXECUTABLE)
|
||||
MESSAGE(STATUS "Didn't find the KDE3 dcopidl2cpp preprocessor")
|
||||
ENDIF(KDE3_DCOPIDL2CPP_EXECUTABLE)
|
||||
|
||||
IF(KDE3_KCFGC_EXECUTABLE)
|
||||
MESSAGE(STATUS "Found KDE3 kconfig_compiler preprocessor: ${KDE3_KCFGC_EXECUTABLE}")
|
||||
ELSE(KDE3_KCFGC_EXECUTABLE)
|
||||
MESSAGE(STATUS "Didn't find the KDE3 kconfig_compiler preprocessor")
|
||||
ENDIF(KDE3_KCFGC_EXECUTABLE)
|
||||
|
||||
ENDMACRO (KDE3_PRINT_RESULTS)
|
||||
|
||||
|
||||
IF (KDE3_FIND_REQUIRED AND NOT KDE3_FOUND)
|
||||
#bail out if something wasn't found
|
||||
KDE3_PRINT_RESULTS()
|
||||
MESSAGE(FATAL_ERROR "Could NOT find everything required for compiling KDE 3 programs")
|
||||
|
||||
ENDIF (KDE3_FIND_REQUIRED AND NOT KDE3_FOUND)
|
||||
|
||||
|
||||
IF (NOT KDE3_FIND_QUIETLY)
|
||||
KDE3_PRINT_RESULTS()
|
||||
ENDIF (NOT KDE3_FIND_QUIETLY)
|
||||
|
||||
#add the found Qt and KDE include directories to the current include path
|
||||
SET(KDE3_INCLUDE_DIRS ${QT_INCLUDE_DIR} ${KDE3_INCLUDE_DIR})
|
||||
|
|
@ -0,0 +1,375 @@
|
|||
|
||||
|
||||
# See FindKDE3.cmake for documentation.
|
||||
#
|
||||
# this file contains the following macros:
|
||||
# KDE3_ADD_DCOP_SKELS
|
||||
# KDE3_ADD_DCOP_STUBS
|
||||
# KDE3_ADD_MOC_FILES
|
||||
# KDE3_ADD_UI_FILES
|
||||
# KDE3_ADD_KCFG_FILES
|
||||
# KDE3_AUTOMOC
|
||||
# KDE3_INSTALL_LIBTOOL_FILE
|
||||
# KDE3_CREATE_FINAL_FILE
|
||||
# KDE3_ADD_KPART
|
||||
# KDE3_ADD_KDEINIT_EXECUTABLE
|
||||
# KDE3_ADD_EXECUTABLE
|
||||
|
||||
|
||||
#neundorf@kde.org
|
||||
|
||||
INCLUDE(MacroLibrary)
|
||||
|
||||
#create the kidl and skeletion file for dcop stuff
|
||||
#usage: KDE_ADD_COP_SKELS(foo_SRCS ${dcop_headers})
|
||||
MACRO(KDE3_ADD_DCOP_SKELS _sources)
|
||||
FOREACH (_current_FILE ${ARGN})
|
||||
|
||||
GET_FILENAME_COMPONENT(_tmp_FILE ${_current_FILE} ABSOLUTE)
|
||||
GET_FILENAME_COMPONENT(_basename ${_tmp_FILE} NAME_WE)
|
||||
|
||||
SET(_skel ${CMAKE_CURRENT_BINARY_DIR}/${_basename}_skel.cpp)
|
||||
SET(_kidl ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.kidl)
|
||||
|
||||
IF (NOT HAVE_${_basename}_KIDL_RULE)
|
||||
SET(HAVE_${_basename}_KIDL_RULE ON)
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${_kidl}
|
||||
COMMAND ${KDE3_DCOPIDL_EXECUTABLE}
|
||||
ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE} > ${_kidl}
|
||||
DEPENDS ${_tmp_FILE}
|
||||
)
|
||||
ENDIF (NOT HAVE_${_basename}_KIDL_RULE)
|
||||
|
||||
IF (NOT HAVE_${_basename}_SKEL_RULE)
|
||||
SET(HAVE_${_basename}_SKEL_RULE ON)
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${_skel}
|
||||
COMMAND ${KDE3_DCOPIDL2CPP_EXECUTABLE}
|
||||
ARGS --c++-suffix cpp --no-signals --no-stub ${_kidl}
|
||||
DEPENDS ${_kidl}
|
||||
)
|
||||
|
||||
ENDIF (NOT HAVE_${_basename}_SKEL_RULE)
|
||||
|
||||
SET(${_sources} ${${_sources}} ${_skel})
|
||||
|
||||
ENDFOREACH (_current_FILE)
|
||||
|
||||
ENDMACRO(KDE3_ADD_DCOP_SKELS)
|
||||
|
||||
|
||||
MACRO(KDE3_ADD_DCOP_STUBS _sources)
|
||||
FOREACH (_current_FILE ${ARGN})
|
||||
|
||||
GET_FILENAME_COMPONENT(_tmp_FILE ${_current_FILE} ABSOLUTE)
|
||||
|
||||
GET_FILENAME_COMPONENT(_basename ${_tmp_FILE} NAME_WE)
|
||||
|
||||
SET(_stub_CPP ${CMAKE_CURRENT_BINARY_DIR}/${_basename}_stub.cpp)
|
||||
SET(_kidl ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.kidl)
|
||||
|
||||
IF (NOT HAVE_${_basename}_KIDL_RULE)
|
||||
SET(HAVE_${_basename}_KIDL_RULE ON)
|
||||
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${_kidl}
|
||||
COMMAND ${KDE3_DCOPIDL_EXECUTABLE}
|
||||
ARGS ${tmp_FILE} > ${_kidl}
|
||||
DEPENDS ${tmp_FILE}
|
||||
)
|
||||
|
||||
ENDIF (NOT HAVE_${_basename}_KIDL_RULE)
|
||||
|
||||
|
||||
IF (NOT HAVE_${_basename}_STUB_RULE)
|
||||
SET(HAVE_${_basename}_STUB_RULE ON)
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${_stub_CPP}
|
||||
COMMAND ${KDE3_DCOPIDL2CPP_EXECUTABLE}
|
||||
ARGS --c++-suffix cpp --no-signals --no-skel ${_kidl}
|
||||
DEPENDS ${_kidl}
|
||||
)
|
||||
|
||||
ENDIF (NOT HAVE_${_basename}_STUB_RULE)
|
||||
|
||||
SET(${_sources} ${${_sources}} ${_stub_CPP})
|
||||
|
||||
ENDFOREACH (_current_FILE)
|
||||
|
||||
ENDMACRO(KDE3_ADD_DCOP_STUBS)
|
||||
|
||||
|
||||
MACRO(KDE3_ADD_KCFG_FILES _sources)
|
||||
FOREACH (_current_FILE ${ARGN})
|
||||
|
||||
GET_FILENAME_COMPONENT(_tmp_FILE ${_current_FILE} ABSOLUTE)
|
||||
|
||||
GET_FILENAME_COMPONENT(_basename ${_tmp_FILE} NAME_WE)
|
||||
|
||||
FILE(READ ${_tmp_FILE} _contents)
|
||||
STRING(REGEX REPLACE "^(.*\n)?File=([^\n]+)\n.*$" "\\2" _kcfg_FILE "${_contents}")
|
||||
|
||||
SET(_src_FILE ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp)
|
||||
SET(_header_FILE ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h)
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${_src_FILE}
|
||||
COMMAND ${KDE3_KCFGC_EXECUTABLE}
|
||||
ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${_kcfg_FILE} ${_tmp_FILE}
|
||||
DEPENDS ${_tmp_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/${_kcfg_FILE} )
|
||||
|
||||
SET(${_sources} ${${_sources}} ${_src_FILE})
|
||||
|
||||
ENDFOREACH (_current_FILE)
|
||||
|
||||
ENDMACRO(KDE3_ADD_KCFG_FILES)
|
||||
|
||||
|
||||
#create the moc files and add them to the list of sources
|
||||
#usage: KDE_ADD_MOC_FILES(foo_SRCS ${moc_headers})
|
||||
MACRO(KDE3_ADD_MOC_FILES _sources)
|
||||
FOREACH (_current_FILE ${ARGN})
|
||||
|
||||
GET_FILENAME_COMPONENT(_tmp_FILE ${_current_FILE} ABSOLUTE)
|
||||
|
||||
GET_FILENAME_COMPONENT(_basename ${_tmp_FILE} NAME_WE)
|
||||
SET(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.moc.cpp)
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${_moc}
|
||||
COMMAND ${QT_MOC_EXECUTABLE}
|
||||
ARGS ${_tmp_FILE} -o ${_moc}
|
||||
DEPENDS ${_tmp_FILE}
|
||||
)
|
||||
|
||||
SET(${_sources} ${${_sources}} ${_moc})
|
||||
|
||||
ENDFOREACH (_current_FILE)
|
||||
ENDMACRO(KDE3_ADD_MOC_FILES)
|
||||
|
||||
|
||||
GET_FILENAME_COMPONENT( KDE3_MODULE_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
|
||||
|
||||
#create the implementation files from the ui files and add them to the list of sources
|
||||
#usage: KDE_ADD_UI_FILES(foo_SRCS ${ui_files})
|
||||
MACRO(KDE3_ADD_UI_FILES _sources )
|
||||
FOREACH (_current_FILE ${ARGN})
|
||||
|
||||
GET_FILENAME_COMPONENT(_tmp_FILE ${_current_FILE} ABSOLUTE)
|
||||
|
||||
GET_FILENAME_COMPONENT(_basename ${_tmp_FILE} NAME_WE)
|
||||
SET(_header ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h)
|
||||
SET(_src ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp)
|
||||
SET(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.moc.cpp)
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${_header}
|
||||
COMMAND ${QT_UIC_EXECUTABLE}
|
||||
ARGS -nounload -o ${_header} ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE}
|
||||
DEPENDS ${_tmp_FILE}
|
||||
)
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${_src}
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
ARGS
|
||||
-DKDE_UIC_FILE:STRING=${_tmp_FILE}
|
||||
-DKDE_UIC_CPP_FILE:STRING=${_src}
|
||||
-DKDE_UIC_H_FILE:STRING=${_header}
|
||||
-P ${KDE3_MODULE_DIR}/kde3uic.cmake
|
||||
DEPENDS ${_header}
|
||||
)
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${_moc}
|
||||
COMMAND ${QT_MOC_EXECUTABLE}
|
||||
ARGS ${_header} -o ${_moc}
|
||||
DEPENDS ${_header}
|
||||
)
|
||||
|
||||
SET(${_sources} ${${_sources}} ${_src} ${_moc} )
|
||||
|
||||
ENDFOREACH (_current_FILE)
|
||||
ENDMACRO(KDE3_ADD_UI_FILES)
|
||||
|
||||
|
||||
MACRO(KDE3_AUTOMOC)
|
||||
SET(_matching_FILES )
|
||||
FOREACH (_current_FILE ${ARGN})
|
||||
|
||||
GET_FILENAME_COMPONENT(_abs_FILE ${_current_FILE} ABSOLUTE)
|
||||
|
||||
# if "SKIP_AUTOMOC" is set to true, we will not handle this file here.
|
||||
# here. this is required to make bouic work correctly:
|
||||
# we need to add generated .cpp files to the sources (to compile them),
|
||||
# but we cannot let automoc handle them, as the .cpp files don't exist yet when
|
||||
# cmake is run for the very first time on them -> however the .cpp files might
|
||||
# exist at a later run. at that time we need to skip them, so that we don't add two
|
||||
# different rules for the same moc file
|
||||
GET_SOURCE_FILE_PROPERTY(_skip ${_abs_FILE} SKIP_AUTOMOC)
|
||||
|
||||
IF (EXISTS ${_abs_FILE} AND NOT _skip)
|
||||
|
||||
FILE(READ ${_abs_FILE} _contents)
|
||||
|
||||
GET_FILENAME_COMPONENT(_abs_PATH ${_abs_FILE} PATH)
|
||||
|
||||
STRING(REGEX MATCHALL "#include +[^ ]+\\.moc[\">]" _match "${_contents}")
|
||||
IF(_match)
|
||||
FOREACH (_current_MOC_INC ${_match})
|
||||
STRING(REGEX MATCH "[^ <\"]+\\.moc" _current_MOC "${_current_MOC_INC}")
|
||||
|
||||
GET_FILENAME_COMPONENT(_basename ${_current_MOC} NAME_WE)
|
||||
# SET(_header ${CMAKE_CURRENT_SOURCE_DIR}/${_basename}.h)
|
||||
SET(_header ${_abs_PATH}/${_basename}.h)
|
||||
SET(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_current_MOC})
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${_moc}
|
||||
COMMAND ${QT_MOC_EXECUTABLE}
|
||||
ARGS ${_header} -o ${_moc}
|
||||
DEPENDS ${_header}
|
||||
)
|
||||
|
||||
MACRO_ADD_FILE_DEPENDENCIES(${_abs_FILE} ${_moc})
|
||||
|
||||
ENDFOREACH (_current_MOC_INC)
|
||||
ENDIF(_match)
|
||||
|
||||
ENDIF (EXISTS ${_abs_FILE} AND NOT _skip)
|
||||
ENDFOREACH (_current_FILE)
|
||||
ENDMACRO(KDE3_AUTOMOC)
|
||||
|
||||
|
||||
MACRO(KDE3_INSTALL_ICONS _theme)
|
||||
ADD_CUSTOM_TARGET(install_icons )
|
||||
SET_TARGET_PROPERTIES(install_icons PROPERTIES POST_INSTALL_SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake )
|
||||
FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake "# icon installations rules\n")
|
||||
FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake "SET(CMAKE_BACKWARDS_COMPATIBILITY \"2.2\") \n")
|
||||
|
||||
FILE(GLOB _icons *.png)
|
||||
FOREACH(_current_ICON ${_icons} )
|
||||
STRING(REGEX REPLACE "^.*/[a-zA-Z]+([0-9]+)\\-([a-z]+)\\-(.+\\.png)$" "\\1" _size "${_current_ICON}")
|
||||
STRING(REGEX REPLACE "^.*/[a-zA-Z]+([0-9]+)\\-([a-z]+)\\-(.+\\.png)$" "\\2" _group "${_current_ICON}")
|
||||
STRING(REGEX REPLACE "^.*/[a-zA-Z]+([0-9]+)\\-([a-z]+)\\-(.+\\.png)$" "\\3" _name "${_current_ICON}")
|
||||
|
||||
SET(_icon_GROUP "actions")
|
||||
|
||||
IF(${_group} STREQUAL "mime")
|
||||
SET(_icon_GROUP "mimetypes")
|
||||
ENDIF(${_group} STREQUAL "mime")
|
||||
|
||||
IF(${_group} STREQUAL "filesys")
|
||||
SET(_icon_GROUP "filesystems")
|
||||
ENDIF(${_group} STREQUAL "filesys")
|
||||
|
||||
IF(${_group} STREQUAL "device")
|
||||
SET(_icon_GROUP "devices")
|
||||
ENDIF(${_group} STREQUAL "device")
|
||||
|
||||
IF(${_group} STREQUAL "app")
|
||||
SET(_icon_GROUP "apps")
|
||||
ENDIF(${_group} STREQUAL "app")
|
||||
|
||||
IF(${_group} STREQUAL "action")
|
||||
SET(_icon_GROUP "actions")
|
||||
ENDIF(${_group} STREQUAL "action")
|
||||
|
||||
# message(STATUS "icon: ${_current_ICON} size: ${_size} group: ${_group} name: ${_name}" )
|
||||
SET(_ICON_INSTALL_NAME ${CMAKE_INSTALL_PREFIX}/share/icons/${_theme}/${_size}x${_size}/${_icon_GROUP}/${_name})
|
||||
FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake "message(STATUS \"Installing ${_ICON_INSTALL_NAME}\") \n")
|
||||
FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake "CONFIGURE_FILE( ${_current_ICON} ${_ICON_INSTALL_NAME} COPYONLY) \n")
|
||||
|
||||
ENDFOREACH (_current_ICON)
|
||||
ENDMACRO(KDE3_INSTALL_ICONS)
|
||||
|
||||
|
||||
MACRO(KDE3_INSTALL_LIBTOOL_FILE _target)
|
||||
GET_TARGET_PROPERTY(_target_location ${_target} LOCATION)
|
||||
|
||||
GET_FILENAME_COMPONENT(_laname ${_target_location} NAME_WE)
|
||||
GET_FILENAME_COMPONENT(_soname ${_target_location} NAME)
|
||||
SET(_laname ${CMAKE_CURRENT_BINARY_DIR}/${_laname}.la)
|
||||
|
||||
FILE(WRITE ${_laname} "# ${_laname} - a libtool library file, generated by cmake \n")
|
||||
FILE(APPEND ${_laname} "# The name that we can dlopen(3).\n")
|
||||
FILE(APPEND ${_laname} "dlname='${_soname}'\n")
|
||||
FILE(APPEND ${_laname} "# Names of this library\n")
|
||||
FILE(APPEND ${_laname} "library_names='${_soname} ${_soname} ${_soname}'\n")
|
||||
FILE(APPEND ${_laname} "# The name of the static archive\n")
|
||||
FILE(APPEND ${_laname} "old_library=''\n")
|
||||
FILE(APPEND ${_laname} "# Libraries that this one depends upon.\n")
|
||||
FILE(APPEND ${_laname} "dependency_libs=''\n")
|
||||
# FILE(APPEND ${_laname} "dependency_libs='${${_target}_LIB_DEPENDS}'\n")
|
||||
FILE(APPEND ${_laname} "# Version information.\ncurrent=0\nage=0\nrevision=0\n")
|
||||
FILE(APPEND ${_laname} "# Is this an already installed library?\ninstalled=yes\n")
|
||||
FILE(APPEND ${_laname} "# Should we warn about portability when linking against -modules?\nshouldnotlink=yes\n")
|
||||
FILE(APPEND ${_laname} "# Files to dlopen/dlpreopen\ndlopen=''\ndlpreopen=''\n")
|
||||
FILE(APPEND ${_laname} "# Directory that this library needs to be installed in:\n")
|
||||
FILE(APPEND ${_laname} "libdir='${CMAKE_INSTALL_PREFIX}/lib/kde3'\n")
|
||||
|
||||
INSTALL_FILES(/lib/kde3 FILES ${_laname})
|
||||
ENDMACRO(KDE3_INSTALL_LIBTOOL_FILE)
|
||||
|
||||
|
||||
MACRO(KDE3_CREATE_FINAL_FILE _filename)
|
||||
FILE(WRITE ${_filename} "//autogenerated file\n")
|
||||
FOREACH (_current_FILE ${ARGN})
|
||||
FILE(APPEND ${_filename} "#include \"${_current_FILE}\"\n")
|
||||
ENDFOREACH (_current_FILE)
|
||||
|
||||
ENDMACRO(KDE3_CREATE_FINAL_FILE)
|
||||
|
||||
|
||||
OPTION(KDE3_ENABLE_FINAL "Enable final all-in-one compilation")
|
||||
OPTION(KDE3_BUILD_TESTS "Build the tests")
|
||||
|
||||
|
||||
MACRO(KDE3_ADD_KPART _target_NAME _with_PREFIX)
|
||||
#is the first argument is "WITH_PREFIX" then keep the standard "lib" prefix, otherwise SET the prefix empty
|
||||
IF (${_with_PREFIX} STREQUAL "WITH_PREFIX")
|
||||
SET(_first_SRC)
|
||||
ELSE (${_with_PREFIX} STREQUAL "WITH_PREFIX")
|
||||
SET(_first_SRC ${_with_PREFIX})
|
||||
ENDIF (${_with_PREFIX} STREQUAL "WITH_PREFIX")
|
||||
|
||||
IF (KDE3_ENABLE_FINAL)
|
||||
KDE3_CREATE_FINAL_FILE(${_target_NAME}_final.cpp ${_first_SRC} ${ARGN})
|
||||
ADD_LIBRARY(${_target_NAME} MODULE ${_target_NAME}_final.cpp)
|
||||
ELSE (KDE3_ENABLE_FINAL)
|
||||
ADD_LIBRARY(${_target_NAME} MODULE ${_first_SRC} ${ARGN})
|
||||
ENDIF (KDE3_ENABLE_FINAL)
|
||||
|
||||
IF(_first_SRC)
|
||||
SET_TARGET_PROPERTIES(${_target_NAME} PROPERTIES PREFIX "")
|
||||
ENDIF(_first_SRC)
|
||||
|
||||
KDE3_INSTALL_LIBTOOL_FILE(${_target_NAME})
|
||||
|
||||
ENDMACRO(KDE3_ADD_KPART)
|
||||
|
||||
|
||||
MACRO(KDE3_ADD_KDEINIT_EXECUTABLE _target_NAME )
|
||||
|
||||
IF (KDE3_ENABLE_FINAL)
|
||||
KDE3_CREATE_FINAL_FILE(${_target_NAME}_final.cpp ${ARGN})
|
||||
ADD_LIBRARY(kdeinit_${_target_NAME} SHARED ${_target_NAME}_final.cpp)
|
||||
ELSE (KDE3_ENABLE_FINAL)
|
||||
ADD_LIBRARY(kdeinit_${_target_NAME} SHARED ${ARGN} )
|
||||
ENDIF (KDE3_ENABLE_FINAL)
|
||||
|
||||
CONFIGURE_FILE(${KDE3_MODULE_DIR}/kde3init_dummy.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_dummy.cpp)
|
||||
|
||||
ADD_EXECUTABLE( ${_target_NAME} ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_dummy.cpp )
|
||||
TARGET_LINK_LIBRARIES( ${_target_NAME} kdeinit_${_target_NAME} )
|
||||
|
||||
ENDMACRO(KDE3_ADD_KDEINIT_EXECUTABLE)
|
||||
|
||||
|
||||
MACRO(KDE3_ADD_EXECUTABLE _target_NAME )
|
||||
|
||||
IF (KDE3_ENABLE_FINAL)
|
||||
KDE3_CREATE_FINAL_FILE(${_target_NAME}_final.cpp ${ARGN})
|
||||
ADD_EXECUTABLE(${_target_NAME} ${_target_NAME}_final.cpp)
|
||||
ELSE (KDE3_ENABLE_FINAL)
|
||||
ADD_EXECUTABLE(${_target_NAME} ${ARGN} )
|
||||
ENDIF (KDE3_ENABLE_FINAL)
|
||||
|
||||
ENDMACRO(KDE3_ADD_EXECUTABLE)
|
||||
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
|
||||
/* used by KDE3Macros.cmake */
|
||||
|
||||
extern "C" int kdemain(int argc, char* argv[]);
|
||||
extern "C" int kdeinitmain(int argc, char* argv[]) { return kdemain(argc,argv); }
|
||||
int main(int argc, char* argv[]) { return kdemain(argc,argv); }
|
|
@ -0,0 +1,20 @@
|
|||
|
||||
|
||||
# used internally by KDE3Macros.cmake
|
||||
# neundorf@kde.org
|
||||
|
||||
|
||||
EXECUTE_PROCESS(COMMAND uic
|
||||
-nounload -tr tr2i18n
|
||||
-impl ${KDE_UIC_H_FILE}
|
||||
${KDE_UIC_FILE}
|
||||
OUTPUT_VARIABLE _uic_CONTENTS
|
||||
ERROR_QUIET
|
||||
)
|
||||
|
||||
STRING(REGEX REPLACE "tr2i18n\\(\"\"\\)" "QString::null" _uic_CONTENTS "${_uic_CONTENTS}" )
|
||||
STRING(REGEX REPLACE "tr2i18n\\(\"\", \"\"\\)" "QString::null" _uic_CONTENTS "${_uic_CONTENTS}" )
|
||||
|
||||
FILE(WRITE ${KDE_UIC_CPP_FILE} "#include <kdialog.h>\n#include <klocale.h>\n\n")
|
||||
FILE(APPEND ${KDE_UIC_CPP_FILE} "${_uic_CONTENTS}")
|
||||
|
Loading…
Reference in New Issue