Add support for staged install

This is a general refactor of the makefile with the introduction of
staged install.

Is now possible to install with make install DESTDIR=build
and it will build the default xlxd install structure under the build
folder.

This if extremely usefull for building deb packages without using root
user and without interfeering with the host xlxd installation.

It also define some standard make directory variables, all defaulted
to /xlxd, to better customize the software at compile time.

make staged install:
https://www.gnu.org/prep/standards/html_node/DESTDIR.html
make directory variables:
https://www.gnu.org/software/make/manual/html_node/Directory-Variables.html
pull/221/head
Alessio Caiazza 3 years ago
parent adec5c8d14
commit 9a61fc1618

@ -1,33 +1,48 @@
CC=g++ ALL_CXXFLAGS=-std=c++11 -pthread $(CXXFLAGS)
CFLAGS=-c -std=c++11 -pthread
LDFLAGS=-std=c++11 -pthread
SOURCES=$(wildcard *.cpp) SOURCES=$(wildcard *.cpp)
OBJECTS=$(SOURCES:.cpp=.o) OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=xlxd EXECUTABLE=xlxd
all: $(SOURCES) $(EXECUTABLE) # variables for staged installation
# directory variables - https://www.gnu.org/software/make/manual/html_node/Directory-Variables.html
# DESTDIR - https://www.gnu.org/software/make/manual/html_node/DESTDIR.html
# ComamndVariables - #https://www.gnu.org/software/make/manual/html_node/Command-Variables.html
prefix=/usr/local
exec_prefix=$(prefix)
# by default install under /xlxd/ - it should be $(exec_dir)/sbin
sbin_dir=/xlxd
# by default install config under /xlxd/ - it should be $(prefix)/etc
sysconf_dir=/xlxd
INSTALL=install
INSTALL_PROGRAM=$(INSTALL)
INSTALL_DATA=${INSTALL} -m 644
all: $(OBJECTS) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS) $(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o $@ $(CXX) $(CPPFLAGS) $(ALL_CXXFLAGS) $(OBJECTS) -o $@
.cpp.o: .cpp.o: %.h
$(CC) $(CFLAGS) $< -o $@ $(CXX) -c $(CPPFLAGS) $(ALL_CXXFLAGS) $<
.PHONY: clean
clean: clean:
$(RM) $(EXECUTABLE) *.o $(RM) $(EXECUTABLE) *.o
.PHONY: install
install: install:
mkdir -p /xlxd $(INSTALL) -d $(DESTDIR)$(sbin_dir)
cp -f $(EXECUTABLE) /xlxd/ $(INSTALL_PROGRAM) $(EXECUTABLE) $(DESTDIR)$(sbin_dir)/$(EXECUTABLE)
[ -f /xlxd/xlxd.blacklist ] && \ $(INSTALL) -d $(DESTDIR)$(sysconf_dir)
cp ../config/xlxd.blacklist /xlxd/xlxd.blacklist.sample || \ [ -f $(DESTDIR)$(sysconf_dir)/xlxd.blacklist ] && \
cp ../config/xlxd.blacklist /xlxd/xlxd.blacklist $(INSTALL_DATA) ../config/xlxd.blacklist $(DESTDIR)$(sysconf_dir)/xlxd.blacklist.sample || \
[ -f /xlxd/xlxd.whitelist ] && \ $(INSTALL_DATA) ../config/xlxd.blacklist $(DESTDIR)$(sysconf_dir)/xlxd.blacklist
cp ../config/xlxd.whitelist /xlxd/xlxd.whitelist.sample || \ [ -f $(DESTDIR)$(sysconf_dir)/xlxd.whitelist ] && \
cp ../config/xlxd.whitelist /xlxd/xlxd.whitelist $(INSTALL_DATA) ../config/xlxd.whitelist $(DESTDIR)$(sysconf_dir)/xlxd.whitelist.sample || \
[ -f /xlxd/xlxd.interlink ] && \ $(INSTALL_DATA) ../config/xlxd.whitelist $(DESTDIR)$(sysconf_dir)/xlxd.whitelist
cp ../config/xlxd.interlink /xlxd/xlxd.interlink.sample || \ [ -f $(DESTDIR)$(sysconf_dir)/xlxd.interlink ] && \
cp ../config/xlxd.interlink /xlxd/xlxd.interlink $(INSTALL_DATA) ../config/xlxd.interlink $(DESTDIR)$(sysconf_dir)/xlxd.interlink.sample || \
[ -f /xlxd/xlxd.terminal ] && \ $(INSTALL_DATA) ../config/xlxd.interlink $(DESTDIR)$(sysconf_dir)/xlxd.interlink
cp ../config/xlxd.terminal /xlxd/xlxd.terminal.sample || \ [ -f $(DESTDIR)$(sysconf_dir)/xlxd.terminal ] && \
cp ../config/xlxd.terminal /xlxd/xlxd.terminal $(INSTALL_DATA) ../config/xlxd.terminal $(DESTDIR)$(sysconf_dir)/xlxd.terminal.sample || \
$(INSTALL_DATA) ../config/xlxd.terminal $(DESTDIR)$(sysconf_dir)/xlxd.terminal

Loading…
Cancel
Save

Powered by TurnKey Linux.