summaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorGravatar Yuri Kunde Schlesner2015-05-07 11:45:45 -0700
committerGravatar Yuri Kunde Schlesner2015-05-07 11:45:45 -0700
commit4f4d230dac936f32cceb8be35fe09822d85bb2b6 (patch)
treea180a736708834708e0e5b95fd1720f37722b429 /src/common
parentMerge pull request #695 from Subv/crash_f (diff)
parentFix printf format warning (diff)
downloadyuzu-4f4d230dac936f32cceb8be35fe09822d85bb2b6.tar.gz
yuzu-4f4d230dac936f32cceb8be35fe09822d85bb2b6.tar.xz
yuzu-4f4d230dac936f32cceb8be35fe09822d85bb2b6.zip
Merge pull request #721 from yuriks/more-cleanups
More cleanups
Diffstat (limited to '')
-rw-r--r--src/common/CMakeLists.txt1
-rw-r--r--src/common/assert.h1
-rw-r--r--src/common/bit_field.h2
-rw-r--r--src/common/break_points.cpp1
-rw-r--r--src/common/break_points.h2
-rw-r--r--src/common/chunk_file.h3
-rw-r--r--src/common/common.h120
-rw-r--r--src/common/common_funcs.h82
-rw-r--r--src/common/common_paths.h3
-rw-r--r--src/common/common_types.h15
-rw-r--r--src/common/concurrent_ring_buffer.h2
-rw-r--r--src/common/emu_window.h6
-rw-r--r--src/common/file_util.cpp54
-rw-r--r--src/common/file_util.h2
-rw-r--r--src/common/hash.cpp3
-rw-r--r--src/common/hash.h2
-rw-r--r--src/common/linear_disk_cache.h2
-rw-r--r--src/common/logging/text_formatter.cpp1
-rw-r--r--src/common/math_util.cpp6
-rw-r--r--src/common/math_util.h2
-rw-r--r--src/common/mem_arena.cpp6
-rw-r--r--src/common/mem_arena.h2
-rw-r--r--src/common/memory_util.cpp3
-rw-r--r--src/common/misc.cpp4
-rw-r--r--src/common/platform.h57
-rw-r--r--src/common/profiler.cpp1
-rw-r--r--src/common/string_util.cpp4
-rw-r--r--src/common/string_util.h2
-rw-r--r--src/common/symbols.h4
-rw-r--r--src/common/thread.h1
-rw-r--r--src/common/thread_queue_list.h2
-rw-r--r--src/common/thunk.h2
-rw-r--r--src/common/timer.cpp4
-rw-r--r--src/common/timer.h2
34 files changed, 130 insertions, 274 deletions
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
index daa2d59de..9a9f1a46b 100644
--- a/src/common/CMakeLists.txt
+++ b/src/common/CMakeLists.txt
@@ -27,7 +27,6 @@ set(HEADERS
27 bit_field.h 27 bit_field.h
28 break_points.h 28 break_points.h
29 chunk_file.h 29 chunk_file.h
30 common.h
31 common_funcs.h 30 common_funcs.h
32 common_paths.h 31 common_paths.h
33 common_types.h 32 common_types.h
diff --git a/src/common/assert.h b/src/common/assert.h
index 9ca7adb15..4f26c63e9 100644
--- a/src/common/assert.h
+++ b/src/common/assert.h
@@ -4,6 +4,7 @@
4 4
5#pragma once 5#pragma once
6 6
7#include <cstdio>
7#include <cstdlib> 8#include <cstdlib>
8 9
9#include "common/common_funcs.h" 10#include "common/common_funcs.h"
diff --git a/src/common/bit_field.h b/src/common/bit_field.h
index 8eab054b8..1f3ecf844 100644
--- a/src/common/bit_field.h
+++ b/src/common/bit_field.h
@@ -35,7 +35,7 @@
35#include <limits> 35#include <limits>
36#include <type_traits> 36#include <type_traits>
37 37
38#include "common/common.h" 38#include "common/common_funcs.h"
39 39
40/* 40/*
41 * Abstract bitfield class 41 * Abstract bitfield class
diff --git a/src/common/break_points.cpp b/src/common/break_points.cpp
index 15055bd4e..023a485a4 100644
--- a/src/common/break_points.cpp
+++ b/src/common/break_points.cpp
@@ -2,7 +2,6 @@
2// Licensed under GPLv2 or any later version 2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included. 3// Refer to the license.txt file included.
4 4
5#include "common/common.h"
6#include "common/debug_interface.h" 5#include "common/debug_interface.h"
7#include "common/break_points.h" 6#include "common/break_points.h"
8#include "common/logging/log.h" 7#include "common/logging/log.h"
diff --git a/src/common/break_points.h b/src/common/break_points.h
index 4b26cf90d..f0a55e7b1 100644
--- a/src/common/break_points.h
+++ b/src/common/break_points.h
@@ -7,7 +7,7 @@
7#include <vector> 7#include <vector>
8#include <string> 8#include <string>
9 9
10#include "common/common.h" 10#include "common/common_types.h"
11 11
12class DebugInterface; 12class DebugInterface;
13 13
diff --git a/src/common/chunk_file.h b/src/common/chunk_file.h
index 3f97d56bf..dcd80525e 100644
--- a/src/common/chunk_file.h
+++ b/src/common/chunk_file.h
@@ -34,8 +34,9 @@
34#include <set> 34#include <set>
35#include <type_traits> 35#include <type_traits>
36 36
37#include "common/common.h" 37#include "common/common_types.h"
38#include "common/file_util.h" 38#include "common/file_util.h"
39#include "common/logging/log.h"
39 40
40template <class T> 41template <class T>
41struct LinkedListItem : public T 42struct LinkedListItem : public T
diff --git a/src/common/common.h b/src/common/common.h
deleted file mode 100644
index f7d0f55c5..000000000
--- a/src/common/common.h
+++ /dev/null
@@ -1,120 +0,0 @@
1// Copyright 2013 Dolphin Emulator Project / 2014 Citra Emulator Project
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7// DO NOT EVER INCLUDE <windows.h> directly _or indirectly_ from this file
8// since it slows down the build a lot.
9
10#include <cstdlib>
11#include <cstdio>
12#include <cstring>
13
14#define STACKALIGN
15
16// An inheritable class to disallow the copy constructor and operator= functions
17class NonCopyable
18{
19protected:
20 NonCopyable() {}
21 NonCopyable(const NonCopyable&&) {}
22 void operator=(const NonCopyable&&) {}
23private:
24 NonCopyable(NonCopyable&);
25 NonCopyable& operator=(NonCopyable& other);
26};
27
28#include "common/assert.h"
29#include "common/logging/log.h"
30#include "common/common_types.h"
31#include "common/common_funcs.h"
32#include "common/common_paths.h"
33#include "common/platform.h"
34
35#ifdef __APPLE__
36// The Darwin ABI requires that stack frames be aligned to 16-byte boundaries.
37// This is only needed on i386 gcc - x86_64 already aligns to 16 bytes.
38 #if defined __i386__ && defined __GNUC__
39 #undef STACKALIGN
40 #define STACKALIGN __attribute__((__force_align_arg_pointer__))
41 #endif
42#elif defined _WIN32
43// Check MSC ver
44 #if defined _MSC_VER && _MSC_VER <= 1000
45 #error needs at least version 1000 of MSC
46 #endif
47
48 #ifndef NOMINMAX
49 #define NOMINMAX
50 #endif
51
52// Alignment
53 #define MEMORY_ALIGNED16(x) __declspec(align(16)) x
54 #define MEMORY_ALIGNED32(x) __declspec(align(32)) x
55 #define MEMORY_ALIGNED64(x) __declspec(align(64)) x
56 #define MEMORY_ALIGNED128(x) __declspec(align(128)) x
57 #define MEMORY_ALIGNED16_DECL(x) __declspec(align(16)) x
58 #define MEMORY_ALIGNED64_DECL(x) __declspec(align(64)) x
59#endif
60
61// Windows compatibility
62#ifndef _WIN32
63 #ifdef _LP64
64 #define _M_X64 1
65 #else
66 #define _M_IX86 1
67 #endif
68 #define __forceinline inline __attribute__((always_inline))
69 #define MEMORY_ALIGNED16(x) __attribute__((aligned(16))) x
70 #define MEMORY_ALIGNED32(x) __attribute__((aligned(32))) x
71 #define MEMORY_ALIGNED64(x) __attribute__((aligned(64))) x
72 #define MEMORY_ALIGNED128(x) __attribute__((aligned(128))) x
73 #define MEMORY_ALIGNED16_DECL(x) __attribute__((aligned(16))) x
74 #define MEMORY_ALIGNED64_DECL(x) __attribute__((aligned(64))) x
75#endif
76
77#ifdef _MSC_VER
78 #define __strdup _strdup
79 #define __getcwd _getcwd
80 #define __chdir _chdir
81#else
82 #define __strdup strdup
83 #define __getcwd getcwd
84 #define __chdir chdir
85#endif
86
87#if defined _M_GENERIC
88# define _M_SSE 0x0
89#elif defined __GNUC__
90# if defined __SSE4_2__
91# define _M_SSE 0x402
92# elif defined __SSE4_1__
93# define _M_SSE 0x401
94# elif defined __SSSE3__
95# define _M_SSE 0x301
96# elif defined __SSE3__
97# define _M_SSE 0x300
98# endif
99#elif (_MSC_VER >= 1500) || __INTEL_COMPILER // Visual Studio 2008
100# define _M_SSE 0x402
101#endif
102
103// Host communication.
104enum HOST_COMM
105{
106 // Begin at 10 in case there is already messages with wParam = 0, 1, 2 and so on
107 WM_USER_STOP = 10,
108 WM_USER_CREATE,
109 WM_USER_SETCURSOR,
110};
111
112// Used for notification on emulation state
113enum EMUSTATE_CHANGE
114{
115 EMUSTATE_CHANGE_PLAY = 1,
116 EMUSTATE_CHANGE_PAUSE,
117 EMUSTATE_CHANGE_STOP
118};
119
120#include "swap.h"
diff --git a/src/common/common_funcs.h b/src/common/common_funcs.h
index e76cb7d68..4f9e514c9 100644
--- a/src/common/common_funcs.h
+++ b/src/common/common_funcs.h
@@ -7,13 +7,6 @@
7#include "common_types.h" 7#include "common_types.h"
8#include <cstdlib> 8#include <cstdlib>
9 9
10#ifdef _WIN32
11#define SLEEP(x) Sleep(x)
12#else
13#include <unistd.h>
14#define SLEEP(x) usleep(x*1000)
15#endif
16
17 10
18#define b2(x) ( (x) | ( (x) >> 1) ) 11#define b2(x) ( (x) | ( (x) >> 1) )
19#define b4(x) ( b2(x) | ( b2(x) >> 2) ) 12#define b4(x) ( b2(x) | ( b2(x) >> 2) )
@@ -34,6 +27,27 @@
34#define INSERT_PADDING_BYTES(num_bytes) u8 CONCAT2(pad, __LINE__)[(num_bytes)] 27#define INSERT_PADDING_BYTES(num_bytes) u8 CONCAT2(pad, __LINE__)[(num_bytes)]
35#define INSERT_PADDING_WORDS(num_words) u32 CONCAT2(pad, __LINE__)[(num_words)] 28#define INSERT_PADDING_WORDS(num_words) u32 CONCAT2(pad, __LINE__)[(num_words)]
36 29
30#ifdef _WIN32
31 // Alignment
32 #define MEMORY_ALIGNED16(x) __declspec(align(16)) x
33 #define MEMORY_ALIGNED32(x) __declspec(align(32)) x
34 #define MEMORY_ALIGNED64(x) __declspec(align(64)) x
35 #define MEMORY_ALIGNED128(x) __declspec(align(128)) x
36#else
37 // Windows compatibility
38 #ifdef _LP64
39 #define _M_X64 1
40 #else
41 #define _M_IX86 1
42 #endif
43
44 #define __forceinline inline __attribute__((always_inline))
45 #define MEMORY_ALIGNED16(x) __attribute__((aligned(16))) x
46 #define MEMORY_ALIGNED32(x) __attribute__((aligned(32))) x
47 #define MEMORY_ALIGNED64(x) __attribute__((aligned(64))) x
48 #define MEMORY_ALIGNED128(x) __attribute__((aligned(128))) x
49#endif
50
37#ifndef _MSC_VER 51#ifndef _MSC_VER
38 52
39#include <errno.h> 53#include <errno.h>
@@ -73,61 +87,11 @@ inline u64 _rotr64(u64 x, unsigned int shift){
73} 87}
74 88
75#else // _MSC_VER 89#else // _MSC_VER
76#include <locale.h> 90 // Function Cross-Compatibility
77
78// Function Cross-Compatibility
79 #define strcasecmp _stricmp
80 #define strncasecmp _strnicmp
81 #define unlink _unlink
82 #define snprintf _snprintf 91 #define snprintf _snprintf
83 #define vscprintf _vscprintf
84 92
85// Locale Cross-Compatibility 93 // Locale Cross-Compatibility
86 #define locale_t _locale_t 94 #define locale_t _locale_t
87 #define freelocale _free_locale
88 #define newlocale(mask, locale, base) _create_locale(mask, locale)
89
90 #define LC_GLOBAL_LOCALE ((locale_t)-1)
91 #define LC_ALL_MASK LC_ALL
92 #define LC_COLLATE_MASK LC_COLLATE
93 #define LC_CTYPE_MASK LC_CTYPE
94 #define LC_MONETARY_MASK LC_MONETARY
95 #define LC_NUMERIC_MASK LC_NUMERIC
96 #define LC_TIME_MASK LC_TIME
97
98 inline locale_t uselocale(locale_t new_locale)
99 {
100 // Retrieve the current per thread locale setting
101 bool bIsPerThread = (_configthreadlocale(0) == _ENABLE_PER_THREAD_LOCALE);
102
103 // Retrieve the current thread-specific locale
104 locale_t old_locale = bIsPerThread ? _get_current_locale() : LC_GLOBAL_LOCALE;
105
106 if(new_locale == LC_GLOBAL_LOCALE)
107 {
108 // Restore the global locale
109 _configthreadlocale(_DISABLE_PER_THREAD_LOCALE);
110 }
111 else if(new_locale != nullptr)
112 {
113 // Configure the thread to set the locale only for this thread
114 _configthreadlocale(_ENABLE_PER_THREAD_LOCALE);
115
116 // Set all locale categories
117 for(int i = LC_MIN; i <= LC_MAX; i++)
118 setlocale(i, new_locale->locinfo->lc_category[i].locale);
119 }
120
121 return old_locale;
122 }
123
124// 64 bit offsets for windows
125 #define fseeko _fseeki64
126 #define ftello _ftelli64
127 #define atoll _atoi64
128 #define stat64 _stat64
129 #define fstat64 _fstat64
130 #define fileno _fileno
131 95
132 extern "C" { 96 extern "C" {
133 __declspec(dllimport) void __stdcall DebugBreak(void); 97 __declspec(dllimport) void __stdcall DebugBreak(void);
diff --git a/src/common/common_paths.h b/src/common/common_paths.h
index 440b06060..2903f2cf2 100644
--- a/src/common/common_paths.h
+++ b/src/common/common_paths.h
@@ -4,9 +4,6 @@
4 4
5#pragma once 5#pragma once
6 6
7// Make sure we pick up USER_DIR if set in config.h
8#include "common/common.h"
9
10// Directory separators, do we need this? 7// Directory separators, do we need this?
11#define DIR_SEP "/" 8#define DIR_SEP "/"
12#define DIR_SEP_CHR '/' 9#define DIR_SEP_CHR '/'
diff --git a/src/common/common_types.h b/src/common/common_types.h
index 1b453e7f5..644709ba6 100644
--- a/src/common/common_types.h
+++ b/src/common/common_types.h
@@ -47,6 +47,11 @@ typedef std::int64_t s64; ///< 64-bit signed int
47typedef float f32; ///< 32-bit floating point 47typedef float f32; ///< 32-bit floating point
48typedef double f64; ///< 64-bit floating point 48typedef double f64; ///< 64-bit floating point
49 49
50// TODO: It would be nice to eventually replace these with strong types that prevent accidental
51// conversion between each other.
52typedef u32 VAddr; ///< Represents a pointer in the userspace virtual address space.
53typedef u32 PAddr; ///< Represents a pointer in the ARM11 physical address space.
54
50/// Union for fast 16-bit type casting 55/// Union for fast 16-bit type casting
51union t16 { 56union t16 {
52 u8 _u8[2]; ///< 8-bit unsigned char(s) 57 u8 _u8[2]; ///< 8-bit unsigned char(s)
@@ -73,6 +78,16 @@ union t64 {
73 u8 _u8[8]; ///< 8-bit unsigned char(s) 78 u8 _u8[8]; ///< 8-bit unsigned char(s)
74}; 79};
75 80
81// An inheritable class to disallow the copy constructor and operator= functions
82class NonCopyable {
83protected:
84 NonCopyable() = default;
85 ~NonCopyable() = default;
86
87 NonCopyable(NonCopyable&) = delete;
88 NonCopyable& operator=(NonCopyable&) = delete;
89};
90
76namespace Common { 91namespace Common {
77/// Rectangle data structure 92/// Rectangle data structure
78class Rect { 93class Rect {
diff --git a/src/common/concurrent_ring_buffer.h b/src/common/concurrent_ring_buffer.h
index fc18e6c86..c5889513a 100644
--- a/src/common/concurrent_ring_buffer.h
+++ b/src/common/concurrent_ring_buffer.h
@@ -10,7 +10,7 @@
10#include <mutex> 10#include <mutex>
11#include <thread> 11#include <thread>
12 12
13#include "common/common.h" // for NonCopyable 13#include "common/common_types.h" // for NonCopyable
14 14
15namespace Common { 15namespace Common {
16 16
diff --git a/src/common/emu_window.h b/src/common/emu_window.h
index e0fc12a48..8eca6b5d5 100644
--- a/src/common/emu_window.h
+++ b/src/common/emu_window.h
@@ -4,11 +4,11 @@
4 4
5#pragma once 5#pragma once
6 6
7#include "common/common.h" 7#include "common/common_types.h"
8#include "common/scm_rev.h"
9#include "common/string_util.h"
10#include "common/key_map.h" 8#include "common/key_map.h"
11#include "common/math_util.h" 9#include "common/math_util.h"
10#include "common/scm_rev.h"
11#include "common/string_util.h"
12 12
13/** 13/**
14 * Abstraction class used to provide an interface between emulation code and the frontend 14 * Abstraction class used to provide an interface between emulation code and the frontend
diff --git a/src/common/file_util.cpp b/src/common/file_util.cpp
index 4ef4918d7..7cdd1484f 100644
--- a/src/common/file_util.cpp
+++ b/src/common/file_util.cpp
@@ -2,42 +2,52 @@
2// Licensed under GPLv2 or any later version 2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included. 3// Refer to the license.txt file included.
4 4
5 5#include "common/assert.h"
6#include "common/common.h" 6#include "common/common_funcs.h"
7#include "common/common_paths.h"
7#include "common/file_util.h" 8#include "common/file_util.h"
9#include "common/logging/log.h"
8 10
9#ifdef _WIN32 11#ifdef _WIN32
10#include <windows.h> 12 #include <windows.h>
11#include <shlobj.h> // for SHGetFolderPath 13 #include <shlobj.h> // for SHGetFolderPath
12#include <shellapi.h> 14 #include <shellapi.h>
13#include <commdlg.h> // for GetSaveFileName 15 #include <commdlg.h> // for GetSaveFileName
14#include <io.h> 16 #include <io.h>
15#include <direct.h> // getcwd 17 #include <direct.h> // getcwd
16#include <tchar.h> 18 #include <tchar.h>
19
20 // 64 bit offsets for windows
21 #define fseeko _fseeki64
22 #define ftello _ftelli64
23 #define atoll _atoi64
24 #define stat64 _stat64
25 #define fstat64 _fstat64
26 #define fileno _fileno
17#else 27#else
18#include <sys/param.h> 28 #include <sys/param.h>
19#include <sys/types.h> 29 #include <sys/types.h>
20#include <dirent.h> 30 #include <dirent.h>
21#include <pwd.h> 31 #include <pwd.h>
22#include <unistd.h> 32 #include <unistd.h>
23#endif 33#endif
24 34
25#if defined(__APPLE__) 35#if defined(__APPLE__)
26#include <CoreFoundation/CFString.h> 36 #include <CoreFoundation/CFString.h>
27#include <CoreFoundation/CFURL.h> 37 #include <CoreFoundation/CFURL.h>
28#include <CoreFoundation/CFBundle.h> 38 #include <CoreFoundation/CFBundle.h>
29#endif 39#endif
30 40
31#include <algorithm> 41#include <algorithm>
32#include <sys/stat.h> 42#include <sys/stat.h>
33 43
34#ifndef S_ISDIR 44#ifndef S_ISDIR
35#define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR) 45 #define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR)
36#endif 46#endif
37 47
38#ifdef BSD4_4 48#ifdef BSD4_4
39#define stat64 stat 49 #define stat64 stat
40#define fstat64 fstat 50 #define fstat64 fstat
41#endif 51#endif
42 52
43// This namespace has various generic functions related to files and paths. 53// This namespace has various generic functions related to files and paths.
@@ -589,7 +599,7 @@ std::string GetCurrentDir()
589{ 599{
590 char *dir; 600 char *dir;
591 // Get the current working directory (getcwd uses malloc) 601 // Get the current working directory (getcwd uses malloc)
592 if (!(dir = __getcwd(nullptr, 0))) { 602 if (!(dir = getcwd(nullptr, 0))) {
593 603
594 LOG_ERROR(Common_Filesystem, "GetCurrentDirectory failed: %s", 604 LOG_ERROR(Common_Filesystem, "GetCurrentDirectory failed: %s",
595 GetLastErrorMsg()); 605 GetLastErrorMsg());
@@ -603,7 +613,7 @@ std::string GetCurrentDir()
603// Sets the current directory to the given directory 613// Sets the current directory to the given directory
604bool SetCurrentDir(const std::string &directory) 614bool SetCurrentDir(const std::string &directory)
605{ 615{
606 return __chdir(directory.c_str()) == 0; 616 return chdir(directory.c_str()) == 0;
607} 617}
608 618
609#if defined(__APPLE__) 619#if defined(__APPLE__)
diff --git a/src/common/file_util.h b/src/common/file_util.h
index 86aab2e3d..b65829291 100644
--- a/src/common/file_util.h
+++ b/src/common/file_util.h
@@ -11,7 +11,7 @@
11#include <string> 11#include <string>
12#include <vector> 12#include <vector>
13 13
14#include "common/common.h" 14#include "common/common_types.h"
15#include "common/string_util.h" 15#include "common/string_util.h"
16 16
17// User directory indices for GetUserPath 17// User directory indices for GetUserPath
diff --git a/src/common/hash.cpp b/src/common/hash.cpp
index 0624dab8d..b0b3613f6 100644
--- a/src/common/hash.cpp
+++ b/src/common/hash.cpp
@@ -4,7 +4,10 @@
4 4
5#include <algorithm> 5#include <algorithm>
6 6
7#include "common/common_funcs.h" // For rotl
7#include "common/hash.h" 8#include "common/hash.h"
9#include "common/platform.h"
10
8#if _M_SSE >= 0x402 11#if _M_SSE >= 0x402
9#include "common/cpu_detect.h" 12#include "common/cpu_detect.h"
10#include <nmmintrin.h> 13#include <nmmintrin.h>
diff --git a/src/common/hash.h b/src/common/hash.h
index 3ac42bc44..0afaf0e37 100644
--- a/src/common/hash.h
+++ b/src/common/hash.h
@@ -4,7 +4,7 @@
4 4
5#pragma once 5#pragma once
6 6
7#include "common/common.h" 7#include "common/common_types.h"
8 8
9u32 HashFletcher(const u8* data_u8, size_t length); // FAST. Length & 1 == 0. 9u32 HashFletcher(const u8* data_u8, size_t length); // FAST. Length & 1 == 0.
10u32 HashAdler32(const u8* data, size_t len); // Fairly accurate, slightly slower 10u32 HashAdler32(const u8* data, size_t len); // Fairly accurate, slightly slower
diff --git a/src/common/linear_disk_cache.h b/src/common/linear_disk_cache.h
index 74ce74aba..48529cf42 100644
--- a/src/common/linear_disk_cache.h
+++ b/src/common/linear_disk_cache.h
@@ -4,7 +4,7 @@
4 4
5#pragma once 5#pragma once
6 6
7#include "common/common.h" 7#include "common/common_types.h"
8#include <fstream> 8#include <fstream>
9 9
10// defined in Version.cpp 10// defined in Version.cpp
diff --git a/src/common/logging/text_formatter.cpp b/src/common/logging/text_formatter.cpp
index 36c91c4f6..45be6d0a1 100644
--- a/src/common/logging/text_formatter.cpp
+++ b/src/common/logging/text_formatter.cpp
@@ -14,6 +14,7 @@
14#include "common/logging/log.h" 14#include "common/logging/log.h"
15#include "common/logging/text_formatter.h" 15#include "common/logging/text_formatter.h"
16 16
17#include "common/common_funcs.h"
17#include "common/string_util.h" 18#include "common/string_util.h"
18 19
19namespace Log { 20namespace Log {
diff --git a/src/common/math_util.cpp b/src/common/math_util.cpp
index a83592dd2..bcb70cae5 100644
--- a/src/common/math_util.cpp
+++ b/src/common/math_util.cpp
@@ -2,12 +2,12 @@
2// Licensed under GPLv2 or any later version 2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included. 3// Refer to the license.txt file included.
4 4
5#include <cstring>
6#include <numeric> // Necessary on OS X, but not Linux
5 7
6#include "common/common.h" 8#include "common/common_types.h"
7#include "common/math_util.h" 9#include "common/math_util.h"
8 10
9#include <numeric> // Necessary on OS X, but not Linux
10
11namespace MathUtil 11namespace MathUtil
12{ 12{
13 13
diff --git a/src/common/math_util.h b/src/common/math_util.h
index 43b0e0dc3..52f579cf7 100644
--- a/src/common/math_util.h
+++ b/src/common/math_util.h
@@ -4,7 +4,7 @@
4 4
5#pragma once 5#pragma once
6 6
7#include "common/common.h" 7#include "common/common_types.h"
8 8
9#include <algorithm> 9#include <algorithm>
10#include <type_traits> 10#include <type_traits>
diff --git a/src/common/mem_arena.cpp b/src/common/mem_arena.cpp
index 76c70701d..f233d4a3a 100644
--- a/src/common/mem_arena.cpp
+++ b/src/common/mem_arena.cpp
@@ -17,12 +17,16 @@
17 17
18#include <string> 18#include <string>
19 19
20#include "common/memory_util.h" 20#include "common/logging/log.h"
21#include "common/mem_arena.h" 21#include "common/mem_arena.h"
22#include "common/memory_util.h"
22#include "common/string_util.h" 23#include "common/string_util.h"
23 24
24#ifndef _WIN32 25#ifndef _WIN32
25#include <fcntl.h> 26#include <fcntl.h>
27#include <string.h>
28#include <unistd.h>
29
26#ifdef ANDROID 30#ifdef ANDROID
27#include <sys/ioctl.h> 31#include <sys/ioctl.h>
28#include <linux/ashmem.h> 32#include <linux/ashmem.h>
diff --git a/src/common/mem_arena.h b/src/common/mem_arena.h
index 3379d2529..d514fe58c 100644
--- a/src/common/mem_arena.h
+++ b/src/common/mem_arena.h
@@ -21,7 +21,7 @@
21#include <windows.h> 21#include <windows.h>
22#endif 22#endif
23 23
24#include "common/common.h" 24#include "common/common_types.h"
25 25
26// This class lets you create a block of anonymous RAM, and then arbitrarily map views into it. 26// This class lets you create a block of anonymous RAM, and then arbitrarily map views into it.
27// Multiple views can mirror the same section of the block, which makes it very convient for emulating 27// Multiple views can mirror the same section of the block, which makes it very convient for emulating
diff --git a/src/common/memory_util.cpp b/src/common/memory_util.cpp
index 7e69d31cb..2087a1184 100644
--- a/src/common/memory_util.cpp
+++ b/src/common/memory_util.cpp
@@ -3,7 +3,8 @@
3// Refer to the license.txt file included. 3// Refer to the license.txt file included.
4 4
5 5
6#include "common/common.h" 6#include "common/common_funcs.h"
7#include "common/logging/log.h"
7#include "common/memory_util.h" 8#include "common/memory_util.h"
8#include "common/string_util.h" 9#include "common/string_util.h"
9 10
diff --git a/src/common/misc.cpp b/src/common/misc.cpp
index e33055d10..53cacf37c 100644
--- a/src/common/misc.cpp
+++ b/src/common/misc.cpp
@@ -2,10 +2,12 @@
2// Licensed under GPLv2 or any later version 2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included. 3// Refer to the license.txt file included.
4 4
5#include "common/common.h" 5#include "common/common_funcs.h"
6 6
7#ifdef _WIN32 7#ifdef _WIN32
8#include <windows.h> 8#include <windows.h>
9#else
10#include <string.h>
9#endif 11#endif
10 12
11// Neither Android nor OS X support TLS 13// Neither Android nor OS X support TLS
diff --git a/src/common/platform.h b/src/common/platform.h
index e27d6e31f..1516dc88a 100644
--- a/src/common/platform.h
+++ b/src/common/platform.h
@@ -64,47 +64,26 @@
64#endif 64#endif
65 65
66//////////////////////////////////////////////////////////////////////////////////////////////////// 66////////////////////////////////////////////////////////////////////////////////////////////////////
67// Compiler-Specific Definitions 67// Feature detection
68 68
69#if EMU_PLATFORM == PLATFORM_WINDOWS 69#if defined _M_GENERIC
70 70# define _M_SSE 0x0
71#include <time.h> 71#elif defined __GNUC__
72 72# if defined __SSE4_2__
73#ifndef NOMINMAX 73# define _M_SSE 0x402
74#define NOMINMAX 74# elif defined __SSE4_1__
75# define _M_SSE 0x401
76# elif defined __SSSE3__
77# define _M_SSE 0x301
78# elif defined __SSE3__
79# define _M_SSE 0x300
80# endif
81#elif (_MSC_VER >= 1500) || __INTEL_COMPILER // Visual Studio 2008
82# define _M_SSE 0x402
75#endif 83#endif
76#define EMU_FASTCALL __fastcall
77
78#ifdef _MSC_VER
79inline struct tm* localtime_r(const time_t *clock, struct tm *result) {
80 if (localtime_s(result, clock) == 0)
81 return result;
82 return nullptr;
83}
84#endif
85
86#else // EMU_PLATFORM != PLATFORM_WINDOWS
87
88#define EMU_FASTCALL __attribute__((fastcall))
89#define __stdcall
90#define __cdecl
91 84
92#define BOOL bool 85////////////////////////////////////////////////////////////////////////////////////////////////////
93#define DWORD u32 86// Compiler-Specific Definitions
94
95// TODO: Hacks..
96#include <limits.h>
97
98#include <strings.h>
99#define stricmp(str1, str2) strcasecmp(str1, str2)
100#define _stricmp(str1, str2) strcasecmp(str1, str2)
101#define _snprintf snprintf
102#define _getcwd getcwd
103#define _tzset tzset
104
105typedef void EXCEPTION_POINTERS;
106
107#endif
108 87
109#define GCC_VERSION_AVAILABLE(major, minor) (defined(__GNUC__) && (__GNUC__ > (major) || \ 88#define GCC_VERSION_AVAILABLE(major, minor) (defined(__GNUC__) && (__GNUC__ > (major) || \
110 (__GNUC__ == (major) && __GNUC_MINOR__ >= (minor)))) 89 (__GNUC__ == (major) && __GNUC_MINOR__ >= (minor))))
diff --git a/src/common/profiler.cpp b/src/common/profiler.cpp
index 65c3df167..b8cde1785 100644
--- a/src/common/profiler.cpp
+++ b/src/common/profiler.cpp
@@ -7,7 +7,6 @@
7#include "common/assert.h" 7#include "common/assert.h"
8 8
9#if defined(_MSC_VER) && _MSC_VER <= 1800 // MSVC 2013. 9#if defined(_MSC_VER) && _MSC_VER <= 1800 // MSVC 2013.
10#define NOMINMAX
11#define WIN32_LEAN_AND_MEAN 10#define WIN32_LEAN_AND_MEAN
12#include <Windows.h> // For QueryPerformanceCounter/Frequency 11#include <Windows.h> // For QueryPerformanceCounter/Frequency
13#endif 12#endif
diff --git a/src/common/string_util.cpp b/src/common/string_util.cpp
index 3264dd51a..6563611fd 100644
--- a/src/common/string_util.cpp
+++ b/src/common/string_util.cpp
@@ -4,7 +4,9 @@
4 4
5#include <boost/range/algorithm.hpp> 5#include <boost/range/algorithm.hpp>
6 6
7#include "common/common.h" 7#include "common/common_funcs.h"
8#include "common/common_paths.h"
9#include "common/logging/log.h"
8#include "common/string_util.h" 10#include "common/string_util.h"
9 11
10#ifdef _MSC_VER 12#ifdef _MSC_VER
diff --git a/src/common/string_util.h b/src/common/string_util.h
index 74974263f..a60a84696 100644
--- a/src/common/string_util.h
+++ b/src/common/string_util.h
@@ -10,7 +10,7 @@
10#include <sstream> 10#include <sstream>
11#include <vector> 11#include <vector>
12 12
13#include "common/common.h" 13#include "common/common_types.h"
14 14
15namespace Common { 15namespace Common {
16 16
diff --git a/src/common/symbols.h b/src/common/symbols.h
index f76cb6b1e..6b62b011e 100644
--- a/src/common/symbols.h
+++ b/src/common/symbols.h
@@ -5,8 +5,10 @@
5#pragma once 5#pragma once
6 6
7#include <map> 7#include <map>
8#include <string>
9#include <utility>
8 10
9#include "common/common.h" 11#include "common/common_types.h"
10 12
11struct TSymbol 13struct TSymbol
12{ 14{
diff --git a/src/common/thread.h b/src/common/thread.h
index 5fdb6baeb..7bc419497 100644
--- a/src/common/thread.h
+++ b/src/common/thread.h
@@ -4,7 +4,6 @@
4 4
5#pragma once 5#pragma once
6 6
7// Don't include common.h here as it will break LogManager
8#include "common/common_types.h" 7#include "common/common_types.h"
9#include <cstdio> 8#include <cstdio>
10#include <cstring> 9#include <cstring>
diff --git a/src/common/thread_queue_list.h b/src/common/thread_queue_list.h
index 4f27fc899..12455d7c4 100644
--- a/src/common/thread_queue_list.h
+++ b/src/common/thread_queue_list.h
@@ -9,8 +9,6 @@
9 9
10#include <boost/range/algorithm_ext/erase.hpp> 10#include <boost/range/algorithm_ext/erase.hpp>
11 11
12#include "common/common.h"
13
14namespace Common { 12namespace Common {
15 13
16template<class T, unsigned int N> 14template<class T, unsigned int N>
diff --git a/src/common/thunk.h b/src/common/thunk.h
index 4fb7c98e1..533480056 100644
--- a/src/common/thunk.h
+++ b/src/common/thunk.h
@@ -6,7 +6,7 @@
6 6
7#include <map> 7#include <map>
8 8
9#include "common/common.h" 9#include "common/common_types.h"
10 10
11// This simple class creates a wrapper around a C/C++ function that saves all fp state 11// This simple class creates a wrapper around a C/C++ function that saves all fp state
12// before entering it, and restores it upon exit. This is required to be able to selectively 12// before entering it, and restores it upon exit. This is required to be able to selectively
diff --git a/src/common/timer.cpp b/src/common/timer.cpp
index a6682ea19..b99835ac7 100644
--- a/src/common/timer.cpp
+++ b/src/common/timer.cpp
@@ -12,9 +12,9 @@
12#include <sys/time.h> 12#include <sys/time.h>
13#endif 13#endif
14 14
15#include "common/common.h" 15#include "common/common_types.h"
16#include "common/timer.h"
17#include "common/string_util.h" 16#include "common/string_util.h"
17#include "common/timer.h"
18 18
19namespace Common 19namespace Common
20{ 20{
diff --git a/src/common/timer.h b/src/common/timer.h
index 4b44c33a0..b5f0f2585 100644
--- a/src/common/timer.h
+++ b/src/common/timer.h
@@ -4,7 +4,7 @@
4 4
5#pragma once 5#pragma once
6 6
7#include "common/common.h" 7#include "common/common_types.h"
8#include <string> 8#include <string>
9 9
10namespace Common 10namespace Common