Skip to content

Commit

Permalink
Add VERSIONINFO to DLL version of library (#578)
Browse files Browse the repository at this point in the history
  • Loading branch information
walbourn authored Feb 4, 2025
1 parent 3a7adff commit 87e8b95
Show file tree
Hide file tree
Showing 12 changed files with 152 additions and 37 deletions.
17 changes: 17 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,10 @@ jobs:
working-directory: ${{ github.workspace }}
run: cmake --build out\build\${{ matrix.build_type }}

- name: 'Clean up'
working-directory: ${{ github.workspace }}
run: Remove-Item -Path out -Recurse -Force

- if: matrix.arch != 'amd64_arm64'
name: 'Configure CMake (Spectre)'
working-directory: ${{ github.workspace }}
Expand All @@ -112,3 +116,16 @@ jobs:
name: 'Build (Spectre)'
working-directory: ${{ github.workspace }}
run: cmake --build out\build\${{ matrix.build_type }}

- if: matrix.arch != 'amd64_arm64'
name: 'Clean up'
working-directory: ${{ github.workspace }}
run: Remove-Item -Path out -Recurse -Force

- name: 'Configure CMake (DLL)'
working-directory: ${{ github.workspace }}
run: cmake --preset=${{ matrix.build_type }} -DBUILD_SHARED_LIBS=ON

- name: 'Build (DLL)'
working-directory: ${{ github.workspace }}
run: cmake --build out\build\${{ matrix.build_type }}
15 changes: 15 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -154,3 +154,18 @@ jobs:
- name: 'Build'
working-directory: ${{ github.workspace }}
run: cmake --build out\build\${{ matrix.build_type }}

- name: 'Clean up'
working-directory: ${{ github.workspace }}
run: Remove-Item -Path out -Recurse -Force

- name: 'Configure CMake (DLL)'
working-directory: ${{ github.workspace }}
run: >
cmake --preset=${{ matrix.build_type }} -DBUILD_TESTING=ON -DBUILD_TOOLS=OFF -DBUILD_SAMPLE=OFF -DENABLE_LIBJPEG_SUPPORT=ON -DENABLE_LIBPNG_SUPPORT=ON
-DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake" -DVCPKG_MANIFEST_DIR="${{ github.workspace }}/build"
-DVCPKG_TARGET_TRIPLET="${env:VCPKG_DEFAULT_TRIPLET}" -DBUILD_SHARED_LIBS=ON
- name: 'Build (DLL)'
working-directory: ${{ github.workspace }}
run: cmake --build out\build\${{ matrix.build_type }}
19 changes: 19 additions & 0 deletions .github/workflows/wsl.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,22 @@ jobs:
- name: 'Build'
working-directory: ${{ github.workspace }}
run: cmake --build out/build/${{ matrix.build_type }}

- name: 'Clean up'
working-directory: ${{ github.workspace }}
run: rm -rf out

- name: 'Configure CMake (-shared)'
working-directory: ${{ github.workspace }}
run: >
cmake --preset=${{ matrix.build_type }} -DENABLE_OPENEXR_SUPPORT=ON -DENABLE_LIBJPEG_SUPPORT=ON -DENABLE_LIBPNG_SUPPORT=ON
-DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake" -DVCPKG_MANIFEST_DIR="${{ github.workspace }}/build"
-DVCPKG_TARGET_TRIPLET="x64-linux" -DBUILD_SHARED_LIBS=ON
env:
CC: gcc-${{ matrix.gcc }}
CXX: g++-${{ matrix.gcc }}

- name: 'Build (-shared)'
working-directory: ${{ github.workspace }}
run: cmake --build out/build/${{ matrix.build_type }}
6 changes: 3 additions & 3 deletions Auxiliary/DirectXTexEXR.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -513,8 +513,8 @@ HRESULT DirectX::SaveToEXRFile(const Image& image, const wchar_t* szFile)

try
{
const int width = static_cast<int>(image.width);
const int height = static_cast<int>(image.height);
const auto width = static_cast<int>(image.width);
const auto height = static_cast<int>(image.height);

#ifdef _WIN32
Imf::RgbaOutputFile file(stream, Imf::Header(width, height), Imf::WRITE_RGBA);
Expand All @@ -529,7 +529,7 @@ HRESULT DirectX::SaveToEXRFile(const Image& image, const wchar_t* szFile)
}
else
{
const uint64_t bytes = image.width * image.height;
const auto bytes = static_cast<uint64_t>(image.width) * static_cast<uint64_t>(image.height);

if (bytes > static_cast<uint64_t>(UINT32_MAX))
{
Expand Down
8 changes: 5 additions & 3 deletions Auxiliary/DirectXTexEXR.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,15 @@

namespace DirectX
{
HRESULT __cdecl GetMetadataFromEXRFile(
DIRECTX_TEX_API HRESULT __cdecl GetMetadataFromEXRFile(
_In_z_ const wchar_t* szFile,
_Out_ TexMetadata& metadata);

HRESULT __cdecl LoadFromEXRFile(
DIRECTX_TEX_API HRESULT __cdecl LoadFromEXRFile(
_In_z_ const wchar_t* szFile,
_Out_opt_ TexMetadata* metadata, _Out_ ScratchImage& image);

HRESULT __cdecl SaveToEXRFile(_In_ const Image& image, _In_z_ const wchar_t* szFile);
DIRECTX_TEX_API HRESULT __cdecl SaveToEXRFile(
_In_ const Image& image,
_In_z_ const wchar_t* szFile);
}
6 changes: 3 additions & 3 deletions Auxiliary/DirectXTexJPEG.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,16 @@

namespace DirectX
{
HRESULT __cdecl GetMetadataFromJPEGFile(
DIRECTX_TEX_API HRESULT __cdecl GetMetadataFromJPEGFile(
_In_z_ const wchar_t* szFile,
_Out_ TexMetadata& metadata);

HRESULT __cdecl LoadFromJPEGFile(
DIRECTX_TEX_API HRESULT __cdecl LoadFromJPEGFile(
_In_z_ const wchar_t* szFile,
_Out_opt_ TexMetadata* metadata,
_Out_ ScratchImage& image);

HRESULT __cdecl SaveToJPEGFile(
DIRECTX_TEX_API HRESULT __cdecl SaveToJPEGFile(
_In_ const Image& image,
_In_z_ const wchar_t* szFile);
}
6 changes: 3 additions & 3 deletions Auxiliary/DirectXTexPNG.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,16 @@

namespace DirectX
{
HRESULT __cdecl GetMetadataFromPNGFile(
DIRECTX_TEX_API HRESULT __cdecl GetMetadataFromPNGFile(
_In_z_ const wchar_t* szFile,
_Out_ TexMetadata& metadata);

HRESULT __cdecl LoadFromPNGFile(
DIRECTX_TEX_API HRESULT __cdecl LoadFromPNGFile(
_In_z_ const wchar_t* szFile,
_Out_opt_ TexMetadata* metadata,
_Out_ ScratchImage& image);

HRESULT __cdecl SaveToPNGFile(
DIRECTX_TEX_API HRESULT __cdecl SaveToPNGFile(
_In_ const Image& image,
_In_z_ const wchar_t* szFile);
}
40 changes: 20 additions & 20 deletions Auxiliary/DirectXTexXbox.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ namespace Xbox
constexpr XboxTileMode c_XboxTileModeLinear = XG_TILE_MODE_LINEAR;
#endif

class XboxImage
class DIRECTX_TEX_API XboxImage
{
public:
XboxImage() noexcept
Expand Down Expand Up @@ -97,40 +97,40 @@ namespace Xbox
//---------------------------------------------------------------------------------
// Image I/O

HRESULT __cdecl GetMetadataFromDDSMemory(
DIRECTX_TEX_API HRESULT __cdecl GetMetadataFromDDSMemory(
_In_reads_bytes_(size) const uint8_t* pSource, _In_ size_t size,
_Out_ DirectX::TexMetadata& metadata, _Out_ bool& isXbox);
HRESULT __cdecl GetMetadataFromDDSFile(
DIRECTX_TEX_API HRESULT __cdecl GetMetadataFromDDSFile(
_In_z_ const wchar_t* szFile, _Out_ DirectX::TexMetadata& metadata, _Out_ bool& isXbox);

HRESULT __cdecl GetMetadataFromDDSMemoryEx(
DIRECTX_TEX_API HRESULT __cdecl GetMetadataFromDDSMemoryEx(
_In_reads_bytes_(size) const uint8_t* pSource, _In_ size_t size,
_Out_ DirectX::TexMetadata& metadata, _Out_ bool& isXbox,
_Out_opt_ DirectX::DDSMetaData* ddPixelFormat);
HRESULT __cdecl GetMetadataFromDDSFileEx(
DIRECTX_TEX_API HRESULT __cdecl GetMetadataFromDDSFileEx(
_In_z_ const wchar_t* szFile, _Out_ DirectX::TexMetadata& metadata, _Out_ bool& isXbox,
_Out_opt_ DirectX::DDSMetaData* ddPixelFormat);

HRESULT __cdecl LoadFromDDSMemory(
DIRECTX_TEX_API HRESULT __cdecl LoadFromDDSMemory(
_In_reads_bytes_(size) const uint8_t* pSource, _In_ size_t size,
_Out_opt_ DirectX::TexMetadata* metadata, _Out_ XboxImage& image);
HRESULT __cdecl LoadFromDDSFile(
DIRECTX_TEX_API HRESULT __cdecl LoadFromDDSFile(
_In_z_ const wchar_t* szFile,
_Out_opt_ DirectX::TexMetadata* metadata, _Out_ XboxImage& image);

HRESULT __cdecl LoadFromDDSMemoryEx(
DIRECTX_TEX_API HRESULT __cdecl LoadFromDDSMemoryEx(
_In_reads_bytes_(size) const uint8_t* pSource, _In_ size_t size,
_Out_opt_ DirectX::TexMetadata* metadata,
_Out_opt_ DirectX::DDSMetaData* ddPixelFormat,
_Out_ XboxImage& image);
HRESULT __cdecl LoadFromDDSFileEx(
DIRECTX_TEX_API HRESULT __cdecl LoadFromDDSFileEx(
_In_z_ const wchar_t* szFile,
_Out_opt_ DirectX::TexMetadata* metadata,
_Out_opt_ DirectX::DDSMetaData* ddPixelFormat,
_Out_ XboxImage& image);

HRESULT __cdecl SaveToDDSMemory(_In_ const XboxImage& xbox, _Out_ DirectX::Blob& blob);
HRESULT __cdecl SaveToDDSFile(_In_ const XboxImage& xbox, _In_z_ const wchar_t* szFile);
DIRECTX_TEX_API HRESULT __cdecl SaveToDDSMemory(_In_ const XboxImage& xbox, _Out_ DirectX::Blob& blob);
DIRECTX_TEX_API HRESULT __cdecl SaveToDDSFile(_In_ const XboxImage& xbox, _In_z_ const wchar_t* szFile);

#ifdef __cpp_lib_byte
inline HRESULT __cdecl GetMetadataFromDDSMemory(
Expand Down Expand Up @@ -168,27 +168,27 @@ namespace Xbox
//---------------------------------------------------------------------------------
// Xbox Texture Tiling / Detiling (requires XG DLL to be present at runtime)

HRESULT __cdecl Tile(_In_ const DirectX::Image& srcImage, _Out_ XboxImage& xbox, _In_ XboxTileMode mode = c_XboxTileModeInvalid);
HRESULT __cdecl Tile(
DIRECTX_TEX_API HRESULT __cdecl Tile(_In_ const DirectX::Image& srcImage, _Out_ XboxImage& xbox, _In_ XboxTileMode mode = c_XboxTileModeInvalid);
DIRECTX_TEX_API HRESULT __cdecl Tile(
_In_ const DirectX::Image* srcImages, _In_ size_t nimages, _In_ const DirectX::TexMetadata& metadata,
_Out_ XboxImage& xbox, _In_ XboxTileMode mode = c_XboxTileModeInvalid);

HRESULT __cdecl Detile(_In_ const XboxImage& xbox, _Out_ DirectX::ScratchImage& image);
DIRECTX_TEX_API HRESULT __cdecl Detile(_In_ const XboxImage& xbox, _Out_ DirectX::ScratchImage& image);

//---------------------------------------------------------------------------------
// Direct3D 11.X functions

#if defined(_XBOX_ONE) && defined(_TITLE) && defined(__d3d11_x_h__)

HRESULT __cdecl CreateTexture(
DIRECTX_TEX_API HRESULT __cdecl CreateTexture(
_In_ ID3D11DeviceX* d3dDevice,
_In_ const XboxImage& xbox, _Outptr_opt_ ID3D11Resource** ppResource, _Outptr_ void** grfxMemory);

HRESULT __cdecl CreateShaderResourceView(
DIRECTX_TEX_API HRESULT __cdecl CreateShaderResourceView(
_In_ ID3D11DeviceX* d3dDevice,
_In_ const XboxImage& xbox, _Outptr_opt_ ID3D11ShaderResourceView** ppSRV, _Outptr_ void** grfxMemory);

void __cdecl FreeTextureMemory(_In_ ID3D11DeviceX* d3dDevice, _In_opt_ void* grfxMemory);
DIRECTX_TEX_API void __cdecl FreeTextureMemory(_In_ ID3D11DeviceX* d3dDevice, _In_opt_ void* grfxMemory);

#endif

Expand All @@ -197,17 +197,17 @@ namespace Xbox

#if ((defined(_XBOX_ONE) && defined(_TITLE)) || defined(_GAMING_XBOX)) && (defined(__d3d12_x_h__) || defined(__XBOX_D3D12_X__))

HRESULT __cdecl CreateTexture(
DIRECTX_TEX_API HRESULT __cdecl CreateTexture(
_In_ ID3D12Device* d3dDevice,
_In_ const XboxImage& xbox, _Outptr_opt_ ID3D12Resource** ppResource, _Outptr_ void** grfxMemory);

void __cdecl FreeTextureMemory(_In_ ID3D12Device* d3dDevice, _In_opt_ void* grfxMemory);
DIRECTX_TEX_API void __cdecl FreeTextureMemory(_In_ ID3D12Device* d3dDevice, _In_opt_ void* grfxMemory);

#endif

//---------------------------------------------------------------------------------
// DDS helper functions
HRESULT __cdecl EncodeDDSHeader(
DIRECTX_TEX_API HRESULT __cdecl EncodeDDSHeader(
const XboxImage& xbox,
_Out_writes_bytes_(maxsize) uint8_t* pDestination, _In_ size_t maxsize) noexcept;

Expand Down
16 changes: 12 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -222,11 +222,19 @@ if(BUILD_DX11 AND WIN32 AND (NOT (XBOX_CONSOLE_TARGET STREQUAL "durango")))
endif()
endif()

add_library(${PROJECT_NAME} ${LIBRARY_SOURCES} ${LIBRARY_HEADERS})

if(WIN32 AND BUILD_SHARED_LIBS)
target_compile_definitions(${PROJECT_NAME} PRIVATE DIRECTX_TEX_EXPORT)
target_compile_definitions(${PROJECT_NAME} INTERFACE DIRECTX_TEX_IMPORT)
message(STATUS "Build library as a DLL")

configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/build/DirectXTex.rc.in"
"${CMAKE_CURRENT_BINARY_DIR}/DirectXTex.rc" @ONLY)

add_library(${PROJECT_NAME} SHARED ${LIBRARY_SOURCES} ${LIBRARY_HEADERS} "${CMAKE_CURRENT_BINARY_DIR}/DirectXTex.rc")

target_compile_definitions(${PROJECT_NAME} PRIVATE DIRECTX_TEX_EXPORT)
target_compile_definitions(${PROJECT_NAME} INTERFACE DIRECTX_TEX_IMPORT)
else()
add_library(${PROJECT_NAME} ${LIBRARY_SOURCES} ${LIBRARY_HEADERS})
endif()

if(BUILD_DX11 AND WIN32)
Expand Down
20 changes: 20 additions & 0 deletions build/DirectXTex-GitHub-CMake-Xbox-Dev17.yml
Original file line number Diff line number Diff line change
Expand Up @@ -152,3 +152,23 @@ jobs:
inputs:
cwd: ''
cmakeArgs: --build out4 -v --config RelWithDebInfo
- task: CMake@1
displayName: 'CMake (MSVC): Config x64 (Xbox Series X|S, DLL)'
inputs:
cwd: ''
cmakeArgs: '-G "$(VS_GENERATOR)" -A x64 -B out5 -DCMAKE_SYSTEM_VERSION=$(WIN10_SDK) -DBUILD_XBOX_EXTS_SCARLETT=ON -DBUILD_SAMPLE=OFF -DBUILD_SHARED_LIBS=ON'
- task: CMake@1
displayName: 'CMake (MSVC): Build x64 Debug (Xbox Series X|S, DLL)'
inputs:
cwd: ''
cmakeArgs: --build out5 -v --config Debug
- task: CMake@1
displayName: 'CMake (MSVC): Config x64 (Xbox One, DLL)'
inputs:
cwd: ''
cmakeArgs: '-G "$(VS_GENERATOR)" -A x64 -B out6 -DCMAKE_SYSTEM_VERSION=$(WIN10_SDK) -DBUILD_XBOX_EXTS_XBOXONE=ON -DBUILD_SAMPLE=OFF -DBUILD_SHARED_LIBS=ON'
- task: CMake@1
displayName: 'CMake (MSVC): Build x64 Debug (Xbox One, DLL)'
inputs:
cwd: ''
cmakeArgs: --build out6 -v --config Debug
34 changes: 34 additions & 0 deletions build/DirectXTex.rc.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#include <winres.h>

VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "Microsoft Corp"
VALUE "FileDescription", "DirectXTex texture processing library"
VALUE "FileVersion", "1.0.0.0"
VALUE "InternalName", "directxtex.dll"
VALUE "LegalCopyright", "Copyright (c) Microsoft Corp."
VALUE "OriginalFilename", "directxtex.dll"
VALUE "ProductName", "DirectXTex"
VALUE "ProductVersion", "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
2 changes: 1 addition & 1 deletion build/versioninfo.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ param(
[string]$version
)
$versionComma = $version.Replace(".", ",")
$files = 'Texassemble\texassemble.rc', 'Texconv\Texconv.rc', 'Texdiag\texdiag.rc'
$files = 'Texassemble\texassemble.rc', 'Texconv\Texconv.rc', 'Texdiag\texdiag.rc', 'build\DirectXTex.rc.in'
foreach ($file in $files) { (Get-Content $file).replace('1,0,0,0', $versionComma).replace('1.0.0.0', $version) | Set-Content $file }

0 comments on commit 87e8b95

Please sign in to comment.