Author | Jakob Wakeling <[email protected]> |
Date | 2020-06-30 12:12:34 |
Commit | 799eb292b27da8dbb51a3b73cc9c86f5f7ddcbde |
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"