cmake_minimum_required(VERSION 3.3) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/../cmake) # main (top) cmake dir set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) # project specific cmake dir # CMake useful variables set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") # Set the name of your project here project("riscv.sc") # Set the version number of your project here (format is MAJOR.MINOR.PATCHLEVEL - e.g. 1.0.0) set(VERSION_MAJOR "0") set(VERSION_MINOR "0") set(VERSION_PATCH "1") set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}) include(Common) ## Git (and its revision) find_package(Git QUIET) # if we don't find git or FindGit.cmake is not on the system we ignore it. ## The Git module will trigger a reconfiguration for each pull that will bring a new revision on the local repository set (VCS_REVISION "-1") if(GIT_FOUND) include(GetGitRevisionDescription) get_git_head_revision(GIT_REFSPEC GIT_SHA1) message(STATUS "GIT branch ${GIT_REFSPEC}") message(STATUS "GIT revision ${GIT_SHA1}") set (VCS_REVISION ${GIT_SHA1}) endif() # This line finds the boost lib and headers. set(Boost_NO_BOOST_CMAKE ON) # Don't do a find_package in config mode before searching for a regular boost install. find_package(Boost COMPONENTS program_options system thread REQUIRED) find_package(LLVM REQUIRED CONFIG) message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}") message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}") llvm_map_components_to_libnames(llvm_libs support core mcjit x86codegen x86asmparser) find_package(SystemC) if(SystemC_FOUND) add_definitions(-DWITH_SYSTEMC) include_directories(${SystemC_INCLUDE_DIRS}) link_directories(${SystemC_LIBRARY_DIRS}) else(SystemC_FOUND) message( FATAL_ERROR "SystemC library not found." ) endif(SystemC_FOUND) if(CCI_FOUND) include_directories(${CCI_INCLUDE_DIRS}) link_directories(${CCI_LIBRARY_DIRS}) else() message( FATAL_ERROR "SystemC CCI library not found." ) endif() if(SCV_FOUND) add_definitions(-DWITH_SCV) link_directories(${SCV_LIBRARY_DIRS}) endif(SCV_FOUND) # This sets the include directory for the reference project. This is the -I flag in gcc. include_directories( ${PROJECT_SOURCE_DIR}/incl ${LLVM_INCLUDE_DIRS} ) add_dependent_subproject(dbt-core) add_dependent_subproject(sc-components) add_dependent_subproject(riscv) include_directories( ${PROJECT_SOURCE_DIR}/incl ${PROJECT_SOURCE_DIR}/../riscv/incl ${PROJECT_SOURCE_DIR}/../external/elfio ${PROJECT_SOURCE_DIR}/../external/libGIS ${Boost_INCLUDE_DIRS} ) # Mac needed variables (adapt for your needs - http://www.cmake.org/Wiki/CMake_RPATH_handling#Mac_OS_X_and_the_RPATH) set(CMAKE_MACOSX_RPATH ON) set(CMAKE_SKIP_BUILD_RPATH FALSE) set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) # library files FILE(GLOB RiscVSCHeaders *.h */*.h) set(LIB_HEADERS ${RiscVSCHeaders} ) set(LIB_SOURCES src/core_complex.cpp ) # Define two variables in order not to repeat ourselves. set(LIBRARY_NAME riscv.sc) ## the following setting needs to be consistent with the library #add_definitions(-DSC_DEFAULT_WRITER_POLICY=SC_MANY_WRITERS) # Define the library add_library(${LIBRARY_NAME} ${LIB_SOURCES}) set_target_properties(${LIBRARY_NAME} PROPERTIES VERSION ${VERSION} # ${VERSION} was defined in the main CMakeLists. FRAMEWORK FALSE PUBLIC_HEADER "${LIB_HEADERS}" # specify the public headers ) # # SYSTEM PACKAGING (RPM, TGZ, ...) # _____________________________________________________________________________ #include(CPackConfig) # # CMAKE PACKAGING (for other CMake projects to use this one easily) # _____________________________________________________________________________ #include(PackageConfigurator)