aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
blob: d7e2482e63bf4b167c829130a10a1088e952c685 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#==============================================================================#
#    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 :^}
#------------------------------------------------------------------------------#