source: sources/src/Makefile@ 3

Last change on this file since 3 was 3, checked in by buchmann, 19 years ago

Minor changes

File size: 12.2 KB
Line 
1# /*------------------------------------------------------------\
2# | |
3# | Tool : systemcass |
4# | |
5# | File : Makefile |
6# | |
7# | Author : |
8# | |
9# | Date : 08_07_2004 |
10# | |
11# \------------------------------------------------------------*/
12ifndef SYSTEMC
13$(error SYSTEMC is not defined. This variable should be set to SystemCASS \
14directory when SYSTEMCASS variable is not set.)
15endif
16ifndef SYSTEMCASS
17$(error SYSTEMCASS is not defined. This variable has to be defined to install \
18SystemCASS and to run any system built with.)
19endif
20#ifndef SOCVIEW
21#$(error SOCVIEW is not defined.)
22#endif
23#################################
24#
25# SYSTEMC
26#
27#################################
28
29TARGET_ARCH =$(shell ./guess_os.sh)
30TARGET_OS =${TARGET_ARCH}
31TARGET_PLATFORM =$(shell uname -p)# -i doesn't work on MACOSX
32TARGET_KERNEL =$(shell uname -s | tr '[A-Z]' '[a-z]')
33
34include Options.def
35
36##################################
37#### DIRECTORIES
38##################################
39#CURRENT_DIR = $(shell pwd)
40#SYSTEMCASS_INSTALLDIR = ${CURRENT_DIR}/${TARGET_PLATFORM}-${TARGET_OS}
41SYSTEMCASS_INSTALLDIR = ${SYSTEMCASS}
42SYSTEMCASS_INCLUDEDIR = ${SYSTEMCASS_INSTALLDIR}/include
43SYSTEMCASS_LIBDIR = ${SYSTEMCASS_INSTALLDIR}/lib
44SYSTEMCASS_DOCDIR = ${SYSTEMCASS_INSTALLDIR}/docs
45
46INSTALLDIR_OK = $(shell (test -d ${SYSTEMCASS_INSTALLDIR}/) ; echo $$?)
47ifneq (${INSTALLDIR_OK},0)
48$(shell (mkdir ${SYSTEMCASS_INSTALLDIR}/))
49endif
50
51INCLUDEDIR_OK = $(shell (test -d ${SYSTEMCASS_INCLUDEDIR}/) ; echo $$?)
52ifneq (${INCLUDEDIR_OK},0)
53$(shell (mkdir ${SYSTEMCASS_INCLUDEDIR}))
54endif
55
56DOCDIR_OK = $(shell (test -d ${SYSTEMCASS_DOCDIR}/) ; echo $$?)
57ifneq (${DOCDIR_OK},0)
58$(shell (mkdir ${SYSTEMCASS_DOCDIR}))
59endif
60
61##################################
62#### FLAGS
63##################################
64#SYSTEMC = /users/outil/systemc/systemcass/systemcass/latest
65#SYSTEMCASS = $(SYSTEMC)/latest
66#ALLIANCE = /asim/alliance
67
68PROF_ARG = -pg # gcc
69#PROF_ARG = -qp # icc
70OPT = -O2 -DCFLAGS="\"-O2 \"" $(NETLIST_DEBUGGING) $(SCHEDULING_OPTIONS) $(OTHERS)
71DEBUG = -g -DCFLAGS="\"-g \"" $(NETLIST_DEBUGGING-d) $(SCHEDULING_OPTIONS-d) $(OTHERS-d) -Wunused -Werror
72PROF = -O2 ${PROF_ARG} -DCFLAGS="\"-O2 ${PROF_ARG} \"" $(NETLIST_DEBUGGING) $(SCHEDULING_OPTIONS) $(OTHERS)
73
74#-Wall disable using icc instead of g++
75
76#CXX = g++
77#CXX = icc -w1
78CFLAGS = -I./internal_include \
79 -I${SYSTEMCASS_INCLUDEDIR} \
80 -I${ALLIANCE}/include \
81 -ansi \
82 -pedantic \
83 -Wno-long-long \
84 -D${TARGET_PLATFORM} \
85 -D${TARGET_KERNEL} \
86 -Wunused-function # to clean up the code \
87
88#-D${TARGET_ARCH} # disabled because that macro name gets error messages
89
90LDFLAGS = -L. \
91 -L${SYSTEMCASS}/lib-${TARGET_PLATFORM}-${TARGET_OS} \
92 -L${ALLIANCE}/lib \
93
94##################################
95## DOCUMENTATION
96##################################
97
98FIGURES = figures/SystemeType.fig \
99 figures/Automate.fig
100
101tex_files = SystemCASS.tex
102pdf_files = $(tex_files:.tex=.pdf)
103ps_files = $(tex_files:.tex=.ps)
104eps_figures = $(FIGURES:.fig=.eps)
105dvi_files = $(tex_files:.tex=.dvi)
106log_files = $(tex_files:.tex=.log)
107aux_files = $(tex_files:.tex=.aux)
108out_files = $(tex_files:.tex=.out)
109blg_files = $(tex_files:.tex=.blg)
110bbl_files = $(tex_files:.tex=.bbl)
111
112DOCS = \
113 ${SYSTEMCASS_DOCDIR}/SystemCASS.ps \
114 ${SYSTEMCASS_DOCDIR}/SystemCASS.pdf \
115 ${SYSTEMCASS_DOCDIR}/How-to-Use.txt
116
117##################################
118## OBJECTS
119##################################
120OBJECTS = \
121 alias.o \
122 bit2string.o \
123 dump_dot.o \
124 dump_used_env.o \
125 dump_used_options.o \
126 entity.o \
127 gen_code.o \
128 global_functions.o \
129 graph.o \
130 graph_cass.o \
131 graph_signals.o \
132 hex2string.o \
133 methodprocess_dependency.o \
134 module_hierarchy.o \
135 module_hierarchy2dot.o \
136 mouchard_scheduling.o \
137 port_dependency.o \
138 process_dependency.o \
139 sc_clock.o \
140 sc_event.o \
141 sc_event_finder.o \
142 sc_interface.o \
143 sc_logic.o \
144 sc_main.o \
145 sc_module.o \
146 sc_numrep.o \
147 sc_object.o \
148 sc_pat_trace.o \
149 sc_port.o \
150 sc_sensitive.o \
151 sc_time.o \
152 sc_trace.o \
153 sc_uint_subref_r.o \
154 sc_vcd_trace.o \
155 sc_ver.o \
156 schedulers.o \
157 serialization.o \
158 signal_dependency.o \
159 simplify_string.o \
160
161
162OBJECTS-d = $(OBJECTS:.o=-d.o)
163OBJECTS-prof= $(OBJECTS:.o=-prof.o)
164
165##################################
166## LIBRARIES
167##################################
168SYSTEMCASS_LIB = ${SYSTEMCASS_LIBDIR}/libsystemc_$(firstword $(CXX)).a
169SYSTEMCASS-d_LIB = ${SYSTEMCASS_LIBDIR}/libsystemc_$(firstword $(CXX))-d.a
170SYSTEMCASS-prof_LIB = ${SYSTEMCASS_LIBDIR}/libsystemc_$(firstword $(CXX))-prof.a
171
172## PAT trace output is enable when ALLIANCE is defined
173EXT_TMP_DIR = $(if ${ALLIANCE}, \
174 libPgn.temp \
175 libMut.temp \
176 libPpt.temp \
177 libPat.temp \
178 )
179
180EXT_OBJ = $(EXT_TMP_DIR:.temp=.temp/*.o)
181
182##################################
183## SOURCES
184##################################
185LINKS = $(OBJECTS-d:.o=.cc) $(OBJECTS-prof:.o=.cc)
186
187EXTERNAL_INCLUDES = \
188 ${SYSTEMCASS_INCLUDEDIR}/systemc.h \
189 ${SYSTEMCASS_INCLUDEDIR}/sc_fwd.h\
190 ${SYSTEMCASS_INCLUDEDIR}/global_functions.h \
191 ${SYSTEMCASS_INCLUDEDIR}/serialization_ext.h \
192 ${SYSTEMCASS_INCLUDEDIR}/sc_time.h \
193 ${SYSTEMCASS_INCLUDEDIR}/sc_nbdefs.h \
194 ${SYSTEMCASS_INCLUDEDIR}/sc_ver_ext.h\
195 ${SYSTEMCASS_INCLUDEDIR}/systemcass_version_ext.h\
196 ${SYSTEMCASS_INCLUDEDIR}/sc_module_ext.h \
197 ${SYSTEMCASS_INCLUDEDIR}/module_hierarchy_ext.h \
198 ${SYSTEMCASS_INCLUDEDIR}/sc_module_name.h \
199 ${SYSTEMCASS_INCLUDEDIR}/internal_ext.h \
200 ${SYSTEMCASS_INCLUDEDIR}/casc.h \
201 ${SYSTEMCASS_INCLUDEDIR}/fsm_rules.h \
202 ${SYSTEMCASS_INCLUDEDIR}/sc_object.h \
203 ${SYSTEMCASS_INCLUDEDIR}/sc_sensitive.h \
204 ${SYSTEMCASS_INCLUDEDIR}/sc_event.h \
205 ${SYSTEMCASS_INCLUDEDIR}/sc_interface.h \
206 ${SYSTEMCASS_INCLUDEDIR}/sc_port_ext.h \
207 ${SYSTEMCASS_INCLUDEDIR}/sc_event_finder.h \
208 ${SYSTEMCASS_INCLUDEDIR}/port_dependency_ext.h \
209 ${SYSTEMCASS_INCLUDEDIR}/sc_signal.h \
210 ${SYSTEMCASS_INCLUDEDIR}/sc_clock_ext.h \
211 ${SYSTEMCASS_INCLUDEDIR}/sc_unit.h \
212 ${SYSTEMCASS_INCLUDEDIR}/sc_bit.h \
213 ${SYSTEMCASS_INCLUDEDIR}/sc_logic.h \
214 ${SYSTEMCASS_INCLUDEDIR}/sc_bv.h \
215 ${SYSTEMCASS_INCLUDEDIR}/sc_unsigned.h \
216 ${SYSTEMCASS_INCLUDEDIR}/sc_signed.h \
217 ${SYSTEMCASS_INCLUDEDIR}/sc_uint.h \
218 ${SYSTEMCASS_INCLUDEDIR}/sc_numrep.h \
219 ${SYSTEMCASS_INCLUDEDIR}/sc_string.h \
220 ${SYSTEMCASS_INCLUDEDIR}/sc_int.h \
221 ${SYSTEMCASS_INCLUDEDIR}/sc_lv.h \
222 ${SYSTEMCASS_INCLUDEDIR}/sc_biguint.h \
223 ${SYSTEMCASS_INCLUDEDIR}/sc_bigint.h \
224 ${SYSTEMCASS_INCLUDEDIR}/sc_trace_ext.h \
225 ${SYSTEMCASS_INCLUDEDIR}/alias.h \
226 ${SYSTEMCASS_INCLUDEDIR}/sc_localvar.h \
227 ${SYSTEMCASS_INCLUDEDIR}/sc_vcd_trace.h \
228 ${SYSTEMCASS_INCLUDEDIR}/sc_pat_trace.h \
229 ${SYSTEMCASS_INCLUDEDIR}/endianness.h \
230 ${SYSTEMCASS_INCLUDEDIR}/data_field.h \
231
232##################################
233## RULES
234##################################
235.SECONDARY:
236.PHONY: help figures debug opt prof docs path all clean realclean
237
238##########
239#### RULES
240help :
241 @echo "rules Description"
242 @echo "--------- ------------------------------"
243 @echo "debug Create debug library"
244 @echo "opt Create optimized library"
245 @echo "prof Create a library for profiling"
246 @echo "docs Create PDF documentation"
247 @echo "path Print the path to libraries, documentation..."
248 @echo "all Create all the libraries and documentation files"
249 @echo "clean Delete temporary files"
250 @echo "realclean Delete libraries, documentation files and temporary files."
251
252#@echo "nolib Compile only source files and don't generate any library" => this rules is not possible because we need to overwrite external includes
253
254path :
255 @echo "debug library : ${SYSTEMCASS_LIB}"
256 @echo "optimized library : ${SYSTEMCASS-d_LIB}"
257 @echo "profiling library : ${SYSTEMCASS-prof_LIB}"
258 @echo "PDF documentation : ${SYSTEMCASS_DOCDIR}"
259
260all : debug opt prof
261 @echo Type make docs
262
263opt : ${EXTERNAL_INCLUDES} systemc
264
265debug : ${EXTERNAL_INCLUDES} systemc-d
266
267prof : ${EXTERNAL_INCLUDES} systemc-prof
268
269cvs : recent_changes
270 gvim recent_changes &
271 cvs ci
272
273mark :
274 make clean
275 echo -n '#define SYSTEMC_VERSION "SystemCASS : ' > systemcass_version_ext.h
276 date | head -c 28 >> systemcass_version_ext.h
277 echo '"' >> systemcass_version_ext.h
278
279recent_changes : ${SYSTEMCASS_LIB} ${SYSTEMCASS-d_LIB} mark
280 -cvs diff > recent_changes
281
282docs : ${DOCS}
283
284includes : ${EXTERNAL_INCLUDES}
285
286###########################
287#### EXPORTING FILES
288${SYSTEMCASS_INCLUDEDIR}/%.h: %.h
289 cp $*.h ${SYSTEMCASS_INCLUDEDIR}/$*.h
290
291${SYSTEMCASS_DOCDIR}/%.pdf: %.pdf
292 cp $*.pdf ${SYSTEMCASS_DOCDIR}/$*.pdf
293
294${SYSTEMCASS_DOCDIR}/%.ps: %.ps
295 cp $*.ps ${SYSTEMCASS_DOCDIR}/$*.ps
296
297${SYSTEMCASS_DOCDIR}/%.txt: %.txt
298 cp $*.txt ${SYSTEMCASS_DOCDIR}/$*.txt
299
300########################
301#### COMPILING & LINKING
302systemc: ${SYSTEMCASS_LIB}
303
304systemc-d: ${SYSTEMCASS-d_LIB}
305
306systemc-prof: ${SYSTEMCASS-prof_LIB}
307
308${SYSTEMCASS_LIB} : $(OBJECTS) ${EXT_OBJ}
309 mkdir -p ${SYSTEMCASS_LIBDIR}
310 ar -rv ${SYSTEMCASS_LIB} $(OBJECTS) $(EXT_OBJ)
311 ranlib ${SYSTEMCASS_LIB}
312
313${SYSTEMCASS-d_LIB}: $(OBJECTS-d) ${EXT_OBJ}
314 mkdir -p ${SYSTEMCASS_LIBDIR}
315 ar -rv ${SYSTEMCASS-d_LIB} $(OBJECTS-d) $(EXT_OBJ)
316 ranlib ${SYSTEMCASS-d_LIB}
317
318${SYSTEMCASS-prof_LIB}: $(OBJECTS-prof) ${EXT_OBJ}
319 mkdir -p ${SYSTEMCASS_LIBDIR}
320 ar -rv ${SYSTEMCASS-prof_LIB} $(OBJECTS-prof) $(EXT_OBJ)
321 ranlib ${SYSTEMCASS-prof_LIB}
322
323%-d.cc : %.cc
324 ln -s $*.cc $*-d.cc
325
326%-prof.cc : %.cc
327 ln -s $*.cc $*-prof.cc
328
329%-d.o : %-d.cc
330 $(CXX) $(CFLAGS) -MM $*-d.cc >> Makefile.deps
331 $(CXX) $(CFLAGS) $(DEBUG) -c $< -o $@
332
333%-prof.o : %-prof.cc
334 $(CXX) $(CFLAGS) -MM $*-prof.cc >> Makefile.deps
335 $(CXX) $(CFLAGS) $(PROF) -c $< -o $@
336
337%.o : %.cc
338 $(CXX) $(CFLAGS) -MM $*.cc >> Makefile.deps
339 $(CXX) $(CFLAGS) $(OPT) -c $< -o $@
340
341lib%.temp/*.o : ${ALLIANCE}/lib/lib%.a
342 (mkdir lib$*.temp ; cd lib$*.temp ; ar -x ${ALLIANCE}/lib/lib$*.a)
343
344guess_endianness.x : guess_endianness.cc
345 ${CXX} -o guess_endianness.x guess_endianness.cc
346
347${SYSTEMCASS_INCLUDEDIR}/endianness.h : guess_endianness.x
348 ./guess_endianness.x > ${SYSTEMCASS_INCLUDEDIR}/endianness.h
349
350include Makefile.deps
351
352##################
353#### DOCUMENTATION
354%.dvi : %.tex
355
356%.pdf : %.ps
357 ps2pdf $*.ps
358
359%.ps: %.dvi
360 dvips -o $*.ps $*.dvi
361%.dvi %.bbl : %.tex %.bib $(eps_figures)
362 latex $*.tex
363 bibtex $*
364 latex $*.tex
365 latex $*.tex
366
367figures : $(eps_figures)
368 @echo OK
369
370%.eps : %.fig
371 fig2dev -L eps $*.fig $*.eps
372
373##################
374#### CLEANING
375clean :
376 echo > Makefile.deps
377 rm -f *~
378 rm -f $(OBJECTS)
379 rm -f $(OBJECTS-d)
380 rm -f $(OBJECTS-prof)
381 rm -rf $(EXT_TMP_DIR)
382 -for i in $(LINKS) ; do unlink $$i ; done 2> /dev/null
383 rm -f $(eps_figures)
384 rm -f $(dvi_files) $(log_files)
385 rm -f $(out_files) $(aux_files) $(blg_files) $(bbl_files)
386 rm -f $(pdf_files) $(ps_files)
387
388realclean: clean
389 rm -f ${EXTERNAL_INCLUDES}
390 rm -rf ${SYSTEMCASS_LIBDIR}
391 rm -f ${SYSTEMCASS_LIB} ${SYSTEMCASS-d_LIB} ${SYSTEMCASS-prof_LIB}
392 #rm -f $(DOCS) # DONT do it. ${DOCS} includes txt files...
Note: See TracBrowser for help on using the repository browser.