commit 49a8da8d2141e54f95abee2776b2b046e5712d19
parent f61c4a22fd31932362891f43573906da27213dfc
Author: Michael Savage <mikejsavage@gmail.com>
Date:   Sat, 11 Nov 2017 11:57:32 +0200
Windows fixes
Diffstat:
7 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/clipmap.cc b/clipmap.cc
@@ -113,6 +113,8 @@ struct RGBA {
 };
 
 GAME_INIT( game_init ) {
+	net_init();
+
 	// load quadtree
 	{
 		clipmap.heightmap = alloc_array2d< u16 >( &mem->persistent_arena, 4096, 4096 );
diff --git a/intrinsics.h b/intrinsics.h
@@ -4,7 +4,6 @@
 #include <stdlib.h>
 #include <stdint.h>
 #include <string.h>
-#include <errno.h>
 
 #include "platform.h"
 #include "platform_backtrace.h"
@@ -59,8 +58,6 @@ typedef uintptr_t uptr;
 inline void assert_impl( const bool predicate, const char * message ) {
 	if( !predicate ) {
 		puts( message );
-		int err = errno;
-		printf( "errno(%d): %s\n", err, strerror( err ) );
 		print_backtrace_and_abort();
 	}
 }
diff --git a/make.lua b/make.lua
@@ -19,7 +19,7 @@ if OS == "macos" then
 end
 
 bin( "medfall", { "main", "clipmap", "heightmap", "decompress_bc", "skybox", "platform_network", game_objs }, { "lz4", game_libs } )
-msvc_bin_ldflags( "medfall", "opengl32.lib gdi32.lib" )
+msvc_bin_ldflags( "medfall", "opengl32.lib gdi32.lib Ws2_32.lib" )
 gcc_bin_ldflags( "medfall", game_ldflags )
 
 bin( "launch", { "launcher/main", "http", "sha2", "platform_network", game_objs }, { "imgui", "monocypher", "whereami", game_libs } )
diff --git a/platform_alignment.h b/platform_alignment.h
@@ -4,7 +4,7 @@
 
 #if COMPILER_MSVC
 #define ALIGNOF( x ) __alignof( x )
-#define ALIGNTO( x ) TODO
+#define ALIGNTO( n ) __declspec( align( n ) )
 #elif COMPILER_GCCORCLANG
 #define ALIGNOF( x ) __alignof__( x )
 #define ALIGNTO( n ) __attribute__(( aligned( n ) ))
diff --git a/scripts/gen_makefile.lua b/scripts/gen_makefile.lua
@@ -16,7 +16,7 @@ local configs = {
 
 		cxxflags = "/I . /c /Oi /Gm- /GR- /EHa- /EHsc /nologo /DNOMINMAX /DWIN32_LEAN_AND_MEAN",
 		ldflags = "user32.lib shell32.lib advapi32.lib dbghelp.lib /nologo",
-		warnings = "/W4 /wd4100 /wd4201 /wd4189 /wd4351 /wd4505 /wd4127 /wd4530 /wd4702 /D_CRT_SECURE_NO_WARNINGS",
+		warnings = "/W4 /wd4100 /wd4189 /wd4201 /wd4324 /wd4351 /wd4127 /wd4505 /wd4530 /wd4702 /D_CRT_SECURE_NO_WARNINGS",
 	},
 
 	[ "windows-64" ] = { },
diff --git a/unix_backtrace.h b/unix_backtrace.h
@@ -6,6 +6,9 @@
 #include <execinfo.h>
 
 inline void print_backtrace_and_abort() {
+	int error = errno;
+	printf( "errno = %d: %s\n", error, strerror( error ) );
+
 	void * stack[ 128 ];
 	const int stack_size = backtrace( stack, 128 );
 	backtrace_symbols_fd( stack, stack_size, STDERR_FILENO );
diff --git a/win32_backtrace.h b/win32_backtrace.h
@@ -1,6 +1,7 @@
 #pragma once
 
 #include <windows.h>
+#include <errno.h>
 
 #pragma warning( push )
 #pragma warning( disable : 4091 )
@@ -8,6 +9,18 @@
 #pragma warning( pop )
 
 inline void print_backtrace_and_abort() {
+	{
+		int error = errno;
+		printf( "errno = %d: %s\n", error, strerror( error ) );
+	}
+	{
+		DWORD error = GetLastError();
+		char buf[ 1024 ];
+		FormatMessageA( FORMAT_MESSAGE_FROM_SYSTEM, NULL, error,
+			MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), buf, sizeof( buf ), NULL );
+		printf( "GetLastError = %d: %s", error, buf );
+	}
+
 	const int max_symbol_len = 1024;
 
 	HANDLE process = GetCurrentProcess();