Files
CS361-Computer-Systems-II/p3-dhcps/Makefile
T

60 lines
1.4 KiB
Makefile
Raw Normal View History

2026-05-31 14:34:00 -04:00
#
# Simple Makefile
# Mike Lam, James Madison University, August 2016
#
# This makefile builds a simple application that contains a main module
# (specified by the EXE variable) and a predefined list of additional modules
# (specified by the MODS variable). If there are any external library
# dependencies (e.g., the math library, "-lm"), list them in the LIBS variable.
# If there are any precompiled object files, list them in the OBJS variable.
#
# By default, this makefile will build the project with debugging symbols and
# without optimization. To change this, edit or remove the "-g" and "-O0"
# options in CFLAGS and LDFLAGS accordingly.
#
# By default, this makefile build the application using the GNU C compiler,
# adhering to the C99 standard with all warnings enabled.
# application-specific settings and run target
EXE=dhcps
MODS=dhcp.o format.o main.o server.o
OBJS=port_utils.o
LIBS=-lm
default: build $(EXE)
build:
mkdir build
test: build $(EXE)
make -C tests test
style: $(EXE)
make -C tests style
# compiler/linker settings
CC=gcc
CFLAGS=-g -O0 -Wall --std=gnu99 -pedantic
LDFLAGS=-g -O0 -pthread
# build targets
BUILD=$(addprefix build/, $(MODS))
$(EXE): build/main.o $(BUILD) $(OBJS)
$(CC) $(LDFLAGS) -o $(EXE) $^ $(LIBS)
build/%.o: src/%.c
$(CC) -c $(CFLAGS) -o $@ $<
clean:
rm -rf $(EXE) build
make -C tests clean
.PHONY: default clean