# Project: Web-based RISC-V Instruction Set Simulation and Debugger
> Project Requirement <[Web-based RISC-V Instruction Set Simulation and Debugger](https://hackmd.io/@sysprog/S1t4EjCZ-e)>
> Past Project Reference <[Enhance visualized RISC-V simulation](https://hackmd.io/@sysprog/H1hH_y_Syx)>
> Github <[1141_CA_Final_Project](https://github.com/ianrwan/1141_CA_Final_Project.git)>
## Project Preparation
### Create Final Project Folder and Create New Git
```bash=
mkdir Final_Project
cd Final_Project
```
After `Final_Project` folder is created, we can add `README.md` file inside the folder and have a initial commit in `main` branch.
```bash=
git add .
git commit -m "Initial Commit"
git branch -M main
```
### Merge Ares Project
Here is [Ares](https://github.com/ldlaur/ares.git) project on Github and we can merge it into the git of our final project.
We can type following comments:
```bash=
git subtree add --prefix=ares https://github.com/ldlaur/ares.git master --squash
```
> Explaination of this comment:
> 1. **subtree:** It can help us easily merge projects which already had git.
> 2. **--prefix=ares:** It can help us create a folder named `ares` and put the git folder inside it. <font color="red">**[The folder we want to create needs to be empty, otherwise it won't work.]**</font>
> 3. **https ~:** The directory or url we want to download from.
> 4. **master:** The branch we want to download from.
> 5. **--squash:** This identifier will only show the latest commit or the commit we assign. If we don't use this identifier, it will merge all the commits together.
> The detail of `git subtree` can see the document -> [Git Subtree](https://git-memo.readthedocs.io/en/latest/subtree.html).
> Or the note from Bosh Kuo -> [Git Subtree:多專案整合的實用技巧](https://notes.boshkuo.com/docs/DevTools/Git/git-subtree).
Ares is a web which can dynamically show the RV32I instruction between the memory.
The original web of Ares -> [Ares Web](https://ares-sim.github.io/).
### Merge emulsiV Project
Here is [emulsiV](https://github.com/ESEO-Tech/emulsiV) project on Github and we can merge it into the git of out final project.
We can type following comments:
```bash=
git subtree add --prefix=ares https://github.com/ESEO-Tech/emulsiV master --squash
```
### Push it to Our Github 1141_CA_Fianl_Project
```bash=
git remote add origin https://github.com/ianrwan/1141_CA_Final_Project.git
git push -u origin main
```
**Github of our final project -> [1141_CA_Final_Project](https://github.com/ianrwan/1141_CA_Final_Project.git).**
## Test WebAssembly
<[mdn Webassembly](https://developer.mozilla.org/en-US/docs/WebAssembly/Guides/C_to_Wasm)>
<[Download WebAssembly](https://emscripten.org/docs/getting_started/downloads.html)>
## Test Websocket
```
CMake Error at C:/InstallData/cmake/share/cmake-4.2/Modules/FindPackageHandleStandardArgs.cmake:290 (message):
Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY
OPENSSL_INCLUDE_DIR)
Call Stack (most recent call first):
C:/InstallData/cmake/share/cmake-4.2/Modules/FindPackageHandleStandardArgs.cmake:654 (_FPHSA_FAILURE_MESSAGE)
C:/InstallData/cmake/share/cmake-4.2/Modules/FindOpenSSL.cmake:752 (find_package_handle_standard_args)
lib/tls/CMakeLists.txt:292 (find_package)
```
Solution:
```
cmake .. -G "MinGW Makefiles" -DLWS_WITH_SSL=OFF
```
Next Step:
```
In file included from C:/Users/Ianwa/Documents/My_Data/test_websocket/libwebsockets/lib/core/private-lib-core.h:135:0,
from C:\Users\Ianwa\Documents\My_Data\test_websocket\libwebsockets\lib\plat\windows\windows-fds.c:28:
c:\users\ianwa\documents\my_data\test_websocket\libwebsockets\lib\plat\windows\private-lib-plat-windows.h:62:23: fatal error: in6addr.h: No such file or directory
#include <in6addr.h>
^
compilation terminated.
lib\CMakeFiles\websockets.dir\build.make:78: recipe for target 'lib/CMakeFiles/websockets.dir/plat/windows/windows-fds.c.obj' failed
mingw32-make[2]: *** [lib/CMakeFiles/websockets.dir/plat/windows/windows-fds.c.obj] Error 1
CMakeFiles\Makefile2:4969: recipe for target 'lib/CMakeFiles/websockets.dir/all' failed
mingw32-make[1]: *** [lib/CMakeFiles/websockets.dir/all] Error 2
Makefile:164: recipe for target 'all' failed
mingw32-make: *** [all] Error 2
```