sophuwu.site > bashprompt
makefiles made
sophuwu sophie@sophuwu.site
Sat, 07 Oct 2023 13:48:27 +0200
commit

0abbbbd38b97137fb10ebf2e3892c1f2650c33ab

4 files changed, 64 insertions(+), 0 deletions(-)

jump to
A .gitignore

@@ -0,0 +1,3 @@

+.idea +a.out +build
A CMakeLists.txt

@@ -0,0 +1,6 @@

+cmake_minimum_required(VERSION 3.16) +project(bashprompt) + +set(CMAKE_CXX_STANDARD 17) + +add_executable(bashprompt main.cpp)
A Makefile

@@ -0,0 +1,55 @@

+ifeq ($(shell command -v cmake), ) +COMPCMD = g++ --std=c++17 -o build/bashprompt main.cpp +COMPMSG = g++ +else +ifeq ($(shell command -v ninja), ) +COMPCMD = cmake -S . -B build && cmake --build build +COMPMSG = cmake +else +COMPCMD = cmake -GNinja -S . -B build && cmake --build build +COMPMSG = cmake and ninja +endif +CMAKELISTS = CMakeLists.txt +endif + +ifeq ($(shell command -v strip), ) +STRIPCMD = echo Strip not found. Binary size may be larger than expected. +else +STRIPCMD = strip --strip-all build/bashprompt +endif +ifeq ($(shell command -v upx), ) +UPXCMD = echo UPX not found. Binary size may be larger than expected. +else +UPXCMD = upx --best build/bashprompt > /dev/null +endif + +build: main.cpp $(CMAKELISTS) + @echo Building with $(COMPMSG). + @sleep 2 + @mkdir -p build + @$(COMPCMD) + @echo Compiled successfully. + @echo Program is located at build/bashprompt. + @echo "make small" to reduce binary size. Requires strip and/or upx. + @echo "sudo make install" to install the program into /usr/local/bin. + @echo And "make clean" to remove the build directory. + +clean: build/ + @echo Cleaning up. + @rm -rf build + @echo Cleaned up successfully. + +small: build/bashprompt + @cp build/bashprompt build/bashprompt.bak + @echo Stripping binary. + @$(STRIPCMD) + @$(UPXCMD) + @echo Old Size: && du -sh build/bashprompt.bak + @echo New size: && du -sh build/bashprompt + + +install: build/bashprompt + @echo Installing to /usr/local/bin. + @sudo cp build/bashprompt /usr/local/bin/bashprompt + @echo Installed successfully. + @echo Run "bashprompt" to use the program.