Skip to content

Commit 73fe456

Browse files
committed
dxguid: emit GUIDs inline instead of linking dxguid.lib
The Windows 7.x Platform SDK (shipped with MSVC 2010 and earlier) does not include dxguid.lib. Requiring it forces developers to install the legacy June 2010 DirectX SDK just to link, which is painful on modern systems because of the S1023 installer bug (VC++ 2010 runtime conflict). Instead, emit the required COM GUID storage ourselves via <initguid.h>. Each GUID must be defined in exactly one translation unit across the program: * griffin.c picks it up for the griffin unity build (every RetroArch-msvc*.vcxproj project) via #include <initguid.h> inserted after the license header. * gfx/common/dx_guids.c is a new dedicated TU for the non-griffin build (Makefile.common: MinGW, command-line MSVC, cross-compile). Both paths are guarded against UWP/WinRT (WINAPI_FAMILY != DESKTOP_APP) and Xbox (_XBOX) targets, where either dxguid.lib ships with the modern Windows SDK or GUIDs come from a console SDK. Changes: * gfx/common/dx_guids.c: new file, emits GUID storage for the non-griffin build path. Guarded against Xbox, UWP, and griffin so it compiles to an empty TU on those targets. Includes the DX headers in newest-to-oldest order (D3D12, D3D11, D3D10, D3D9, D3D8) so that d3d11.h's transitive include of d3d10_1.h lands before d3d10.h is seen, satisfying the SAL-annotation ordering check inside d3d10_1.h. * griffin/griffin.c: add gated #include <initguid.h> after the license block so griffin unity builds emit GUIDs before the first DirectX header is pulled in (d3d*.c includes start around line 432, dinput at 701, xaudio at 889). * Makefile.common: add gfx/common/dx_guids.o to the Win32 OBJ list; remove the now-dead HAVE_DX_COMMON bookkeeping (four assignments from the HAVE_DSOUND, HAVE_DINPUT, HAVE_D3D9, and HAVE_D3D8 blocks, plus the conditional that appended -ldxguid to LIBS). * audio/drivers/dsound.c: remove #pragma comment(lib, "dxguid"). This MSVC-specific directive embeds a library dependency in the .obj file and would silently re-introduce dxguid.lib at link time even after it was stripped from the project files. * pkg/msvc/**/*.vcxproj, pkg/msvc/**/*.vcproj: remove dxguid.lib from AdditionalDependencies in every desktop MSVC project from 2003 through 2022. The Xbox 360 and Xbox One project files are left untouched — their console SDKs handle GUIDs separately.
1 parent e00b341 commit 73fe456

9 files changed

Lines changed: 132 additions & 126 deletions

File tree

Makefile.common

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -934,7 +934,6 @@ endif
934934
ifeq ($(HAVE_DSOUND), 1)
935935
OBJ += audio/drivers/dsound.o
936936
DEFINES += -DHAVE_DSOUND
937-
HAVE_DX_COMMON = 1
938937
LIBS += -ldsound
939938
endif
940939

@@ -1338,7 +1337,6 @@ OBJ += \
13381337
#Input
13391338

13401339
ifeq ($(HAVE_DINPUT), 1)
1341-
HAVE_DX_COMMON = 1
13421340
LIBS += -ldinput8 -lole32
13431341
DEFINES += -DHAVE_DINPUT
13441342
OBJ += input/drivers/dinput.o
@@ -1779,7 +1777,6 @@ ifeq ($(HAVE_D3D9), 1)
17791777
ifneq ($(HAVE_DYLIB), 1)
17801778
LIBS += $(D3D9_LIBS)
17811779
endif
1782-
HAVE_DX_COMMON = 1
17831780
ifeq ($(HAVE_CG), 1)
17841781
LIBS += -lcgD3D9
17851782
OBJ += gfx/drivers/d3d9cg.o
@@ -1813,17 +1810,12 @@ endif
18131810

18141811
ifeq ($(HAVE_D3D8), 1)
18151812
HAVE_D3D_COMMON = 1
1816-
HAVE_DX_COMMON = 1
18171813
DEFINES += -DHAVE_D3D8
18181814
ifneq ($(HAVE_DYLIB), 1)
18191815
LIBS += $(D3D8_LIBS)
18201816
endif
18211817
endif
18221818

1823-
ifeq ($(HAVE_DX_COMMON), 1)
1824-
LIBS += -ldxguid
1825-
endif
1826-
18271819
ifeq ($(HAVE_D3D8), 1)
18281820
DEFINES += -DHAVE_D3D8
18291821
OBJ += gfx/drivers/d3d8.o
@@ -2521,7 +2513,8 @@ ifneq ($(findstring Win32,$(OS)),)
25212513
OBJ += media/rarch.o \
25222514
gfx/common/win32_common.o \
25232515
frontend/drivers/platform_win32.o \
2524-
gfx/display_servers/dispserv_win32.o
2516+
gfx/display_servers/dispserv_win32.o \
2517+
gfx/common/dx_guids.o
25252518

25262519
ifeq ($(HAVE_GDI), 1)
25272520
OBJ += gfx/drivers/gdi_gfx.o

audio/drivers/dsound.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@
6060

6161
#if defined(_MSC_VER) && !defined(_XBOX)
6262
#pragma comment(lib, "dsound")
63-
#pragma comment(lib, "dxguid")
6463
#endif
6564

6665
#define CHUNK_SIZE 256

griffin/griffin.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,20 @@
1414
* You should have received a copy of the GNU General Public License along with RetroArch.
1515
* If not, see <http://www.gnu.org/licenses/>.
1616
*/
17+
18+
/* Emit DirectX COM GUID storage inline rather than requiring
19+
* dxguid.lib from the legacy June 2010 DirectX SDK. The Windows 7.x
20+
* Platform SDK (shipped with MSVC 2010 and earlier) does not ship
21+
* that library. Including <initguid.h> before any DX header causes
22+
* DEFINE_GUID() to emit storage rather than extern references.
23+
*
24+
* Skipped on UWP/WinRT and Xbox, where dxguid.lib ships with the
25+
* modern Windows SDK or GUIDs come from a console SDK. */
26+
#if defined(_WIN32) && !defined(_XBOX) \
27+
&& (!defined(WINAPI_FAMILY) || (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP))
28+
#include <initguid.h>
29+
#endif
30+
1731
#define VFS_FRONTEND
1832
#include <retro_environment.h>
1933

pkg/msvc/msvc-2008/RetroArch-msvc2008.vcproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
/>
6262
<Tool
6363
Name="VCLinkerTool"
64-
AdditionalDependencies="msimg32.lib winmm.lib Dinput8.lib dxguid.lib Iphlpapi.lib"
64+
AdditionalDependencies="msimg32.lib winmm.lib Dinput8.lib Iphlpapi.lib"
6565
LinkIncremental="2"
6666
GenerateDebugInformation="true"
6767
SubSystem="2"
@@ -136,7 +136,7 @@
136136
/>
137137
<Tool
138138
Name="VCLinkerTool"
139-
AdditionalDependencies="msimg32.lib winmm.lib Dinput8.lib dxguid.lib Iphlpapi.lib"
139+
AdditionalDependencies="msimg32.lib winmm.lib Dinput8.lib Iphlpapi.lib"
140140
LinkIncremental="1"
141141
GenerateDebugInformation="true"
142142
SubSystem="2"
@@ -212,7 +212,7 @@
212212
/>
213213
<Tool
214214
Name="VCLinkerTool"
215-
AdditionalDependencies="msimg32.lib winmm.lib dxguid.lib Iphlpapi.lib"
215+
AdditionalDependencies="msimg32.lib winmm.lib Iphlpapi.lib"
216216
LinkIncremental="2"
217217
GenerateDebugInformation="true"
218218
SubSystem="2"
@@ -287,7 +287,7 @@
287287
/>
288288
<Tool
289289
Name="VCLinkerTool"
290-
AdditionalDependencies="msimg32.lib winmm.lib dxguid.lib Iphlpapi.lib"
290+
AdditionalDependencies="msimg32.lib winmm.lib Iphlpapi.lib"
291291
LinkIncremental="1"
292292
GenerateDebugInformation="true"
293293
SubSystem="2"

pkg/msvc/msvc-2010/RetroArch-msvc2010.vcxproj

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@
193193
<Link>
194194
<SubSystem>CONSOLE</SubSystem>
195195
<GenerateDebugInformation>true</GenerateDebugInformation>
196-
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
196+
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
197197
</Link>
198198
</ItemDefinitionGroup>
199199
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Cg|Win32'">
@@ -213,7 +213,7 @@
213213
<Link>
214214
<SubSystem>CONSOLE</SubSystem>
215215
<GenerateDebugInformation>true</GenerateDebugInformation>
216-
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
216+
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
217217
<AdditionalLibraryDirectories>$(CG_LIB_PATH)</AdditionalLibraryDirectories>
218218
</Link>
219219
</ItemDefinitionGroup>
@@ -233,7 +233,7 @@
233233
<Link>
234234
<SubSystem>CONSOLE</SubSystem>
235235
<GenerateDebugInformation>true</GenerateDebugInformation>
236-
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
236+
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
237237
</Link>
238238
</ItemDefinitionGroup>
239239
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Cg|x64'">
@@ -252,7 +252,7 @@
252252
<Link>
253253
<SubSystem>CONSOLE</SubSystem>
254254
<GenerateDebugInformation>true</GenerateDebugInformation>
255-
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
255+
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
256256
<AdditionalLibraryDirectories>$(CG_LIB64_PATH)</AdditionalLibraryDirectories>
257257
</Link>
258258
</ItemDefinitionGroup>
@@ -279,7 +279,7 @@
279279
<GenerateDebugInformation>true</GenerateDebugInformation>
280280
<EnableCOMDATFolding>true</EnableCOMDATFolding>
281281
<OptimizeReferences>true</OptimizeReferences>
282-
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
282+
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
283283
</Link>
284284
</ItemDefinitionGroup>
285285
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Cg|Win32'">
@@ -305,7 +305,7 @@
305305
<GenerateDebugInformation>true</GenerateDebugInformation>
306306
<EnableCOMDATFolding>true</EnableCOMDATFolding>
307307
<OptimizeReferences>true</OptimizeReferences>
308-
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
308+
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
309309
<AdditionalLibraryDirectories>$(CG_LIB_PATH)</AdditionalLibraryDirectories>
310310
</Link>
311311
</ItemDefinitionGroup>
@@ -333,7 +333,7 @@
333333
<GenerateDebugInformation>true</GenerateDebugInformation>
334334
<EnableCOMDATFolding>true</EnableCOMDATFolding>
335335
<OptimizeReferences>true</OptimizeReferences>
336-
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
336+
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
337337
</Link>
338338
</ItemDefinitionGroup>
339339
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Cg|x64'">
@@ -358,7 +358,7 @@
358358
<GenerateDebugInformation>true</GenerateDebugInformation>
359359
<EnableCOMDATFolding>true</EnableCOMDATFolding>
360360
<OptimizeReferences>true</OptimizeReferences>
361-
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
361+
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
362362
<AdditionalLibraryDirectories>$(CG_LIB64_PATH)</AdditionalLibraryDirectories>
363363
</Link>
364364
</ItemDefinitionGroup>

pkg/msvc/msvc-2015/RetroArch-msvc2015.vcxproj

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@
203203
<Link>
204204
<SubSystem>Console</SubSystem>
205205
<GenerateDebugInformation>true</GenerateDebugInformation>
206-
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
206+
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
207207
</Link>
208208
</ItemDefinitionGroup>
209209
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Cg|Win32'">
@@ -225,7 +225,7 @@
225225
<Link>
226226
<SubSystem>Console</SubSystem>
227227
<GenerateDebugInformation>true</GenerateDebugInformation>
228-
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
228+
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
229229
<AdditionalLibraryDirectories>$(CG_LIB_PATH)</AdditionalLibraryDirectories>
230230
</Link>
231231
</ItemDefinitionGroup>
@@ -248,7 +248,7 @@
248248
<Link>
249249
<SubSystem>Console</SubSystem>
250250
<GenerateDebugInformation>true</GenerateDebugInformation>
251-
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
251+
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
252252
</Link>
253253
</ItemDefinitionGroup>
254254
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Cg|x64'">
@@ -269,7 +269,7 @@
269269
<Link>
270270
<SubSystem>Console</SubSystem>
271271
<GenerateDebugInformation>true</GenerateDebugInformation>
272-
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
272+
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
273273
<AdditionalLibraryDirectories>$(CG_LIB64_PATH)</AdditionalLibraryDirectories>
274274
</Link>
275275
</ItemDefinitionGroup>
@@ -297,7 +297,7 @@
297297
<GenerateDebugInformation>true</GenerateDebugInformation>
298298
<EnableCOMDATFolding>true</EnableCOMDATFolding>
299299
<OptimizeReferences>true</OptimizeReferences>
300-
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
300+
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
301301
</Link>
302302
</ItemDefinitionGroup>
303303
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Cg|Win32'">
@@ -324,7 +324,7 @@
324324
<GenerateDebugInformation>true</GenerateDebugInformation>
325325
<EnableCOMDATFolding>true</EnableCOMDATFolding>
326326
<OptimizeReferences>true</OptimizeReferences>
327-
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
327+
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
328328
<AdditionalLibraryDirectories>$(CG_LIB_PATH)</AdditionalLibraryDirectories>
329329
</Link>
330330
</ItemDefinitionGroup>
@@ -351,7 +351,7 @@
351351
<GenerateDebugInformation>true</GenerateDebugInformation>
352352
<EnableCOMDATFolding>true</EnableCOMDATFolding>
353353
<OptimizeReferences>true</OptimizeReferences>
354-
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
354+
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
355355
</Link>
356356
</ItemDefinitionGroup>
357357
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Cg|x64'">
@@ -377,7 +377,7 @@
377377
<GenerateDebugInformation>true</GenerateDebugInformation>
378378
<EnableCOMDATFolding>true</EnableCOMDATFolding>
379379
<OptimizeReferences>true</OptimizeReferences>
380-
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;dxguid.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
380+
<AdditionalDependencies>msimg32.lib;winmm.lib;Dinput8.lib;Iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
381381
<AdditionalLibraryDirectories>$(CG_LIB64_PATH)</AdditionalLibraryDirectories>
382382
</Link>
383383
</ItemDefinitionGroup>

0 commit comments

Comments
 (0)