From 3a6c4f0fee7b1d56b9cef25d422833c7c6633dd8 Mon Sep 17 00:00:00 2001 From: Mikkel Krautz Date: Fri, 23 Jan 2015 17:02:59 +0100 Subject: Build two separate Windows overlays - one for x86 and one for x86_64. This splits fx11 into an x86 variant and an x64 variant. This creates effects11_x86.lib and effects11_x64.lib, instead of the single effects11.lib we had previously. The minhook build is also tweaked. However, since minhook is only used on x86_64, it is only built for x86_64. Consequently, the library is still called minhook.lib. The overlay itself is split into mumble_ol.dll and mumble_ol.exe for x86, and mumble_ol_x64.dll and mumble_ol_x64.exe for x86_64. --- overlay/overlay-shared.pro | 71 ++++++++++++++++++++++++++++++ overlay/overlay.pro | 62 +------------------------- overlay/overlay_exe/overlay_exe-shared.pro | 38 ++++++++++++++++ overlay/overlay_exe/overlay_exe.cpp | 2 +- overlay/overlay_exe/overlay_exe.h | 6 +++ overlay/overlay_exe/overlay_exe.pro | 40 +---------------- 6 files changed, 120 insertions(+), 99 deletions(-) create mode 100644 overlay/overlay-shared.pro create mode 100644 overlay/overlay_exe/overlay_exe-shared.pro (limited to 'overlay') diff --git a/overlay/overlay-shared.pro b/overlay/overlay-shared.pro new file mode 100644 index 000000000..fe1af59ff --- /dev/null +++ b/overlay/overlay-shared.pro @@ -0,0 +1,71 @@ +include (../compiler.pri) + +VERSION = 1.3.0 +TARGET_EXT = .dll +TEMPLATE = lib +CONFIG -= qt +CONFIG *= dll shared debug_and_release warn_on +CONFIG -= embed_manifest_dll +TARGET = mumble_ol +RC_FILE = mumble_ol.rc +SOURCES = lib.cpp d3d9.cpp dxgi.cpp d3d10.cpp d3d11.cpp ods.cpp opengl.cpp HardHook.cpp D11StateBlock.cpp +HEADERS = lib.h ods.h HardHook.h overlay_blacklist.h D11StateBlock.h ../3rdparty/GL/glext.h +EFFECTS = overlay.fx +DIST = overlay.h overlay.fx HardHook.h +FX11DIR = "../3rdparty/fx11-src" +FX11DIR_BUILD = $$replace(FX11DIR,-src,-build) + +DEFINES -= UNICODE + +QMAKE_CXXFLAGS_RELEASE -= -MD +QMAKE_CXXFLAGS_DEBUG -= -MDd + +QMAKE_CXXFLAGS_RELEASE *= -MT +QMAKE_CXXFLAGS_DEBUG *= -MTd + +INCLUDEPATH *= "$$FX11DIR/inc" + +LIBS *= -ldxguid -luuid -lole32 -luser32 -ladvapi32 +LIBS *= -ld3d9 -ld3d10 -ld3d11 -ld3dcompiler -ld3dx9 -ld3dx10 -ld3dx11 -ldxgi + +CONFIG(force-x86_64-toolchain) { + LIBS *= -leffects11_x64 + + DEFINES += USE_MINHOOK + INCLUDEPATH *= ../3rdparty/minhook-src/include + LIBS *= -lminhook +} + +CONFIG(force-x86-toolchain) { + LIBS *= -leffects11_x86 +} + +CONFIG(release, debug|release) { + DESTDIR = ../release + QMAKE_LIBDIR += ../release +} + +CONFIG(debug, debug|release) { + DESTDIR = ../debug + QMAKE_LIBDIR += ../debug + DEFINES *= DEBUG +} + +# Override fxc binary for the x86 build. +CONFIG(force-x86-toolchain) { + FXC = "\"$$(DXSDK_DIR)\Utilities\bin\x86\fxc.exe\"" +} else { + FXC = fxc.exe +} + +fxc.output = ${QMAKE_FILE_BASE}.hex +fxc.commands = $${FXC} /Tfx_4_0 /O3 /Fh${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} +fxc.input = EFFECTS +fxc.CONFIG *= no_link target_predeps +QMAKE_EXTRA_COMPILERS *= fxc + +fxc11.output = ${QMAKE_FILE_BASE}11.hex +fxc11.commands = $${FXC} /Tfx_5_0 /O3 /Fh${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} +fxc11.input = EFFECTS +fxc11.CONFIG *= no_link target_predeps +QMAKE_EXTRA_COMPILERS *= fxc11 diff --git a/overlay/overlay.pro b/overlay/overlay.pro index 94db854cd..db296e427 100644 --- a/overlay/overlay.pro +++ b/overlay/overlay.pro @@ -1,60 +1,2 @@ -include (../compiler.pri) - -VERSION = 1.3.0 -TARGET_EXT = .dll -TEMPLATE = lib -CONFIG -= qt -CONFIG *= dll shared debug_and_release warn_on -CONFIG -= embed_manifest_dll -TARGET = mumble_ol -RC_FILE = mumble_ol.rc -SOURCES = lib.cpp d3d9.cpp dxgi.cpp d3d10.cpp d3d11.cpp ods.cpp opengl.cpp HardHook.cpp D11StateBlock.cpp -HEADERS = lib.h ods.h HardHook.h overlay_blacklist.h D11StateBlock.h ../3rdparty/GL/glext.h -EFFECTS = overlay.fx -DIST = overlay.h overlay.fx HardHook.h -FX11DIR = "../3rdparty/fx11-src" -FX11DIR_BUILD = $$replace(FX11DIR,-src,-build) - -DEFINES -= UNICODE - -QMAKE_CXXFLAGS_RELEASE -= -MD -QMAKE_CXXFLAGS_DEBUG -= -MDd - -QMAKE_CXXFLAGS_RELEASE *= -MT -QMAKE_CXXFLAGS_DEBUG *= -MTd - -INCLUDEPATH *= "$$FX11DIR/inc" - -LIBS *= -ldxguid -luuid -lole32 -luser32 -ladvapi32 -LIBS *= -ld3d9 -ld3d10 -ld3d11 -ld3dcompiler -ld3dx9 -ld3dx10 -ld3dx11 -ldxgi - -equals(QMAKE_TARGET.arch, x86_64) { - DEFINES += USE_MINHOOK - INCLUDEPATH *= ../3rdparty/minhook-src/include - LIBS *= -lminhook -} - -CONFIG(release, debug|release) { - DESTDIR = ../release - QMAKE_LIBDIR += ../release - LIBS *= -l$$FX11DIR_BUILD/release/effects11 -} - -CONFIG(debug, debug|release) { - DESTDIR = ../debug - QMAKE_LIBDIR += ../debug - DEFINES *= DEBUG - LIBS *= -l$$FX11DIR_BUILD/debug/effects11 -} - -fxc.output = ${QMAKE_FILE_BASE}.hex -fxc.commands = fxc /Tfx_4_0 /O3 /Fh${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} -fxc.input = EFFECTS -fxc.CONFIG *= no_link target_predeps -QMAKE_EXTRA_COMPILERS *= fxc - -fxc11.output = ${QMAKE_FILE_BASE}11.hex -fxc11.commands = fxc /Tfx_5_0 /O3 /Fh${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} -fxc11.input = EFFECTS -fxc11.CONFIG *= no_link target_predeps -QMAKE_EXTRA_COMPILERS *= fxc11 +CONFIG += force-x86-toolchain +include(overlay-shared.pro) \ No newline at end of file diff --git a/overlay/overlay_exe/overlay_exe-shared.pro b/overlay/overlay_exe/overlay_exe-shared.pro new file mode 100644 index 000000000..acba31004 --- /dev/null +++ b/overlay/overlay_exe/overlay_exe-shared.pro @@ -0,0 +1,38 @@ +include(../../compiler.pri) + +TEMPLATE = app +CONFIG -= qt +CONFIG += debug_and_release +TARGET = mumble_ol + +win32 { + DEFINES += WIN32 _WIN32 + RC_FILE = overlay_exe.rc + LIBS *= -luser32 -lshlwapi + + CONFIG(release, debug|release) { + QMAKE_CXXFLAGS_RELEASE -= -MD + QMAKE_CXXFLAGS += -MT + } + CONFIG(debug, debug|release) { + QMAKE_CXXFLAGS_DEBUG -= -MDd + QMAKE_CXXFLAGS += -MTd + } +} + +SOURCES *= overlay_exe.cpp + +QMAKE_POST_LINK = $$QMAKE_POST_LINK$$escape_expand(\\n\\t)$$quote(mt.exe -nologo -updateresource:$(DESTDIR_TARGET);1 -manifest ../../src/mumble/mumble.appcompat.manifest) + +CONFIG(debug, debug|release) { + CONFIG += console + DEFINES *= DEBUG + DESTDIR = ../../debug +} + +CONFIG(release, debug|release) { + DEFINES *= NDEBUG + DESTDIR = ../../release +} + +include(../../symbols.pri) diff --git a/overlay/overlay_exe/overlay_exe.cpp b/overlay/overlay_exe/overlay_exe.cpp index ec524b7f5..be9dbc653 100644 --- a/overlay/overlay_exe/overlay_exe.cpp +++ b/overlay/overlay_exe/overlay_exe.cpp @@ -91,7 +91,7 @@ static std::wstring GetAbsoluteMumbleOverlayDllPath() { std::wstring absDLLPath(exePath); absDLLPath.append(L"\\"); - absDLLPath.append(L"mumble_ol.dll"); + absDLLPath.append(MUMBLE_OVERLAY_DLL_NAME); return absDLLPath; } diff --git a/overlay/overlay_exe/overlay_exe.h b/overlay/overlay_exe/overlay_exe.h index e91719d1e..bbd9d2e20 100644 --- a/overlay/overlay_exe/overlay_exe.h +++ b/overlay/overlay_exe/overlay_exe.h @@ -31,6 +31,12 @@ #ifndef MUMBLE_OVERLAY_EXE_H_ #define MUMBLE_OVERLAY_EXE_H_ +#if defined(_M_IX86) +const wchar_t *MUMBLE_OVERLAY_DLL_NAME = L"mumble_ol.dll"; +#elif defined (_M_X64) +const wchar_t *MUMBLE_OVERLAY_DLL_NAME = L"mumble_ol_x64.dll"; +#endif + /// OverlayHelperError represents exit codes returned by the /// overlay helper process (mumble_ol.exe) on Windows. enum OverlayHelperError { diff --git a/overlay/overlay_exe/overlay_exe.pro b/overlay/overlay_exe/overlay_exe.pro index acba31004..cc86753eb 100644 --- a/overlay/overlay_exe/overlay_exe.pro +++ b/overlay/overlay_exe/overlay_exe.pro @@ -1,38 +1,2 @@ -include(../../compiler.pri) - -TEMPLATE = app -CONFIG -= qt -CONFIG += debug_and_release -TARGET = mumble_ol - -win32 { - DEFINES += WIN32 _WIN32 - RC_FILE = overlay_exe.rc - LIBS *= -luser32 -lshlwapi - - CONFIG(release, debug|release) { - QMAKE_CXXFLAGS_RELEASE -= -MD - QMAKE_CXXFLAGS += -MT - } - CONFIG(debug, debug|release) { - QMAKE_CXXFLAGS_DEBUG -= -MDd - QMAKE_CXXFLAGS += -MTd - } -} - -SOURCES *= overlay_exe.cpp - -QMAKE_POST_LINK = $$QMAKE_POST_LINK$$escape_expand(\\n\\t)$$quote(mt.exe -nologo -updateresource:$(DESTDIR_TARGET);1 -manifest ../../src/mumble/mumble.appcompat.manifest) - -CONFIG(debug, debug|release) { - CONFIG += console - DEFINES *= DEBUG - DESTDIR = ../../debug -} - -CONFIG(release, debug|release) { - DEFINES *= NDEBUG - DESTDIR = ../../release -} - -include(../../symbols.pri) +CONFIG += force-x86-toolchain +include(overlay_exe-shared.pro) -- cgit v1.2.3