From 1318c4983f830693cc614921b68f35ff46646f4a Mon Sep 17 00:00:00 2001 From: Přemysl Eric Janouch
Date: Fri, 23 Oct 2020 08:16:36 +0200 Subject: Makefile: make portable, support static linking We can happily stick to POSIX and the usual variable names, with the following exceptions: - pkg-config(1) is used to find libraries and compile flags - the new "static" target uses non-standard compiler and linker flags, though it's not the default target sdn is predestined for wild distribution, even the dynamically linked libc is rather suboptimal. --- Makefile | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 84ead83..e44d511 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,19 @@ +.POSIX: SHELL = /bin/sh -CXXFLAGS = -g -std=c++14 -Wall -Wextra -pedantic -static-libstdc++ - -all: sdn -%: %.cpp CMakeLists.txt - $(CXX) $(CXXFLAGS) $< -o $@ `pkg-config --libs --cflags ncursesw` -lacl \ - `sed -ne 's/^project (\([^ )]*\).*/-DPROJECT_NAME="\1"/p' \ +CXXFLAGS = -g -std=c++14 -Wall -Wextra -pedantic +CPPFLAGS = `sed -ne 's/^project (\([^ )]*\).*/-DPROJECT_NAME="\1"/p' \ -e 's/^set (version \([^ )]*\).*/-DPROJECT_VERSION="\1"/p' CMakeLists.txt` + +sdn: sdn.cpp CMakeLists.txt + $(CXX) $(CXXFLAGS) $(CPPFLAGS) $< -o sdn \ + -lacl `pkg-config --libs --cflags ncursesw` +static: sdn.cpp CMakeLists.txt + $(CXX) $(CXXFLAGS) $(CPPFLAGS) $< -o sdn \ + -static-libstdc++ \ + -Wl,--start-group,-Bstatic \ + -lacl `pkg-config --static --libs --cflags ncursesw` \ + -Wl,--end-group,-Bdynamic clean: rm -f sdn -.PHONY: all clean +.PHONY: static clean -- cgit v1.2.3-70-g09d2