cs-3516-assignment-1/Makefile

35 lines
887 B
Makefile

CC = gcc
CFLAGS = -Wall -g -c -std=gnu99
LDFLAGS = -lm
BUILD_DIR = build
COMMON_OBJ_FILES = $(patsubst %.c,$(BUILD_DIR)/%.o,$(wildcard common/*.c))
CLIENT_OBJ_FILES = $(patsubst %.c,$(BUILD_DIR)/%.o,$(wildcard client/*.c))
SERVER_OBJ_FILES = $(patsubst %.c,$(BUILD_DIR)/%.o,$(wildcard server/*.c))
.PHONY: clean
clean:
rm -rf $(BUILD_DIR)
rm -f http_client
http_client: $(BUILD_DIR) $(COMMON_OBJ_FILES) $(CLIENT_OBJ_FILES)
$(CC) -o $@ $(LDFLAGS) $(filter-out $(BUILD_DIR),$^)
http_server: $(BUILD_DIR) $(COMMON_OBJ_FILES) $(SERVER_OBJ_FILES)
$(CC) -o $@ $(LDFLAGS) $(filter-out $(BUILD_DIR),$^)
$(BUILD_DIR)/%.o: %.c
$(CC) $(CFLAGS) -o $@ $<
$(BUILD_DIR)/server:
mkdir -p $(BUILD_DIR)/server
$(BUILD_DIR)/client:
mkdir -p $(BUILD_DIR)/client
$(BUILD_DIR)/common:
mkdir -p $(BUILD_DIR)/common
$(BUILD_DIR): $(BUILD_DIR)/client $(BUILD_DIR)/common
-mkdir -p $(BUILD_DIR)