2022-06-10 22:58:35 +02:00
|
|
|
cmake_minimum_required(VERSION 3.12.0) # target_link_libraries with OBJECT libs
|
2021-02-18 22:25:36 +01:00
|
|
|
|
2022-03-20 13:16:04 +01:00
|
|
|
project(fastfetch
|
2022-08-12 16:01:52 +02:00
|
|
|
VERSION 1.6.2
|
2022-03-20 13:16:04 +01:00
|
|
|
LANGUAGES C
|
|
|
|
)
|
2021-02-18 22:25:36 +01:00
|
|
|
|
2022-06-08 16:25:14 +02:00
|
|
|
#####################
|
|
|
|
# Configure options #
|
|
|
|
#####################
|
2022-02-21 11:40:33 +05:00
|
|
|
|
2022-02-09 15:20:07 +01:00
|
|
|
OPTION(ENABLE_LIBPCI "Enable libpci" ON)
|
|
|
|
OPTION(ENABLE_VULKAN "Enable vulkan" ON)
|
|
|
|
OPTION(ENABLE_WAYLAND "Enable wayland-client" ON)
|
|
|
|
OPTION(ENABLE_XCB_RANDR "Enable xcb-randr" ON)
|
|
|
|
OPTION(ENABLE_XCB "Enable xcb" ON)
|
|
|
|
OPTION(ENABLE_XRANDR "Enable xrandr" ON)
|
|
|
|
OPTION(ENABLE_X11 "Enable x11" ON)
|
|
|
|
OPTION(ENABLE_GIO "Enable gio-2.0" ON)
|
|
|
|
OPTION(ENABLE_DCONF "Enable dconf" ON)
|
2022-02-13 23:51:13 +01:00
|
|
|
OPTION(ENABLE_DBUS "Enable dbus-1" ON)
|
2022-02-09 15:20:07 +01:00
|
|
|
OPTION(ENABLE_XFCONF "Enable libxfconf-0" ON)
|
2022-05-23 19:30:02 +02:00
|
|
|
OPTION(ENABLE_SQLITE3 "Enable sqlite3" ON)
|
2022-05-24 13:36:33 +02:00
|
|
|
OPTION(ENABLE_RPM "Enable rpm" ON)
|
2022-04-11 16:19:02 +02:00
|
|
|
OPTION(ENABLE_IMAGEMAGICK7 "Enable imagemagick 7" ON)
|
|
|
|
OPTION(ENABLE_IMAGEMAGICK6 "Enable imagemagick 6" ON)
|
2022-04-14 15:11:14 +02:00
|
|
|
OPTION(ENABLE_ZLIB "Enable zlib" ON)
|
2022-04-28 19:15:46 +02:00
|
|
|
OPTION(ENABLE_CHAFA "Enable chafa" ON)
|
2022-06-04 15:21:34 +02:00
|
|
|
OPTION(ENABLE_EGL "Enable egl" ON)
|
|
|
|
OPTION(ENABLE_GLX "Enable glx" ON)
|
2022-06-04 19:30:26 +02:00
|
|
|
OPTION(ENABLE_OSMESA "Enable osmesa" ON)
|
2022-06-05 00:18:40 +02:00
|
|
|
OPTION(ENABLE_OPENCL "Enable opencl" ON)
|
2022-03-25 11:57:58 +01:00
|
|
|
|
2022-06-08 16:25:14 +02:00
|
|
|
OPTION(BUILD_TESTS "Build tests" OFF) # Also create test executables
|
|
|
|
OPTION(SET_TWEAK "Add tweak to project version" ON) # This is set to off by github actions for release builds
|
|
|
|
|
|
|
|
#############################
|
|
|
|
# Compile time dependencies #
|
|
|
|
#############################
|
|
|
|
|
|
|
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
|
|
|
find_package(Threads REQUIRED)
|
|
|
|
|
|
|
|
find_package(PkgConfig REQUIRED)
|
|
|
|
|
|
|
|
####################
|
|
|
|
# Compiler options #
|
|
|
|
####################
|
|
|
|
|
2021-10-20 08:12:15 +00:00
|
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
|
|
set(CMAKE_BUILD_TYPE Release)
|
|
|
|
endif()
|
2021-03-07 20:05:00 +01:00
|
|
|
|
2022-06-08 15:52:55 +02:00
|
|
|
set(CMAKE_C_STANDARD 11)
|
2021-11-17 18:38:57 +01:00
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wconversion")
|
2021-10-25 13:29:39 +02:00
|
|
|
|
2022-06-08 16:25:14 +02:00
|
|
|
include(CheckIPOSupported)
|
|
|
|
check_ipo_supported(RESULT IPO_SUPPORTED)
|
|
|
|
if(IPO_SUPPORTED)
|
|
|
|
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
#######################
|
|
|
|
# Target FS structure #
|
|
|
|
#######################
|
|
|
|
|
2022-04-10 15:07:52 +02:00
|
|
|
if(NOT TARGET_DIR_ROOT)
|
2022-04-10 15:26:18 +02:00
|
|
|
if(NOT ANDROID)
|
|
|
|
set(TARGET_DIR_ROOT "")
|
|
|
|
else()
|
|
|
|
set(TARGET_DIR_ROOT "/data/data/com.termux/files/usr")
|
|
|
|
endif()
|
2022-04-10 15:07:52 +02:00
|
|
|
endif()
|
2022-04-10 15:26:18 +02:00
|
|
|
|
2022-04-10 15:07:52 +02:00
|
|
|
if(NOT TARGET_DIR_USR)
|
2022-04-10 15:26:18 +02:00
|
|
|
if(NOT ANDROID)
|
|
|
|
set(TARGET_DIR_USR "${TARGET_DIR_ROOT}/usr")
|
|
|
|
else()
|
|
|
|
set(TARGET_DIR_USR "${TARGET_DIR_ROOT}")
|
|
|
|
endif()
|
2022-04-10 15:07:52 +02:00
|
|
|
endif()
|
2022-04-10 15:26:18 +02:00
|
|
|
|
2022-04-10 15:07:52 +02:00
|
|
|
if(NOT TARGET_DIR_HOME)
|
2022-04-10 15:26:18 +02:00
|
|
|
if(NOT ANDROID)
|
|
|
|
set(TARGET_DIR_HOME "${TARGET_DIR_ROOT}/home")
|
|
|
|
else()
|
|
|
|
set(TARGET_DIR_HOME "/data/data/com.termux/files/home")
|
|
|
|
endif()
|
2022-04-10 15:07:52 +02:00
|
|
|
endif()
|
|
|
|
|
2022-06-08 16:25:14 +02:00
|
|
|
#################
|
|
|
|
# Tweak version #
|
|
|
|
#################
|
2021-10-22 21:53:29 +02:00
|
|
|
|
2022-04-10 15:07:52 +02:00
|
|
|
if (SET_TWEAK AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
|
|
|
|
execute_process(
|
|
|
|
COMMAND git describe --tags
|
|
|
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
|
|
|
OUTPUT_VARIABLE PROJECT_VERSION_TWEAK
|
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
|
|
)
|
|
|
|
string(REGEX MATCH "-[0-9]+" PROJECT_VERSION_TWEAK "${PROJECT_VERSION_TWEAK}")
|
|
|
|
endif()
|
|
|
|
|
2022-06-08 16:25:14 +02:00
|
|
|
#############
|
|
|
|
# Text data #
|
|
|
|
#############
|
|
|
|
|
|
|
|
function(fastfetch_load_text FILENAME OUTVAR)
|
|
|
|
file(READ "${FILENAME}" TEMP)
|
|
|
|
string(REPLACE "\n" "\\n" TEMP "${TEMP}")
|
|
|
|
string(REPLACE "\"" "\\\"" TEMP "${TEMP}")
|
|
|
|
string(REPLACE "$\\" "" TEMP "${TEMP}")
|
|
|
|
set("${OUTVAR}" "${TEMP}" PARENT_SCOPE)
|
|
|
|
endfunction(fastfetch_load_text)
|
|
|
|
|
2021-10-23 14:59:11 +02:00
|
|
|
fastfetch_load_text(src/data/structure.txt DATATEXT_STRUCTURE)
|
2022-07-21 14:37:13 +02:00
|
|
|
fastfetch_load_text(src/data/config_system.txt DATATEXT_CONFIG_SYSTEM)
|
|
|
|
fastfetch_load_text(src/data/config_user.txt DATATEXT_CONFIG_USER)
|
2021-10-22 21:53:29 +02:00
|
|
|
fastfetch_load_text(src/data/modules.txt DATATEXT_MODULES)
|
|
|
|
fastfetch_load_text(src/data/help.txt DATATEXT_HELP)
|
|
|
|
fastfetch_load_text(src/data/help_color.txt DATATEXT_HELP_COLOR)
|
|
|
|
fastfetch_load_text(src/data/help_format.txt DATATEXT_HELP_FORMAT)
|
|
|
|
fastfetch_load_text(src/data/help_config.txt DATATEXT_HELP_CONFIG)
|
|
|
|
|
2022-06-08 16:25:14 +02:00
|
|
|
######################
|
|
|
|
# Configure config.h #
|
|
|
|
######################
|
|
|
|
|
2021-02-22 20:36:25 +01:00
|
|
|
configure_file(src/fastfetch_config.h.in fastfetch_config.h)
|
2021-03-06 11:28:38 +01:00
|
|
|
|
2022-06-08 16:25:14 +02:00
|
|
|
#######################
|
|
|
|
# libfastfetch target #
|
|
|
|
#######################
|
2022-02-21 11:40:33 +05:00
|
|
|
|
2022-06-10 22:58:35 +02:00
|
|
|
add_library(libfastfetch OBJECT
|
2022-02-09 15:20:07 +01:00
|
|
|
src/util/FFstrbuf.c
|
|
|
|
src/util/FFlist.c
|
|
|
|
src/util/FFvaluestore.c
|
|
|
|
src/common/init.c
|
|
|
|
src/common/io.c
|
2022-04-08 15:50:49 +02:00
|
|
|
src/common/printing.c
|
|
|
|
src/common/caching.c
|
|
|
|
src/common/properties.c
|
|
|
|
src/common/font.c
|
2022-02-09 15:20:07 +01:00
|
|
|
src/common/processing.c
|
|
|
|
src/common/format.c
|
|
|
|
src/common/parsing.c
|
|
|
|
src/common/settings.c
|
|
|
|
src/common/library.c
|
|
|
|
src/common/networking.c
|
2022-04-02 14:35:43 +02:00
|
|
|
src/logo/logo.c
|
|
|
|
src/logo/builtin.c
|
2022-04-13 23:04:42 +02:00
|
|
|
src/logo/image/image.c
|
|
|
|
src/logo/image/im7.c
|
|
|
|
src/logo/image/im6.c
|
2022-02-09 15:20:07 +01:00
|
|
|
src/detection/os.c
|
2022-07-22 17:18:36 +02:00
|
|
|
src/detection/qt.c
|
2022-02-09 15:20:07 +01:00
|
|
|
src/detection/gtk.c
|
|
|
|
src/detection/terminalShell.c
|
2022-06-01 00:04:58 +02:00
|
|
|
src/detection/vulkan.c
|
2022-02-13 23:51:13 +01:00
|
|
|
src/detection/media.c
|
2022-02-25 13:30:37 +01:00
|
|
|
src/detection/datetime.c
|
2022-06-15 23:15:49 +02:00
|
|
|
src/detection/temps.c
|
2022-07-22 19:36:00 +02:00
|
|
|
src/detection/title.c
|
2022-02-09 15:20:07 +01:00
|
|
|
src/detection/displayserver/displayServer.c
|
|
|
|
src/detection/displayserver/wayland.c
|
|
|
|
src/detection/displayserver/xcb.c
|
|
|
|
src/detection/displayserver/xlib.c
|
|
|
|
src/detection/displayserver/wmde.c
|
|
|
|
src/modules/break.c
|
|
|
|
src/modules/custom.c
|
|
|
|
src/modules/title.c
|
|
|
|
src/modules/separator.c
|
|
|
|
src/modules/os.c
|
|
|
|
src/modules/host.c
|
|
|
|
src/modules/kernel.c
|
|
|
|
src/modules/uptime.c
|
|
|
|
src/modules/processes.c
|
|
|
|
src/modules/packages.c
|
|
|
|
src/modules/shell.c
|
|
|
|
src/modules/resolution.c
|
|
|
|
src/modules/de.c
|
|
|
|
src/modules/wm.c
|
|
|
|
src/modules/wmtheme.c
|
|
|
|
src/modules/theme.c
|
|
|
|
src/modules/icons.c
|
|
|
|
src/modules/font.c
|
|
|
|
src/modules/cursor.c
|
|
|
|
src/modules/terminal.c
|
|
|
|
src/modules/terminalfont.c
|
|
|
|
src/modules/cpu.c
|
|
|
|
src/modules/cpuUsage.c
|
|
|
|
src/modules/gpu.c
|
|
|
|
src/modules/memory.c
|
|
|
|
src/modules/disk.c
|
|
|
|
src/modules/battery.c
|
|
|
|
src/modules/locale.c
|
2022-06-01 00:04:58 +02:00
|
|
|
src/modules/vulkan.c
|
2022-02-09 15:20:07 +01:00
|
|
|
src/modules/localip.c
|
|
|
|
src/modules/publicip.c
|
2022-02-13 23:51:13 +01:00
|
|
|
src/modules/player.c
|
|
|
|
src/modules/song.c
|
2022-02-25 13:30:37 +01:00
|
|
|
src/modules/datetime.c
|
|
|
|
src/modules/date.c
|
|
|
|
src/modules/time.c
|
2022-02-09 15:20:07 +01:00
|
|
|
src/modules/colors.c
|
2022-06-04 15:21:34 +02:00
|
|
|
src/modules/opengl.c
|
2022-06-05 00:18:40 +02:00
|
|
|
src/modules/opencl.c
|
2022-02-09 15:20:07 +01:00
|
|
|
)
|
2022-02-08 07:10:46 +02:00
|
|
|
|
|
|
|
if(ENABLE_LIBPCI)
|
2022-04-11 16:19:02 +02:00
|
|
|
pkg_check_modules(LIBPCI libpci)
|
2022-02-08 07:10:46 +02:00
|
|
|
if(LIBPCI_FOUND)
|
2022-02-09 15:20:07 +01:00
|
|
|
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_LIBPCI=1)
|
2022-04-11 16:19:02 +02:00
|
|
|
else()
|
2022-02-08 07:10:46 +02:00
|
|
|
message(WARNING "Package libpci not found. Building without support.")
|
2022-04-11 16:19:02 +02:00
|
|
|
endif()
|
|
|
|
endif()
|
2022-02-08 07:10:46 +02:00
|
|
|
|
|
|
|
if(ENABLE_VULKAN)
|
2022-04-11 16:19:02 +02:00
|
|
|
pkg_check_modules(VULKAN vulkan)
|
2022-02-08 07:10:46 +02:00
|
|
|
if(VULKAN_FOUND)
|
2022-02-09 15:20:07 +01:00
|
|
|
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_VULKAN=1)
|
2022-04-11 16:19:02 +02:00
|
|
|
else()
|
2022-02-08 07:10:46 +02:00
|
|
|
message(WARNING "Package vulkan not found. Building without support.")
|
2022-04-11 16:19:02 +02:00
|
|
|
endif()
|
|
|
|
endif()
|
2022-02-08 07:10:46 +02:00
|
|
|
|
|
|
|
if(ENABLE_WAYLAND)
|
|
|
|
pkg_check_modules (WAYLAND wayland-client)
|
|
|
|
if(WAYLAND_FOUND)
|
2022-02-09 15:20:07 +01:00
|
|
|
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_WAYLAND=1)
|
2022-04-11 16:19:02 +02:00
|
|
|
else()
|
2022-02-08 07:10:46 +02:00
|
|
|
message(WARNING "Package wayland-client not found. Building without support.")
|
2022-04-11 16:19:02 +02:00
|
|
|
endif()
|
|
|
|
endif()
|
2022-02-08 07:10:46 +02:00
|
|
|
|
|
|
|
if(ENABLE_XCB_RANDR)
|
2022-04-11 16:19:02 +02:00
|
|
|
pkg_check_modules(XCB_RANDR xcb-randr)
|
2022-02-08 07:10:46 +02:00
|
|
|
if(XCB_RANDR_FOUND)
|
2022-02-09 15:20:07 +01:00
|
|
|
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_XCB_RANDR=1)
|
2022-04-11 16:19:02 +02:00
|
|
|
else()
|
2022-02-08 07:10:46 +02:00
|
|
|
message(WARNING "Package xcb-randr not found. Building without support.")
|
2022-04-11 16:19:02 +02:00
|
|
|
endif()
|
|
|
|
endif()
|
2022-02-08 07:10:46 +02:00
|
|
|
|
|
|
|
if(ENABLE_XCB)
|
|
|
|
pkg_check_modules (XCB xcb)
|
|
|
|
if(XCB_FOUND)
|
2022-02-09 15:20:07 +01:00
|
|
|
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_XCB=1)
|
2022-04-11 16:19:02 +02:00
|
|
|
else()
|
2022-02-08 07:10:46 +02:00
|
|
|
message(WARNING "Package xcb not found. Building without support.")
|
2022-04-11 16:19:02 +02:00
|
|
|
endif()
|
|
|
|
endif()
|
2022-02-08 07:10:46 +02:00
|
|
|
|
|
|
|
if(ENABLE_XRANDR)
|
2022-04-11 16:19:02 +02:00
|
|
|
pkg_check_modules(XRANDR xrandr)
|
2022-02-08 07:10:46 +02:00
|
|
|
if(XRANDR_FOUND)
|
2022-02-09 15:20:07 +01:00
|
|
|
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_XRANDR=1)
|
2022-04-11 16:19:02 +02:00
|
|
|
else()
|
2022-02-08 07:10:46 +02:00
|
|
|
message(WARNING "Package xrandr not found. Building without support.")
|
2022-04-11 16:19:02 +02:00
|
|
|
endif()
|
|
|
|
endif()
|
2022-02-08 07:10:46 +02:00
|
|
|
|
|
|
|
if(ENABLE_X11)
|
2022-04-11 16:19:02 +02:00
|
|
|
pkg_check_modules(X11 x11)
|
2022-02-08 07:10:46 +02:00
|
|
|
if(X11_FOUND)
|
2022-02-09 15:20:07 +01:00
|
|
|
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_X11=1)
|
2022-04-11 16:19:02 +02:00
|
|
|
else()
|
2022-02-08 07:10:46 +02:00
|
|
|
message(WARNING "Package x11 not found. Building without support.")
|
2022-04-11 16:19:02 +02:00
|
|
|
endif()
|
|
|
|
endif()
|
2022-02-08 07:10:46 +02:00
|
|
|
|
|
|
|
if(ENABLE_GIO)
|
2022-04-11 16:19:02 +02:00
|
|
|
pkg_check_modules(GIO gio-2.0)
|
2022-02-08 07:10:46 +02:00
|
|
|
if(GIO_FOUND)
|
2022-02-09 15:20:07 +01:00
|
|
|
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_GIO=1)
|
2022-04-11 16:19:02 +02:00
|
|
|
else()
|
2022-02-08 07:10:46 +02:00
|
|
|
message(WARNING "Package gio-2.0 not found. Building without support.")
|
2022-04-11 16:19:02 +02:00
|
|
|
endif()
|
|
|
|
endif()
|
2022-02-08 07:10:46 +02:00
|
|
|
|
|
|
|
if(ENABLE_DCONF)
|
2022-04-11 16:19:02 +02:00
|
|
|
pkg_check_modules(DCONF dconf)
|
2022-02-08 07:10:46 +02:00
|
|
|
if(DCONF_FOUND)
|
2022-02-09 15:20:07 +01:00
|
|
|
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_DCONF=1)
|
2022-04-11 16:19:02 +02:00
|
|
|
else()
|
2022-02-08 07:10:46 +02:00
|
|
|
message(WARNING "Package dconf not found. Building without support.")
|
2022-04-11 16:19:02 +02:00
|
|
|
endif()
|
|
|
|
endif()
|
2022-02-08 07:10:46 +02:00
|
|
|
|
2022-02-13 23:51:13 +01:00
|
|
|
if(ENABLE_DBUS)
|
2022-04-11 16:19:02 +02:00
|
|
|
pkg_check_modules(DBUS dbus-1)
|
2022-02-13 23:51:13 +01:00
|
|
|
if(DBUS_FOUND)
|
|
|
|
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_DBUS=1)
|
2022-04-11 16:19:02 +02:00
|
|
|
else()
|
2022-02-13 23:51:13 +01:00
|
|
|
message(WARNING "Package dbus-1 not found. Building without support.")
|
2022-04-11 16:19:02 +02:00
|
|
|
endif()
|
|
|
|
endif()
|
2022-02-13 23:51:13 +01:00
|
|
|
|
2022-02-08 07:10:46 +02:00
|
|
|
if(ENABLE_XFCONF)
|
2022-04-11 16:19:02 +02:00
|
|
|
pkg_check_modules(XFCONF libxfconf-0)
|
2022-02-08 07:10:46 +02:00
|
|
|
if(XFCONF_FOUND)
|
2022-02-09 15:20:07 +01:00
|
|
|
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_XFCONF=1)
|
2022-04-11 16:19:02 +02:00
|
|
|
else()
|
2022-02-08 07:10:46 +02:00
|
|
|
message(WARNING "Package libxfconf-0 not found. Building without support.")
|
2022-04-11 16:19:02 +02:00
|
|
|
endif()
|
|
|
|
endif()
|
2022-02-08 07:10:46 +02:00
|
|
|
|
2022-05-23 19:30:02 +02:00
|
|
|
if(ENABLE_SQLITE3)
|
|
|
|
pkg_check_modules(SQLITE3 sqlite3)
|
|
|
|
if(SQLITE3_FOUND)
|
|
|
|
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_SQLITE3=1)
|
2022-04-11 16:19:02 +02:00
|
|
|
else()
|
2022-05-23 19:30:02 +02:00
|
|
|
message(WARNING "Package sqlite3 not found. Building without support.")
|
2022-04-11 16:19:02 +02:00
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
2022-05-24 13:36:33 +02:00
|
|
|
if(ENABLE_RPM)
|
|
|
|
pkg_check_modules(RPM rpm)
|
|
|
|
if(RPM_FOUND)
|
|
|
|
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_RPM=1)
|
|
|
|
else()
|
|
|
|
message(WARNING "Package rpm not found. Building without support.")
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
2022-04-11 16:19:02 +02:00
|
|
|
if(ENABLE_IMAGEMAGICK7)
|
|
|
|
pkg_check_modules(IMAGEMAGICK7 MagickCore-7.Q16HDRI)
|
2022-04-13 23:13:25 +02:00
|
|
|
if(NOT IMAGEMAGICK7_FOUND)
|
|
|
|
pkg_check_modules(IMAGEMAGICK7 /usr/lib/imagemagick7/pkgconfig/MagickCore-7.Q16HDRI.pc)
|
|
|
|
endif()
|
2022-04-11 16:19:02 +02:00
|
|
|
if(NOT IMAGEMAGICK7_FOUND)
|
|
|
|
pkg_check_modules(IMAGEMAGICK7 MagickCore-7.Q16)
|
|
|
|
endif()
|
2022-04-13 23:13:25 +02:00
|
|
|
if(NOT IMAGEMAGICK7_FOUND)
|
|
|
|
pkg_check_modules(IMAGEMAGICK7 /usr/lib/imagemagick7/pkgconfig/MagickCore-7.Q16.pc)
|
|
|
|
endif()
|
2022-04-11 16:19:02 +02:00
|
|
|
|
|
|
|
if(IMAGEMAGICK7_FOUND)
|
|
|
|
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_IMAGEMAGICK7=1)
|
|
|
|
else()
|
|
|
|
message(WARNING "Package MagickCore-7.Q16HDRI or MagickCore-7.Q16 not found. Building without support.")
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(ENABLE_IMAGEMAGICK6)
|
|
|
|
pkg_check_modules(IMAGEMAGICK6 MagickCore-6.Q16HDRI)
|
2022-04-13 23:13:25 +02:00
|
|
|
if(NOT IMAGEMAGICK6_FOUND)
|
|
|
|
pkg_check_modules(IMAGEMAGICK6 /usr/lib/imagemagick6/pkgconfig/MagickCore-6.Q16HDRI.pc)
|
|
|
|
endif()
|
2022-04-11 16:19:02 +02:00
|
|
|
if(NOT IMAGEMAGICK6_FOUND)
|
|
|
|
pkg_check_modules(IMAGEMAGICK6 MagickCore-6.Q16)
|
|
|
|
endif()
|
2022-04-13 23:13:25 +02:00
|
|
|
if(NOT IMAGEMAGICK6_FOUND)
|
|
|
|
pkg_check_modules(IMAGEMAGICK6 /usr/lib/imagemagick6/pkgconfig/MagickCore-6.Q16.pc)
|
|
|
|
endif()
|
2022-04-11 16:19:02 +02:00
|
|
|
|
|
|
|
if(IMAGEMAGICK6_FOUND)
|
|
|
|
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_IMAGEMAGICK6=1)
|
|
|
|
else()
|
|
|
|
message(WARNING "Package MagickCore-6.Q16HDRI or MagickCore-6.Q16 not found. Building without support.")
|
|
|
|
endif()
|
|
|
|
endif()
|
2022-04-06 14:02:05 +02:00
|
|
|
|
2022-04-14 15:11:14 +02:00
|
|
|
if(ENABLE_ZLIB)
|
|
|
|
pkg_check_modules(ZLIB zlib)
|
|
|
|
if(ZLIB_FOUND)
|
|
|
|
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_ZLIB=1)
|
|
|
|
else()
|
|
|
|
message(WARNING "Package zlib not found. Building without support")
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
2022-04-28 19:15:46 +02:00
|
|
|
if(ENABLE_CHAFA)
|
2022-05-29 16:23:56 +02:00
|
|
|
if(IMAGEMAGICK6_FOUND OR IMAGEMAGICK7_FOUND)
|
|
|
|
pkg_check_modules(CHAFA chafa>=1.10)
|
|
|
|
if(CHAFA_FOUND)
|
|
|
|
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_CHAFA=1)
|
|
|
|
else()
|
|
|
|
message(WARNING "Package chafa>=1.10 not found. Building without support.")
|
|
|
|
endif()
|
2022-04-28 19:15:46 +02:00
|
|
|
else()
|
2022-06-04 15:21:34 +02:00
|
|
|
message(WARNING "Chafa not enabled, because neither ImageMagick6 nor ImageMagick7 were found. Building without support.")
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(ENABLE_EGL)
|
2022-06-04 19:30:26 +02:00
|
|
|
pkg_check_modules(EGL egl)
|
|
|
|
if(EGL_FOUND)
|
|
|
|
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_EGL=1)
|
2022-06-04 15:21:34 +02:00
|
|
|
else()
|
2022-06-04 19:30:26 +02:00
|
|
|
message(WARNING "Package egl not found. Building without support.")
|
2022-06-04 15:21:34 +02:00
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(ENABLE_GLX)
|
2022-06-04 19:30:26 +02:00
|
|
|
pkg_check_modules(GLX glx)
|
|
|
|
if(GLX_FOUND)
|
|
|
|
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_GLX=1)
|
2022-06-04 15:21:34 +02:00
|
|
|
else()
|
2022-06-04 19:30:26 +02:00
|
|
|
message(WARNING "Package glx not found. Building without support.")
|
2022-06-04 15:21:34 +02:00
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
2022-06-04 19:30:26 +02:00
|
|
|
if(ENABLE_OSMESA)
|
|
|
|
pkg_check_modules(OSMESA osmesa)
|
|
|
|
if(OSMESA_FOUND)
|
|
|
|
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_OSMESA=1)
|
2022-06-04 15:21:34 +02:00
|
|
|
else()
|
2022-06-04 19:30:26 +02:00
|
|
|
message(WARNING "Package osmesa not found. Building without support.")
|
2022-04-28 19:15:46 +02:00
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
2022-06-05 00:18:40 +02:00
|
|
|
if(ENABLE_OPENCL)
|
|
|
|
pkg_check_modules(OPENCL OpenCL)
|
|
|
|
if(OPENCL_FOUND)
|
|
|
|
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_OPENCL=1)
|
|
|
|
else()
|
|
|
|
message(WARNING "Package opencl not found. Building without support.")
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
2022-02-09 15:20:07 +01:00
|
|
|
target_include_directories(libfastfetch
|
|
|
|
PUBLIC ${PROJECT_BINARY_DIR}
|
|
|
|
PUBLIC ${PROJECT_SOURCE_DIR}/src
|
2021-02-22 20:36:25 +01:00
|
|
|
|
2022-02-09 15:20:07 +01:00
|
|
|
PRIVATE ${LIBPCI_INCLUDE_DIRS}
|
|
|
|
PRIVATE ${VULKAN_INCLUDE_DIRS}
|
|
|
|
PRIVATE ${WAYLAND_INCLUDE_DIRS}
|
|
|
|
PRIVATE ${XCB_RANDR_INCLUDE_DIRS}
|
|
|
|
PRIVATE ${XCB_INCLUDE_DIRS}
|
|
|
|
PRIVATE ${XRANDR_INCLUDE_DIRS}
|
|
|
|
PRIVATE ${X11_INCLUDE_DIRS}
|
|
|
|
PRIVATE ${GIO_INCLUDE_DIRS}
|
|
|
|
PRIVATE ${DCONF_INCLUDE_DIRS}
|
2022-02-13 23:51:13 +01:00
|
|
|
PRIVATE ${DBUS_INCLUDE_DIRS}
|
2022-02-09 15:20:07 +01:00
|
|
|
PRIVATE ${XFCONF_INCLUDE_DIRS}
|
2022-05-23 19:30:02 +02:00
|
|
|
PRIVATE ${SQLITE3_INCLUDE_DIRS}
|
2022-05-24 13:36:33 +02:00
|
|
|
PRIVATE ${RPM_INCLUDE_DIRS}
|
2022-04-11 16:19:02 +02:00
|
|
|
PRIVATE ${IMAGEMAGICK7_INCLUDE_DIRS}
|
|
|
|
PRIVATE ${IMAGEMAGICK6_INCLUDE_DIRS}
|
2022-04-14 15:11:14 +02:00
|
|
|
PRIVATE ${ZLIB_INCLUDE_DIRS}
|
2022-04-28 19:15:46 +02:00
|
|
|
PRIVATE ${CHAFA_INCLUDE_DIRS}
|
2022-06-04 15:21:34 +02:00
|
|
|
PRIVATE ${VULKAN_INCLUDE_DIRS}
|
|
|
|
PRIVATE ${EGL_INCLUDE_DIRS}
|
|
|
|
PRIVATE ${GLX_INCLUDE_DIRS}
|
2022-06-04 19:30:26 +02:00
|
|
|
PRIVATE ${OSMESA_INCLUDE_DIRS}
|
2022-06-05 00:18:40 +02:00
|
|
|
PRIVATE ${OPENCL_INCLUDE_DIRS}
|
2021-04-09 14:07:05 +02:00
|
|
|
)
|
|
|
|
|
2022-02-09 15:20:07 +01:00
|
|
|
target_link_libraries(libfastfetch
|
|
|
|
PRIVATE ${CMAKE_DL_LIBS}
|
|
|
|
PRIVATE Threads::Threads
|
2021-02-18 22:25:36 +01:00
|
|
|
)
|
|
|
|
|
2022-06-08 16:25:14 +02:00
|
|
|
######################
|
|
|
|
# Executable targets #
|
|
|
|
######################
|
2022-02-09 15:20:07 +01:00
|
|
|
|
2021-02-27 18:30:05 +01:00
|
|
|
add_executable(fastfetch
|
|
|
|
src/fastfetch.c
|
2022-02-09 15:20:07 +01:00
|
|
|
)
|
|
|
|
target_link_libraries(fastfetch
|
|
|
|
PRIVATE libfastfetch
|
2021-02-27 18:30:05 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
add_executable(flashfetch
|
|
|
|
src/flashfetch.c
|
|
|
|
)
|
2022-02-09 15:20:07 +01:00
|
|
|
target_link_libraries(flashfetch
|
|
|
|
PRIVATE libfastfetch
|
2021-02-27 18:30:05 +01:00
|
|
|
)
|
|
|
|
|
2022-06-08 16:25:14 +02:00
|
|
|
###################
|
|
|
|
# Testing targets #
|
|
|
|
###################
|
2022-02-21 11:40:33 +05:00
|
|
|
|
2022-02-21 12:22:29 +05:00
|
|
|
if (BUILD_TESTS)
|
|
|
|
add_executable(fastfetch-test-strbuf
|
|
|
|
tests/strbuf.c
|
|
|
|
)
|
|
|
|
target_link_libraries(fastfetch-test-strbuf
|
|
|
|
PRIVATE libfastfetch
|
|
|
|
)
|
|
|
|
|
|
|
|
enable_testing()
|
|
|
|
add_test(NAME test-strbuf COMMAND fastfetch-test-strbuf)
|
|
|
|
endif()
|
2022-02-21 11:40:33 +05:00
|
|
|
|
2022-06-08 16:25:14 +02:00
|
|
|
##################
|
|
|
|
# install target #
|
|
|
|
##################
|
2022-03-25 11:57:58 +01:00
|
|
|
|
2022-07-27 21:56:28 +02:00
|
|
|
#https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT.html
|
|
|
|
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
|
|
|
set(CMAKE_INSTALL_PREFIX "${TARGET_DIR_USR}" CACHE PATH "..." FORCE)
|
|
|
|
endif()
|
|
|
|
|
2022-07-26 22:13:09 +02:00
|
|
|
if(NOT CMAKE_INSTALL_SYSCONFDIR)
|
2022-07-27 21:56:28 +02:00
|
|
|
set(CMAKE_INSTALL_SYSCONFDIR "${TARGET_DIR_ROOT}/etc")
|
2022-07-26 22:13:09 +02:00
|
|
|
endif()
|
|
|
|
|
2022-03-25 11:57:58 +01:00
|
|
|
include(GNUInstallDirs)
|
2022-02-21 11:40:33 +05:00
|
|
|
|
2022-03-08 11:59:06 +01:00
|
|
|
install(
|
2022-07-21 14:37:13 +02:00
|
|
|
TARGETS fastfetch flashfetch
|
2022-07-27 21:56:28 +02:00
|
|
|
DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
2022-03-08 11:59:06 +01:00
|
|
|
)
|
2022-02-21 11:40:33 +05:00
|
|
|
|
2022-04-06 14:02:05 +02:00
|
|
|
install(
|
2022-07-27 21:56:28 +02:00
|
|
|
FILES "${CMAKE_SOURCE_DIR}/src/data/config_system.txt"
|
|
|
|
DESTINATION "${CMAKE_INSTALL_SYSCONFDIR}/${CMAKE_PROJECT_NAME}"
|
2022-07-21 14:37:13 +02:00
|
|
|
RENAME "config.conf"
|
2022-04-06 14:02:05 +02:00
|
|
|
)
|
|
|
|
|
2022-03-08 11:59:06 +01:00
|
|
|
install(
|
2022-07-27 21:56:28 +02:00
|
|
|
FILES "${CMAKE_SOURCE_DIR}/completions/bash"
|
|
|
|
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/bash-completion/completions"
|
|
|
|
RENAME "${CMAKE_PROJECT_NAME}"
|
2022-02-21 11:40:33 +05:00
|
|
|
)
|
|
|
|
|
2022-03-08 11:59:06 +01:00
|
|
|
install(
|
2022-07-27 21:56:28 +02:00
|
|
|
DIRECTORY "${CMAKE_SOURCE_DIR}/presets/"
|
|
|
|
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${CMAKE_PROJECT_NAME}"
|
2022-03-08 11:59:06 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
install(
|
2022-07-27 21:56:28 +02:00
|
|
|
FILES "${CMAKE_SOURCE_DIR}/LICENSE"
|
|
|
|
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/licenses/${CMAKE_PROJECT_NAME}"
|
2022-02-21 11:40:33 +05:00
|
|
|
)
|
2022-03-25 11:57:58 +01:00
|
|
|
|
2022-06-08 16:25:14 +02:00
|
|
|
##################
|
|
|
|
# package target #
|
|
|
|
##################
|
2022-03-25 11:57:58 +01:00
|
|
|
|
2022-03-25 12:16:06 +01:00
|
|
|
set(CPACK_GENERATOR "DEB;RPM;TGZ;ZIP")
|
2022-07-26 22:13:09 +02:00
|
|
|
set(CPACK_SET_DESTDIR ON)
|
2022-03-25 11:57:58 +01:00
|
|
|
|
|
|
|
set(CPACK_PACKAGE_CONTACT "Linus Dierheimer <Linus@Dierheimer.de>")
|
|
|
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Neofetch clone written in C")
|
2022-04-23 11:24:24 +02:00
|
|
|
set(CPACK_PACKAGE_DESCRIPTION "\
|
|
|
|
fastfetch is a neofetch-like tool for fetching system information and displaying them in a pretty way. \
|
|
|
|
It is written in c to achieve much better performance.\
|
2022-03-25 11:57:58 +01:00
|
|
|
")
|
|
|
|
set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/LinusDierheimer")
|
|
|
|
|
|
|
|
set(CPACK_DEBIAN_PACKAGE_SECTION, "utils")
|
|
|
|
set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
|
2022-03-25 12:09:48 +01:00
|
|
|
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6")
|
2022-03-25 11:57:58 +01:00
|
|
|
|
2022-03-25 12:24:56 +01:00
|
|
|
set(CPACK_RPM_PACKAGE_LICENSE "MIT")
|
|
|
|
|
2022-03-25 11:57:58 +01:00
|
|
|
include(CPack)
|