summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/haversine/build.sh12
-rw-r--r--src/haversine/haversine_generator.cpp2
-rw-r--r--src/haversine/haversine_random.h2
-rw-r--r--src/meta/md.c (renamed from src/sim86/libs/metadesk/md.c)0
-rw-r--r--src/meta/md.h (renamed from src/sim86/libs/metadesk/md.h)0
-rw-r--r--src/meta/md_stb_sprintf.h (renamed from src/sim86/libs/metadesk/md_stb_sprintf.h)0
-rw-r--r--src/meta/meta.c (renamed from src/sim86/sim86_meta.c)31
-rwxr-xr-xsrc/sim86/build.sh83
-rw-r--r--src/sim86/libs/reference_decoder/sim86.h12
-rw-r--r--src/sim86/sim86.cpp12
-rw-r--r--src/sim86/sim86.h6
11 files changed, 66 insertions, 94 deletions
diff --git a/src/haversine/build.sh b/src/haversine/build.sh
index 35b92a9..bf56a05 100755
--- a/src/haversine/build.sh
+++ b/src/haversine/build.sh
@@ -18,7 +18,6 @@ ClangFlags="-fdiagnostics-absolute-paths -ftime-trace
GCCFlags="-Wno-cast-function-type -Wno-missing-field-initializers -Wno-int-to-pointer-cast"
-
#- Main
clang=1
@@ -46,10 +45,11 @@ Flags="$Flags $LinkerFlags"
[ "$release" = 1 ] && printf '[release mode]\n'
printf '[%s compile]\n' "$Compiler"
-mkdir -p ../../build
-
-printf '[metadata generation]\n'
+Build="../../build"
+mkdir -p "$Build"
mkdir -p generated
-../../build/sim86_meta haversine.mdesk > generated/types.h
-$Compiler $Flags -o ../../build/haversine_generator haversine_generator.cpp
+$Compiler $Flags -o "$Build"/meta ../meta/meta.c
+"$Build"/meta ./haversine.mdesk > ./generated/types.h
+
+$Compiler $Flags -o "$Build"/haversine_generator haversine_generator.cpp
diff --git a/src/haversine/haversine_generator.cpp b/src/haversine/haversine_generator.cpp
index 2f4eee0..b30dbe8 100644
--- a/src/haversine/haversine_generator.cpp
+++ b/src/haversine/haversine_generator.cpp
@@ -1,7 +1,9 @@
//~ Libraries
#include "libs/lr/lr.h"
+PUSH_WARNINGS
#define STB_SPRINTF_IMPLEMENTATION
#include "libs/stb_sprintf.h"
+POP_WARNINGS
#include "libs/listing_065.cpp"
//~ Standard library
diff --git a/src/haversine/haversine_random.h b/src/haversine/haversine_random.h
index a9ec221..e80df7d 100644
--- a/src/haversine/haversine_random.h
+++ b/src/haversine/haversine_random.h
@@ -34,7 +34,7 @@ RandomF64(pcg64_random_t *RNG)
{
s32 Exponent = -64;
u64 Significand;
- umm Shift;
+ s32 Shift;
/*
* Read zeros into the exponent until we hit a one; the rest
diff --git a/src/sim86/libs/metadesk/md.c b/src/meta/md.c
index 6be1e69..6be1e69 100644
--- a/src/sim86/libs/metadesk/md.c
+++ b/src/meta/md.c
diff --git a/src/sim86/libs/metadesk/md.h b/src/meta/md.h
index faad8e3..faad8e3 100644
--- a/src/sim86/libs/metadesk/md.h
+++ b/src/meta/md.h
diff --git a/src/sim86/libs/metadesk/md_stb_sprintf.h b/src/meta/md_stb_sprintf.h
index 4758435..4758435 100644
--- a/src/sim86/libs/metadesk/md_stb_sprintf.h
+++ b/src/meta/md_stb_sprintf.h
diff --git a/src/sim86/sim86_meta.c b/src/meta/meta.c
index 1201afc..0d0cce0 100644
--- a/src/sim86/sim86_meta.c
+++ b/src/meta/meta.c
@@ -1,29 +1,4 @@
-
-#if __clang__
-# define COMPILER_CLANG 1
-#elif _MSC_VER
-# define COMPILER_MSVC 1
-#elif __GNUC__
-# define COMPILER_GNU 1
-#endif
-
-#if defined(COMPILER_GNU)
-# define PUSH_WARNINGS \
-_Pragma("GCC diagnostic push") \
-_Pragma("GCC diagnostic ignored \"-Weverything\"")
-# define POP_WARNINGS \
-_Pragma("GCC diagnostic pop")
-#elif defined(COMPILER_CLANG)
-# define PUSH_WARNINGS \
-_Pragma("clang diagnostic push") \
-_Pragma("clang diagnostic ignored \"-Weverything\"")
-# define POP_WARNINGS \
-_Pragma("clang diagnostic pop")
-#else
-# define PUSH_WARNINGS \
-_Pragma("message \"No compatible compiler found\"")
-# define POP_WARNINGS
-#endif
+#include "lr/lr_macros.h"
PUSH_WARNINGS
#include "md.h"
@@ -109,7 +84,7 @@ int main(int ArgsCount, char *Args[])
MD_Node *MemberNode = MD_FirstNodeWithString(TableTag->first_child, MemberName, 0);
int MemberIndex = MD_IndexFromNode(MemberNode);
- int MemberCount = MD_ChildCountFromNode(Table);
+ MD_u64 MemberCount = MD_ChildCountFromNode(Table);
MD_S8ListPushFmt(Arena, &Stream, "int %SCount = %d;\n", Node->string, MemberCount);
// Header
@@ -208,4 +183,4 @@ int main(int ArgsCount, char *Args[])
}
return 0;
-} \ No newline at end of file
+}
diff --git a/src/sim86/build.sh b/src/sim86/build.sh
index 74f6828..c4f388d 100755
--- a/src/sim86/build.sh
+++ b/src/sim86/build.sh
@@ -1,42 +1,51 @@
#!/bin/sh
-cd "$(dirname "$(readlink -f "$0")")"
+set -eu
+
+ScriptDirectory="$(dirname "$(readlink -f "$0")")"
+cd "$ScriptDirectory"
+
+#- Globals
+CommonCompilerFlags="-DOS_LINUX=1 -fsanitize-trap -nostdinc++"
+CommonWarningFlags="-Wall -Wextra -Wconversion -Wdouble-promotion -Wno-sign-conversion -Wno-sign-compare -Wno-double-promotion -Wno-unused-but-set-variable -Wno-unused-variable -Wno-write-strings -Wno-pointer-arith -Wno-unused-parameter -Wno-unused-function"
+LinkerFlags=""
+
+DebugFlags="-g -ggdb -g3"
+ReleaseFlags="-O3"
+
+ClangFlags="-fdiagnostics-absolute-paths -ftime-trace
+-Wno-null-dereference -Wno-missing-braces -Wno-vla-extension -Wno-writable-strings -Wno-missing-field-initializers -Wno-address-of-temporary -Wno-int-to-void-pointer-cast"
+
+GCCFlags="-Wno-cast-function-type -Wno-missing-field-initializers -Wno-int-to-pointer-cast"
+
+#- Main
+
+clang=1
+gcc=0
+debug=1
+release=0
+for Arg in "$@"; do eval "$Arg=1"; done
+# Exclusive flags
+[ "$release" = 1 ] && debug=0
+[ "$gcc" = 1 ] && clang=0
+
+[ "$gcc" = 1 ] && Compiler="g++"
+[ "$clang" = 1 ] && Compiler="clang"
+
+Flags="$CommonCompilerFlags"
+[ "$debug" = 1 ] && Flags="$Flags $DebugFlags"
+[ "$release" = 1 ] && Flags="$Flags $ReleaseFlags"
+Flags="$Flags $CommonCompilerFlags"
+Flags="$Flags $CommonWarningFlags"
+[ "$clang" = 1 ] && Flags="$Flags $ClangFlags"
+[ "$gcc" = 1 ] && Flags="$Flags $GCCFlags"
+Flags="$Flags $LinkerFlags"
+
+[ "$debug" = 1 ] && printf '[debug mode]\n'
+[ "$release" = 1 ] && printf '[release mode]\n'
+printf '[%s compile]\n' "$Compiler"
Build="../../build"
mkdir -p "$Build"
-mkdir -p generated
-
-Compiler="clang"
-
-CompilerFlags="
--I./libs/metadesk
--g
--fdiagnostics-absolute-paths
--nostdinc++
--DSIM86_INTERNAL
-"
-
-WarningFlags="
--Wall
--Wextra
--Wno-unused-label
--Wno-unused-variable
--Wno-unused-function
--Wno-unused-value
--Wno-unused-but-set-variable
--Wno-missing-field-initializers
--Wno-write-strings
-"
-
-printf '[metadata generation]\n'
-$Compiler $CompilerFlags $WarningFlags \
- -o "$Build"/sim86_meta \
- sim86_meta.c
-"$Build"/sim86_meta ./sim86.mdesk > ./generated/generated.cpp
-
-printf '[debug mode]\n'
-printf '[%s build]\n' "$Compiler"
-Source="sim86.cpp"
-$Compiler $CompilerFlags $WarningFlags \
- -o "$Build"/sim86 \
- sim86.cpp
+
+$Compiler $Flags -o "$Build"/sim86 sim86.cpp
diff --git a/src/sim86/libs/reference_decoder/sim86.h b/src/sim86/libs/reference_decoder/sim86.h
index b065a0e..893487b 100644
--- a/src/sim86/libs/reference_decoder/sim86.h
+++ b/src/sim86/libs/reference_decoder/sim86.h
@@ -10,18 +10,6 @@
======================================================================== */
-typedef char unsigned u8;
-typedef short unsigned u16;
-typedef int unsigned u32;
-typedef long long unsigned u64;
-
-typedef char s8;
-typedef short s16;
-typedef int s32;
-typedef long long s64;
-
-typedef s32 b32;
-
#define ArrayCount(Array) (sizeof(Array) / sizeof((Array)[0]))
static u32 const SIM86_VERSION = 4;
diff --git a/src/sim86/sim86.cpp b/src/sim86/sim86.cpp
index 6eee81d..9b233f7 100644
--- a/src/sim86/sim86.cpp
+++ b/src/sim86/sim86.cpp
@@ -1,9 +1,13 @@
#include <stdio.h>
#include <string.h>
+#include "sim86.h"
+#include "libs/lr/lr.h"
+
+PUSH_WARNINGS
#include "./libs/reference_decoder/sim86_lib.cpp"
+POP_WARNINGS
-#include "sim86.h"
#include "clocks_table.inl"
#include "generated/generated.cpp"
@@ -143,7 +147,7 @@ b32 IsMatchingOp(instruction_operand *Operand, instruction_clocks_operand_type T
}
internal void
-Run8086(psize MemorySize, u8 *Memory)
+Run8086(umm MemorySize, u8 *Memory)
{
s32 Registers[Register_count] = {};
u32 FlagsRegister = 0;
@@ -153,7 +157,7 @@ Run8086(psize MemorySize, u8 *Memory)
while(IPRegister < MemorySize)
{
instruction Decoded;
- Sim86_Decode8086Instruction(MemorySize - IPRegister, Memory + IPRegister, &Decoded);
+ Sim86_Decode8086Instruction((u32)(MemorySize - IPRegister), Memory + IPRegister, &Decoded);
if(Decoded.Op)
{
u32 OldIPRegister = IPRegister;
@@ -500,7 +504,7 @@ int main(int ArgsCount, char *Args[])
FILE *File = fopen(FileName, "rb");
if(File)
{
- psize BytesWritten = fread(GlobalMemory, 1, sizeof(GlobalMemory), File);
+ umm BytesWritten = fread(GlobalMemory, 1, sizeof(GlobalMemory), File);
fclose(File);
if(Execute)
diff --git a/src/sim86/sim86.h b/src/sim86/sim86.h
index 24068e2..230171c 100644
--- a/src/sim86/sim86.h
+++ b/src/sim86/sim86.h
@@ -3,12 +3,6 @@
#ifndef SIM86_H
#define SIM86_H
-#define internal static
-#define global_variable static
-#define local_persist static
-
-typedef size_t psize;
-
#define Assert(Expression) if(!(Expression)) { __asm__ volatile("int3"); }
#define ArrayCount(Array) (sizeof(Array) / sizeof((Array)[0]))