78 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Makefile
		
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Makefile
		
	
	
	
#
 | 
						|
# Makefile
 | 
						|
# Ilja Kartašov, 2019-03-02 17:32
 | 
						|
#
 | 
						|
.POSIX:
 | 
						|
 | 
						|
# Project directories
 | 
						|
SRC_DIR ?= src
 | 
						|
SDK_DIR ?= sdk
 | 
						|
CSTUFF_DIR ?= cStuff
 | 
						|
OUT_DIR ?= ./build
 | 
						|
 | 
						|
# Project definition
 | 
						|
include project.mk
 | 
						|
 | 
						|
# CFLAGS
 | 
						|
 | 
						|
CFLAGS := \
 | 
						|
  $(PROJECT_INCLUDES) \
 | 
						|
  -std=c99 \
 | 
						|
  -pedantic \
 | 
						|
  -Wall \
 | 
						|
  -Wmissing-prototypes \
 | 
						|
  -Wstrict-prototypes \
 | 
						|
  -Wold-style-definition \
 | 
						|
  -O2 \
 | 
						|
  -s \
 | 
						|
  -fvisibility=hidden \
 | 
						|
  -DVERSION_MAJOR=$(PROJECT_VERSION_MAJOR) \
 | 
						|
  -DVERSION_MINOR=$(PROJECT_VERSION_MINOR) \
 | 
						|
  -DVERSION_TWEAK=$(PROJECT_VERSION_TWEAK) \
 | 
						|
  -DVERSION_LABEL=$(PROJECT_VERSION_LABEL) \
 | 
						|
  $(PROJECT_CFLAGS) \
 | 
						|
  $(CFLAGS) \
 | 
						|
 | 
						|
 | 
						|
LDFLAGS := \
 | 
						|
  $(PROJECT_LIBRARIES) \
 | 
						|
  $(LDFLAGS) \
 | 
						|
  $(PROJECT_LDFLAGS) \
 | 
						|
 | 
						|
 | 
						|
SOURCE_LIST := $(wildcard $(PROJECT_SOURCES))
 | 
						|
OBJECT_FILES := $(addprefix $(OUT_DIR)/o_, ${SOURCE_LIST:.c=.o})
 | 
						|
 | 
						|
 | 
						|
project: dirs $(OBJECT_FILES)
 | 
						|
	$(info linking target: $@)
 | 
						|
	@$(CC) -o $(OUT_DIR)/$(PROJECT_NAME) $(OBJECT_FILES) $(LDFLAGS)
 | 
						|
	$(info done: $@)
 | 
						|
 | 
						|
 | 
						|
build/o_%.o: %.c
 | 
						|
	$(info compiling file: $<)
 | 
						|
	@$(CC) $(CFLAGS) -c $< -o $@
 | 
						|
 | 
						|
dirs:
 | 
						|
	$(info preparing: build folders)
 | 
						|
	@mkdir -p $(OUT_DIR)/o_$(SRC_DIR)
 | 
						|
	@mkdir -p $(OUT_DIR)/o_$(CSTUFF_DIR)
 | 
						|
	@mkdir -p $(OUT_DIR)/o_$(SDK_DIR)/components
 | 
						|
	@mkdir -p $(OUT_DIR)/o_$(SDK_DIR)/mods
 | 
						|
 | 
						|
 | 
						|
clean:
 | 
						|
	$(info cleaning: build files)
 | 
						|
	@rm -Rf $(OUT_DIR)
 | 
						|
	@rm -Rf ./vgcore.*
 | 
						|
 | 
						|
 | 
						|
all: project
 | 
						|
 | 
						|
default: project
 | 
						|
.PHONY:  all dirs clean
 | 
						|
 | 
						|
# vim:ft=make
 | 
						|
#
 |