init gmake
This commit is contained in:
parent
9d31afc224
commit
474b232b3a
2 changed files with 72 additions and 0 deletions
49
Makefile
Normal file
49
Makefile
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
.DEFAULT_GOAL := all
|
||||
|
||||
include config.mk
|
||||
|
||||
# === BUILD ENVIRONMENT ===
|
||||
SRC := src
|
||||
BIN := bin
|
||||
BUILD := build
|
||||
|
||||
# === MACRO DEFINITIONS ===
|
||||
define objpath
|
||||
$(addprefix $(BUILD)/,
|
||||
$(addsuffix .o,
|
||||
$(basename $(1))))
|
||||
endef
|
||||
define mkobj
|
||||
$(foreach DEP, $?,
|
||||
mkdir -p $(dir $(call objpath, $(DEP)))
|
||||
$(CC) $(CFLAGS) $1 -o $(call objpath, $(DEP)) -c $(DEP))
|
||||
|
||||
$(LD) -r $(LDFLAGS) -o $@ $(call objpath, $?)
|
||||
endef
|
||||
|
||||
# === BUILD TARGETS ===
|
||||
all: tests
|
||||
|
||||
.PHONY: tests
|
||||
tests: $(BIN) $(BIN)/ct_test
|
||||
|
||||
$(BIN)/ct_test: $(BUILD) $(addprefix $(BUILD)/, ct_test.o term.o surface.o)
|
||||
$(LD) -o $@ $(filter %.o, $^)
|
||||
|
||||
$(BUILD)/%.o: $(SRC)/%.c
|
||||
$(CC) $(CFLAGS) -o $@ -c $^
|
||||
|
||||
$(BUILD) $(BIN):
|
||||
mkdir -p $@
|
||||
|
||||
# === DEVELOPMENT TARGETS ===
|
||||
.PHONY: debug
|
||||
debug:
|
||||
$(MAKE) all \
|
||||
CFLAGS="$(CFLAGS) $(CDEBUG)" \
|
||||
CLDFLAGS="$(LDFLAGS) $(LDDEBUG)"
|
||||
|
||||
# === UTILITY TARGETS ===
|
||||
.PHONY: clean
|
||||
clean:
|
||||
- rm -rf $(BUILD) $(BIN) vgcore.* 2>/dev/null
|
||||
23
config.mk
Normal file
23
config.mk
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# -*- make -*-
|
||||
|
||||
# === C Compiler Configuration ===
|
||||
CC := gcc -xc -std=gnu23
|
||||
CFLAGS := -Wall -Wextra -O
|
||||
CDEBUG := -g
|
||||
|
||||
# === Linker Configuration ===
|
||||
LD := ld
|
||||
LDFLAGS :=
|
||||
|
||||
# === GNU Make Configuration ===
|
||||
# GMAKE_JOBS defaults to the number of available logical processors
|
||||
GMAKE_JOBS := $(shell nproc)
|
||||
MAKEFLAGS := --jobs=$(GMAKE_JOBS) --output-sync=target
|
||||
|
||||
# === Platform Configuration ===
|
||||
ifeq ($(OS),Windows_NT) # Windows_NT -> XP, 2000, 7, Vista, 10...
|
||||
PLATFORM := WINDOWS_NT
|
||||
else
|
||||
PLATFORM := $(shell uname)
|
||||
endif
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue