Skip to content
Merged

. #1

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
214 changes: 214 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,214 @@
# Compiler
CXX := c++

# Directories
SRCDIR := src
INCDIR := include
BUILDDIR := build
TARGETDIR := bin

# Target executable name
TARGET := webserv

# Source files
SRCEXT := cpp
SOURCES := $(shell find $(SRCDIR) -type f -name *.$(SRCEXT))

# Object files
OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.o))

# Includes
INC := -I$(INCDIR)

# Flags
CXXFLAGS = -std=c++98 -Wall -Wextra -Werror

# Final executable
EXECUTABLE := $(TARGETDIR)/$(TARGET)

# Default make target
all: directories $(EXECUTABLE)

# Ensure build directories exist
directories:
@mkdir -p $(BUILDDIR)
@mkdir -p $(TARGETDIR)

# Rule for linking object files into executable
$(EXECUTABLE): $(OBJECTS)
$(CXX) $(LDFLAGS) $^ -o $(EXECUTABLE)

# Rule for compiling source files into object files
$(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT)
$(CXX) $(CXXFLAGS) $(INC) -c -o $@ $<

# Clean build artifacts
clean:
@rm -rf $(BUILDDIR)
@rm -rf $(TARGETDIR)

# Run the executable
run: clean all
@./$(EXECUTABLE) $(ARGS)

fclean: clean
@rm -rf $(TARGETDIR)/$(TARGET)

re: fclean all

test:
@ echo "\nRunning test with no argument"
@./$(EXECUTABLE)
@ echo "\nRunning test with no file argument"
@./$(EXECUTABLE) "nan"
@ echo "\nRunning test with a valid file argument"
@./$(EXECUTABLE) "data.csv"

val: clean all
@valgrind ./$(EXECUTABLE) $(ARGS)

# Phony targets
.PHONY: all clean run
# Compiler
CXX := c++

# Directories
SRCDIR := src
INCDIR := include
BUILDDIR := build
TARGETDIR := bin

# Target executable name
TARGET := btc

# Source files
SRCEXT := cpp
SOURCES := $(shell find $(SRCDIR) -type f -name *.$(SRCEXT))

# Object files
OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.o))

# Includes
INC := -I$(INCDIR)

# Flags
CXXFLAGS = -std=c++98 -Wall -Wextra -Werror

# Final executable
EXECUTABLE := $(TARGETDIR)/$(TARGET)

# Default make target
all: directories $(EXECUTABLE)

# Ensure build directories exist
directories:
@mkdir -p $(BUILDDIR)
@mkdir -p $(TARGETDIR)

# Rule for linking object files into executable
$(EXECUTABLE): $(OBJECTS)
$(CXX) $(LDFLAGS) $^ -o $(EXECUTABLE)

# Rule for compiling source files into object files
$(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT)
$(CXX) $(CXXFLAGS) $(INC) -c -o $@ $<

# Clean build artifacts
clean:
@rm -rf $(BUILDDIR)
@rm -rf $(TARGETDIR)

# Run the executable
run: clean all
@./$(EXECUTABLE) $(ARGS)

fclean: clean
@rm -rf $(TARGETDIR)/$(TARGET)

re: fclean all

test:
@ echo "\nRunning test with no argument"
@./$(EXECUTABLE)
@ echo "\nRunning test with no file argument"
@./$(EXECUTABLE) "nan"
@ echo "\nRunning test with a valid file argument"
@./$(EXECUTABLE) "data.csv"

val: clean all
@valgrind ./$(EXECUTABLE) $(ARGS)

# Phony targets
.PHONY: all clean run
# Compiler
CXX := c++

# Directories
SRCDIR := src
INCDIR := include
BUILDDIR := build
TARGETDIR := bin

# Target executable name
TARGET := btc

# Source files
SRCEXT := cpp
SOURCES := $(shell find $(SRCDIR) -type f -name *.$(SRCEXT))

# Object files
OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.o))

# Includes
INC := -I$(INCDIR)

# Flags
CXXFLAGS = -std=c++98 -Wall -Wextra -Werror

# Final executable
EXECUTABLE := $(TARGETDIR)/$(TARGET)

# Default make target
all: directories $(EXECUTABLE)

# Ensure build directories exist
directories:
@mkdir -p $(BUILDDIR)
@mkdir -p $(TARGETDIR)

# Rule for linking object files into executable
$(EXECUTABLE): $(OBJECTS)
$(CXX) $(LDFLAGS) $^ -o $(EXECUTABLE)

# Rule for compiling source files into object files
$(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT)
$(CXX) $(CXXFLAGS) $(INC) -c -o $@ $<

# Clean build artifacts
clean:
@rm -rf $(BUILDDIR)
@rm -rf $(TARGETDIR)

# Run the executable
run: clean all
@./$(EXECUTABLE) $(ARGS)

fclean: clean
@rm -rf $(TARGETDIR)/$(TARGET)

re: fclean all

test:
@ echo "\nRunning test with no argument"
@./$(EXECUTABLE)
@ echo "\nRunning test with no file argument"
@./$(EXECUTABLE) "nan"
@ echo "\nRunning test with a valid file argument"
@./$(EXECUTABLE) "data.csv"

val: clean all
@valgrind ./$(EXECUTABLE) $(ARGS)

# Phony targets
.PHONY: all clean run

Empty file added include/.gitkeep
Empty file.
Empty file added src/.gitkeep
Empty file.