diff --git a/apps/enclave/Makefile b/apps/enclave/Makefile index 3805927028bfd06880d52080560faa6e98c5924b..c3e5b5527bebb650e4ee2415e7e200ae9754e0ca 100644 --- a/apps/enclave/Makefile +++ b/apps/enclave/Makefile @@ -34,7 +34,7 @@ CFLAGS = -g -march=i486 -pipe -Wall CFLAGS += -I$(SAMINCDIR) -I$(TOMCRYPTDIR) LDFLAGS = -L$(SAMLIBDIR) -L$(TOMCRYPTDIR) -LIBS = -lsam -ltomcrypt +LIBS = -lsam -ltomcrypt -lpthread # # Object files @@ -45,6 +45,7 @@ OBJS = $(OBJDIR)/bigint.o \ $(OBJDIR)/config.o \ $(OBJDIR)/logger.o \ $(OBJDIR)/main.o \ + $(OBJDIR)/mutex.o \ $(OBJDIR)/peers.o \ $(OBJDIR)/random.o \ $(OBJDIR)/rpc.o \ diff --git a/apps/enclave/src/logger.cpp b/apps/enclave/src/logger.cpp index 1458459950c0a8b50054222a5d610ed092e7981d..a0491f18c6b86fdd141af4f66f6414d4e2ab8e32 100644 --- a/apps/enclave/src/logger.cpp +++ b/apps/enclave/src/logger.cpp @@ -42,3 +42,20 @@ Logger::Logger(const string& file) throw runtime_error("Error opening log file"); } } + +#ifdef WIN_STRERROR +/* + * strerror() for primitive operating systems + */ +TCHAR* win_strerror(TCHAR* str, size_t size) +{ + LPVOID lpMsgBuf; + DWORD dw = GetLastError(); + FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, + NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, + 0, NULL); + snprintf(str, size, "%s", lpMsgBuf); + LocalFree(lpMsgBuf); + return str; +} +#endif diff --git a/apps/enclave/src/logger.hpp b/apps/enclave/src/logger.hpp index 75a5c289222dc965fd4b776d89588eee572ab89e..9ed809241f698a808ddec57f2ebfdd5b21e631f3 100644 --- a/apps/enclave/src/logger.hpp +++ b/apps/enclave/src/logger.hpp @@ -81,4 +81,8 @@ class Logger { ofstream logf; }; +#ifdef WIN_STRERROR +TCHAR* win_strerror(TCHAR* str, size_t size); +#endif + #endif // LOGGER_HPP diff --git a/apps/enclave/src/platform.hpp b/apps/enclave/src/platform.hpp index bfdf40ae591a9751d05838f88fd8e89a9fca11ce..d4a8a201ae687ff4876036f1b505ca946154f57f 100644 --- a/apps/enclave/src/platform.hpp +++ b/apps/enclave/src/platform.hpp @@ -39,6 +39,11 @@ #define LINUX 2 // Linux #define CYGWIN 3 // Cygwin +#if OS == MINGW + #define WIN_STRERROR + #define WINTHREADS +#endif + /* * System includes */ @@ -49,6 +54,11 @@ #include <iostream> #include <list> #include <map> +#ifdef WINTHREADS + #include <windows.h> +#else + #include <pthread.h> +#endif #include <stdexcept> #include <stdint.h> #include <string>