-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile.impl
104 lines (86 loc) · 3.6 KB
/
Makefile.impl
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# Easy Sockets Makefile Implementation v 1.0
# ********************************0. INCLUDE SECTION***********************************
include Makefile.extra
# *****************************END OF INCLUDE SECTION**********************************
# ********************************1. VARIABLES SECTION*********************************
# 1 C/C++ Compiler
CXX = g++
# 2. Compiler And Linker Keys (man gcc)
STATIC_LIB_ARCH = ar rcs
# 3. Linking libraries
LIBPATH = -L. -L..
# -L/lib64/
# -L/lib/
LIBS =
# -lc -lrt
# -lrt -lpthread
# 4. DEFINITIONS (PREPROCESSOR DEFINE)
DEFS =
# 5. INCLUDES PATH
INCLUDES = -I../core/
# 6. SOURCES FILES
# Directories with sources
DIRS = core
SRC_DIRS := $(addprefix / , $(DIRS))
# Obtaining source files list
C_SRC_FILES := $(foreach sdir, $(SRC_DIRS), $(wildcard $(sdir)/*.c))
CPP_SRC_FILES = $(foreach sdir, $(SRC_DIRS), $(wildcard $(sdir)/*.cpp))
# 7. OBJECTS FILE NAME
C_OBJFILES = $(C_SRC_FILES:.c=.o)
CPP_OBJFILES = $(CPP_SRC_FILES:.cpp=.o) $(C_OBJFILES)
# $(SRCFILES:.cpp=.o)
# 8. TARGETS OR RESULTING OBJ-FILE
# LIB_VERSION := 1.0
C_SHARED_LIB = $(LIB_BUILD_DIRECTORY)/libEasySocketsC.so.$(LIB_VERSION_OPTION)
CPP_SHARED_LIB = $(LIB_BUILD_DIRECTORY)/libEasySocketsCpp.so.$(LIB_VERSION_OPTION)
C_STATIC_LIB = $(LIB_BUILD_DIRECTORY)/libEasySocketsC.a.$(LIB_VERSION_OPTION)
CPP_STATIC_LIB = $(LIB_BUILD_DIRECTORY)/libEasySocketsCpp.a.$(LIB_VERSION_OPTION)
DEFAULT_TARGET = c99-shared
# *****************************END OF VARIABLES SECTION********************************
# ****************************2. BUILDING TARGETS SECTION******************************
# BY DEFAULT BUILDS first target (make without parameters)
# TO BUILD SPECIFIC TARGETS TYPE make "target name" (without quotation marks)
# each target MUST BE WRITTEN AS: Dependencies Tab(press tab key) Command
# MAKEFILE SPECIAL MACROSES (STARTS WITH $):
# $@ name of target
# $? list of dependancies before that macro
# $^ list of dependancies which independent of wheather they met before or after
# $+ similar to $^ but doesn't exclude dublicates
# $< first dependancy
# PHONY TARGET ARE TARGETS WITHOUT OUTPUT FILES
.PHONY: depend clean finish create-build-dir
all: clean create-build-dir $(DEFAULT_TARGET) finish
c99-shared: clean create-build-dir $(C_SHARED_LIB) finish
cpp03-shared: clean create-build-dir $(CPP_SHARED_LIB) finish
c99-static: clean create-build-dir $(C_STATIC_LIB) finish
cpp03-static: clean create-build-dir $(CPP_STATIC_LIB) finish
create-build-dir:
@ -mkdir -p $(LIB_BUILD_DIRECTORY)
$(C_SHARED_LIB):$(C_OBJFILES)
$(CXX) $(CXXFLAGS) $(LANG_OPTION) $(LIB_LINK_OPTION) $(INCLUDES) $(LIBPATH) $(LIBS) -o $(C_SHARED_LIB) $(C_OBJFILES)
# $(LIBPATH) $(LIBS)
$(CPP_SHARED_LIB):$(C_OBJFILES) $(CPP_OBJFILES)
$(CXX) $(CXXFLAGS) $(LANG_OPTION) $(LIB_LINK_OPTION) $(INCLUDES) $(LIBPATH) $(LIBS) -o $(CPP_SHARED_LIB) $(CPP_OBJFILES)
# $(LIBPATH) $(LIBS)
$(C_STATIC_LIB):$(C_OBJFILES)
$(STATIC_LIB_ARCH) $(C_STATIC_LIB) $(C_OBJFILES)
$(CPP_STATIC_LIB):$(C_OBJFILES) $(CPP_OBJFILES)
$(STATIC_LIB_ARCH) $(CPP_STATIC_LIB) $(CPP_OBJFILES)
# These are the suffix replacement rules
%.o : %.c
$(CXX) $(CXXFLAGS) $(LANG_OPTION) $(LIB_COMPILE_OPTION) $(INCLUDES) -c $< -o $@
%.o : %.cpp
$(CXX) $(CXXFLAGS) $(LANG_OPTION) $(LIB_COMPILE_OPTION) $(INCLUDES) -c $< -o $@
clean:
@ -rm -f $(CPP_OBJFILES)
@ -rm -f $(C_SHARED_LIB)
@ -rm -f $(CPP_SHARED_LIB)
@ -rm -f $(C_STATIC_LIB)
@ -rm -f $(CPP_STATIC_LIB)
#remove intermediate obj files
finish:
@ -rm $(CPP_OBJFILES)
depend: $(C_SRC_FILES) $(CPP_SRC_FILES)
makedepend $(INCLUDES) $^
# make depend needs this line
# ****************************END OF BUILDING TARGETS SECTION**************************