fastfetch/CMakeLists.txt

392 lines
11 KiB
CMake
Raw Normal View History

2021-11-07 21:35:59 +01:00
cmake_minimum_required(VERSION 3.1.0) # Threads::Threads
2021-02-18 22:25:36 +01:00
2022-03-20 13:16:04 +01:00
project(fastfetch
2022-03-28 12:36:08 +02:00
VERSION 1.2.3
2022-03-20 13:16:04 +01:00
LANGUAGES C
)
2021-02-18 22:25:36 +01:00
2022-04-06 14:02:05 +02:00
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
find_package(PkgConfig REQUIRED)
2022-03-25 11:57:58 +01:00
# This is set to off by github actions for release builds
2022-03-24 21:32:45 +01:00
OPTION(SET_TWEAK "Add tweak to project version" ON)
2022-03-25 11:57:58 +01:00
# Also create test executables
OPTION(BUILD_TESTS "Build tests" OFF)
2022-02-21 11:40:33 +05: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)
OPTION(ENABLE_XFCONF "Enable libxfconf-0" ON)
OPTION(ENABLE_RPM "Enable rpm" ON)
2022-04-06 14:02:05 +02:00
OPTION(ENABLE_IMAGEMAGICK "Enable imagemagick" ON)
2022-03-25 11:57:58 +01:00
# Track commits between version bumps for output in --version
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()
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
2021-03-07 20:05:00 +01:00
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
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "-Wl,-O3")
2021-10-22 21:53:29 +02:00
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)
fastfetch_load_text(src/data/structure.txt DATATEXT_STRUCTURE)
2021-10-22 21:53:29 +02:00
fastfetch_load_text(src/data/config.txt DATATEXT_CONFIG)
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)
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-03-25 11:57:58 +01:00
# Init CMake targets
2022-02-21 11:40:33 +05:00
add_library(libfastfetch STATIC
src/util/FFstrbuf.c
src/util/FFlist.c
src/util/FFvaluestore.c
src/common/init.c
src/common/threading.c
src/common/io.c
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-06 14:02:05 +02:00
src/logo/image.c
src/detection/os.c
src/detection/plasma.c
src/detection/gtk.c
src/detection/terminalShell.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
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
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
src/modules/colors.c
)
2022-02-08 07:10:46 +02:00
if(ENABLE_LIBPCI)
pkg_check_modules (LIBPCI libpci)
if(LIBPCI_FOUND)
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_LIBPCI=1)
2022-02-08 07:10:46 +02:00
else(LIBPCI_FOUND)
message(WARNING "Package libpci not found. Building without support.")
endif(LIBPCI_FOUND)
endif(ENABLE_LIBPCI)
if(ENABLE_VULKAN)
pkg_check_modules (VULKAN vulkan)
if(VULKAN_FOUND)
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_VULKAN=1)
2022-02-08 07:10:46 +02:00
else(VULKAN_FOUND)
message(WARNING "Package vulkan not found. Building without support.")
endif(VULKAN_FOUND)
endif(ENABLE_VULKAN)
if(ENABLE_WAYLAND)
pkg_check_modules (WAYLAND wayland-client)
if(WAYLAND_FOUND)
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_WAYLAND=1)
2022-02-08 07:10:46 +02:00
else(WAYLAND_FOUND)
message(WARNING "Package wayland-client not found. Building without support.")
endif(WAYLAND_FOUND)
endif(ENABLE_WAYLAND)
if(ENABLE_XCB_RANDR)
pkg_check_modules (XCB_RANDR xcb-randr)
if(XCB_RANDR_FOUND)
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_XCB_RANDR=1)
2022-02-08 07:10:46 +02:00
else(XCB_RANDR_FOUND)
message(WARNING "Package xcb-randr not found. Building without support.")
endif(XCB_RANDR_FOUND)
endif(ENABLE_XCB_RANDR)
if(ENABLE_XCB)
pkg_check_modules (XCB xcb)
if(XCB_FOUND)
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_XCB=1)
2022-02-08 07:10:46 +02:00
else(XCB_FOUND)
message(WARNING "Package xcb not found. Building without support.")
endif(XCB_FOUND)
endif(ENABLE_XCB)
if(ENABLE_XRANDR)
pkg_check_modules (XRANDR xrandr)
if(XRANDR_FOUND)
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_XRANDR=1)
2022-02-08 07:10:46 +02:00
else(XRANDR_FOUND)
message(WARNING "Package xrandr not found. Building without support.")
endif(XRANDR_FOUND)
endif(ENABLE_XRANDR)
if(ENABLE_X11)
pkg_check_modules (X11 x11)
if(X11_FOUND)
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_X11=1)
2022-02-08 07:10:46 +02:00
else(X11_FOUND)
message(WARNING "Package x11 not found. Building without support.")
endif(X11_FOUND)
endif(ENABLE_X11)
if(ENABLE_GIO)
pkg_check_modules (GIO gio-2.0)
if(GIO_FOUND)
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_GIO=1)
2022-02-08 07:10:46 +02:00
else(GIO_FOUND)
message(WARNING "Package gio-2.0 not found. Building without support.")
endif(GIO_FOUND)
endif(ENABLE_GIO)
if(ENABLE_DCONF)
pkg_check_modules (DCONF dconf)
if(DCONF_FOUND)
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_DCONF=1)
2022-02-08 07:10:46 +02:00
else(DCONF_FOUND)
message(WARNING "Package dconf not found. Building without support.")
endif(DCONF_FOUND)
endif(ENABLE_DCONF)
2022-02-13 23:51:13 +01:00
if(ENABLE_DBUS)
pkg_check_modules (DBUS dbus-1)
if(DBUS_FOUND)
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_DBUS=1)
else(DBUS_FOUND)
message(WARNING "Package dbus-1 not found. Building without support.")
endif(DBUS_FOUND)
endif(ENABLE_DBUS)
2022-02-08 07:10:46 +02:00
if(ENABLE_XFCONF)
pkg_check_modules (XFCONF libxfconf-0)
if(XFCONF_FOUND)
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_XFCONF=1)
2022-02-08 07:10:46 +02:00
else(XFCONF_FOUND)
message(WARNING "Package libxfconf-0 not found. Building without support.")
endif(XFCONF_FOUND)
endif(ENABLE_XFCONF)
if(ENABLE_RPM)
pkg_check_modules (RPM rpm)
if(RPM_FOUND)
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_RPM=1)
2022-02-08 07:10:46 +02:00
else(RPM_FOUND)
message(WARNING "Package librpm not found. Building without support.")
endif(RPM_FOUND)
endif(ENABLE_RPM)
2021-04-05 23:42:07 +02:00
2022-04-06 14:02:05 +02:00
if(ENABLE_IMAGEMAGICK)
2022-04-06 14:21:52 +02:00
pkg_check_modules (IMAGEMAGICK MagickCore-7.Q16HDRI)
2022-04-06 14:02:05 +02:00
if(IMAGEMAGICK_FOUND)
target_compile_definitions(libfastfetch PRIVATE FF_HAVE_IMAGEMAGICK=1)
else(IMAGEMAGICK_FOUND)
2022-04-06 14:21:52 +02:00
message(WARNING "Package MagickCore-7.Q16HDRI not found. Building without support.")
2022-04-06 14:02:05 +02:00
endif(IMAGEMAGICK_FOUND)
endif(ENABLE_IMAGEMAGICK)
target_include_directories(libfastfetch
PUBLIC ${PROJECT_BINARY_DIR}
PUBLIC ${PROJECT_SOURCE_DIR}/src
2021-02-22 20:36:25 +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}
PRIVATE ${XFCONF_INCLUDE_DIRS}
PRIVATE ${RPM_INCLUDE_DIRS}
2022-04-06 14:02:05 +02:00
PRIVATE ${IMAGEMAGICK_INCLUDE_DIRS}
)
target_compile_options(libfastfetch
PRIVATE ${LIBPCI_CFLAGS_OTHER}
PRIVATE ${VULKAN_CFLAGS_OTHER}
PRIVATE ${WAYLAND_CFLAGS_OTHER}
PRIVATE ${XCB_RANDR_CFLAGS_OTHER}
PRIVATE ${XCB_CFLAGS_OTHER}
PRIVATE ${XRANDR_CFLAGS_OTHER}
PRIVATE ${X11_CFLAGS_OTHER}
PRIVATE ${GIO_CFLAGS_OTHER}
PRIVATE ${DCONF_CFLAGS_OTHER}
PRIVATE ${DBUS_CFLAGS_OTHER}
PRIVATE ${XFCONF_CFLAGS_OTHER}
PRIVATE ${RPM_CFLAGS_OTHER}
PRIVATE ${IMAGEMAGICK_CFLAGS_OTHER}
2021-04-09 14:07:05 +02:00
)
target_link_libraries(libfastfetch
PRIVATE ${CMAKE_DL_LIBS}
PRIVATE Threads::Threads
2021-02-18 22:25:36 +01:00
)
set_target_properties(libfastfetch PROPERTIES OUTPUT_NAME "fastfetch")
2021-02-27 18:30:05 +01:00
add_executable(fastfetch
src/fastfetch.c
)
target_link_libraries(fastfetch
PRIVATE libfastfetch
2021-02-27 18:30:05 +01:00
)
add_executable(flashfetch
src/flashfetch.c
)
target_link_libraries(flashfetch
PRIVATE libfastfetch
2021-02-27 18:30:05 +01:00
)
2022-03-25 11:57:58 +01:00
# Testing
2022-02-21 11:40:33 +05:00
if (BUILD_TESTS)
add_executable(fastfetch-test-performance
tests/performance.c
)
target_link_libraries(fastfetch-test-performance
PRIVATE libfastfetch
)
2022-01-12 01:02:14 +01:00
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-03-25 11:57:58 +01:00
# Installation
include(GNUInstallDirs)
2022-02-21 11:40:33 +05:00
2022-03-08 11:59:06 +01:00
install(
TARGETS fastfetch
2022-03-08 12:03:21 +01: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(
TARGETS flashfetch
DESTINATION ${CMAKE_INSTALL_BINDIR}
)
2022-03-08 11:59:06 +01:00
install(
FILES completions/bash
2022-03-08 12:03:21 +01:00
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/bash-completion/completions
2022-02-21 11:40:33 +05:00
RENAME ${CMAKE_PROJECT_NAME}
)
2022-03-08 11:59:06 +01:00
install(
DIRECTORY presets
2022-03-08 12:03:21 +01:00
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${CMAKE_PROJECT_NAME}
2022-03-08 11:59:06 +01:00
)
install(
FILES ./LICENSE
2022-03-08 12:03:21 +01:00
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/licenses/${CMAKE_PROJECT_NAME}
2022-02-21 11:40:33 +05:00
)
2022-03-25 11:57:58 +01:00
# Packaging
set(CPACK_GENERATOR "DEB;RPM;TGZ;ZIP")
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")
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.
")
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
set(CPACK_DEBIAN_PACKAGE_RECOMMENDS "
libpci3
libvulkan1
libwayland-client0
libxcb-randr0
xcb
libxrandr2
libx11-6
libdconf1
libglib2.0-0
libdbus-1-3
libxfconf-0-3
")
2022-03-25 12:24:56 +01:00
set(CPACK_RPM_PACKAGE_LICENSE "MIT")
2022-03-25 11:57:58 +01:00
include(CPack)