From cc6a6e4a9e5ae0c24aad0dc7c577a743808452c6 Mon Sep 17 00:00:00 2001 From: Cory Date: Sun, 17 Dec 2023 13:32:36 +0100 Subject: [PATCH] Update Makefile and .clangd --- .clangd | 2 +- Makefile | 45 ++++++++++++++++++++++++++++++++++----------- 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/.clangd b/.clangd index 3c44a56..46f80c6 100644 --- a/.clangd +++ b/.clangd @@ -1,2 +1,2 @@ CompileFlags: - Add: [-I../include] + Add: [-I../include, -std=c++11] diff --git a/Makefile b/Makefile index 288e1c4..c3b0dc3 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ # The compiler -CC=mpicxx +CC=g++ # Flags CFLAGS=-Wall -larmadillo -std=c++11 -O3 -fopenmp @@ -26,19 +26,26 @@ LATEXDIR=./latex # Source directories SRC=./src +LIB=./lib INCLUDE=./include # Source files and object file locations -SRCFILES=utils.cpp testlib.cpp -SRCS=$(addprefix $(SRC)/, $(SRCS)) -BINOBJS=$(addprefix $(BINOBJDIR)/, $(SRCFILES:.cpp=.o)) -PROFOBJS=$(addprefix $(PROFOBJDIR)/, $(SRCFILES:.cpp=.o)) -DEBUGOBJS=$(addprefix $(DEBUGOBJDIR)/, $(SRCFILES:.cpp=.o)) +#SRCFILES=utils.cpp testlib.cpp +#SRCS=$(addprefix $(SRC)/, $(SRCS)) +#BINOBJS=$(addprefix $(BINOBJDIR)/, $(SRCFILES:.cpp=.o)) +#PROFOBJS=$(addprefix $(PROFOBJDIR)/, $(SRCFILES:.cpp=.o)) +#DEBUGOBJS=$(addprefix $(DEBUGOBJDIR)/, $(SRCFILES:.cpp=.o)) + +# Lib files +LIBSRCS=$(notdir $(shell find $(LIB) -type f)) +LIBBINOBJS=$(addprefix $(BINOBJDIR)/, $(LIBSRCS:.cpp=.o)) +LIBPROFOBJS=$(addprefix $(PROFOBJDIR)/, $(LIBSRCS:.cpp=.o)) +LIBDEBUGOBJS=$(addprefix $(DEBUGOBJDIR)/, $(LIBSRCS:.cpp=.o)) # Location for Binaries -EXEC=main test_suite +EXEC=$(basename $(notdir $(shell find $(SRC) -type f))) BINS=$(addprefix $(BINDIR)/, $(EXEC)) -PROFBINS=$(PROFDIR)/phase_transition_mpi +PROFBINS=$(addprefix $(PROFDIR)/, $(EXEC)) DEBUGBINS=$(addprefix $(DEBUGDIR)/, $(EXEC)) # List phony targets @@ -56,23 +63,24 @@ latex: $(MAKE) -C $(LATEXDIR) # Rule for binaries -$(BINDIR)/%: $(BINOBJDIR)/%.o $(BINOBJS) +$(BINDIR)/%: $(BINOBJDIR)/%.o $(LIBBINOBJS) $(MKDIR) $(BINDIR) $(CC) $^ -o $@ $(CFLAGS) -I$(INCLUDE) # Rule for profiling binaries -$(PROFDIR)/%: $(PROFOBJDIR)/%.o $(PROFOBJS) +$(PROFDIR)/%: $(PROFOBJDIR)/%.o $(LIBPROFOBJS) $(MKDIR) $(PROFDIR) $(INSTRUMENT) $(CC) $^ -o $@ $(CFLAGS) $(PROFFLAGS) -I$(INCLUDE) # Rule for debug binaries -$(DEBUGDIR)/%: $(DEBUGOBJDIR)/%.o $(DEBUGOBJS) +$(DEBUGDIR)/%: $(DEBUGOBJDIR)/%.o $(LIBDEBUGOBJS) $(MKDIR) $(DEBUGDIR) $(CC) $^ -o $@ $(CFLAGS) $(DBGFLAGS) -I$(INCLUDE) # Rule for object files $(BINOBJDIR)/%.o: $(SRC)/%.cpp $(MKDIR) $(BINOBJDIR) + echo $(LIBBINOBJS) $(CC) -c $^ -o $@ $(CFLAGS) -I$(INCLUDE) # Rule for instrumented object files @@ -85,6 +93,21 @@ $(DEBUGOBJDIR)/%.o: $(SRC)/%.cpp $(MKDIR) $(DEBUGOBJDIR) $(CC) -c $^ -o $@ $(CFLAGS) $(DBGFLAGS) -I$(INCLUDE) +# Rule for object files +$(BINOBJDIR)/%.o: $(LIB)/%.cpp + $(MKDIR) $(BINOBJDIR) + $(CC) -c $^ -o $@ $(CFLAGS) -I$(INCLUDE) + +# Rule for instrumented object files +$(PROFOBJDIR)/%.o: $(LIB)/%.cpp + $(MKDIR) $(PROFOBJDIR) + $(INSTRUMENT) $(CC) -c $^ -o $@ $(CFLAGS) $(PROFFLAGS) -I$(INCLUDE) + +# Rule for debug object files +$(DEBUGOBJDIR)/%.o: $(LIB)/%.cpp + $(MKDIR) $(DEBUGOBJDIR) + $(CC) -c $^ -o $@ $(CFLAGS) $(DBGFLAGS) -I$(INCLUDE) + # Cleaning clean: objclean binclean latexclean