OSDN Git Service

2019/03/15(Fri) 05:42
[drdeamon64/drdeamon64.git] / libgoblin / Makefile
1 ##DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
2 #
3 #                         D r . D e a m o n  6 4
4 #                        for INTEL64(R), AMD64(R)
5 #    
6 #   Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
7 #
8 # Redistribution and use in source and binary forms, with or without
9 # modification, are permitted provided that the following conditions are met:
10 #
11 # 1. Redistributions of source code must retain the above copyright notice,
12 #    this list of conditions and the following disclaimer.
13 # 2. Redistributions in binary form must reproduce the above copyright
14 #    notice, this list of conditions and the following disclaimer in the
15 #    documentation and/or other materials provided with the distribution.
16 #
17 # THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY
18 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 # DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE
21 # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
27 # OF THE POSSIBILITY OF SUCH DAMAGE.
28 #
29 ##DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
30
31 ## File Info -----------------------------------------------------------
32 # File: Makefile
33 # Function: 
34 # Comment: 
35 ##----------------------------------------------------------------------
36
37 # Section 1 : Setting Build Command ####################################
38 MAKE = make
39
40 SUPER_HEADER =  ../include/drd64_conf.h \
41                                 ../include/drd64_defines.h \
42                                 ../include/drd64_types.h \
43                                 ../include/drd64_error.h
44 USER_HEADER = ../include/libgoblin.h
45 LIB_HEADER = ../include/libfiletype.h
46
47 FLAGS_DEBUG = -g -Wall
48
49 TARGET = libgoblin.a
50 OBJS = drd64_libgoblin_api.o \
51                 drd64_libgoblin_proginfo.o \
52                 drd64_libgoblin_binfo.o \
53                 drd64_libgoblin_binaryfile.o \
54                 drd64_libgoblin_srcfile.o \
55                 drd64_libgoblin_checkbin.o \
56                 drd64_libgoblin_common.o \
57                 drd64_libgoblin_readbin.o \
58                 drd64_libgoblin_loadprog.o \
59                 drd64_libgoblin_objinfo.o \
60                 drd64_libgoblin_section.o \
61                 drd64_libgoblin_elf.o \
62                 drd64_libgoblin_elf_dynamic.o \
63                 drd64_libgoblin_elf_dynsym.o \
64                 drd64_libgoblin_elf_gnuver.o \
65                 drd64_libgoblin_elf_hash.o \
66                 drd64_libgoblin_elf_symtab.o \
67                 drd64_libgoblin_elf_rela.o \
68                 drd64_libgoblin_elf_proghdr.o \
69                 drd64_libgoblin_elf_section.o \
70                 drd64_libgoblin_elf32.o \
71                 drd64_libgoblin_dwarf.o \
72                 drd64_libgoblin_dwarf_abbrev.o \
73                 drd64_libgoblin_dwarf_info.o \
74                 drd64_libgoblin_dwarf_line.o \
75                 drd64_libgoblin_dwarf_common.o \
76                 drd64_libgoblin_debug_elf.o \
77                 drd64_libgoblin_debug_objinfo.o
78 HEADER = drd64_libgoblin.h \
79                 drd64_libgoblin_section_defs.h \
80                 drd64_libgoblin_type.h \
81                 drd64_libgoblin_proginfo.h \
82                 drd64_libgoblin_binfo.h \
83                 drd64_libgoblin_binaryfile.h \
84                 drd64_libgoblin_srcfile.h \
85                 drd64_libgoblin_checkbin.h \
86                 drd64_libgoblin_common.h \
87                 drd64_libgoblin_readbin.h \
88                 drd64_libgoblin_loadprog.h \
89                 drd64_libgoblin_objinfo.h \
90                 drd64_libgoblin_section.h \
91                 drd64_libgoblin_elf.h \
92                 drd64_libgoblin_elf_dynamic.h \
93                 drd64_libgoblin_elf_dynsym.h \
94                 drd64_libgoblin_elf_gnuver.h \
95                 drd64_libgoblin_elf_hash.h \
96                 drd64_libgoblin_elf_symtab.h \
97                 drd64_libgoblin_elf_rela.h \
98                 drd64_libgoblin_elf_proghdr.h \
99                 drd64_libgoblin_elf_section.h \
100                 drd64_libgoblin_elf32.h \
101                 drd64_libgoblin_dwarf.h \
102                 drd64_libgoblin_dwarf_abbrev.h \
103                 drd64_libgoblin_dwarf_info.h \
104                 drd64_libgoblin_dwarf_line.h \
105                 drd64_libgoblin_dwarf_common.h \
106                 drd64_libgoblin_dwarf_str.h \
107                 drd64_libgoblin_debug_elf.h \
108                 drd64_libgoblin_debug_objinfo.h \
109                 drd64_libgoblin_addrinfo.h \
110                 $(USER_HEADER) $(SUPER_HEADER) $(LIB_HEADER) 
111 LIBRARY = ../libfiletype.a
112
113 TEST_FLAGS_COMPILE = -I/usr/local/include
114 TEST_FLAGS_LINKER = -L/usr/local/lib -lcunit -L.. -lfiletype -lbrownie
115 TEST_TARGET = test_libgoblin
116 TEST_HEADER = test_libgoblin.h
117 TEST_OBJS = test_libgoblin.o \
118                         test_libgoblin_api.o \
119                         test_libgoblin_proginfo.o \
120                         test_libgoblin_binaryfile.o \
121                         test_libgoblin_srcfile.o \
122                         test_libgoblin_loadprog.o \
123                         test_libgoblin_binfo.o \
124                         test_libgoblin_objinfo.o \
125                         test_libgoblin_readbin.o
126
127 TESTPROG = ../testdata/dwarftest
128
129 CALLGRAPH = CallGraph.txt
130
131
132 all:    $(TARGET) test
133 build:  $(TARGET) $(CALLGRAPH)
134 test:   $(TEST_TARGET) $(TESTPROG)
135         ./$(TEST_TARGET)
136
137
138 $(TARGET): $(OBJS) $(LIB_OBJS)
139         ar rv $(TARGET) $(OBJS)
140         ranlib $(TARGET)
141         cp $(TARGET) ..
142
143 drd64_libgoblin_api.o: drd64_libgoblin_api.c $(HEADER)
144         $(CC) -c -o drd64_libgoblin_api.o $(FLAGS_DEBUG) \
145                                 drd64_libgoblin_api.c
146 drd64_libgoblin_proginfo.o: drd64_libgoblin_proginfo.c $(HEADER)
147         $(CC) -c -o drd64_libgoblin_proginfo.o $(FLAGS_DEBUG) \
148                                 drd64_libgoblin_proginfo.c
149 drd64_libgoblin_binfo.o: drd64_libgoblin_binfo.c $(HEADER)
150         $(CC) -c -o drd64_libgoblin_binfo.o $(FLAGS_DEBUG) \
151                                 drd64_libgoblin_binfo.c
152 drd64_libgoblin_binaryfile.o: drd64_libgoblin_binaryfile.c $(HEADER)
153         $(CC) -c -o drd64_libgoblin_binaryfile.o $(FLAGS_DEBUG) \
154                                 drd64_libgoblin_binaryfile.c
155 drd64_libgoblin_srcfile.o: drd64_libgoblin_srcfile.c $(HEADER)
156         $(CC) -c -o drd64_libgoblin_srcfile.o $(FLAGS_DEBUG) \
157                                 drd64_libgoblin_srcfile.c
158 drd64_libgoblin_checkbin.o: drd64_libgoblin_checkbin.c $(HEADER)
159         $(CC) -c -o drd64_libgoblin_checkbin.o $(FLAGS_DEBUG) \
160                                 drd64_libgoblin_checkbin.c
161 drd64_libgoblin_common.o: drd64_libgoblin_common.c $(HEADER)
162         $(CC) -c -o drd64_libgoblin_common.o $(FLAGS_DEBUG) \
163                                 drd64_libgoblin_common.c
164 drd64_libgoblin_readbin.o: drd64_libgoblin_readbin.c $(HEADER)
165         $(CC) -c -o drd64_libgoblin_readbin.o $(FLAGS_DEBUG) \
166                                 drd64_libgoblin_readbin.c
167 drd64_libgoblin_loadprog.o: drd64_libgoblin_loadprog.c $(HEADER)
168         $(CC) -c -o drd64_libgoblin_loadprog.o $(FLAGS_DEBUG) \
169                                 drd64_libgoblin_loadprog.c
170 drd64_libgoblin_objinfo.o: drd64_libgoblin_objinfo.c $(HEADER)
171         $(CC) -c -o drd64_libgoblin_objinfo.o $(FLAGS_DEBUG) \
172                                 drd64_libgoblin_objinfo.c
173 drd64_libgoblin_section.o: drd64_libgoblin_section.c $(HEADER)
174         $(CC) -c -o drd64_libgoblin_section.o $(FLAGS_DEBUG) \
175                                 drd64_libgoblin_section.c
176
177 drd64_libgoblin_elf.o: drd64_libgoblin_elf.c $(HEADER)
178         $(CC) -c -o drd64_libgoblin_elf.o $(FLAGS_DEBUG) \
179                                 drd64_libgoblin_elf.c
180 drd64_libgoblin_elf_dynamic.o: drd64_libgoblin_elf_dynamic.c $(HEADER)
181         $(CC) -c -o drd64_libgoblin_elf_dynamic.o $(FLAGS_DEBUG) \
182                                 drd64_libgoblin_elf_dynamic.c
183 drd64_libgoblin_elf_dynsym.o: drd64_libgoblin_elf_dynsym.c $(HEADER)
184         $(CC) -c -o drd64_libgoblin_elf_dynsym.o $(FLAGS_DEBUG) \
185                                 drd64_libgoblin_elf_dynsym.c
186 drd64_libgoblin_elf_gnuver.o: drd64_libgoblin_elf_gnuver.c $(HEADER)
187         $(CC) -c -o drd64_libgoblin_elf_gnuver.o $(FLAGS_DEBUG) \
188                                 drd64_libgoblin_elf_gnuver.c
189 drd64_libgoblin_elf_hash.o: drd64_libgoblin_elf_hash.c $(HEADER)
190         $(CC) -c -o drd64_libgoblin_elf_hash.o $(FLAGS_DEBUG) \
191                                 drd64_libgoblin_elf_hash.c
192 drd64_libgoblin_elf_symtab.o: drd64_libgoblin_elf_symtab.c $(HEADER)
193         $(CC) -c -o drd64_libgoblin_elf_symtab.o $(FLAGS_DEBUG) \
194                                 drd64_libgoblin_elf_symtab.c
195 drd64_libgoblin_elf_rela.o: drd64_libgoblin_elf_rela.c $(HEADER)
196         $(CC) -c -o drd64_libgoblin_elf_rela.o $(FLAGS_DEBUG) \
197                                 drd64_libgoblin_elf_rela.c
198 drd64_libgoblin_elf_proghdr.o: drd64_libgoblin_elf_proghdr.c $(HEADER)
199         $(CC) -c -o drd64_libgoblin_elf_proghdr.o $(FLAGS_DEBUG) \
200                                 drd64_libgoblin_elf_proghdr.c
201 drd64_libgoblin_elf_section.o: drd64_libgoblin_elf_section.c $(HEADER)
202         $(CC) -c -o drd64_libgoblin_elf_section.o $(FLAGS_DEBUG) \
203                                 drd64_libgoblin_elf_section.c
204 drd64_libgoblin_elf32.o: drd64_libgoblin_elf32.c $(HEADER)
205         $(CC) -c -o drd64_libgoblin_elf32.o $(FLAGS_DEBUG) \
206                                 drd64_libgoblin_elf32.c
207
208 drd64_libgoblin_dwarf.o: drd64_libgoblin_dwarf.c $(HEADER)
209         $(CC) -c -o drd64_libgoblin_dwarf.o $(FLAGS_DEBUG) \
210                                 drd64_libgoblin_dwarf.c
211 drd64_libgoblin_dwarf_abbrev.o: drd64_libgoblin_dwarf_abbrev.c $(HEADER)
212         $(CC) -c -o drd64_libgoblin_dwarf_abbrev.o $(FLAGS_DEBUG) \
213                                 drd64_libgoblin_dwarf_abbrev.c
214 drd64_libgoblin_dwarf_info.o: \
215                 drd64_libgoblin_dwarf_info.c $(HEADER)
216         $(CC) -c -o drd64_libgoblin_dwarf_info.o $(FLAGS_DEBUG) \
217                                 drd64_libgoblin_dwarf_info.c
218 drd64_libgoblin_dwarf_line.o: \
219                 drd64_libgoblin_dwarf_line.c $(HEADER)
220         $(CC) -c -o drd64_libgoblin_dwarf_line.o $(FLAGS_DEBUG) \
221                                 drd64_libgoblin_dwarf_line.c
222 drd64_libgoblin_dwarf_common.o: drd64_libgoblin_dwarf_common.c $(HEADER)
223         $(CC) -c -o drd64_libgoblin_dwarf_common.o $(FLAGS_DEBUG) \
224                                 drd64_libgoblin_dwarf_common.c
225
226 drd64_libgoblin_debug_elf.o: drd64_libgoblin_debug_elf.c $(HEADER)
227         $(CC) -c -o drd64_libgoblin_debug_elf.o $(FLAGS_DEBUG) \
228                                 drd64_libgoblin_debug_elf.c
229 drd64_libgoblin_debug_objinfo.o: drd64_libgoblin_debug_objinfo.c $(HEADER)
230         $(CC) -c -o drd64_libgoblin_debug_objinfo.o $(FLAGS_DEBUG) \
231                                 drd64_libgoblin_debug_objinfo.c
232
233 #$(TEST_TARGET): elftest.c ../include/libgoblin.h $(TARGET)
234 #       $(CC) -g -o $(TEST_TARGET) elftest.c $(TARGET)
235
236 test_libgoblin.o: test_libgoblin.c $(HEADER) $(TEST_HEADER)
237         $(CC) -c -o test_libgoblin.o \
238                         $(FLAGS_DEBUG) $(FLAGS_COMPILE) $(TEST_FLAGS_COMPILE) \
239                         test_libgoblin.c
240 test_libgoblin_api.o: test_libgoblin_api.c $(HEADER) $(TEST_HEADER)
241         $(CC) -c -o test_libgoblin_api.o \
242                         $(FLAGS_DEBUG) $(FLAGS_COMPILE) $(TEST_FLAGS_COMPILE) \
243                         test_libgoblin_api.c
244 test_libgoblin_binfo.o: test_libgoblin_binfo.c $(HEADER) $(TEST_HEADER)
245         $(CC) -c -o test_libgoblin_binfo.o \
246                         $(FLAGS_DEBUG) $(FLAGS_COMPILE) $(TEST_FLAGS_COMPILE) \
247                         test_libgoblin_binfo.c
248 test_libgoblin_objinfo.o: test_libgoblin_objinfo.c $(HEADER) $(TEST_HEADER)
249         $(CC) -c -o test_libgoblin_objinfo.o \
250                         $(FLAGS_DEBUG) $(FLAGS_COMPILE) $(TEST_FLAGS_COMPILE) \
251                         test_libgoblin_objinfo.c
252 test_libgoblin_proginfo.o: test_libgoblin_proginfo.c $(HEADER) $(TEST_HEADER)
253         $(CC) -c -o test_libgoblin_proginfo.o \
254                         $(FLAGS_DEBUG) $(FLAGS_COMPILE) $(TEST_FLAGS_COMPILE) \
255                         test_libgoblin_proginfo.c
256 test_libgoblin_binaryfile.o: test_libgoblin_binaryfile.c $(HEADER) $(TEST_HEADER)
257         $(CC) -c -o test_libgoblin_binaryfile.o \
258                         $(FLAGS_DEBUG) $(FLAGS_COMPILE) $(TEST_FLAGS_COMPILE) \
259                         test_libgoblin_binaryfile.c
260 test_libgoblin_srcfile.o: test_libgoblin_srcfile.c $(HEADER) $(TEST_HEADER)
261         $(CC) -c -o test_libgoblin_srcfile.o \
262                         $(FLAGS_DEBUG) $(FLAGS_COMPILE) $(TEST_FLAGS_COMPILE) \
263                         test_libgoblin_srcfile.c
264 test_libgoblin_loadprog.o: test_libgoblin_loadprog.c $(HEADER) $(TEST_HEADER)
265         $(CC) -c -o test_libgoblin_loadprog.o \
266                         $(FLAGS_DEBUG) $(FLAGS_COMPILE) $(TEST_FLAGS_COMPILE) \
267                         test_libgoblin_loadprog.c
268 test_libgoblin_readbin.o: test_libgoblin_readbin.c $(HEADER) $(TEST_HEADER)
269         $(CC) -c -o test_libgoblin_readbin.o \
270                         $(FLAGS_DEBUG) $(FLAGS_COMPILE) $(TEST_FLAGS_COMPILE) \
271                         test_libgoblin_readbin.c
272
273 ../libfiletype.a:
274         $(MAKE) -C ../libfiletype all
275
276
277 $(TEST_TARGET): $(TEST_OBJS) $(TARGET) $(LIBRARY)
278         $(CC) -o $(TEST_TARGET) $(FLAGS_DEBUG) $(TEST_OBJS) $(TARGET) $(TEST_FLAGS_LINKER)
279
280
281 $(TESTPROG):
282         $(MAKE) -C ../testdata all clean
283 #       $(MAKE) -C ../testpg/testpg02 all clean
284
285 $(CALLGRAPH):
286         env CC=cc cflow -A -P -g -X -n *.c $(HEADER) > $(CALLGRAPH)
287
288 clean:
289         rm -f *.o
290         rm -f *.xml
291         rm -f *.core
292         rm -f $(CALLGRAPH)
293         rm -f $(TARGET)
294         rm -f $(TEST_TARGET)
295