2023-05-25 22:53:58 +02:00
|
|
|
#* Btop++ makefile v1.6
|
2021-08-22 16:04:01 +02:00
|
|
|
|
2023-06-28 01:49:43 +02:00
|
|
|
BANNER = \n \033[38;5;196m██████\033[38;5;240m╗ \033[38;5;196m████████\033[38;5;240m╗ \033[38;5;196m██████\033[38;5;240m╗ \033[38;5;196m██████\033[38;5;240m╗\n \033[38;5;160m██\033[38;5;239m╔══\033[38;5;160m██\033[38;5;239m╗╚══\033[38;5;160m██\033[38;5;239m╔══╝\033[38;5;160m██\033[38;5;239m╔═══\033[38;5;160m██\033[38;5;239m╗\033[38;5;160m██\033[38;5;239m╔══\033[38;5;160m██\033[38;5;239m╗ \033[38;5;160m██\033[38;5;239m╗ \033[38;5;160m██\033[38;5;239m╗\n \033[38;5;124m██████\033[38;5;238m╔╝ \033[38;5;124m██\033[38;5;238m║ \033[38;5;124m██\033[38;5;238m║ \033[38;5;124m██\033[38;5;238m║\033[38;5;124m██████\033[38;5;238m╔╝ \033[38;5;124m██████\033[38;5;238m╗\033[38;5;124m██████\033[38;5;238m╗\n \033[38;5;88m██\033[38;5;237m╔══\033[38;5;88m██\033[38;5;237m╗ \033[38;5;88m██\033[38;5;237m║ \033[38;5;88m██\033[38;5;237m║ \033[38;5;88m██\033[38;5;237m║\033[38;5;88m██\033[38;5;237m╔═══╝ ╚═\033[38;5;88m██\033[38;5;237m╔═╝╚═\033[38;5;88m██\033[38;5;237m╔═╝\n \033[38;5;52m██████\033[38;5;236m╔╝ \033[38;5;52m██\033[38;5;236m║ ╚\033[38;5;52m██████\033[38;5;236m╔╝\033[38;5;52m██\033[38;5;236m║ ╚═╝ ╚═╝\n \033[38;5;235m╚═════╝ ╚═╝ ╚═════╝ ╚═╝ \033[1;3;38;5;240mMakefile v1.6\033[0m
|
2021-08-22 16:04:01 +02:00
|
|
|
|
2021-09-01 21:40:13 +02:00
|
|
|
override BTOP_VERSION := $(shell head -n100 src/btop.cpp 2>/dev/null | grep "Version =" | cut -f2 -d"\"" || echo " unknown")
|
|
|
|
override TIMESTAMP := $(shell date +%s 2>/dev/null || echo "0")
|
2022-02-14 22:01:21 +01:00
|
|
|
override DATESTAMP := $(shell date '+%Y-%m-%d %H:%M:%S' || echo "5 minutes ago")
|
2021-11-13 21:19:18 +01:00
|
|
|
ifeq ($(shell command -v gdate >/dev/null; echo $$?),0)
|
|
|
|
DATE_CMD := gdate
|
|
|
|
else
|
|
|
|
DATE_CMD := date
|
|
|
|
endif
|
2021-08-22 16:04:01 +02:00
|
|
|
|
2021-09-21 18:57:16 +02:00
|
|
|
ifneq ($(QUIET),true)
|
2021-10-04 20:57:15 +02:00
|
|
|
override PRE := info info-quiet
|
2021-09-21 18:57:16 +02:00
|
|
|
override QUIET := false
|
|
|
|
else
|
|
|
|
override PRE := info-quiet
|
|
|
|
endif
|
|
|
|
|
2022-10-10 12:29:32 +02:00
|
|
|
OLDCXX := $(CXXFLAGS)
|
|
|
|
OLDLD := $(LDFLAGS)
|
|
|
|
|
2021-05-06 20:32:03 +02:00
|
|
|
PREFIX ?= /usr/local
|
|
|
|
|
2021-10-18 20:55:06 +02:00
|
|
|
#? Detect PLATFORM and ARCH from uname/gcc if not set
|
|
|
|
PLATFORM ?= $(shell uname -s || echo unknown)
|
2021-11-13 21:19:18 +01:00
|
|
|
ifneq ($(filter unknown Darwin, $(PLATFORM)),)
|
2021-10-18 20:55:06 +02:00
|
|
|
override PLATFORM := $(shell $(CXX) -dumpmachine | awk -F"-" '{ print (NF==4) ? $$3 : $$2 }')
|
2021-11-13 21:19:18 +01:00
|
|
|
ifeq ($(PLATFORM),apple)
|
|
|
|
override PLATFORM := macos
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
ifeq ($(shell uname -v | grep ARM64 >/dev/null 2>&1; echo $$?),0)
|
|
|
|
ARCH ?= arm64
|
|
|
|
else
|
|
|
|
ARCH ?= $(shell $(CXX) -dumpmachine | cut -d "-" -f 1)
|
2021-10-18 20:55:06 +02:00
|
|
|
endif
|
2021-10-16 15:15:56 +02:00
|
|
|
|
|
|
|
override PLATFORM_LC := $(shell echo $(PLATFORM) | tr '[:upper:]' '[:lower:]')
|
2021-09-01 21:40:13 +02:00
|
|
|
|
2023-05-25 22:53:58 +02:00
|
|
|
#? Compiler and Linker
|
|
|
|
ifeq ($(shell $(CXX) --version | grep clang >/dev/null 2>&1; echo $$?),0)
|
|
|
|
override CXX_IS_CLANG := true
|
|
|
|
endif
|
|
|
|
override CXX_VERSION := $(shell $(CXX) -dumpfullversion -dumpversion || echo 0)
|
|
|
|
override CXX_VERSION_MAJOR := $(shell echo $(CXX_VERSION) | cut -d '.' -f 1)
|
|
|
|
|
|
|
|
CLANG_WORKS = false
|
|
|
|
GCC_WORKS = false
|
|
|
|
|
|
|
|
#? Supported is Clang 16.0.0 and later
|
|
|
|
ifeq ($(CXX_IS_CLANG),true)
|
|
|
|
ifneq ($(shell test $(CXX_VERSION_MAJOR) -lt 16; echo $$?),0)
|
|
|
|
CLANG_WORKS := true
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
ifeq ($(CLANG_WORKS),false)
|
|
|
|
#? Try to find a newer GCC version
|
2023-08-23 15:54:07 +02:00
|
|
|
ifeq ($(shell command -v g++-13 >/dev/null; echo $$?),0)
|
|
|
|
CXX := g++-13
|
2023-08-23 16:05:00 +02:00
|
|
|
else ifeq ($(shell command -v g++13 >/dev/null; echo $$?),0)
|
|
|
|
CXX := g++13
|
2023-08-23 15:54:07 +02:00
|
|
|
else ifeq ($(shell command -v g++-12 >/dev/null; echo $$?),0)
|
2023-05-25 22:53:58 +02:00
|
|
|
CXX := g++-12
|
2023-06-26 23:48:44 +02:00
|
|
|
else ifeq ($(shell command -v g++12 >/dev/null; echo $$?),0)
|
|
|
|
CXX := g++12
|
2023-05-25 22:53:58 +02:00
|
|
|
else ifeq ($(shell command -v g++-11 >/dev/null; echo $$?),0)
|
|
|
|
CXX := g++-11
|
|
|
|
else ifeq ($(shell command -v g++11 >/dev/null; echo $$?),0)
|
|
|
|
CXX := g++11
|
|
|
|
else ifeq ($(shell command -v g++ >/dev/null; echo $$?),0)
|
|
|
|
CXX := g++
|
2023-06-26 23:48:44 +02:00
|
|
|
else
|
|
|
|
GCC_NOT_FOUND := true
|
2023-05-25 22:53:58 +02:00
|
|
|
endif
|
2023-06-26 23:48:44 +02:00
|
|
|
ifndef GCC_NOT_FOUND
|
|
|
|
override CXX_VERSION := $(shell $(CXX) -dumpfullversion -dumpversion || echo 0)
|
|
|
|
override CXX_VERSION_MAJOR := $(shell echo $(CXX_VERSION) | cut -d '.' -f 1)
|
|
|
|
ifneq ($(shell test $(CXX_VERSION_MAJOR) -lt 10; echo $$?),0)
|
|
|
|
GCC_WORKS := true
|
|
|
|
endif
|
2023-05-25 22:53:58 +02:00
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(CLANG_WORKS),false)
|
|
|
|
ifeq ($(GCC_WORKS),false)
|
|
|
|
$(error $(shell printf "\033[1;91mERROR: \033[97mCompiler too old. (Requires Clang 16.0.0, GCC 10.1.0)\033[0m"))
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2021-10-21 08:16:52 +02:00
|
|
|
#? Any flags added to TESTFLAGS must not contain whitespace for the testing to work
|
2021-11-13 21:19:18 +01:00
|
|
|
override TESTFLAGS := -fexceptions -fstack-clash-protection -fcf-protection
|
|
|
|
ifneq ($(PLATFORM) $(ARCH),macos arm64)
|
|
|
|
override TESTFLAGS += -fstack-protector
|
|
|
|
endif
|
2021-09-01 21:40:13 +02:00
|
|
|
|
2021-09-18 02:13:35 +02:00
|
|
|
ifeq ($(STATIC),true)
|
2023-08-04 01:08:27 +02:00
|
|
|
ifeq ($(CXX_IS_CLANG) $(CLANG_WORKS),true true)
|
2023-05-25 22:53:58 +02:00
|
|
|
ifeq ($(shell $(CXX) -print-target-triple | grep gnu >/dev/null; echo $$?),0)
|
|
|
|
$(error $(shell printf "\033[1;91mERROR: \033[97m$(CXX) can't statically link glibc\033[0m"))
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
override ADDFLAGS += -static-libgcc -static-libstdc++
|
|
|
|
endif
|
2023-08-04 01:08:27 +02:00
|
|
|
ifeq ($(PLATFORM_LC),linux)
|
2021-11-16 07:16:55 +01:00
|
|
|
override ADDFLAGS += -DSTATIC_BUILD -static -Wl,--fatal-warnings
|
2023-08-04 01:08:27 +02:00
|
|
|
else ifeq ($(PLATFORM_LC),freebsd)
|
|
|
|
override ADDFLAGS += -DSTATIC_BUILD
|
2021-11-16 07:16:55 +01:00
|
|
|
endif
|
2021-10-16 15:15:56 +02:00
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(STRIP),true)
|
2021-10-24 01:16:15 +02:00
|
|
|
override ADDFLAGS += -s
|
2021-09-18 02:13:35 +02:00
|
|
|
endif
|
|
|
|
|
2022-10-10 13:02:07 +02:00
|
|
|
ifeq ($(VERBOSE),true)
|
2022-10-10 12:29:32 +02:00
|
|
|
override VERBOSE := false
|
2022-10-10 13:02:07 +02:00
|
|
|
else
|
|
|
|
override VERBOSE := true
|
2022-10-10 12:29:32 +02:00
|
|
|
endif
|
|
|
|
|
2021-09-12 15:58:23 +02:00
|
|
|
#? Pull in platform specific source files and get thread count
|
2021-10-16 15:15:56 +02:00
|
|
|
ifeq ($(PLATFORM_LC),linux)
|
2021-09-12 15:58:23 +02:00
|
|
|
PLATFORM_DIR := linux
|
|
|
|
THREADS := $(shell getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1)
|
2021-11-13 21:25:08 +01:00
|
|
|
SU_GROUP := root
|
2021-10-16 15:15:56 +02:00
|
|
|
else ifeq ($(PLATFORM_LC),freebsd)
|
2021-09-12 15:58:23 +02:00
|
|
|
PLATFORM_DIR := freebsd
|
|
|
|
THREADS := $(shell getconf NPROCESSORS_ONLN 2>/dev/null || echo 1)
|
2022-01-16 14:19:31 +01:00
|
|
|
SU_GROUP := wheel
|
2023-08-04 01:08:27 +02:00
|
|
|
override ADDFLAGS += -lm -lkvm -ldevstat -Wl,-rpath=/usr/local/lib/gcc$(CXX_VERSION_MAJOR)
|
|
|
|
ifneq ($(STATIC),true)
|
|
|
|
override ADDFLAGS += -lstdc++
|
|
|
|
endif
|
2021-11-13 21:25:08 +01:00
|
|
|
export MAKE = gmake
|
|
|
|
else ifeq ($(PLATFORM_LC),macos)
|
2021-09-12 15:58:23 +02:00
|
|
|
PLATFORM_DIR := osx
|
|
|
|
THREADS := $(shell sysctl -n hw.ncpu || echo 1)
|
2021-11-13 21:25:08 +01:00
|
|
|
override ADDFLAGS += -framework IOKit -framework CoreFoundation -Wno-format-truncation
|
|
|
|
SU_GROUP := wheel
|
2021-09-12 15:58:23 +02:00
|
|
|
else
|
|
|
|
$(error $(shell printf "\033[1;91mERROR: \033[97mUnsupported platform ($(PLATFORM))\033[0m"))
|
|
|
|
endif
|
|
|
|
|
2021-08-23 17:35:27 +02:00
|
|
|
#? Use all CPU cores (will only be set if using Make 4.3+)
|
2021-10-21 08:16:52 +02:00
|
|
|
MAKEFLAGS := --jobs=$(THREADS)
|
2021-09-01 21:40:13 +02:00
|
|
|
ifeq ($(THREADS),1)
|
|
|
|
override THREADS := auto
|
|
|
|
endif
|
2021-06-19 14:57:27 +02:00
|
|
|
|
2023-05-25 22:53:58 +02:00
|
|
|
#? LTO command line
|
|
|
|
ifeq ($(CLANG_WORKS),true)
|
|
|
|
LTO := thin
|
|
|
|
else
|
|
|
|
LTO := $(THREADS)
|
|
|
|
endif
|
|
|
|
|
2021-08-22 16:04:01 +02:00
|
|
|
#? The Directories, Source, Includes, Objects and Binary
|
2021-06-19 14:57:27 +02:00
|
|
|
SRCDIR := src
|
2023-05-23 15:10:36 +02:00
|
|
|
INCDIRS := include $(wildcard lib/**/include)
|
2021-06-19 14:57:27 +02:00
|
|
|
BUILDDIR := obj
|
|
|
|
TARGETDIR := bin
|
|
|
|
SRCEXT := cpp
|
|
|
|
DEPEXT := d
|
|
|
|
OBJEXT := o
|
|
|
|
|
2021-10-21 08:16:52 +02:00
|
|
|
#? Filter out unsupported compiler flags
|
|
|
|
override GOODFLAGS := $(foreach flag,$(TESTFLAGS),$(strip $(shell echo "int main() {}" | $(CXX) -o /dev/null $(flag) -x c++ - >/dev/null 2>&1 && echo $(flag) || true)))
|
|
|
|
|
2021-08-22 16:04:01 +02:00
|
|
|
#? Flags, Libraries and Includes
|
2021-09-01 21:40:13 +02:00
|
|
|
override REQFLAGS := -std=c++20
|
2021-09-17 14:25:54 +02:00
|
|
|
WARNFLAGS := -Wall -Wextra -pedantic
|
2023-05-25 22:53:58 +02:00
|
|
|
OPTFLAGS := -O2 -ftree-vectorize -flto=$(LTO)
|
2023-05-23 15:21:45 +02:00
|
|
|
LDCXXFLAGS := -pthread -D_FORTIFY_SOURCE=2 -D_GLIBCXX_ASSERTIONS -D_FILE_OFFSET_BITS=64 $(GOODFLAGS) $(ADDFLAGS)
|
2021-08-10 20:20:33 +02:00
|
|
|
override CXXFLAGS += $(REQFLAGS) $(LDCXXFLAGS) $(OPTFLAGS) $(WARNFLAGS)
|
|
|
|
override LDFLAGS += $(LDCXXFLAGS) $(OPTFLAGS) $(WARNFLAGS)
|
2023-05-25 13:53:18 +02:00
|
|
|
INC := $(foreach incdir,$(INCDIRS),-isystem $(incdir)) -I$(SRCDIR)
|
2021-08-22 16:04:01 +02:00
|
|
|
SU_USER := root
|
2021-06-19 14:57:27 +02:00
|
|
|
|
2022-01-12 00:04:26 +01:00
|
|
|
ifdef DEBUG
|
|
|
|
override OPTFLAGS := -O0 -g
|
|
|
|
endif
|
|
|
|
|
2022-02-13 03:51:13 +01:00
|
|
|
SOURCES := $(sort $(shell find $(SRCDIR) -maxdepth 1 -type f -name *.$(SRCEXT)))
|
2021-08-23 22:52:52 +02:00
|
|
|
|
2022-02-13 03:51:13 +01:00
|
|
|
SOURCES += $(sort $(shell find $(SRCDIR)/$(PLATFORM_DIR) -type f -name *.$(SRCEXT)))
|
2021-09-01 21:40:13 +02:00
|
|
|
|
2022-02-14 22:01:21 +01:00
|
|
|
#? Setup percentage progress
|
2022-02-10 08:46:39 +01:00
|
|
|
SOURCE_COUNT := $(words $(SOURCES))
|
|
|
|
|
2021-08-23 22:52:52 +02:00
|
|
|
OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.$(OBJEXT)))
|
2021-06-19 14:57:27 +02:00
|
|
|
|
2022-02-14 22:21:50 +01:00
|
|
|
ifeq ($(shell find $(BUILDDIR) -type f -newermt "$(DATESTAMP)" -name *.o >/dev/null 2>&1; echo $$?),0)
|
2022-02-14 22:19:26 +01:00
|
|
|
ifneq ($(wildcard $(BUILDDIR)/.*),)
|
|
|
|
SKIPPED_SOURCES := $(foreach fname,$(SOURCES),$(shell find $(BUILDDIR) -type f -newer $(fname) -name *.o | grep "$(basename $(notdir $(fname))).o" 2>/dev/null))
|
|
|
|
override SOURCE_COUNT := $(shell expr $(SOURCE_COUNT) - $(words $(SKIPPED_SOURCES)))
|
|
|
|
ifeq ($(SOURCE_COUNT),0)
|
|
|
|
override SOURCE_COUNT = $(words $(SOURCES))
|
|
|
|
endif
|
2022-02-14 22:01:21 +01:00
|
|
|
endif
|
2022-02-14 22:19:26 +01:00
|
|
|
PROGRESS = expr $$(find $(BUILDDIR) -type f -newermt "$(DATESTAMP)" -name *.o | wc -l || echo 1) '*' 90 / $(SOURCE_COUNT) | cut -c1-2
|
|
|
|
else
|
|
|
|
PROGRESS = expr $$(find $(BUILDDIR) -type f -name *.o | wc -l || echo 1) '*' 90 / $(SOURCE_COUNT) | cut -c1-2
|
2022-02-14 22:01:21 +01:00
|
|
|
endif
|
|
|
|
|
2022-02-10 08:46:39 +01:00
|
|
|
P := %%
|
|
|
|
|
2021-08-22 16:04:01 +02:00
|
|
|
#? Default Make
|
2021-09-21 18:57:16 +02:00
|
|
|
all: $(PRE) directories btop
|
2021-08-22 16:04:01 +02:00
|
|
|
|
2021-09-21 18:57:16 +02:00
|
|
|
info:
|
2021-08-22 16:04:01 +02:00
|
|
|
@printf " $(BANNER)\n"
|
2021-09-01 21:40:13 +02:00
|
|
|
@printf "\033[1;92mPLATFORM \033[1;93m?| \033[0m$(PLATFORM)\n"
|
|
|
|
@printf "\033[1;96mARCH \033[1;93m?| \033[0m$(ARCH)\n"
|
|
|
|
@printf "\033[1;93mCXX \033[1;93m?| \033[0m$(CXX) \033[1;93m(\033[97m$(CXX_VERSION)\033[93m)\n"
|
|
|
|
@printf "\033[1;94mTHREADS \033[1;94m:| \033[0m$(THREADS)\n"
|
|
|
|
@printf "\033[1;92mREQFLAGS \033[1;91m!| \033[0m$(REQFLAGS)\n"
|
|
|
|
@printf "\033[1;91mWARNFLAGS \033[1;94m:| \033[0m$(WARNFLAGS)\n"
|
|
|
|
@printf "\033[1;94mOPTFLAGS \033[1;94m:| \033[0m$(OPTFLAGS)\n"
|
|
|
|
@printf "\033[1;93mLDCXXFLAGS \033[1;94m:| \033[0m$(LDCXXFLAGS)\n"
|
2022-10-10 12:29:32 +02:00
|
|
|
@printf "\033[1;95mCXXFLAGS \033[1;92m+| \033[0;37m\$$(\033[92mREQFLAGS\033[37m) \$$(\033[93mLDCXXFLAGS\033[37m) \$$(\033[94mOPTFLAGS\033[37m) \$$(\033[91mWARNFLAGS\033[37m) $(OLDCXX)\n"
|
|
|
|
@printf "\033[1;95mLDFLAGS \033[1;92m+| \033[0;37m\$$(\033[93mLDCXXFLAGS\033[37m) \$$(\033[94mOPTFLAGS\033[37m) \$$(\033[91mWARNFLAGS\033[37m) $(OLDLD)\n"
|
2021-09-01 21:40:13 +02:00
|
|
|
|
2021-09-21 18:57:16 +02:00
|
|
|
info-quiet:
|
2021-11-13 21:19:18 +01:00
|
|
|
@sleep 0.1 2>/dev/null || true
|
2021-09-21 18:57:16 +02:00
|
|
|
@printf "\n\033[1;92mBuilding btop++ \033[91m(\033[97mv$(BTOP_VERSION)\033[91m) \033[93m$(PLATFORM) \033[96m$(ARCH)\033[0m\n"
|
|
|
|
|
2021-08-22 16:04:01 +02:00
|
|
|
help:
|
2021-09-18 02:13:35 +02:00
|
|
|
@printf " $(BANNER)\n"
|
2021-08-22 16:04:01 +02:00
|
|
|
@printf "\033[1;97mbtop++ makefile\033[0m\n"
|
|
|
|
@printf "usage: make [argument]\n\n"
|
|
|
|
@printf "arguments:\n"
|
|
|
|
@printf " all Compile btop (default argument)\n"
|
|
|
|
@printf " clean Remove built objects\n"
|
|
|
|
@printf " distclean Remove built objects and binaries\n"
|
2021-09-18 02:13:35 +02:00
|
|
|
@printf " install Install btop++ to \$$PREFIX ($(PREFIX))\n"
|
|
|
|
@printf " setuid Set installed binary owner/group to \$$SU_USER/\$$SU_GROUP ($(SU_USER)/$(SU_GROUP)) and set SUID bit\n"
|
2021-08-22 16:04:01 +02:00
|
|
|
@printf " uninstall Uninstall btop++ from \$$PREFIX\n"
|
2021-10-04 20:57:15 +02:00
|
|
|
@printf " info Display information about Environment,compiler and linker flags\n"
|
2021-08-22 16:04:01 +02:00
|
|
|
|
|
|
|
#? Make the Directories
|
2021-06-19 14:57:27 +02:00
|
|
|
directories:
|
2022-12-15 17:42:07 +01:00
|
|
|
@$(VERBOSE) || printf "mkdir -p $(TARGETDIR)\n"
|
2021-06-19 14:57:27 +02:00
|
|
|
@mkdir -p $(TARGETDIR)
|
2022-12-15 17:42:07 +01:00
|
|
|
@$(VERBOSE) || printf "mkdir -p $(BUILDDIR)/$(PLATFORM_DIR)\n"
|
2021-09-01 21:40:13 +02:00
|
|
|
@mkdir -p $(BUILDDIR)/$(PLATFORM_DIR)
|
2021-06-19 14:57:27 +02:00
|
|
|
|
2021-08-22 16:04:01 +02:00
|
|
|
#? Clean only Objects
|
2021-06-19 14:57:27 +02:00
|
|
|
clean:
|
2021-08-22 16:04:01 +02:00
|
|
|
@printf "\033[1;91mRemoving: \033[1;97mbuilt objects...\033[0m\n"
|
2021-06-19 14:57:27 +02:00
|
|
|
@rm -rf $(BUILDDIR)
|
|
|
|
|
2021-08-22 16:04:01 +02:00
|
|
|
#? Clean Objects and Binaries
|
2021-06-30 22:28:12 +02:00
|
|
|
distclean: clean
|
2021-08-22 16:04:01 +02:00
|
|
|
@printf "\033[1;91mRemoving: \033[1;97mbuilt binaries...\033[0m\n"
|
2021-06-19 14:57:27 +02:00
|
|
|
@rm -rf $(TARGETDIR)
|
2021-05-06 20:32:03 +02:00
|
|
|
|
|
|
|
install:
|
2021-08-22 16:04:01 +02:00
|
|
|
@printf "\033[1;92mInstalling binary to: \033[1;97m$(DESTDIR)$(PREFIX)/bin/btop\n"
|
2021-05-06 20:32:03 +02:00
|
|
|
@mkdir -p $(DESTDIR)$(PREFIX)/bin
|
2021-07-04 01:18:48 +02:00
|
|
|
@cp -p $(TARGETDIR)/btop $(DESTDIR)$(PREFIX)/bin/btop
|
2021-05-06 20:32:03 +02:00
|
|
|
@chmod 755 $(DESTDIR)$(PREFIX)/bin/btop
|
2021-08-22 16:04:01 +02:00
|
|
|
@printf "\033[1;92mInstalling doc to: \033[1;97m$(DESTDIR)$(PREFIX)/share/btop\n"
|
|
|
|
@mkdir -p $(DESTDIR)$(PREFIX)/share/btop
|
|
|
|
@cp -p README.md $(DESTDIR)$(PREFIX)/share/btop
|
2021-09-21 22:05:03 +02:00
|
|
|
@printf "\033[1;92mInstalling themes to: \033[1;97m$(DESTDIR)$(PREFIX)/share/btop/themes\033[0m\n"
|
2021-08-22 16:04:01 +02:00
|
|
|
@cp -pr themes $(DESTDIR)$(PREFIX)/share/btop
|
2022-05-08 13:37:48 +02:00
|
|
|
@printf "\033[1;92mInstalling desktop entry to: \033[1;97m$(DESTDIR)$(PREFIX)/share/applications/btop.desktop\n"
|
|
|
|
@mkdir -p $(DESTDIR)$(PREFIX)/share/applications/
|
|
|
|
@cp -p btop.desktop $(DESTDIR)$(PREFIX)/share/applications/btop.desktop
|
|
|
|
@printf "\033[1;92mInstalling PNG icon to: \033[1;97m$(DESTDIR)$(PREFIX)/share/icons/hicolor/48x48/apps/btop.png\n"
|
|
|
|
@mkdir -p $(DESTDIR)$(PREFIX)/share/icons/hicolor/48x48/apps
|
|
|
|
@cp -p Img/icon.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/48x48/apps/btop.png
|
|
|
|
@printf "\033[1;92mInstalling SVG icon to: \033[1;97m$(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/btop.svg\n"
|
|
|
|
@mkdir -p $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps
|
|
|
|
@cp -p Img/icon.svg $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/btop.svg
|
2021-05-06 20:32:03 +02:00
|
|
|
|
2022-01-12 00:04:26 +01:00
|
|
|
|
2021-09-01 21:40:13 +02:00
|
|
|
#? Set SUID bit for btop as $SU_USER in $SU_GROUP
|
2021-08-22 16:04:01 +02:00
|
|
|
setuid:
|
|
|
|
@printf "\033[1;97mFile: $(DESTDIR)$(PREFIX)/bin/btop\n"
|
|
|
|
@printf "\033[1;92mSetting owner \033[1;97m$(SU_USER):$(SU_GROUP)\033[0m\n"
|
|
|
|
@chown $(SU_USER):$(SU_GROUP) $(DESTDIR)$(PREFIX)/bin/btop
|
|
|
|
@printf "\033[1;92mSetting SUID bit\033[0m\n"
|
|
|
|
@chmod u+s $(DESTDIR)$(PREFIX)/bin/btop
|
2021-06-30 22:28:12 +02:00
|
|
|
|
2021-05-06 20:32:03 +02:00
|
|
|
uninstall:
|
2021-08-22 16:04:01 +02:00
|
|
|
@printf "\033[1;91mRemoving: \033[1;97m$(DESTDIR)$(PREFIX)/bin/btop\033[0m\n"
|
2021-05-06 20:32:03 +02:00
|
|
|
@rm -rf $(DESTDIR)$(PREFIX)/bin/btop
|
2021-08-22 16:04:01 +02:00
|
|
|
@printf "\033[1;91mRemoving: \033[1;97m$(DESTDIR)$(PREFIX)/share/btop\033[0m\n"
|
2021-05-06 20:32:03 +02:00
|
|
|
@rm -rf $(DESTDIR)$(PREFIX)/share/btop
|
2022-05-08 13:37:48 +02:00
|
|
|
@printf "\033[1;91mRemoving: \033[1;97m$(DESTDIR)$(PREFIX)/share/applications/btop.desktop\033[0m\n"
|
|
|
|
@rm -rf $(DESTDIR)$(PREFIX)/share/applications/btop.desktop
|
|
|
|
@printf "\033[1;91mRemoving: \033[1;97m$(DESTDIR)$(PREFIX)/share/icons/hicolor/48x48/apps/btop.png\033[0m\n"
|
|
|
|
@rm -rf $(DESTDIR)$(PREFIX)/share/icons/hicolor/48x48/apps/btop.png
|
|
|
|
@printf "\033[1;91mRemoving: \033[1;97m$(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/btop.svg\033[0m\n"
|
|
|
|
@rm -rf $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/btop.svg
|
2021-05-06 20:32:03 +02:00
|
|
|
|
2021-08-22 16:04:01 +02:00
|
|
|
#? Pull in dependency info for *existing* .o files
|
2021-06-19 14:57:27 +02:00
|
|
|
-include $(OBJECTS:.$(OBJEXT)=.$(DEPEXT))
|
|
|
|
|
2021-08-22 16:04:01 +02:00
|
|
|
#? Link
|
2021-09-01 21:40:13 +02:00
|
|
|
.ONESHELL:
|
2022-12-15 10:04:33 +01:00
|
|
|
btop: $(OBJECTS) | directories
|
2021-11-13 21:19:18 +01:00
|
|
|
@sleep 0.2 2>/dev/null || true
|
2021-09-01 21:40:13 +02:00
|
|
|
@TSTAMP=$$(date +%s 2>/dev/null || echo "0")
|
2021-09-21 18:57:16 +02:00
|
|
|
@$(QUIET) || printf "\n\033[1;92mLinking and optimizing binary\033[37m...\033[0m\n"
|
2022-10-10 13:02:07 +02:00
|
|
|
@$(VERBOSE) || printf "$(CXX) -o $(TARGETDIR)/btop $^ $(LDFLAGS)\n"
|
2021-09-01 21:40:13 +02:00
|
|
|
@$(CXX) -o $(TARGETDIR)/btop $^ $(LDFLAGS) || exit 1
|
2022-02-10 08:46:39 +01:00
|
|
|
@printf "\033[1;92m100$(P) -> \033[1;37m$(TARGETDIR)/btop \033[100D\033[38C\033[1;93m(\033[1;97m$$(du -ah $(TARGETDIR)/btop | cut -f1)iB\033[1;93m) \033[92m(\033[97m$$($(DATE_CMD) -d @$$(expr $$(date +%s 2>/dev/null || echo "0") - $${TSTAMP} 2>/dev/null) -u +%Mm:%Ss 2>/dev/null | sed 's/^00m://' || echo '')\033[92m)\033[0m\n"
|
2021-11-13 21:19:18 +01:00
|
|
|
@printf "\n\033[1;92mBuild complete in \033[92m(\033[97m$$($(DATE_CMD) -d @$$(expr $$(date +%s 2>/dev/null || echo "0") - $(TIMESTAMP) 2>/dev/null) -u +%Mm:%Ss 2>/dev/null | sed 's/^00m://' || echo "unknown")\033[92m)\033[0m\n"
|
2021-06-19 14:57:27 +02:00
|
|
|
|
2021-08-22 16:04:01 +02:00
|
|
|
#? Compile
|
2021-09-01 21:40:13 +02:00
|
|
|
.ONESHELL:
|
2022-12-15 10:04:33 +01:00
|
|
|
$(BUILDDIR)/%.$(OBJEXT): $(SRCDIR)/%.$(SRCEXT) | directories
|
2021-11-13 21:19:18 +01:00
|
|
|
@sleep 0.3 2>/dev/null || true
|
2021-09-01 21:40:13 +02:00
|
|
|
@TSTAMP=$$(date +%s 2>/dev/null || echo "0")
|
2021-09-21 18:57:16 +02:00
|
|
|
@$(QUIET) || printf "\033[1;97mCompiling $<\033[0m\n"
|
2022-10-10 13:02:07 +02:00
|
|
|
@$(VERBOSE) || printf "$(CXX) $(CXXFLAGS) $(INC) -MMD -c -o $@ $<\n"
|
2021-12-19 23:53:01 +01:00
|
|
|
@$(CXX) $(CXXFLAGS) $(INC) -MMD -c -o $@ $< || exit 1
|
2022-02-10 08:46:39 +01:00
|
|
|
@printf "\033[1;92m$$($(PROGRESS))$(P)\033[10D\033[5C-> \033[1;37m$@ \033[100D\033[38C\033[1;93m(\033[1;97m$$(du -ah $@ | cut -f1)iB\033[1;93m) \033[92m(\033[97m$$($(DATE_CMD) -d @$$(expr $$($(DATE_CMD) +%s 2>/dev/null || echo "0") - $${TSTAMP} 2>/dev/null) -u +%Mm:%Ss 2>/dev/null | sed 's/^00m://' || echo '')\033[92m)\033[0m\n"
|
2021-06-19 14:57:27 +02:00
|
|
|
|
2021-08-22 16:04:01 +02:00
|
|
|
#? Non-File Targets
|
2021-09-01 21:40:13 +02:00
|
|
|
.PHONY: all msg help pre
|