summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichele Calgaro <[email protected]>2024-03-05 19:43:11 +0900
committerMichele Calgaro <[email protected]>2024-03-08 10:42:37 +0900
commit41f6d5afec703320378e38c0bcefb064d42337e4 (patch)
treebb46f79e50b5e15efc32f3456052c9b2873531bf
parentb24092d4d2cdfef0145f580a6d66be9b0e06db4c (diff)
downloadgwenview-41f6d5afec703320378e38c0bcefb064d42337e4.tar.gz
gwenview-41f6d5afec703320378e38c0bcefb064d42337e4.zip
Conversion to cmake building system
Signed-off-by: Michele Calgaro <[email protected]> (cherry picked from commit bc9bda10c93ebfb9862270576b445d1c2798d66d)
-rw-r--r--CMakeLists.txt86
-rw-r--r--ConfigureChecks.cmake134
-rw-r--r--config.h.cmake26
-rw-r--r--icons/CMakeLists.txt4
-rw-r--r--icons/action/CMakeLists.txt1
-rw-r--r--icons/app/CMakeLists.txt1
-rw-r--r--icons/cursor/CMakeLists.txt4
-rw-r--r--icons/thumbnail/CMakeLists.txt4
-rw-r--r--src/CMakeLists.txt24
-rw-r--r--src/app/CMakeLists.txt56
-rw-r--r--src/desktopfiles/CMakeLists.txt11
-rw-r--r--src/gvcore/CMakeLists.txt90
-rw-r--r--src/gvdirpart/CMakeLists.txt31
-rw-r--r--src/gvimagepart/CMakeLists.txt26
-rw-r--r--src/imageutils/CMakeLists.txt34
-rw-r--r--src/imageutils/jpegcontent.cpp2
-rw-r--r--src/tools/CMakeLists.txt6
-rw-r--r--src/tsthread/CMakeLists.txt11
-rw-r--r--src/updates/CMakeLists.txt11
19 files changed, 560 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..e216c60
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,86 @@
+############################################
+# #
+# Improvements and feedbacks are welcome #
+# #
+# This file is released under GPL >= 3 #
+# #
+############################################
+
+
+cmake_minimum_required( VERSION 3.5 )
+
+
+#### general package setup
+
+project( gwenview )
+
+
+#### include essential cmake modules
+
+include( FindPkgConfig )
+include( CheckSymbolExists )
+include( CheckIncludeFile )
+include( CheckLibraryExists )
+include( CheckCSourceCompiles )
+include( CheckCXXSourceCompiles )
+enable_testing()
+
+
+#### include our cmake modules
+
+include( TDEMacros )
+
+
+##### set version number ########################
+
+tde_set_project_version( )
+
+
+##### setup install paths
+
+include( TDESetupPaths )
+tde_setup_paths( )
+
+
+##### optional stuff
+
+option( WITH_ALL_OPTIONS "Enable all optional support" OFF )
+option( WITH_KIPI "Enable kipi support" ${WITH_ALL_OPTIONS} )
+option( WITH_MNG "Enable mng support" ${WITH_ALL_OPTIONS} )
+option( WITH_XCURSOR "Enable xcursor support" ${WITH_ALL_OPTIONS} )
+
+option( WITH_GCC_VISIBILITY "Enable fvisibility and fvisibility-inlines-hidden" ${WITH_ALL_OPTIONS} )
+
+
+##### user requested modules
+
+option( BUILD_ALL "Build all" ON )
+option( BUILD_DOC "Build documentation" ${BUILD_ALL} )
+
+
+##### configure checks
+
+include( ConfigureChecks.cmake )
+
+
+###### global compiler settings
+
+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( icons )
+add_subdirectory( src )
+
+
+##### other data ################################
+
+tde_conditional_add_project_docs( BUILD_DOC )
+
+
+##### 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..d587bf1
--- /dev/null
+++ b/ConfigureChecks.cmake
@@ -0,0 +1,134 @@
+###########################################
+# #
+# 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( )
+
+set( ENV{PKG_CONFIG_PATH} "${PKG_CONFIG_PATH}:$ENV{PKG_CONFIG_PATH}:${LIB_INSTALL_DIR}/pkgconfig" )
+
+
+##### check for gcc visibility support
+
+if( WITH_GCC_VISIBILITY )
+ tde_setup_gcc_visibility( )
+endif( WITH_GCC_VISIBILITY )
+
+
+##### check for libexiv2
+
+pkg_search_module( EXIV2 exiv2 )
+if( NOT EXIV2_FOUND )
+ tde_message_fatal( "exiv2 is required, but was not found on your system" )
+endif( NOT EXIV2_FOUND )
+
+check_include_file_cxx( "exiv2/exiv2.hpp" HAVE_EXIV2_EXIV2_HPP )
+
+
+##### check for libjpeg
+
+find_package( JPEG )
+if( NOT JPEG_FOUND )
+ tde_message_fatal( "jpeg library is required, but was not found on your system" )
+endif()
+
+
+##### checks for libkipi
+
+if( WITH_KIPI )
+ pkg_search_module( LIBKIPI libkipi )
+ if( NOT LIBKIPI_FOUND )
+ tde_message_fatal( "libkipi was requested but not found on your system." )
+ endif( )
+ set( GV_HAVE_KIPI 1 )
+endif( )
+
+
+##### checks for libmng
+
+if( WITH_MNG )
+ find_file( HAVE_LIBMNG_H "libmng.h" )
+ if( NOT HAVE_LIBMNG_H )
+ tde_message_fatal( "libmng was requested but not found on your system." )
+ endif( )
+ set( MNG_LIBRARY mng )
+ set( HAVE_LIBMNG 1 )
+endif( )
+
+
+##### check for libpng
+
+find_package( PNG )
+if( NOT PNG_FOUND )
+ tde_message_fatal( "png library is required, but was not found on your system" )
+endif()
+
+
+##### check for libxcursor
+if( WITH_XCURSOR )
+ pkg_search_module( XCURSOR xcursor )
+ if( XCURSOR_FOUND )
+ set( GV_HAVE_XCURSOR 1 )
+ else( )
+ tde_message_fatal( "xcursor library is required, but was not found on your system" )
+ endif( )
+endif()
+
+
+##### check for lround function
+
+tde_save_and_set( CMAKE_REQUIRED_LIBRARIES "m" )
+check_symbol_exists ( lround "math.h" HAVE_LROUND )
+tde_restore( CMAKE_REQUIRED_LIBRARIES )
+if( NOT HAVE_LROUND )
+ set( HAVE_LROUND 0 )
+endif( NOT HAVE_LROUND )
+
+
+##### check architecture
+
+if( NOT CMAKE_ARCHITECTURE )
+ execute_process(
+ COMMAND ${CMAKE_C_COMPILER} -dumpmachine
+ OUTPUT_VARIABLE CMAKE_ARCHITECTURE
+ ERROR_VARIABLE CMAKE_ARCHITECTURE
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ ERROR_STRIP_TRAILING_WHITESPACE )
+ set( CMAKE_ARCHITECTURE "${CMAKE_ARCHITECTURE}" CACHE INTERNAL "" FORCE )
+ message( STATUS "Detected ${CMAKE_ARCHITECTURE} target architecture" )
+endif( )
+
+
+##### check specific architecture dependant support
+
+if( ${CMAKE_ARCHITECTURE} MATCHES "i.86" )
+
+ # MMX support
+ message( STATUS "Performing MMX support test" )
+ check_c_source_compiles( "
+ int main() {
+ #if defined(__GNUC__)
+ __asm__(\"pxor %mm0, %mm0\");
+ #else
+ #error Not gcc on x86/x86_64
+ #endif
+ return 0;
+ }"
+ HAVE_X86_MMX
+ )
+
+endif( )
+
diff --git a/config.h.cmake b/config.h.cmake
new file mode 100644
index 0000000..53f9a48
--- /dev/null
+++ b/config.h.cmake
@@ -0,0 +1,26 @@
+#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 if you have exiv2/exiv2.hpp header
+#cmakedefine HAVE_EXIV2_EXIV2_HPP 1
+
+// Defined if you have libkipi install
+#cmakedefine GV_HAVE_KIPI 1
+
+// Defined if you have libmn install
+#cmakedefine HAVE_LIBMNG 1
+
+// Defined if you have libxcurso install
+#cmakedefine GV_HAVE_XCURSOR 1
+
+// Defined if you have lround function
+#cmakedefine HAVE_LROUND 1
+
+// Defined if you have MMX support
+#cmakedefine HAVE_X86_MMX 1
diff --git a/icons/CMakeLists.txt b/icons/CMakeLists.txt
new file mode 100644
index 0000000..06285c8
--- /dev/null
+++ b/icons/CMakeLists.txt
@@ -0,0 +1,4 @@
+add_subdirectory( action )
+add_subdirectory( app )
+add_subdirectory( cursor )
+add_subdirectory( thumbnail )
diff --git a/icons/action/CMakeLists.txt b/icons/action/CMakeLists.txt
new file mode 100644
index 0000000..529659a
--- /dev/null
+++ b/icons/action/CMakeLists.txt
@@ -0,0 +1 @@
+tde_install_icons( DESTINATION ${DATA_INSTALL_DIR}/gwenview/icons )
diff --git a/icons/app/CMakeLists.txt b/icons/app/CMakeLists.txt
new file mode 100644
index 0000000..63f765b
--- /dev/null
+++ b/icons/app/CMakeLists.txt
@@ -0,0 +1 @@
+tde_install_icons( )
diff --git a/icons/cursor/CMakeLists.txt b/icons/cursor/CMakeLists.txt
new file mode 100644
index 0000000..033bb12
--- /dev/null
+++ b/icons/cursor/CMakeLists.txt
@@ -0,0 +1,4 @@
+install(
+ FILES zoom.png
+ DESTINATION ${DATA_INSTALL_DIR}/gwenview/cursors
+)
diff --git a/icons/thumbnail/CMakeLists.txt b/icons/thumbnail/CMakeLists.txt
new file mode 100644
index 0000000..0d6754d
--- /dev/null
+++ b/icons/thumbnail/CMakeLists.txt
@@ -0,0 +1,4 @@
+install(
+ FILES wait.png
+ DESTINATION ${DATA_INSTALL_DIR}/gwenview/thumbnail
+)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 0000000..3f4dd63
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,24 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_BINARY_DIR}
+ ${TQT_INCLUDE_DIRS}
+ ${TDE_INCLUDE_DIR}
+)
+
+link_directories(
+ ${TQT_LIBRARY_DIRS}
+ ${TDE_LIB_DIR}
+)
+
+
+##### subfolders
+
+add_subdirectory( app )
+add_subdirectory( desktopfiles )
+add_subdirectory( gvcore )
+add_subdirectory( gvdirpart )
+add_subdirectory( gvimagepart )
+add_subdirectory( imageutils )
+add_subdirectory( tools )
+add_subdirectory( tsthread )
+add_subdirectory( updates )
diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt
new file mode 100644
index 0000000..4fc06d9
--- /dev/null
+++ b/src/app/CMakeLists.txt
@@ -0,0 +1,56 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}
+)
+
+
+##### libgwenshared (static)
+
+tde_add_library( gwenshared STATIC_PIC AUTOMOC
+ SOURCES vtabwidget.cpp
+)
+
+
+##### gwenview (shared)
+
+set( gwenview_SRCS
+ bookmarkowner.cpp
+ bookmarkviewcontroller.cpp
+ bookmarkdialogbase.ui
+ bookmarkdialog.cpp
+ configfileoperationspage.ui
+ configfullscreenpage.ui
+ configimagelistpage.ui
+ configimageviewpage.ui
+ configmiscpage.ui
+ configslideshowpage.ui
+ kipiinterface.cpp
+ mainwindow.cpp
+ metaedit.cpp
+ treeview.cpp
+ dirviewcontroller.cpp
+ configdialog.cpp
+ history.cpp
+ main.cpp
+)
+
+tde_add_tdeinit_executable( gwenview AUTOMOC
+ SOURCES ${gwenview_SRCS}
+ LINK
+ gwenshared-static gwenviewcore-shared
+ tdeutils-shared ${LIBKIPI_LIBRARIES}
+ DESTINATION ${LIB_INSTALL_DIR}/trinity
+)
+
+
+##### other files
+
+install(
+ FILES gwenviewui.rc
+ DESTINATION ${DATA_INSTALL_DIR}/gwenview
+)
+
+install(
+ FILES gwenview.xpm
+ DESTINATION ${SHARE_INSTALL_PREFIX}/pixmaps
+)
diff --git a/src/desktopfiles/CMakeLists.txt b/src/desktopfiles/CMakeLists.txt
new file mode 100644
index 0000000..5352cbd
--- /dev/null
+++ b/src/desktopfiles/CMakeLists.txt
@@ -0,0 +1,11 @@
+##### desktop files
+
+tde_create_translated_desktop(
+ SOURCE gwenview.desktop
+ DESTINATION ${XDG_APPS_INSTALL_DIR}
+)
+
+tde_create_translated_desktop(
+ SOURCE konqgwenview.desktop
+ DESTINATION ${DATA_INSTALL_DIR}/konqueror/servicemenus
+)
diff --git a/src/gvcore/CMakeLists.txt b/src/gvcore/CMakeLists.txt
new file mode 100644
index 0000000..079d86b
--- /dev/null
+++ b/src/gvcore/CMakeLists.txt
@@ -0,0 +1,90 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}
+)
+
+
+##### gwenviewcore (shared)
+
+set( gwenviewcore_SRCS
+ pngformattype.cpp
+ printdialog.cpp
+ printdialogpagebase.ui
+ thumbnailloadjob.cpp
+ imageview.cpp
+ imageviewcontroller.cpp
+ document.cpp
+ externaltoolmanager.cpp
+ externaltoolcontext.cpp
+ externaltoolaction.cpp
+ externaltooldialogbase.ui
+ externaltooldialog.cpp
+ fileviewcontroller.cpp
+ filethumbnailview.cpp
+ fileoperation.cpp
+ fileopobject.cpp
+ filethumbnailviewitem.cpp
+ filterbar.ui
+ qxcfi.cpp
+ archive.cpp
+ slideshow.cpp
+ filedetailview.cpp
+ filedetailviewitem.cpp
+ imagesavedialog.cpp
+ jpegformattype.cpp
+ mngformattype.cpp
+ xpm.cpp
+ documentimpl.cpp
+ documentloadingimpl.cpp
+ documentloadedimpl.cpp
+ documentjpegloadedimpl.cpp
+ documentanimatedloadedimpl.cpp
+ documentotherloadedimpl.cpp
+ busylevelmanager.cpp
+ cache.cpp
+ threadgate.cpp
+ imageviewtools.cpp
+ fullscreenbar.cpp
+ imageloader.cpp
+ cursortracker.cpp
+ captionformatter.cpp
+ thumbnaildetailsdialogbase.ui
+ thumbnaildetailsdialog.cpp
+ xcursor.cpp
+ mimetypeutils.cpp
+ bcgdialog.cpp
+ bcgdialogbase.ui
+ timeutils.cpp
+ clicklineedit.cpp
+ inputdialog.cpp
+ deletedialog.cpp
+ deletedialogbase.ui
+ miscconfig.kcfgc
+ slideshowconfig.kcfgc
+ fileoperationconfig.kcfgc
+ fullscreenconfig.kcfgc
+ imageviewconfig.kcfgc
+ fileviewconfig.kcfgc
+)
+
+tde_add_library( gwenviewcore SHARED AUTOMOC
+ SOURCES ${gwenviewcore_SRCS}
+ LINK
+ tsthread-static gvimageutils-static
+ tdecore-shared tdeio-shared tdemediaplayer-shared
+ tdeparts-shared tdeprint-shared tdeui-shared
+ ${EXIV2_LIBRARIES} ${JPEG_LIBRARIES} ${MNG_LIBRARY}
+ ${PNG_LIBRARIES} ${XCURSOR_LIBRARIES}
+ VERSION 1.0.0
+ DESTINATION ${LIB_INSTALL_DIR}
+)
+
+
+##### other files
+
+install(
+ FILES
+ miscconfig.kcfg slideshowconfig.kcfg fileoperationconfig.kcfg
+ fullscreenconfig.kcfg imageviewconfig.kcfg fileviewconfig.kcfg
+ DESTINATION ${KCFG_INSTALL_DIR}
+)
diff --git a/src/gvdirpart/CMakeLists.txt b/src/gvdirpart/CMakeLists.txt
new file mode 100644
index 0000000..9837c29
--- /dev/null
+++ b/src/gvdirpart/CMakeLists.txt
@@ -0,0 +1,31 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}
+)
+
+
+##### gvdirpart (shared)
+
+tde_add_kpart( libgvdirpart AUTOMOC
+ SOURCES gvdirpart.cpp gvdirpartconfig.kcfgc
+ LINK tdeparts-shared gwenviewcore-shared
+ DESTINATION ${LIB_INSTALL_DIR}/trinity
+)
+
+
+##### other files
+
+tde_create_translated_desktop(
+ SOURCE gvdirpart.desktop
+ DESTINATION ${SERVICES_INSTALL_DIR}
+)
+
+install(
+ FILES gvdirpart.rc
+ DESTINATION ${DATA_INSTALL_DIR}/gvdirpart
+)
+
+install(
+ FILES gvdirpartconfig.kcfg
+ DESTINATION ${KCFG_INSTALL_DIR}
+)
diff --git a/src/gvimagepart/CMakeLists.txt b/src/gvimagepart/CMakeLists.txt
new file mode 100644
index 0000000..0c962fc
--- /dev/null
+++ b/src/gvimagepart/CMakeLists.txt
@@ -0,0 +1,26 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}
+)
+
+
+##### gvimagepart
+
+tde_add_kpart( libgvimagepart AUTOMOC
+ SOURCES gvimagepart.cpp
+ LINK tdeparts-shared gwenviewcore-shared
+ DESTINATION ${LIB_INSTALL_DIR}/trinity
+)
+
+
+##### other files
+
+tde_create_translated_desktop(
+ SOURCE gvimagepart.desktop
+ DESTINATION ${SERVICES_INSTALL_DIR}
+)
+
+install(
+ FILES gvimagepart.rc gvimagepartpopup.rc
+ DESTINATION ${DATA_INSTALL_DIR}/gvimagepart
+)
diff --git a/src/imageutils/CMakeLists.txt b/src/imageutils/CMakeLists.txt
new file mode 100644
index 0000000..9681a4a
--- /dev/null
+++ b/src/imageutils/CMakeLists.txt
@@ -0,0 +1,34 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${EXIV2_INCLUDE_DIRS}
+ ${JPEG_INCLUDE_DIR}
+)
+
+
+##### gvimageutils (static)
+
+set( gvimageutils_SRCS imageutils.cpp jpegcontent.cpp scale.cpp transupp.c croppedqimage.cpp )
+
+if( HAVE_X86_MMX )
+ list( gvimageutils_SRCS APPEND _SRCS asm_scale.S )
+
+ # Force to use C compiler for asm_scale.S instead of ASM
+ # because it contains mixed code - ASM with C definitions
+ set_source_files_properties( asm_scale.S PROPERTIES LANGUAGE C )
+
+ add_compile_options( -DHAVE_X86_MMX )
+endif( )
+
+tde_add_library( gvimageutils STATIC_PIC AUTOMOC
+ SOURCES ${gvimageutils_SRCS}
+ LINK tdecore-shared tdeio-shared ${EXIV2_LIBRARIES} ${JPEG_LIBRARIES}
+)
+
+
+##### testjpegcontent (executable)
+
+tde_add_check_executable( testjpegcontent AUTOMOC
+ SOURCES testjpegcontent.cpp
+ LINK gvimageutils-static
+)
diff --git a/src/imageutils/jpegcontent.cpp b/src/imageutils/jpegcontent.cpp
index d94a32e..55bc384 100644
--- a/src/imageutils/jpegcontent.cpp
+++ b/src/imageutils/jpegcontent.cpp
@@ -17,9 +17,7 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#if defined(HAVE_CONFIG_H)
#include "config.h"
-#endif
// System
#include <math.h>
diff --git a/src/tools/CMakeLists.txt b/src/tools/CMakeLists.txt
new file mode 100644
index 0000000..98ddfa8
--- /dev/null
+++ b/src/tools/CMakeLists.txt
@@ -0,0 +1,6 @@
+##### desktop files
+
+tde_create_translated_desktop(
+ SOURCE gimp.desktop kolourpaint.desktop konqueror.desktop tiledwallpaper.desktop wallpaper.desktop
+ DESTINATION ${DATA_INSTALL_DIR}/gwenview/tools
+)
diff --git a/src/tsthread/CMakeLists.txt b/src/tsthread/CMakeLists.txt
new file mode 100644
index 0000000..9d16a37
--- /dev/null
+++ b/src/tsthread/CMakeLists.txt
@@ -0,0 +1,11 @@
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}
+)
+
+
+##### tsthread (static)
+
+tde_add_library( tsthread STATIC_PIC AUTOMOC
+ SOURCES tsthread.cpp tswaitcondition.cpp
+)
diff --git a/src/updates/CMakeLists.txt b/src/updates/CMakeLists.txt
new file mode 100644
index 0000000..ba99a56
--- /dev/null
+++ b/src/updates/CMakeLists.txt
@@ -0,0 +1,11 @@
+##### update files
+
+install(
+ FILES gwenview_thumbnail_size.upd gwenview_1.4_osdformat.upd
+ DESTINATION ${DATA_INSTALL_DIR}/tdeconf_update
+)
+
+install(
+ PROGRAMS gwenview_thumbnail_size.sh gwenview_1.4_osdformat.sh
+ DESTINATION ${DATA_INSTALL_DIR}/tdeconf_update
+)