OBFI

Brainfuck Interpreter
git clone http://git.omkov.net/OBFI
Log | Tree | Refs | README | LICENCE | Download

AuthorJakob Wakeling <[email protected]>
Date2020-06-30 12:12:34
Commit799eb292b27da8dbb51a3b73cc9c86f5f7ddcbde

Add base project files

Diffstat

A .gitignore | 8 ++++++++
A CMakeLists.txt | 17 +++++++++++++++++
A LICENCE | 27 +++++++++++++++++++++++++++
A README.md | 32 ++++++++++++++++++++++++++++++++
A build/buildUNIX.sh | 4 ++++

5 files changed, 88 insertions, 0 deletions

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..99dc2fa
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+.clangd/
+bin/
+build/*
+!build/buildUNIX.sh
+!build/buildWIN32.bat
+!build/buildWIN64.bat
+compile_commands.json
+lib/
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..7d59a99
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,17 @@
+# CMakeLists.txt
+# CMakeLists file for OBFI
+
+CMAKE_MINIMUM_REQUIRED(VERSION 3.12)
+PROJECT(OBFI C)
+
+SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)
+SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)
+SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)
+
+ADD_COMPILE_DEFINITIONS(VERSION="1.0.0")
+
+FILE(GLOB SOURCES ${CMAKE_SOURCE_DIR}/src/*)
+
+ADD_EXECUTABLE(obfi ${SOURCES})
+
+TARGET_INCLUDE_DIRECTORIES(obfi PRIVATE ${CMAKE_SOURCE_DIR}/ext)
diff --git a/LICENCE b/LICENCE
new file mode 100644
index 0000000..a3b99cd
--- /dev/null
+++ b/LICENCE
@@ -0,0 +1,27 @@
+OMKOV Permissive Licence, version 1.0
+
+Copyright (C) 2020, Jakob Wakeling
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal with
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimers.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimers in the documentation and/or
+  other materials provided with the distribution.
+* Neither the names of the copyright holders, nor the names of its contributors
+  may be used to endorse or promote products derived from this Software without
+  specific prior written permission.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT
+HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..b591664
--- /dev/null
+++ b/README.md
@@ -0,0 +1,32 @@
+# OBFI
+
+> OMKOV Brainfuck Interpreter
+
+The OMKOV Brainfuck Interpreter (OBFI) is an interpreter for the Brainfuck
+language written in C.
+
+## Implementation Details
+
+* OBFI uses single byte cells, and arithmetic wraps around.
+* OBFI provides 30000 cells.
+
+## Build Instructions
+
+OBFI uses CMake to build.  
+Binaries will be located in the `bin` directory.
+
+### UNIX Build
+
+Run `buildUNIX.sh` in the `build` directory, or
+
+```sh
+cd build
+cmake -DCMAKE_BUILD_TYPE=Release ../
+make
+```
+
+## Meta
+
+Copyright (C) 2020, Jakob Wakeling  
+All rights reserved.  
+[OMKOV Permissive Licence](https://www.omkov.net/OLPE)
diff --git a/build/buildUNIX.sh b/build/buildUNIX.sh
new file mode 100755
index 0000000..d7d509f
--- /dev/null
+++ b/build/buildUNIX.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env sh
+dir="$(dirname $(realpath "$0"))"
+cd "$dir" && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=1 ../ && make
+mv -f "compile_commands.json" "../compile_commands.json"