Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ RUN mkdir obj bin logs
ENV COMPAS_ROOT_DIR /app/COMPAS

# Compile COMPAS
RUN cd src && make -f Makefile.docker -j $(nproc)
RUN cd src && make DOCKER_BUILD=1 -j $(nproc)

# Run COMPAS
# CMD [ "python", "src/pythonSubmitDefault.py" ]
141 changes: 48 additions & 93 deletions src/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,29 @@

CPP := g++

# gsl directories
# Build configuration: DOCKER_BUILD=1 for Docker, otherwise local
ifeq ($(DOCKER_BUILD),1)
# Docker-specific settings
ODIR := ../obj
BDIR := ../bin
OPTFLAGS_SPECIFIC := -O3
CXXFLAGS_SPECIFIC :=
LFLAGS_SPECIFIC :=
else
# Local-specific settings
ODIR := obj
BDIR := bin
OPTFLAGS_SPECIFIC := -march=native -O3
CXXFLAGS_SPECIFIC := -g -fnon-call-exceptions -Woverloaded-virtual
LFLAGS_SPECIFIC := -rdynamic
endif

# Common variables for both builds
EXE := $(BDIR)/COMPAS
SOURCES := $(wildcard *.cpp)
OBJS := $(patsubst %.cpp,$(ODIR)/%.o,$(SOURCES))

# GSL, Boost, and HDF5 directories
GSLINCDIR := /include
GSLLIBDIR := /lib

Expand All @@ -20,114 +42,47 @@ BOOSTLIBDIR := /lib
HDF5INCDIR := /usr/include/hdf5/serial
HDF5LIBDIR := /usr/lib/x86_64-linux-gnu/hdf5/serial

EXE := COMPAS

# build COMPAS
ifeq ($(filter clean,$(MAKECMDGOALS)),)
$(info Building $(EXE) with $(CPP))
endif


# Define flags
OPTFLAGS :=
ifneq ($(filter fast,$(MAKECMDGOALS)),)
$(info Adding optimisation flags into the compilation - will take longer to build)
OPTFLAGS += -march=native -O3
ifneq ($(filter fast staticfast,$(MAKECMDGOALS)),)
$(info Adding optimisation flags into the compilation - will take longer to build)
OPTFLAGS += $(OPTFLAGS_SPECIFIC)
endif

ifneq ($(filter staticfast,$(MAKECMDGOALS)),)
$(info Adding optimisation flags into the (static) compilation - will take longer to build)
OPTFLAGS += -march=native -O3
endif


CXXFLAGS := -std=c++17 -g -fnon-call-exceptions -Wall -Woverloaded-virtual -Wno-vla-extension $(OPTFLAGS)
CXXFLAGS := -std=c++17 -Wall $(OPTFLAGS) $(CXXFLAGS_SPECIFIC)
ICFLAGS := -I$(GSLINCDIR) -I$(BOOSTINCDIR) -I$(HDF5INCDIR) -I.

LIBS := -lm -lz -ldl -lpthread
GSLLIBS := -lgsl -lgslcblas
BOOSTLIBS := -lboost_filesystem -lboost_program_options -lboost_system
HDF5LIBS := -lhdf5_hl_cpp -lhdf5_cpp -lhdf5_hl -lhdf5
LFLAGS := -L$(GSLLIBDIR) -L$(BOOSTLIBDIR) -L$(HDF5LIBDIR) -Xlinker -rpath -rdynamic -Xlinker $(BOOSTLIBDIR) $(HDF5LIBS) $(LIBS) $(GSLLIBS) $(BOOSTLIBS)

SOURCES := \
profiling.cpp \
utils.cpp \
yaml.cpp \
vector3d.cpp \
\
Rand.cpp \
Options.cpp \
Log.cpp \
Errors.cpp \
\
BaseStar.cpp \
\
Star.cpp \
\
MainSequence.cpp \
MS_lte_07.cpp \
MS_gt_07.cpp \
\
CH.cpp \
\
GiantBranch.cpp \
HG.cpp \
FGB.cpp \
CHeB.cpp \
EAGB.cpp \
TPAGB.cpp \
\
HeMS.cpp \
HeHG.cpp \
HeGB.cpp \
\
Remnants.cpp \
\
WhiteDwarfs.cpp \
HeWD.cpp \
COWD.cpp \
ONeWD.cpp \
\
NS.cpp \
BH.cpp \
MR.cpp \
\
BinaryConstituentStar.cpp \
BaseBinaryStar.cpp \
BinaryStar.cpp \
\
main.cpp

OBJI := $(SOURCES:.cpp=.o)

# Create the list of header files, and remove
# main.h from this auto-generated list
INCL := $(SOURCES:.cpp=.h)
INCL := $(filter-out main.h,$(INCL))
LFLAGS := -L$(GSLLIBDIR) -L$(BOOSTLIBDIR) -L$(HDF5LIBDIR) -Xlinker -rpath -Xlinker $(BOOSTLIBDIR) $(HDF5LIBS) $(LIBS) $(GSLLIBS) $(BOOSTLIBS) $(LFLAGS_SPECIFIC)

all: $(EXE)
@echo $(OBJI)
.PHONY: all static fast staticfast clean

$(EXE): $(OBJI)
@echo $(SOURCES)
@echo $(OBJI)
$(CPP) $(OBJI) $(LFLAGS) -o $@
# Main targets
all: $(EXE)

static: $(EXE)_STATIC
@echo $(OBJI)

$(EXE)_STATIC: $(OBJI)
@echo $(SOURCES)
@echo $(OBJI)
$(CPP) $(OBJI) $(LFLAGS) -static -o $@
fast: all

staticfast: static

%.o: %.cpp
$(CPP) $(CXXFLAGS) $(ICFLAGS) -c $?
$(EXE): $(OBJS)
@mkdir -p $(BDIR)
$(CPP) $(OBJS) $(LFLAGS) -o $@

.phony: clean static fast staticfast
$(EXE)_STATIC: $(OBJS)
@mkdir -p $(BDIR)
$(CPP) $(OBJS) $(LFLAGS) -static -o $@

fast: $(EXE)
staticfast:$(EXE)_STATIC
# Pattern rule to compile source files into object files
$(ODIR)/%.o: %.cpp
@mkdir -p $(ODIR)
$(CPP) $(CXXFLAGS) $(ICFLAGS) -o $@ -c $<

# Clean-up rule
clean:
rm -f $(OBJI) $(EXE) $(EXE)_STATIC
@echo "Removing generated files..."
@rm -rf $(ODIR) $(BDIR)
137 changes: 0 additions & 137 deletions src/Makefile.docker

This file was deleted.