git: 885796f15ae9 - main - Add emulators/ripes: Graphical RISC-V simulator

From: Li-Wen Hsu <lwhsu_at_FreeBSD.org>
Date: Mon, 10 Jan 2022 18:02:18 UTC
The branch main has been updated by lwhsu:

URL: https://cgit.FreeBSD.org/ports/commit/?id=885796f15ae920cfa2a400e42fd1e2bdb209d7b2

commit 885796f15ae920cfa2a400e42fd1e2bdb209d7b2
Author:     Mitchell Clay <mclay@astate.edu>
AuthorDate: 2022-01-10 17:59:51 +0000
Commit:     Li-Wen Hsu <lwhsu@FreeBSD.org>
CommitDate: 2022-01-10 17:59:51 +0000

    Add emulators/ripes: Graphical RISC-V simulator
    
    PR:             260124
---
 emulators/Makefile                         |  1 +
 emulators/ripes/Makefile                   | 26 ++++++++++
 emulators/ripes/distinfo                   | 13 +++++
 emulators/ripes/files/patch-CMakeLists.txt | 83 ++++++++++++++++++++++++++++++
 emulators/ripes/pkg-descr                  | 11 ++++
 emulators/ripes/pkg-plist                  | 11 ++++
 6 files changed, 145 insertions(+)

diff --git a/emulators/Makefile b/emulators/Makefile
index 0575b24bfe1e..68eac809d3c3 100644
--- a/emulators/Makefile
+++ b/emulators/Makefile
@@ -111,6 +111,7 @@
     SUBDIR += qemu5
     SUBDIR += qmc2
     SUBDIR += quasi88
+    SUBDIR += ripes
     SUBDIR += riscv-isa-sim
     SUBDIR += rpcs3
     SUBDIR += rtc
diff --git a/emulators/ripes/Makefile b/emulators/ripes/Makefile
new file mode 100644
index 000000000000..352049b8aaa9
--- /dev/null
+++ b/emulators/ripes/Makefile
@@ -0,0 +1,26 @@
+PORTNAME=	ripes
+DISTVERSIONPREFIX=	v
+DISTVERSION=	2.2.3
+CATEGORIES=	emulators
+
+MAINTAINER=	mclay@astate.edu
+COMMENT=	Graphical processor simulator and assembly editor for the RISC-V ISA
+
+LICENSE=	MIT
+
+USES=		cmake qmake qt:5
+
+USE_QT=		buildtools_build charts concurrent core gui svg testlib widgets
+
+CMAKE_INSTALL_PREFIX=   ${STAGEDIR}${PREFIX}
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	mortbopet
+GH_PROJECT=	Ripes
+GH_TUPLE=	mortbopet:VSRTL:65ac251:VSRTL/external/VSRTL \
+		serge1:ELFIO:79fcd11:ELFIO/external/ELFIO \
+		pbhogan:Signals:17881fb:Signals/external/VSRTL/external/Signals \
+		USCiLab:cereal:51cbda5:cereal/external/VSRTL/external/cereal \
+		mortbopet:better-enums:52a694b:better_enums/external/VSRTL/external/better-enums
+
+.include <bsd.port.mk>
diff --git a/emulators/ripes/distinfo b/emulators/ripes/distinfo
new file mode 100644
index 000000000000..d34b74de4f63
--- /dev/null
+++ b/emulators/ripes/distinfo
@@ -0,0 +1,13 @@
+TIMESTAMP = 1638160024
+SHA256 (mortbopet-Ripes-v2.2.3_GH0.tar.gz) = 321dbe3884a339d859e36c6d5fd1c402c616916c72fba5ead544eef64075e7ca
+SIZE (mortbopet-Ripes-v2.2.3_GH0.tar.gz) = 14150373
+SHA256 (mortbopet-VSRTL-65ac251_GH0.tar.gz) = 872b619e5c6f590d94a0ab6fec5e037cc3c948fefe3d3e59f7b5ba3bf9bfe8cc
+SIZE (mortbopet-VSRTL-65ac251_GH0.tar.gz) = 14500229
+SHA256 (serge1-ELFIO-79fcd11_GH0.tar.gz) = 2f2478e48dc20b30fd705e9ae7208ea8ab175b5aa9195d0705142ad6e9054e55
+SIZE (serge1-ELFIO-79fcd11_GH0.tar.gz) = 4229577
+SHA256 (pbhogan-Signals-17881fb_GH0.tar.gz) = 7d2c420dc34471519306dd4070c571c74cb129cac782cb0a38ba07f0ba8488f8
+SIZE (pbhogan-Signals-17881fb_GH0.tar.gz) = 38528
+SHA256 (USCiLab-cereal-51cbda5_GH0.tar.gz) = efa214cfc850a4a2360baf4419b88c93be2a08b09ff5f9bac604a18498b83cfb
+SIZE (USCiLab-cereal-51cbda5_GH0.tar.gz) = 335754
+SHA256 (mortbopet-better-enums-52a694b_GH0.tar.gz) = 6fe24b59328a174eae7b4d755d606615a5bc0397a2b9846079a931486bf94cd3
+SIZE (mortbopet-better-enums-52a694b_GH0.tar.gz) = 136663
diff --git a/emulators/ripes/files/patch-CMakeLists.txt b/emulators/ripes/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..4ab4097a9a80
--- /dev/null
+++ b/emulators/ripes/files/patch-CMakeLists.txt
@@ -0,0 +1,83 @@
+--- CMakeLists.txt.orig	2022-01-05 13:44:44.993511000 -0600
++++ CMakeLists.txt	2022-01-05 14:10:26.330330000 -0600
+@@ -1,4 +1,4 @@
+-cmake_minimum_required(VERSION 3.9)
++cmake_minimum_required(VERSION 3.13)
+ set(CMAKE_CXX_STANDARD 17)
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+@@ -9,19 +9,27 @@
+     set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
+ endif()
+ 
+-project(Ripes CXX)
++project(Ripes
++        LANGUAGES CXX
++        DESCRIPTION "A graphical processor simulator and assembly editor for the RISC-V ISA"
++        HOMEPAGE_URL "https://github.com/mortbopet/Ripes"
++)
+ 
++if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
++    include(GNUInstallDirs) #Must exist after declaring a project
++endif()
++
+ # Error flags on everything but MSVC
+ if(NOT MSVC)
+     set(CMAKE_CXX_FLAGS "-Wextra -Wall \
+-        -Werror=switch -Werror=return-type -Werror=shadow \
++        -Werror=switch -Werror=return-type \
+         -Werror=unreachable-code")
+ endif()
+ 
+ if(MSVC)
+     add_definitions(/bigobj) # Allow big object
+ elseif(MINGW)
+-   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wa,-mbig-obj") # Allow big object
++   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mbig-obj") # Allow big object
+ endif()
+ 
+ ######################################################################
+@@ -62,6 +70,7 @@
+ include_directories(${RIPES_LIB} PUBLIC external/VSRTL/external)
+ include_directories(SYSTEM external/ELFIO)
+ include_directories(SYSTEM external/VSRTL/external/Signals)
++include_directories(external/libelfin_cmake)
+ include_directories(external)
+ 
+ option(RIPES_BUILD_VERILATOR_PROCESSORS "Build verilator processors" OFF)
+@@ -89,6 +98,9 @@
+ endif()
+ 
+ add_subdirectory(external)
++
++# Fix the name of the ripes library.
++set(RIPES_LIB ripes_lib)
+ add_subdirectory(src)
+ 
+ option(RIPES_BUILD_TESTS "Build Ripes tests" OFF)
+@@ -102,4 +114,24 @@
+ # Link Qt libraries
+ target_link_libraries(${APP_NAME} Qt5::Core Qt5::Widgets)
+ # Link Ripes library
+-target_link_libraries(${APP_NAME} ripes_lib)
++target_link_libraries(${APP_NAME} ${RIPES_LIB})
++
++if(UNIX AND NOT APPLE) #Define the LINUX variable before testing it
++    set(LINUX TRUE)
++endif()
++
++if(${LINUX})
++    install(TARGETS ${APP_NAME}
++        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++    )
++elseif(${APPLE})
++    install(TARGETS ${APP_NAME}
++        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++        BUNDLE  DESTINATION ${CMAKE_INSTALL_BINDIR}
++    )
++endif()
++
++install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/appdir/usr/
++    DESTINATION ${CMAKE_INSTALL_PREFIX}
++)
++
diff --git a/emulators/ripes/pkg-descr b/emulators/ripes/pkg-descr
new file mode 100644
index 000000000000..e05e5a24cd18
--- /dev/null
+++ b/emulators/ripes/pkg-descr
@@ -0,0 +1,11 @@
+Ripes is a graphical processor simulator and assembly code editor built
+for the RISC-V instruction set architecture, suitable for teaching how
+assembly level code is executed on various microarchitectures.
+
+Ripes may be used to explore concepts such as how machine code is executed
+on a variety of microarchitectures (RV32IMC/RV64IMC based), how different
+cache designs influence performance, how C and assembly code is compiled
+and assembled to executable machine code, and how a processor interacts
+with memory-mapped I/O.
+
+WWW: https://github.com/mortbopet/ripes
diff --git a/emulators/ripes/pkg-plist b/emulators/ripes/pkg-plist
new file mode 100644
index 000000000000..dbef8e2e1369
--- /dev/null
+++ b/emulators/ripes/pkg-plist
@@ -0,0 +1,11 @@
+/usr/local/bin/Ripes
+/usr/local/share/applications/Ripes.desktop
+/usr/local/share/icons/hicolor/48x48/apps/Ripes.png
+/usr/local/share/icons/hicolor/64x64/apps/Ripes.png
+/usr/local/share/icons/hicolor/512x512/apps/Ripes.png
+/usr/local/share/icons/hicolor/256x256/apps/Ripes.png
+/usr/local/share/icons/hicolor/24x24/apps/Ripes.png
+/usr/local/share/icons/hicolor/128x128/apps/Ripes.png
+/usr/local/share/icons/hicolor/22x22/apps/Ripes.png
+/usr/local/share/icons/hicolor/32x32/apps/Ripes.png
+/usr/local/share/icons/hicolor/16x16/apps/Ripes.png