diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..8043a1ad22da8ca94ed146a15e6973a5e9881d71 --- /dev/null +++ b/Makefile @@ -0,0 +1,65 @@ +CFLAGS += -march=native -masm=intel -g -Og -fsanitize=address,signed-integer-overflow,undefined -pedantic -flto -Wall -Wextra -Werror -Wduplicated-cond -Wduplicated-branches -Wlogical-op -Wrestrict -Wnull-dereference -Wdouble-promotion -Wshadow -Wformat=2 -Wfloat-equal -Wundef -Wpointer-arith -Wcast-align -Wstrict-overflow=5 -Wwrite-strings -Wswitch-default -Wswitch-enum -Wconversion -Wunreachable-code -Winit-self -fno-strict-aliasing -Wno-unknown-warning-option +CXXFLAGS += ${CFLAGS} -std=c++11 -std=c++17 -Wuseless-cast -Weffc++ +LFLAGS += -flto +DEPFLAGS = -MT $@ -MMD -MP -MF $(patsubst ${OBJDIR}/%.o,${DEPDIR}/%.d,$@) + +CC ?= gcc +CXX ?= g++ + +MKDIR ?= mkdir -p + +INSTALL ?= install +prefix ?= /usr + +SRCDIR ?= src +APPDIR ?= ${SRCDIR}/app + +BINDIR ?= bin +DEPDIR ?= dep +OBJDIR ?= obj + +SOURCES := $(wildcard ${SRCDIR}/*.cpp) $(wildcard ${SRCDIR}/*.c) $(wildcard ${SRCDIR}/**/*.cpp) $(wildcard ${SRCDIR}/**/*.c) + +SRCOBJS := $(patsubst ${SRCDIR}/%.c,${OBJDIR}/%.o,$(patsubst ${SRCDIR}/%.cpp,${OBJDIR}/%.o,${SOURCES})) + +APPOBJS := $(filter $(patsubst ${SRCDIR}/%,${OBJDIR}/%,${APPDIR})/%,${SRCOBJS}) +OBJECTS := $(filter-out $(patsubst ${SRCDIR}/%,${OBJDIR}/%,${APPDIR})/%,${SRCOBJS}) + +TARGETS := $(patsubst $(patsubst ${SRCDIR}/%,${OBJDIR}/%,${APPDIR})/%.o,${BINDIR}/%,${APPOBJS}) + +CFLAGS += -I${SRCDIR} + +MAKEFLAGS += --no-builtin-rules +.SUFFIXES: + +.PHONY: all clean +all: ${TARGETS} + +${BINDIR}/%: $(patsubst ${SRCDIR}/%,${OBJDIR}/%,${APPDIR})/%.o ${OBJECTS} + ${MKDIR} ${@D} && ${CXX} ${CXXFLAGS} ${LFLAGS} -o $@ $< ${OBJECTS} && touch $@ + +${OBJDIR}/%.o: ${SRCDIR}/%.cpp ${DEPDIR}/%.d + ${MKDIR} ${@D} && ${MKDIR} $(patsubst ${OBJDIR}/%,${DEPDIR}/%,${@D}) && ${CXX} ${CXXFLAGS} ${DEPFLAGS} ${LFLAGS} -o $@ -c $< && touch $@ + +${OBJDIR}/%.o: ${SRCDIR}/%.c ${DEPDIR}/%.d + ${MKDIR} ${@D} && ${MKDIR} $(patsubst ${OBJDIR}/%,${DEPDIR}/%,${@D}) && ${CC} ${CFLAGS} ${DEPFLAGS} ${LFLAGS} -o $@ -c $< && touch $@ + + +${DEPDIR}/%.d: ; +.PRECIOUS: ${DEPDIR}/%.d ${OBJDIR}/%.o + +include $(wildcard $(patsubst ${OBJDIR}/%.o,${DEPDIR}/%.d,${SRCOBJS})) + +clean: + rm -rf ${BINDIR} + rm -rf ${OBJDIR} + rm -rf ${DEPDIR} + +style: + -astyle --mode=c --options=none --recursive -s4 -f -j -k1 -W3 -p -U -H ${SRCDIR}/*.c + -astyle --mode=c --options=none --recursive -s4 -f -j -k1 -W3 -p -U -H ${SRCDIR}/*.h + -astyle --mode=c --options=none --recursive -s4 -f -j -k1 -W3 -p -U -H ${SRCDIR}/*.cpp + -astyle --mode=c --options=none --recursive -s4 -f -j -k1 -W3 -p -U -H ${SRCDIR}/*.hpp + +install: + ${INSTALL} -D -o root -g root -m 700 -t ${DESTDIR}${prefix}/bin ${TARGETS} diff --git a/src/app/rmrf.cpp b/src/app/rmrf.cpp new file mode 100644 index 0000000000000000000000000000000000000000..33c14ce1d76c0abf607ca769d1c3f913b0a7e421 --- /dev/null +++ b/src/app/rmrf.cpp @@ -0,0 +1,3 @@ +int main() { + return 0; +}