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.
This commit is contained in:
parent
c503954f44
commit
1318c4983f
21
Makefile
21
Makefile
|
@ -1,12 +1,19 @@
|
||||||
|
.POSIX:
|
||||||
SHELL = /bin/sh
|
SHELL = /bin/sh
|
||||||
CXXFLAGS = -g -std=c++14 -Wall -Wextra -pedantic -static-libstdc++
|
CXXFLAGS = -g -std=c++14 -Wall -Wextra -pedantic
|
||||||
|
CPPFLAGS = `sed -ne 's/^project (\([^ )]*\).*/-DPROJECT_NAME="\1"/p' \
|
||||||
all: sdn
|
|
||||||
%: %.cpp CMakeLists.txt
|
|
||||||
$(CXX) $(CXXFLAGS) $< -o $@ `pkg-config --libs --cflags ncursesw` -lacl \
|
|
||||||
`sed -ne 's/^project (\([^ )]*\).*/-DPROJECT_NAME="\1"/p' \
|
|
||||||
-e 's/^set (version \([^ )]*\).*/-DPROJECT_VERSION="\1"/p' CMakeLists.txt`
|
-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:
|
clean:
|
||||||
rm -f sdn
|
rm -f sdn
|
||||||
|
|
||||||
.PHONY: all clean
|
.PHONY: static clean
|
||||||
|
|
Loading…
Reference in New Issue