Skip to content

Commit

Permalink
Remove Windows XP support.
Browse files Browse the repository at this point in the history
I'm not aware of people using it, so I believe it's not worth the hassle
as I'm trying to cut maintenance burden down.
  • Loading branch information
jrfonseca committed Mar 20, 2017
1 parent 977990e commit 16b76a2
Show file tree
Hide file tree
Showing 7 changed files with 47 additions and 158 deletions.
19 changes: 3 additions & 16 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@ project (apitrace)
# prescribed in http://www.gentoo.org/proj/en/qa/automagic.xml
set (ENABLE_GUI "AUTO" CACHE STRING "Enable Qt GUI.")

option (WINDOWS_XP "Target Windows XP (on MinGW)" OFF)

option (ENABLE_CLI "Enable command Line interface." ON)

option (ENABLE_EGL "Enable EGL support." ON)
Expand Down Expand Up @@ -130,24 +128,13 @@ if (MSVC)
endif ()

if (WIN32)
if (CMAKE_GENERATOR_TOOLSET MATCHES "_xp$")
set (WINDOWS_XP TRUE)
endif ()

# http://msdn.microsoft.com/en-us/library/aa383745.aspx
if (WINDOWS_XP)
# Windows XP
add_definitions (-D_WIN32_WINNT=0x0501 -DWINVER=0x0501)
else ()
# Windows 8
add_definitions (-D_WIN32_WINNT=0x0602 -DWINVER=0x0602)
endif ()
# Windows 8
add_definitions (-D_WIN32_WINNT=0x0602 -DWINVER=0x0602)

find_package (DirectX)

if (WINDOWS_XP)
set (DirectX_D3D11_3_INCLUDE_FOUND FALSE)
elseif (MSVC AND NOT DirectX_D3D11_3_INCLUDE_FOUND)
if (MSVC AND NOT DirectX_D3D11_3_INCLUDE_FOUND)
message (FATAL_ERROR "Windows 10 SDK must be selected (-DCMAKE_SYSTEM_VERSION=10.0) for D3D11.3 support")
endif ()

Expand Down
87 changes: 38 additions & 49 deletions cmake/FindDirectX.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -147,16 +147,7 @@ if (WIN32)
find_winsdk_library (DDRAW ddraw)
find_combined (DDRAW DDRAW DDRAW)

if (CMAKE_GENERATOR_TOOLSET MATCHES "_xp$")
set (WINDOWS_XP TRUE)
endif ()

if (WINDOWS_XP)
# Windows 7 SDKs, used by XP toolset, do not include d3d.h
find_dxsdk_header (D3D d3d.h)
else ()
find_winsdk_header (D3D d3d.h)
endif ()
find_winsdk_header (D3D d3d.h)
find_combined (D3D D3D DDRAW)

find_dxsdk_header (D3DX d3dx.h)
Expand All @@ -178,45 +169,43 @@ if (WIN32)
find_dxsdk_library (D3DX9 d3dx9)
find_combined (D3DX9 D3DX9 D3DX9)

if (NOT WINDOWS_XP)
find_winsdk_header (DXGI dxgi.h)
find_winsdk_header (DXGI1_2 dxgi1_2.h)
find_winsdk_header (DXGI1_3 dxgi1_3.h)
find_winsdk_header (DXGI1_4 dxgi1_4.h)
find_winsdk_library (DXGI dxgi)

find_winsdk_header (D3D10 d3d10.h)
find_winsdk_library (D3D10 d3d10)
find_combined (D3D10 D3D10 D3D10)

find_winsdk_header (D3D10_1 d3d10_1.h)
find_winsdk_library (D3D10_1 d3d10_1)
find_combined (D3D10_1 D3D10_1 D3D10_1)

find_dxsdk_header (D3DX10 d3dx10.h)
find_dxsdk_library (D3DX10 d3dx10)
find_combined (D3DX10 D3DX10 D3DX10)

find_winsdk_header (D3D11 d3d11.h)
find_winsdk_library (D3D11 d3d11)
find_combined (D3D11 D3D11 D3D11)
find_winsdk_header (D3D11_1 d3d11_1.h)
find_combined (D3D11_1 D3D11_1 D3D11)
find_winsdk_header (D3D11_2 d3d11_2.h)
find_combined (D3D11_2 D3D11_2 D3D11)
find_winsdk_header (D3D11_3 d3d11_3.h)
find_combined (D3D11_3 D3D11_3 D3D11)

find_dxsdk_header (D3DX11 d3dx11.h)
find_dxsdk_library (D3DX11 d3dx11)
find_combined (D3DX11 D3DX11 D3DX11)

find_winsdk_header (D2D1 d2d1.h)
find_winsdk_library (D2D1 d2d1)
find_combined (D2D1 D2D1 D2D1)
find_winsdk_header (D2D1_1 d2d1_1.h)
find_combined (D2D1_1 D2D1_1 D2D1)
endif ()
find_winsdk_header (DXGI dxgi.h)
find_winsdk_header (DXGI1_2 dxgi1_2.h)
find_winsdk_header (DXGI1_3 dxgi1_3.h)
find_winsdk_header (DXGI1_4 dxgi1_4.h)
find_winsdk_library (DXGI dxgi)

find_winsdk_header (D3D10 d3d10.h)
find_winsdk_library (D3D10 d3d10)
find_combined (D3D10 D3D10 D3D10)

find_winsdk_header (D3D10_1 d3d10_1.h)
find_winsdk_library (D3D10_1 d3d10_1)
find_combined (D3D10_1 D3D10_1 D3D10_1)

find_dxsdk_header (D3DX10 d3dx10.h)
find_dxsdk_library (D3DX10 d3dx10)
find_combined (D3DX10 D3DX10 D3DX10)

find_winsdk_header (D3D11 d3d11.h)
find_winsdk_library (D3D11 d3d11)
find_combined (D3D11 D3D11 D3D11)
find_winsdk_header (D3D11_1 d3d11_1.h)
find_combined (D3D11_1 D3D11_1 D3D11)
find_winsdk_header (D3D11_2 d3d11_2.h)
find_combined (D3D11_2 D3D11_2 D3D11)
find_winsdk_header (D3D11_3 d3d11_3.h)
find_combined (D3D11_3 D3D11_3 D3D11)

find_dxsdk_header (D3DX11 d3dx11.h)
find_dxsdk_library (D3DX11 d3dx11)
find_combined (D3DX11 D3DX11 D3DX11)

find_winsdk_header (D2D1 d2d1.h)
find_winsdk_library (D2D1 d2d1)
find_combined (D2D1 D2D1 D2D1)
find_winsdk_header (D2D1_1 d2d1_1.h)
find_combined (D2D1_1 D2D1_1 D2D1)

find_program (DirectX_FXC_EXECUTABLE fxc
HINTS ${DirectX_BIN_SEARCH_PATH}
Expand Down
6 changes: 2 additions & 4 deletions docs/INSTALL.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -198,10 +198,8 @@ for Qt path.

### Windows XP ###

By default, binaries generated by recent builds of Visual Studio will not work
on Windows XP. If you want to obtain binaries that work on Windows XP then
pass the `-T v140_xp -DCMAKE_SYSTEM_VERSION=5.1` options to CMake when building
with Visual Studio 2015.
Windows XP is no longer supported. If you need Windows XP support, your best
bet is to try an old release (search for windows-xp branch upstream.)

## MinGW ##

Expand Down
86 changes: 1 addition & 85 deletions lib/os/os_thread.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -329,82 +329,6 @@ namespace os {
};


/**
* Implement TLS through OS threading API.
*
* This will only work when T is a pointer, intptr_t, or uintptr_t.
*/
template <typename T>
class thread_specific
{
private:
static_assert(sizeof(T) == sizeof(void *), "Size mismatch");

#ifdef _WIN32
DWORD dwTlsIndex;
#else
pthread_key_t key;
#endif

public:
thread_specific(void) {
#ifdef _WIN32
dwTlsIndex = TlsAlloc();
#else
pthread_key_create(&key, NULL);
#endif
}

~thread_specific() {
#ifdef _WIN32
TlsFree(dwTlsIndex);
#else
pthread_key_delete(key);
#endif
}

inline T
get(void) const {
void *ptr;
#ifdef _WIN32
ptr = TlsGetValue(dwTlsIndex);
#else
ptr = pthread_getspecific(key);
#endif
return reinterpret_cast<T>(ptr);
}

inline
operator T (void) const
{
return get();
}

inline T
operator -> (void) const
{
return get();
}

inline T
operator = (T new_value)
{
set(new_value);
return new_value;
}

inline void
set(T new_value) {
void *new_ptr = reinterpret_cast<void *>(new_value);
#ifdef _WIN32
TlsSetValue(dwTlsIndex, new_ptr);
#else
pthread_setspecific(key, new_ptr);
#endif
}
};


/**
* Same interface as std::thread
*/
Expand Down Expand Up @@ -527,13 +451,5 @@ namespace os {
#elif defined(_MSC_VER)
# define OS_THREAD_LOCAL __declspec(thread)
#else
# error
# error Unsupported C++ compiler
#endif

#if defined(_WIN32_WINNT) && _WIN32_WINNT < 0x0600
# define OS_THREAD_SPECIFIC(_type) os::thread_specific< _type >
#else
# define OS_THREAD_SPECIFIC(_type) OS_THREAD_LOCAL _type
#endif

#define OS_THREAD_SPECIFIC_PTR(_type) OS_THREAD_SPECIFIC(_type *)
3 changes: 1 addition & 2 deletions lib/trace/trace_writer_local.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -154,8 +154,7 @@ LocalWriter::open(void) {

static uintptr_t next_thread_num = 1;

static OS_THREAD_SPECIFIC(uintptr_t)
thread_num;
static OS_THREAD_LOCAL uintptr_t thread_num;

void LocalWriter::checkProcessId(void) {
if (m_file &&
Expand Down
2 changes: 1 addition & 1 deletion wrappers/gltrace_state.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ class ThreadState {
}
};

static OS_THREAD_SPECIFIC_PTR(ThreadState) thread_state;
static OS_THREAD_LOCAL ThreadState *thread_state;

static ThreadState *get_ts(void)
{
Expand Down
2 changes: 1 addition & 1 deletion wrappers/wgltrace.py
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ def traceFunctionImplBody(self, function):
print '#include "glproc.hpp"'
print '#include "glsize.hpp"'
print
print 'static OS_THREAD_SPECIFIC(uintptr_t) _reentrant;'
print 'static OS_THREAD_LOCAL uintptr_t _reentrant;'
print
print '// Helper class to track reentries in function scope.'
print 'struct ReentryScope {'
Expand Down

0 comments on commit 16b76a2

Please sign in to comment.