Skip to content

Commit

Permalink
test: Add a smoke test for resource files and windres
Browse files Browse the repository at this point in the history
  • Loading branch information
mstorsjo committed Dec 12, 2023
1 parent e2a0372 commit a815d65
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 1 deletion.
13 changes: 12 additions & 1 deletion test/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ SRC_PATH=$(word 1, $(dir $(MAKEFILE_LIST)))
vpath %.c $(SRC_PATH)
vpath %.cpp $(SRC_PATH)
vpath %.idl $(SRC_PATH)
vpath %.rc $(SRC_PATH)

ifneq ($(filter %-mingw32, $(MAKE_HOST)),)
# If we're running as mingw32-make, we're executing everything in
Expand All @@ -40,6 +41,7 @@ endif
CC = $(CROSS)gcc$(TOOLEXT)
CXX = $(CROSS)g++$(TOOLEXT)
WIDL = $(CROSS)widl$(TOOLEXT)
WINDRES = $(CROSS)windres$(TOOLEXT)
CC_UWP = $(CROSS_UWP)clang$(TOOLEXT)

ifneq ($(COPY),)
Expand Down Expand Up @@ -82,6 +84,7 @@ ifneq ($(HAVE_OPENMP),)
endif
TESTS_UWP = uwp-error
TESTS_IDL = idltest
TESTS_RES = hello-res
ifneq ($(HAVE_UWP),)
TESTS_OTHER_TARGETS = hello
endif
Expand All @@ -105,6 +108,7 @@ TARGETS_SSP = $(addsuffix $(EXEEXT), $(TESTS_SSP))
TARGETS_CFGUARD = $(addsuffix $(EXEEXT), $(TESTS_CFGUARD))
TARGETS_FORTIFY = $(addsuffix -fortify$(EXEEXT), $(TESTS_FORTIFY))
TARGETS_IDL = $(addsuffix $(EXEEXT), $(TESTS_IDL))
TARGETS_RES = $(addsuffix $(EXEEXT), $(TESTS_RES))
TARGETS_OTHER_TARGETS = $(addsuffix -mingw32uwp$(EXEEXT), $(TESTS_OTHER_TARGETS))
TARGETS_UWP = $(addsuffix -mingw32$(EXEEXT), $(TESTS_UWP))
ifneq ($(HAVE_UWP),)
Expand All @@ -121,7 +125,7 @@ TARGETS = \
$(TARGETS_C) $(TARGETS_C_DLL) $(TARGETS_C_LINK_DLL) $(TARGETS_C_NO_BUILTIN) $(TARGETS_C_ANSI_STDIO) \
$(TARGETS_CPP) $(TARGETS_CPP_EXCEPTIONS) $(TARGETS_CPP_EXCEPTIONS_OPT) $(TARGETS_CPP_STATIC) $(TARGETS_CPP_DLL) $(TARGETS_CPP_LINK_DLL) \
$(TARGETS_SSP) $(TARGETS_CFGUARD) $(TARGETS_FORTIFY) \
$(TARGETS_IDL) \
$(TARGETS_IDL) $(TARGETS_RES) \
$(TARGETS_OTHER_TARGETS) $(TARGETS_UWP) $(TARGETS_UWP_FAIL) \
$(TARGETS_ASAN) $(TARGETS_UBSAN) $(TARGETS_ASAN_CFGUARD) \
$(TARGETS_OMP)
Expand All @@ -136,6 +140,7 @@ EXTRAFILES = \
$(addprefix lib, $(addsuffix .dll.a, $(TESTS_C_DLL))) \
$(addprefix lib, $(addsuffix .dll.a, $(TESTS_CPP_DLL))) \
$(addsuffix .h, $(TESTS_IDL)) \
$(addsuffix -rc.o, $(TESTS_RES)) \
$(addsuffix -asan.pdb, $(TESTS_ASAN)) \
$(addsuffix -asan-cfguard.pdb, $(TESTS_ASAN_CFGUARD))

Expand Down Expand Up @@ -198,6 +203,12 @@ $(TARGETS_OMP): %$(EXEEXT): %.c
$(TARGETS_IDL): %$(EXEEXT): %.c %.h
$(CC) $(CPPFLAGS) $(CFLAGS) $< -o $@ -I. -lole32

%.o: %.rc
$(WINDRES) $< $@

$(TARGETS_RES): %$(EXEEXT): %.c %-rc.o
$(CC) $(CPPFLAGS) $(CFLAGS) $+ -o $@

$(TARGETS_OTHER_TARGETS): %-mingw32uwp$(EXEEXT): %.c
$(CC_UWP) $< -o $@

Expand Down
23 changes: 23 additions & 0 deletions test/hello-res-rc.rc
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/*
* Copyright (c) 2023 Martin Storsjo
*
* This file is part of llvm-mingw.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/

#include "hello-res.h"

STRINGTABLE {
HELLO_STRING "Hello world"
}
31 changes: 31 additions & 0 deletions test/hello-res.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/*
* Copyright (c) 2023 Martin Storsjo
*
* This file is part of llvm-mingw.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/

#include <stdio.h>
#include <windows.h>
#include "hello-res.h"

int main(int argc, char *argv[]) {
char buf[100];
if (LoadStringA(GetModuleHandle(NULL), HELLO_STRING, buf, sizeof(buf)) <= 0) {
printf("Unable to load resource string\n");
return 1;
}
printf("Resource string: %s\n", buf);
return 0;
}
24 changes: 24 additions & 0 deletions test/hello-res.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
* Copyright (c) 2023 Martin Storsjo
*
* This file is part of llvm-mingw.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/

#ifndef HELLO_RES_H
#define HELLO_RES_H

#define HELLO_STRING 1

#endif

0 comments on commit a815d65

Please sign in to comment.