Makefile
上传用户:aoptech
上传日期:2014-09-22
资源大小:784k
文件大小:8k
源码类别:

3G开发

开发平台:

Others

  1. # The MIT License
  2. #
  3. # Copyright (c) 2006 Nirav Dave (ndave@csail.mit.edu)
  4. #
  5. # Permission is hereby granted, free of charge, to any person obtaining a copy
  6. # of this software and associated documentation files (the "Software"), to deal
  7. # in the Software without restriction, including without limitation the rights
  8. # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  9. # copies of the Software, and to permit persons to whom the Software is
  10. # furnished to do so, subject to the following conditions:
  11. #
  12. # The above copyright notice and this permission notice shall be included in
  13. # all copies or substantial portions of the Software.
  14. #
  15. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16. # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17. # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  18. # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19. # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  20. # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  21. # THE SOFTWARE.
  22. LOGDIR = logs
  23. CURTIME = `date +%F_%H%M`
  24. TITLE = 80211
  25. all: design
  26. #################################
  27. #        Program Macros         #
  28. #################################
  29. BSC = bsc -v -u -keep-fires -dschedule -relax-method-earliness 
  30. BSC_PROF = prof_bsc -v -u -keep-fires -relax-method-earliness 
  31. BSC_C = bsc -v -u
  32. BIGRUN = +RTS -K1000M -RTS -steps 800000
  33. OPTS = ${OPT_} ${OPTB}
  34. OPT_ = -opt-undetermined-vals
  35. OPTB = -opt-bool
  36. NOOPT= -no-opt-bool -no-opt-mux -no-opt-mux-const -no-opt-ATS
  37. COND = -aggressive-conditions
  38. PROF = +RTS -prof-all -RTS
  39. VRULES = -show-rule-rel * *
  40. DE_RWIRE = -inline-rwire
  41. SCHED = -dschedule
  42. BSC_DEBUG  = ${BSC} ${DIRS} ${COND} ${SCHED}  ${BIGRUN} 
  43. BSC_DEBUG_PROF  = ${BSC_PROF} ${DIRS} ${PROF} ${COND} ${SCHED}  ${BIGRUN} -scheduler-effort 0
  44. #${OPT}
  45. BSC_DEBUG_TRACE = ${BSC} ${DIRS} ${COND} ${SCHED} ${VRULES} ${BIGRUN} -trace-heap
  46. BSC_NORMAL = ${BSC} ${DIRS} ${BIGRUN}
  47. BSC_SCHOPT = ${BSC} ${DIRS} ${BIGRUN} ${COND} ${OPTS}
  48. BSC_OPT    = ${BSC} ${DIRS} ${COND} ${OPTS} ${BIGRUN}
  49. BSC_SYNTH  = ${BSC} ${DIRS} ${COND} ${OPTS} ${DE_RWIRE} ${BIGRUN}
  50. RM = rm
  51. RMDIR = rmdir
  52. PWD = `pwd`
  53. #################################
  54. # Default Dir is probably wrong #
  55. ################################# 
  56. DIRS = -p +:..:../../framework:../../framework/PPC
  57. BINS = 
  58. VFILES = mk*.v module_*.v
  59. CFILES = *.c *.o *.h
  60. SYMFILES = csrc simv simv.daidir vcdplus.vpd vcs.key
  61. TMPFILES = .tmp_*
  62. SUBD = $(filter %/, $(shell ls -F))
  63. SUBDIRS ?= $(SUBD)
  64. ###################################################################
  65. # Generic Compile functions                                       #
  66. ###################################################################
  67. define bsc_compile_normal
  68. @echo *** Compiling $(strip $(1))
  69. @echo
  70. @echo
  71. @[ -d logs ] || mkdir logs
  72. @${BSC_NORMAL} ${1} 2>&1 | tee -a ${LOGDIR}/$(strip ${1})-${CURTIME}.bsc-out
  73. endef
  74. define bsc_compile_debug_prof
  75. @echo *** Compiling $(strip $(1))
  76. @echo
  77. @echo
  78. @[ -d logs ] || mkdir logs
  79. @${BSC_DEBUG_PROF} ${1} 2>&1 | tee -a ${LOGDIR}/$(strip ${1})-${CURTIME}.bsc-out
  80. endef
  81. ###################################################################
  82. # Verilog Compile functions                                       #
  83. ###################################################################
  84. define verilog_compile_normal
  85. @echo *** Compiling (NORMAL) $(strip $(1)) from file $(strip $(2)) into Verilog
  86. @echo
  87. @echo
  88. @[ -d logs ] || mkdir logs
  89. @${BSC_NORMAL} -verilog -g ${1} ${2} 2>&1 | tee -a ${LOGDIR}/$(strip ${1})-${CURTIME}.bsc-out
  90. endef
  91. define verilog_compile_schopt
  92. @echo *** Compiling (SCHOPT) $(strip $(1)) from file $(strip $(2)) into Verilog
  93. @echo
  94. @echo
  95. @[ -d logs ] || mkdir logs
  96. @${BSC_SCHOPT} -verilog -g ${1} ${2} 2>&1 | tee -a ${LOGDIR}/$(strip ${1})-${CURTIME}.bsc-out
  97. endef
  98. define verilog_compile_opt
  99. @echo *** Compiling (OPT) $(strip $(1)) from file $(strip $(2)) into Verilog
  100. @echo
  101. @echo
  102. @[ -d logs ] || mkdir logs
  103. @${BSC_OPT}    -verilog -g ${1} ${2} 2>&1 | tee -a ${LOGDIR}/$(strip ${1})-${CURTIME}.bsc-out
  104. endef
  105. define verilog_compile_debug
  106. @echo *** Compiling (DEBUG) $(strip $(1)) from file $(strip $(2)) into Verilog
  107. @echo
  108. @echo
  109. @[ -d logs ] || mkdir logs
  110. @${BSC_DEBUG}  -verilog -g ${1} ${2} 2>&1 | tee -a ${LOGDIR}/$(strip ${1})-${CURTIME}.bsc-out
  111. endef
  112. define verilog_compile_debug_prof
  113. @echo *** Compiling (DEBUG) $(strip $(1)) from file $(strip $(2)) into Verilog
  114. @echo
  115. @echo
  116. @[ -d logs ] || mkdir logs
  117. @${BSC_DEBUG_PROF}  -verilog -g ${1} ${2} 2>&1 | tee -a ${LOGDIR}/$(strip ${1})-${CURTIME}.bsc-out
  118. endef
  119. define verilog_compile_debug_trace
  120. @echo *** Compiling (DEBUG_TRACE) $(strip $(1)) from file $(strip $(2)) into Verilog
  121. @echo
  122. @echo
  123. @[ -d logs ] || mkdir logs
  124. @${BSC_DEBUG_TRACE} -verilog -g ${1} ${2} 2>&1 | tee -a ${LOGDIR}/$(strip ${1})-${CURTIME}.bsc-out
  125. endef
  126. define verilog_compile_synth
  127. @echo *** Compiling (Synth) $(strip $(1)) from file $(strip $(2)) into Verilog
  128. @echo
  129. @echo
  130. @[ -d logs ] || mkdir logs
  131. @${BSC_SYNTH}  -verilog -g ${1} ${2} 2>&1 | tee -a ${LOGDIR}/$(strip ${1})-${CURTIME}.bsc-out
  132. endef
  133. ###################################################################
  134. # General Definitions                                             #
  135. ###################################################################
  136. all:
  137. @echo Making all in ${PWD}
  138. ifneq ($(SUBDIRS),)
  139. @for dir in ${SUBDIRS} ; do 
  140. cd $$dir;  [ -f Makefile ] && ${MAKE} all ; cd .. ; done
  141. endif
  142. ###################################################################
  143. # Make sure there's a log dir                                     #
  144. ###################################################################
  145. logs:
  146. mkdir logs
  147. ###################################################################
  148. # Cleanup                                                         #
  149. ###################################################################
  150. spotless: cleaner purgelogs cleanvcs
  151. cleaner:  clean tidy cleanvcs
  152. cleanvcs:
  153. ${RM} -rf ${SYMFILES}
  154. ifneq ($(SUBDIRS),)
  155. @for dir in ${SUBDIRS} ; do 
  156. cd $$dir;  [ -f Makefile ] && echo "cleaning vcs from $$dir" && 
  157.         ${MAKE} cleanvcs ; cd ..; done
  158. endif
  159. tidy:
  160. ${RM} -f *~ #*
  161. ifneq ($(SUBDIRS),)
  162. @for dir in ${SUBDIRS} ; do 
  163. cd $$dir;  [ -f Makefile ] && echo "tidying $$dir" && 
  164.         ${MAKE} tidy ; cd .. ;  done
  165. endif
  166. clean:
  167. ${RM} -f *.b[io] ${CFILES} ${BINS} ${VFILES}
  168. ifneq ($(SUBDIRS),)
  169. @for dir in ${SUBDIRS} ; do 
  170. cd $$dir; [ -f Makefile ] && echo "cleaning $$dir" && 
  171.         ${MAKE} clean ; cd .. ; done
  172. endif
  173. cleanish:
  174. ${RM} -f ${CFILES} ${BINS} ${VFILES}
  175. ifneq ($(SUBDIRS),)
  176. @for dir in ${SUBDIRS} ; do 
  177. cd $$dir; [-f Makefile ] && echo "almost cleaning $$dir" && 
  178.         ${MAKE} cleanish ; cd .. ; done
  179. endif
  180. purgelogs:
  181. ${RM} -f ${LOGDIR}/*
  182. ifneq ($(SUBDIRS),)
  183. @for dir in ${SUBDIRS} ; do 
  184. cd $$dir; [ -f Makefile ] && echo "purging logs for $$dir" && 
  185.         ${MAKE} purgelogs ; cd .. ; done
  186. endif
  187. ###################################################################
  188. # Make Commands                                                   #
  189. ###################################################################
  190. design: mkConvEncoder.v mkScrambler.v mkInterleaver.v mkMapper.v mkIFFT.v 
  191. mkCyclicExtender.v mkController.v mkTransmitter.v
  192. mkController.v:
  193. $(call verilog_compile_schopt, mkController, Controller.bsv)
  194. mkConvEncoder.v:
  195. $(call verilog_compile_schopt, mkConvEncoder_24_48, ConvEncoder.bsv)
  196. mkScrambler.v:
  197. $(call verilog_compile_schopt, mkScrambler_48, Scrambler.bsv)
  198. mkInterleaver.v:
  199. $(call verilog_compile_schopt, mkInterleaver, Interleaver.bsv)
  200. mkMapper.v:
  201. $(call verilog_compile_schopt, mkMapper_48_64, Mapper.bsv)
  202. mkIFFT.v:
  203. $(call verilog_compile_schopt, mkIFFT_Comb, IFFT.bsv)
  204. mkCyclicExtender.v:
  205. $(call verilog_compile_schopt, mkCyclicExtender, CyclicExtender.bsv)
  206. mkTransmitter.v:
  207. $(call verilog_compile_schopt, mkTransmitter_Comb, Transmitter.bsv)