-
Notifications
You must be signed in to change notification settings - Fork 6
/
Makefile.sample
150 lines (126 loc) · 3.42 KB
/
Makefile.sample
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
###############################################################################
#
# Sample Makefile for compiling programs using Prop.
# The places where you have to change are marked with ???
# C++ files are assumed to be named as .C.
#
# Use 'make depends' to generate file dependencies
#
###############################################################################
###############################################################################
#
# C++ compiler setup (assume g++)
#
###############################################################################
CC = g++
CC_INCLUDE = -I../include
CC_OPTS = $(CC_INCLUDE) -O6
###############################################################################
#
# Prop program setup.
# The options are: use strict checking, generate report, verbose level 2.
#
###############################################################################
PROP = prop # replace with absolute path if necessary
PROP_OPTS = -strict -report -v2 $(CC_INCLUDE)
PROP_LIBRARY_PATH = ??? # replace with the path of the libprop.a library
EXTRA_LIBRARIES = ???
LD_OPTS = $(EXTRA_LIBRARIES) -L$(PROP_LIBRARY_PATH) -lprop -lg++ -lm
###############################################################################
#
# This is the name of the target program
#
###############################################################################
TARGET= ???
###############################################################################
#
# This is where you should put the prop include files (.ph files)
#
###############################################################################
PROP_H_SRC= ???
###############################################################################
#
# This are the prop source files (.pC files)
#
###############################################################################
PROP_C_SRC= ???
###############################################################################
#
# These are the normal .h files (not generated by prop)
#
###############################################################################
NORMAL_H_SRC= ???
###############################################################################
#
# These are the normal .C files (not generated by prop)
#
###############################################################################
NORMAL_C_SRC= ???
#
# .h files generated by prop
#
GEN_H_SRC=$(PROP_H_SRC:.ph=.h)
#
# .C files generated by prop
#
GEN_C_SRC=$(PROP_C_SRC:.pC=.C)
#
# all files generated by prop
#
GEN_SRC= $(GEN_H_SRC) $(GEN_C_SRC)
#
# all .h files
#
H_SRC= $(GEN_H_SRC) $(NORMAL_H_SRC)
#
# all .C files
#
C_SRC= $(GEN_C_SRC) $(NORMAL_C_SRC)
#
# all files
#
SRC= $(H_SRC) $(C_SRC)
#
# all object files
#
OBJ = $(C_SRC:.C=.o)
#
# How to compile and link the program
#
all: $(TARGET)
$(TARGET): $(SRC) $(OBJ)
$(CC) $(CC_OPTS) $(OBJ) -o $@ $(LD_OPTS)
#
# Regenerate source only
#
src: $(SRC)
#
# Remove object files only
#
clean:
rm -f *.o
#
# Remove all object files and generated code
#
spotless: clean
rm -f $(GEN_SRC)
depends1:
touch depends1
depends2:
touch depends2
#
# Generate dependencies
#
depends:
@echo Remaking prop dependency
$(PROP) -M $(PROP_OPTS) $(PROP_C_SRC) $(PROP_H_SRC) >depends1 || rm -f depends1
@echo Remaking g++ dependency
$(CC) -MM $(CC_OPTS) $(C_SRC) >depends2 || rm -f depends2
include depends1
include depends2
%.h: %.ph
$(PROP) $(PROP_OPTS) $<
%.C: %.pC
$(PROP) $(PROP_OPTS) $<
%.o: %.C
$(CC) -c $(CC_OPTS) $<