mirror of https://git.tukaani.org/xz.git
Tests/Windows: Add the application manifest to the test programs
This ensures that the test programs get executed the same way as
the binaries that are installed.
(cherry picked from commit 74702ee00e
)
This commit is contained in:
parent
bf518b9ba4
commit
51f6f45587
|
@ -235,6 +235,12 @@ if(MSVC)
|
|||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
|
||||
endif()
|
||||
|
||||
# Dependencies for all Windows resource files:
|
||||
set(W32RES_DEPENDENCIES
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/common/common_w32res.rc"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/common/w32_application.manifest"
|
||||
)
|
||||
|
||||
# Definitions common to all targets:
|
||||
add_compile_definitions(
|
||||
# Package info:
|
||||
|
@ -1284,7 +1290,7 @@ if(WIN32 OR CYGWIN)
|
|||
target_sources(liblzma PRIVATE src/liblzma/liblzma_w32res.rc)
|
||||
|
||||
set_source_files_properties(src/liblzma/liblzma_w32res.rc PROPERTIES
|
||||
OBJECT_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/common/common_w32res.rc"
|
||||
OBJECT_DEPENDS "${W32RES_DEPENDENCIES}"
|
||||
)
|
||||
|
||||
# Export the public API symbols with __declspec(dllexport).
|
||||
|
@ -1653,7 +1659,7 @@ if(HAVE_DECODERS AND (NOT MSVC OR MSVC_VERSION GREATER_EQUAL 1900))
|
|||
target_sources("${XZDEC}" PRIVATE "src/xzdec/${XZDEC}_w32res.rc")
|
||||
set_source_files_properties(
|
||||
"src/xzdec/${XZDEC}_w32res.rc" PROPERTIES
|
||||
OBJECT_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/common/common_w32res.rc"
|
||||
OBJECT_DEPENDS "${W32RES_DEPENDENCIES}"
|
||||
)
|
||||
endif()
|
||||
|
||||
|
@ -1709,7 +1715,7 @@ if(HAVE_DECODERS AND (NOT MSVC OR MSVC_VERSION GREATER_EQUAL 1900))
|
|||
# Add the Windows resource file for lzmainfo.exe.
|
||||
target_sources(lzmainfo PRIVATE src/lzmainfo/lzmainfo_w32res.rc)
|
||||
set_source_files_properties(src/lzmainfo/lzmainfo_w32res.rc PROPERTIES
|
||||
OBJECT_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/common/common_w32res.rc"
|
||||
OBJECT_DEPENDS "${W32RES_DEPENDENCIES}"
|
||||
)
|
||||
endif()
|
||||
|
||||
|
@ -1818,7 +1824,7 @@ if(NOT MSVC OR MSVC_VERSION GREATER_EQUAL 1900)
|
|||
# Add the Windows resource file for xz.exe.
|
||||
target_sources(xz PRIVATE src/xz/xz_w32res.rc)
|
||||
set_source_files_properties(src/xz/xz_w32res.rc PROPERTIES
|
||||
OBJECT_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/common/common_w32res.rc"
|
||||
OBJECT_DEPENDS "${W32RES_DEPENDENCIES}"
|
||||
)
|
||||
endif()
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ EXTRA_DIST = \
|
|||
tests.cmake \
|
||||
tuktest.h \
|
||||
tests.h \
|
||||
tests_w32res.rc \
|
||||
test_files.sh \
|
||||
test_compress.sh \
|
||||
test_compress_generated_abc \
|
||||
|
@ -25,6 +26,15 @@ LDADD = $(top_builddir)/src/liblzma/liblzma.la
|
|||
|
||||
LDADD += $(LTLIBINTL)
|
||||
|
||||
# Windows resource compiler support
|
||||
.rc.o:
|
||||
$(RC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(RCFLAGS) -i $< -o $@
|
||||
|
||||
if COND_W32
|
||||
LDADD += tests_w32res.o
|
||||
endif
|
||||
|
||||
check_PROGRAMS = \
|
||||
create_compress_files \
|
||||
test_check \
|
||||
|
|
|
@ -16,6 +16,36 @@
|
|||
include(CTest)
|
||||
|
||||
if(BUILD_TESTING)
|
||||
################################
|
||||
# Windows Application Manifest #
|
||||
################################
|
||||
|
||||
# On Windows (but not on Cygwin or MSYS2) we want to add the
|
||||
# application manifest to the test programs so that they are
|
||||
# run in the same configuration as the programs that are installed.
|
||||
# The same object file can be used for all test programs.
|
||||
add_library(tests_w32res OBJECT)
|
||||
|
||||
# CMake requires that even an object library must have at least once
|
||||
# source file. Give it a header file that results in no output files.
|
||||
target_sources(tests_w32res PRIVATE tests/tests.h)
|
||||
|
||||
# The Ninja Generator requires setting the linker language since it
|
||||
# cannot guess the programming language of a header file.
|
||||
set_target_properties(tests_w32res PROPERTIES LINKER_LANGUAGE C)
|
||||
|
||||
target_include_directories(tests_w32res PRIVATE src/common
|
||||
src/common
|
||||
src/liblzma/api
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
target_sources(tests_w32res PRIVATE tests/tests_w32res.rc)
|
||||
set_source_files_properties(tests/tests_w32res.rc PROPERTIES
|
||||
OBJECT_DEPENDS "${W32RES_DEPENDENCIES}"
|
||||
)
|
||||
endif()
|
||||
|
||||
#################
|
||||
# liblzma tests #
|
||||
#################
|
||||
|
@ -54,7 +84,7 @@ if(BUILD_TESTING)
|
|||
src/liblzma
|
||||
)
|
||||
|
||||
target_link_libraries("${TEST}" PRIVATE liblzma)
|
||||
target_link_libraries("${TEST}" PRIVATE liblzma tests_w32res)
|
||||
|
||||
# Put the test programs into their own subdirectory so they don't
|
||||
# pollute the top-level dir which might contain xz and xzdec.
|
||||
|
@ -156,6 +186,7 @@ if(BUILD_TESTING)
|
|||
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_compress")
|
||||
|
||||
add_executable(create_compress_files tests/create_compress_files.c)
|
||||
target_link_libraries(create_compress_files PRIVATE tests_w32res)
|
||||
target_include_directories(create_compress_files PRIVATE src/common)
|
||||
set_target_properties(create_compress_files PROPERTIES
|
||||
RUNTIME_OUTPUT_DIRECTORY test_compress)
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
/* SPDX-License-Identifier: 0BSD */
|
||||
|
||||
/*
|
||||
* Author: Lasse Collin
|
||||
*/
|
||||
|
||||
/*
|
||||
* It's silly to add version info to test programs but GNU windres fails
|
||||
* if there are no resources to build, which happens with Autotools on
|
||||
* Cygwin and MSYS2 because otherwise one more Automake conditional would
|
||||
* be needed.
|
||||
*/
|
||||
|
||||
#define MY_TYPE VFT_APP
|
||||
#define MY_NAME "test"
|
||||
#define MY_SUFFIX ".exe"
|
||||
#define MY_DESC "Test program"
|
||||
#include "common_w32res.rc"
|
Loading…
Reference in New Issue