#==============================================================================#
#    SMITH            (  //
#    Makefile          ( )/
#    by salade         )(/
#   ________________  ( /)
#  ()__)____________)))))   :^}
#==============================================================================#
# smith c/go makefile
# @version 0.1
#
default: all

#==============================================================================#
#--------------------------------- SHELL --------------------------------------#
#==============================================================================#
SHELL			:= /bin/sh
OS				 = $(shell uname)

#==============================================================================#
#------------------------------ DIRECTORIES -----------------------------------#
#==============================================================================#
C_DIR = csrc/
SRCS_DIR		 = ${C_DIR}
INCS_DIR		 = ${C_DIR}
OBJS_DIR		 = ${C_DIR}obj/
OUT_DIR			 = ./

#==============================================================================#
#------------------------------ FILES -----------------------------------------#
#==============================================================================#
SRCS_NAME = smith
#------------------------------------------------------------------------------#
SRCS			 = $(addprefix ${SRCS_DIR}, $(addsuffix .c, ${SRCS_NAME}))
#------------------------------------------------------------------------------#
INCS_NAME = smith
#------------------------------------------------------------------------------#
INCS			 = $(addprefix ${INCS_DIR}, $(addsuffix .h, ${INCS_NAME}))
#------------------------------------------------------------------------------#
OBJS			 = $(patsubst ${SRCS_DIR}%.c,${OBJS_DIR}%.o,${SRCS})

#==============================================================================#
#------------------------------ TARGETS ---------------------------------------#
#==============================================================================#
C_NAME = libsmith.a
NAME = smith
CC = clang
GO = go
GO_DIR = gosrc/
#------------------------------------------------------------------------------#
CFLAGS 			= -O2
CFLAGS 			+= -Wall -Werror -Wextra -pedantic
CFLAGS 			+= -finline -pipe

#==============================================================================#
#------------------------------ C TARGET --------------------------------------#
#==============================================================================#
LDFLAGS = -O2 -pipe -pedantic
#------------------------------------------------------------------------------#
${OBJS_DIR}%.o:	${SRCS_DIR}%.c ${INCS}
	${CC} -c ${CFLAGS} ${CDEFS} -o $@ $<
#------------------------------------------------------------------------------#
${OBJS_DIR}:
	mkdir -p ${OBJS_DIR}
#------------------------------------------------------------------------------#
${C_NAME}: ${OBJS_DIR} ${OBJS} ${INCS}
	ar rcs ${OUT_DIR}${C_NAME} ${OBJS}

#==============================================================================#
#------------------------------ ALL -------------------------------------------#
#==============================================================================#
#------------------------------------------------------------------------------#
all: ${C_NAME}
	go build -o ./smith gosrc/*
#------------------------------------------------------------------------------#
clean:
	rm -rvf ${OBJS_DIR} ${OUT_DIR}${NAME}
#------------------------------------------------------------------------------#
fclean: clean
	go clean
#------------------------------------------------------------------------------#
# end :^}
#------------------------------------------------------------------------------#