diff --git a/.idea/ninja.iml b/.idea/ninja.iml
index bc2cd87..f08604b 100644
--- a/.idea/ninja.iml
+++ b/.idea/ninja.iml
@@ -1,8 +1,2 @@
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3a0316d..7d00741 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,12 @@
-# cmake_minimum_required(VERSION )
-project(ninja C)
-
-set(CMAKE_C_STANDARD 11)
+cmake_minimum_required(VERSION 3.0)
+project(ninja LANGUAGES C)
+set(CMAKE_C_STANDARD 99)
+set(PROJECT_VERSION 0)
+configure_file(
+ ${CMAKE_SOURCE_DIR}/config.h.in
+ ${CMAKE_BINARY_DIR}/config.h
+)
+include_directories(${CMAKE_BINARY_DIR})
add_executable(ninja
- njvm.c)
+ njvm.c config.h.in)
diff --git a/config.h.in b/config.h.in
new file mode 100644
index 0000000..ae08216
--- /dev/null
+++ b/config.h.in
@@ -0,0 +1 @@
+#define PROJECT_VERSION @PROJECT_VERSION@
\ No newline at end of file
diff --git a/njvm.c b/njvm.c
index 8b13789..95cf57c 100644
--- a/njvm.c
+++ b/njvm.c
@@ -1 +1,43 @@
+#include
+#include
+#include "config.h"
+void version() {
+ printf("Ninja Virtual Machine version %i (compiled %s, %s)\n", PROJECT_VERSION, __DATE__, __TIME__);
+}
+
+void help() {
+ printf("usage: ./njvm [option] [option] ...\n\t--version\tshow version and exit\n\t--help\t\tshow this help and exit");
+}
+void printArgs(int argc, char *argv[]){
+ for (int i = 0; i < argc; ++i) {
+ printf("%s\n", argv[i]);
+ }
+}
+void useption(int argc, char *argv[]){
+ if (argc > 1) {
+ if (strcmp(argv[1], "--version") == 0) {
+ version();
+ } else if (strcmp(argv[1], "--help") == 0) {
+ help();
+ } else if (argc != 0) {
+ printf("unknown command line argument '%s', try './njvm --help'", argv[1]);
+ }
+ }
+}
+
+int main(int argc, char *argv[]) {
+ printArgs(argc,argv);
+ if (argc > 1) useption(argc,argv);
+ else {
+
+// Started
+ printf("Ninja Virtual Machine started\n");
+
+
+
+// Stopped
+ printf("Ninja Virtual Machine stopped\n");
+ return 0;
+ }
+}
\ No newline at end of file