OpenCores
URL https://opencores.org/ocsvn/s80186/s80186/trunk

Subversion Repositories s80186

[/] [s80186/] [trunk/] [CMake/] [Verilator.cmake] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 jamieiles
include_directories(${VERILATOR_INCLUDE_DIRS})
2
 
3
set(VERILATED_HEADERS)
4
 
5
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Os -ggdb3 -std=c++14")
6
 
7
if(CMAKE_BUILD_TYPE STREQUAL "Coverage")
8
    set(VERILATOR_COVERAGE_FLAGS --coverage-line -Wno-style)
9
    set(CMAKE_CXX_FLAGS_COVERAGE "${CMAKE_CXX_FLAGS_COVERAGE} -DVM_COVERAGE=1")
10
endif()
11
 
12
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
13
    set(VERILATOR_TRACE_FLAGS --trace --trace-underscore)
14
endif()
15
 
16
function(verilate)
17
    set(options "")
18
    set(oneValueArgs TOPLEVEL)
19
    set(multiValueArgs VERILOG_SOURCES GENERATED_SOURCES DEPENDS)
20
    cmake_parse_arguments(verilate "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
21
    set(generated
22
        ${CMAKE_CURRENT_BINARY_DIR}/V${verilate_TOPLEVEL}.cpp
23
        ${CMAKE_CURRENT_BINARY_DIR}/V${verilate_TOPLEVEL}.h
24
        ${CMAKE_CURRENT_BINARY_DIR}/V${verilate_TOPLEVEL}__Syms.cpp
25
        ${CMAKE_CURRENT_BINARY_DIR}/V${verilate_TOPLEVEL}__Syms.h)
26
    list(APPEND generated ${verilate_GENERATED_SOURCES})
27
    if(CMAKE_BUILD_TYPE STREQUAL "Debug")
28
        list(APPEND generated
29
             ${CMAKE_CURRENT_BINARY_DIR}/V${verilate_TOPLEVEL}__Trace.cpp
30
             ${CMAKE_CURRENT_BINARY_DIR}/V${verilate_TOPLEVEL}__Trace__Slow.cpp)
31
    endif()
32
    foreach(source ${verilate_VERILOG_SOURCES})
33
        get_source_file_property(res ${source} COMPILE_FLAGS)
34
        if(NOT res STREQUAL "NOTFOUND")
35
            list(APPEND extra_compile_flags ${res})
36
        endif()
37
    endforeach(source)
38
    set(VERILATED_HEADERS "${VERILATED_HEADERS} ${CMAKE_CURRENT_BINARY_DIR}/V${verilate_TOPLEVEL}.h" )
39
    set(VERILATOR_INCLUDE_ARGS "")
40
    get_property(incdirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
41
    foreach(incdir ${incdirs})
42
        set(VERILATOR_INCLUDE_ARGS "${VERILATOR_INCLUDE_ARGS} -I${incdir}")
43
    endforeach(incdir)
44
    separate_arguments(VERILATOR_INCLUDE_ARGS)
45
    set_source_files_properties(${generated} PROPERTIES COMPILE_FLAGS -Wno-unused-parameter)
46
    add_custom_command(OUTPUT ${generated}
47
                       COMMAND rm -f ${generated}
48
                       COMMAND verilator -sv -O3 ${verilate_VERILOG_SOURCES}
49
                            -Wall -Wwarn-lint -Wwarn-style --assert
50
                            -I${CMAKE_CURRENT_SOURCE_DIR}
51
                            -I${CMAKE_CURRENT_BINARY_DIR}
52
                            ${VERILATOR_TRACE_FLAGS} ${VERILATOR_COVERAGE_FLAGS}
53
                            ${extra_compile_flags} --cc --top-module ${verilate_TOPLEVEL}
54
                            --Mdir ${CMAKE_CURRENT_BINARY_DIR}
55
                            ${VERILATOR_INCLUDE_ARGS}
56
                       WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
57
                       DEPENDS ${verilate_VERILOG_SOURCES} ${verilate_DEPENDS})
58
    add_library(V${verilate_TOPLEVEL} SHARED ${generated})
59
    include_directories(${CMAKE_CURRENT_BINARY_DIR})
60
    include_directories(${CMAKE_CURRENT_SOURCE_DIR})
61
endfunction()

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.