From a5d9db0cd07430ba45eed689475d41ee7c48b62c Mon Sep 17 00:00:00 2001 From: Anonymous Maarten Date: Wed, 19 Apr 2023 16:28:39 +0200 Subject: [PATCH] cmake: build tests for UWP --- .github/workflows/msvc.yml | 3 +- CMakeLists.txt | 4 +- cmake/test/CMakeLists.txt | 5 +++ test/CMakeLists.txt | 62 +++++++++++++++++++++++++++++-- test/testdraw.c | 3 +- test/uwp/Package.appxmanifest.in | 52 ++++++++++++++++++++++++++ test/uwp/logo-50x50.png | Bin 0 -> 2421 bytes test/uwp/splash-620x300.png | Bin 0 -> 30918 bytes test/uwp/square-150x150.png | Bin 0 -> 10605 bytes test/uwp/square-44x44.png | Bin 0 -> 2082 bytes 10 files changed, 121 insertions(+), 8 deletions(-) create mode 100644 test/uwp/Package.appxmanifest.in create mode 100644 test/uwp/logo-50x50.png create mode 100644 test/uwp/splash-620x300.png create mode 100644 test/uwp/square-150x150.png create mode 100644 test/uwp/square-44x44.png diff --git a/.github/workflows/msvc.yml b/.github/workflows/msvc.yml index 0b8cdcd7e..a434a7284 100644 --- a/.github/workflows/msvc.yml +++ b/.github/workflows/msvc.yml @@ -23,7 +23,7 @@ jobs: - { name: Windows (clang-cl x86), flags: -T ClangCL -A Win32, artifact: 'SDL-clang-cl-x86' } - { name: Windows (ARM), flags: -A ARM, artifact: 'SDL-VC-arm32' } - { name: Windows (ARM64), flags: -A ARM64, artifact: 'SDL-VC-arm64' } - - { name: UWP (x64), flags: -A x64 -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION="10.0" -DSDL_TESTS=OFF, nowerror: true, + - { name: UWP (x64), flags: -A x64 -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION="10.0", nowerror: true, project: VisualC-WinRT/SDL-UWP.sln, projectflags: '/p:Platform=x64 /p:WindowsTargetPlatformVersion=10.0.17763.0', artifact: 'SDL-VC-UWP' } steps: @@ -70,7 +70,6 @@ jobs: run: | cmake --build build/ --config Release --target PACKAGE - name: Verify CMake configuration files - if: ${{ !contains(matrix.platform.name, 'UWP') }} # FIXME: cmake/test/CMakeLists.txt should support UWP run: | cmake -S cmake/test -B cmake_config_build ` -DCMAKE_PREFIX_PATH=${{ env.SDL3_DIR }} ` diff --git a/CMakeLists.txt b/CMakeLists.txt index e4971e577..d04571501 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -304,7 +304,7 @@ set_option(SDL_DUMMYAUDIO "Support the dummy audio driver" ON) set_option(SDL_DUMMYVIDEO "Use dummy video driver" ON) dep_option(SDL_IBUS "Enable IBus support" ON ${UNIX_SYS} OFF) dep_option(SDL_OPENGL "Include OpenGL support" ON "NOT VISIONOS" OFF) -dep_option(SDL_OPENGLES "Include OpenGL ES support" ON "NOT VISIONOS" OFF) +dep_option(SDL_OPENGLES "Include OpenGL ES support" ON "NOT VISIONOS" OFF) set_option(SDL_PTHREADS "Use POSIX threads for multi-threading" ${SDL_PTHREADS_DEFAULT}) dep_option(SDL_PTHREADS_SEM "Use pthread semaphores" ON "SDL_PTHREADS" OFF) dep_option(SDL_OSS "Support the OSS audio API" ON "UNIX_SYS OR RISCOS" OFF) @@ -365,7 +365,7 @@ option(SDL_TEST_LIBRARY "Build the SDL3_test library" ON) dep_option(SDL_STATIC_PIC "Static version of the library should be built with Position Independent Code" "${CMAKE_POSITION_INDEPENDENT_CODE}" "SDL_STATIC" OFF) dep_option(SDL_TESTS "Build the test directory" OFF SDL_TEST_LIBRARY OFF) -dep_option(SDL_INSTALL_TESTS "Install test-cases" OFF "NOT SDL_DISABLE_INSTALL;NOT SDL_FRAMEWORK" OFF) +dep_option(SDL_INSTALL_TESTS "Install test-cases" OFF "NOT SDL_DISABLE_INSTALL;NOT SDL_FRAMEWORK;NOT WINDOWS_STORE" OFF) dep_option(SDL_TESTS_LINK_SHARED "link tests to shared SDL library" "${SDL_SHARED}" "SDL_SHARED;SDL_STATIC" "${SDL_SHARED}") set(SDL_TESTS_TIMEOUT_MULTIPLIER "1" CACHE STRING "Timeout multiplier to account for really slow machines") diff --git a/cmake/test/CMakeLists.txt b/cmake/test/CMakeLists.txt index da7c15054..83ee81dc5 100644 --- a/cmake/test/CMakeLists.txt +++ b/cmake/test/CMakeLists.txt @@ -2,6 +2,11 @@ cmake_minimum_required(VERSION 3.12) project(sdl_test LANGUAGES C) +if(WINDOWS_STORE) + enable_language(CXX) + add_compile_options(/ZW) + set_source_files_properties(ain_cli.c main_gui.c PROPERTIES LANGUAGE CXX) +endif() include(GenerateExportHeader) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 60ce593a6..b762ffe92 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -15,6 +15,12 @@ if(NOT (MSVC AND SDL_CPU_ARM64)) find_package(OpenGL) endif() +if(WINDOWS_STORE) + cmake_minimum_required(VERSION 3.19) + # CMP0112: Target file component generator expressions do not add target dependencies. + cmake_policy(SET CMP0112 NEW) +endif() + set(SDL_TEST_EXECUTABLES) add_library(sdltests_utils OBJECT @@ -33,6 +39,14 @@ define_property(TARGET PROPERTY SDL_NONINTERACTIVE BRIEF_DOCS "If true, target i define_property(TARGET PROPERTY SDL_NONINTERACTIVE_ARGUMENTS BRIEF_DOCS "Argument(s) to run executable in non-interactive mode." FULL_DOCS "Argument(s) to run executable in non-interactive mode.") define_property(TARGET PROPERTY SDL_NONINTERACTIVE_TIMEOUT BRIEF_DOCS "Timeout for noninteractive executable." FULL_DOCS "Timeout for noninteractive executable.") +if(WINDOWS_STORE) + add_library(sdl_test_main_uwp OBJECT main.cpp) + target_link_libraries(sdl_test_main_uwp PRIVATE SDL3::Headers) + target_compile_options(sdl_test_main_uwp PRIVATE "/ZW") + + set_source_files_properties(${RESOURCE_FILES} PROPERTIES VS_DEPLOYENT_LOCATION "Assets") +endif() + macro(add_sdl_test_executable TARGET) cmake_parse_arguments(AST "BUILD_DEPENDENT;NONINTERACTIVE;NEEDS_RESOURCES;TESTUTILS;NO_C90" "" "NONINTERACTIVE_TIMEOUT;NONINTERACTIVE_ARGS;SOURCES" ${ARGN}) if(AST_UNPARSED_ARGUMENTS) @@ -44,13 +58,34 @@ macro(add_sdl_test_executable TARGET) if(AST_TESTUTILS) list(APPEND AST_SOURCES $) endif() + set(EXTRA_SOURCES "") + if(WINDOWS_STORE) + set(uwp_bindir "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.dir") + if(NOT IS_DIRECTORY "${uwp_bindir}") + execute_process(COMMAND "${CMAKE_COMMAND}" -E make_directory "${uwp_bindir}") + endif() + string(REGEX REPLACE "[_]" "" SAFE_TARGET "${TARGET}") + file(GENERATE OUTPUT "${uwp_bindir}/${TARGET}.appxmanifest" + INPUT "${CMAKE_CURRENT_SOURCE_DIR}/uwp/Package.appxmanifest.in" + TARGET "${TARGET}" + ) + set_property(SOURCE "${uwp_bindir}/${TARGET}.appxmanifest" PROPERTY VS_DEPLOYMENT_CONTENT 1) + list(APPEND EXTRA_SOURCES + "$" + "${uwp_bindir}/${TARGET}.appxmanifest" + "uwp/logo-50x50.png" + "uwp/square-44x44.png" + "uwp/square-150x150.png" + "uwp/splash-620x300.png" + ) + endif() if(AST_NEEDS_RESOURCES) - list(APPEND AST_SOURCES ${RESOURCE_FILES}) + list(APPEND EXTRA_SOURCES ${RESOURCE_FILES}) endif() if(ANDROID) - add_library(${TARGET} SHARED ${AST_SOURCES}) + add_library(${TARGET} SHARED ${AST_SOURCES} ${EXTRA_SOURCES}) else() - add_executable(${TARGET} ${AST_SOURCES}) + add_executable(${TARGET} ${AST_SOURCES} ${EXTRA_SOURCES}) endif() SDL_AddCommonCompilerFlags(${TARGET}) target_link_libraries(${TARGET} PRIVATE SDL3::SDL3_test SDL3::${sdl_name_component}) @@ -74,6 +109,16 @@ macro(add_sdl_test_executable TARGET) add_custom_command(TARGET ${TARGET} POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E make_directory $/sdl-${TARGET} COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${RESOURCE_FILES} $/sdl-${TARGET}) + elseif(WINDOWS_STORE) + # MSVC does build the dependent targets (or POST_BUILD commands) when building an application + # after starting to debug. By copying the resources in a custom target, the files can be copied afterwards. + # FIXME: find out proper way to add assets to UWP package + cmake_minimum_required(VERSION 3.19) + add_custom_target(zzz-resources-copy-${TARGET} + COMMAND ${CMAKE_COMMAND} -E make_directory "$/AppX" + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${RESOURCE_FILES} "$/AppX" + ) + add_dependencies(${TARGET} zzz-resources-copy-${TARGET}) else() add_custom_command(TARGET ${TARGET} POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${RESOURCE_FILES} $) @@ -103,6 +148,17 @@ macro(add_sdl_test_executable TARGET) elseif(PSP) target_link_libraries(${TARGET} PRIVATE GL) endif() + if(WINDOWS_STORE) + target_compile_definitions(${TARGET} PRIVATE "SDL_MAIN_NOIMPL") + set_property(TARGET ${TARGET} PROPERTY WIN32_EXECUTABLE TRUE) + set_property(TARGET ${TARGET} PROPERTY RUNTIME_OUTPUT_DIRECTORY "${uwp_bindir}") + target_link_options(${TARGET} PRIVATE + -nodefaultlib:vccorlib$<$:d> + -nodefaultlib:msvcrt$<$:d> + vccorlib$<$:d>.lib + msvcrt$<$:d>.lib + ) + endif() if(EMSCRIPTEN) set_property(TARGET ${TARGET} PROPERTY SUFFIX ".html") diff --git a/test/testdraw.c b/test/testdraw.c index c5c1711d7..d0c102c22 100644 --- a/test/testdraw.c +++ b/test/testdraw.c @@ -19,8 +19,9 @@ #include #endif -#include +#include #include +#include #define NUM_OBJECTS 100 diff --git a/test/uwp/Package.appxmanifest.in b/test/uwp/Package.appxmanifest.in new file mode 100644 index 000000000..8a5d43714 --- /dev/null +++ b/test/uwp/Package.appxmanifest.in @@ -0,0 +1,52 @@ + + + + + + + + + $ + libsdl.org + logo-50x50.png + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/uwp/logo-50x50.png b/test/uwp/logo-50x50.png new file mode 100644 index 0000000000000000000000000000000000000000..e7903b79f11b0d662db06725c36893dca3646544 GIT binary patch literal 2421 zcmV-*35xcKP)Ve=Y{T7k?QSBPYM5MeUg}|M_JHhJ*fy=R017JDO2FwX(AX13b0-eAp zRF47cu^gWVfNC%BG*A}KKx7b6{Sf#72n6p<;AP-vAu>KxJHwec^F%~Eh}<#2%tjy! zkyrp!w*ys(+%PP&LuD<=UhGJ5bX=_Hg@}=)s$F8RS55Q7#`4v*{pFK$7EQ*`DWPL2 z-AAK}eS6$FZ9dnO&emgbfv)+$B2?S@k$f7cNzE;I2eqfW&4BSz)qB^^Z1dd|46oB8 zk}|vKT2XmIA$fplRj2?SZ!BB2wvR||@n1w(7AkmO-8O1mF;vESahrbs#Lm`jw>4F@ zwYY8hbA7&!K0%Qm0G%m$MSnpl2Dtc0BPF{w{?w-a*9RjKHvOi~F3v}#RKtg#2;`!& zGMo*!>F0^B%4v-9P?|KJfCzwnhi7E=+X<<3*d6a{ZsEedl~vsa!0h5a8z00cBj|WU z5>RbHduLvsZ~VM-Zt8Qh+v8*M!OpNF?Q=y=fY- z9vH-P`^#1>4wV@-yWm_yY!iJON;?RH?DhlPRsVU*1GQUkLA3*5>a2y?Js8hj)$;Z9 zR-2O@(Idw;M!BB?ejd(F6y~MCxj-H8EbwW6nSn#gZzdw&+^Xnj{Y9ELt=R+Y0YF56 zOM%SP>G`hxu4n*0j!B}<8NFeu|H$o#ya?!axVqc0?S3?U>e!=(Jt42PnY5mx3l>bd za@H$5)>Vc+W5L0F%s;db!MqSyit0z<$PO6)ehoALeOW+MmZZ(OVcJQ8B6dV(0+X;p z#`~wbZ8Pm53FIf!=9OY?aEpNJflX0n;J&}7Oj-KcIb-;jcRUHbT{5S==@0$QS9{{9 zi1qRbDK`&BA}o>SikF(P%7x>|Fau^~a$fNhV=gL836k&vHvrXVOx&_roQC*JeyQuEAoBH*kpfS~UzywwxQe5qc$-m@Cqj5*WPW)o9F+RBo)jg+6 zBz!+&{c@K8-3_X*iOB1(<`iBhB2NNIha6E{cDTVa_2{8L1BcAiR^%%=EJZ{2*lECwVZG7_uByaKD`v?JnG z)fa%$)R~3l*p2N9aW9OXz+<~B79g?JeUZD0a|-9FNMCjP zRO$sA@2&eR36XeIkE|SZUX27d(}NBdF3j^9U7mvJvu=D3n>oeEEiM8rfN!>3g?nl? z{4;EdP06ZGNSk%jfYoh%<%&b!5V7`yUjR=6t4qD(me1%oczao#cS*pICF!|Eoy%&s z_O44v`=yG6=2q=CY|j9#KsNC1@d*K@cO2w%Pr{V7-i&`3wm=v+<>AJ%lCXs*fI8)X z;vZN$d$CiuJllIbv~~u+$D@O?%<6tC)3u{GG*CVnK>jZ-qj8dP| zGh@M_+G{q%C&vNyLyoB9I-LsZ4a|od%2$W>(5=AVR#t6@cAI|xm+tt$<7t^)%}%!o zm>@pT10cJAbqQ@fZ+!7ZX-^oxjsfk%Vi5DCLTFuQ<4QWYRVxpuHGGtKV#qDAT0JIl&;X)h|pk45Gno5x>!H+Qo08cAM%rL4B$Y z1Mz?Dx2b6}?bm5Q%M6j$fQ^8|?D^6(?O7^jJvK+8U9~G19-P=npJW7!kbA zR=82YJ{;ZDyu#dJJ>wKUqjQSq^&cDF*{{f4;5MvADjBFj^{+!Ko;eJC_G_KX<^!?7 zVPGYyUwzMhoiYX|B616G16E0LH>%ZV!l~22;Gt!;v6Hb@!8}t=oem=F|B-Kj$T-CQ n4se!8q~R=)NW)nok%s>Q9U2niUnbeS00000NkvXXu0mjfuSkNP literal 0 HcmV?d00001 diff --git a/test/uwp/splash-620x300.png b/test/uwp/splash-620x300.png new file mode 100644 index 0000000000000000000000000000000000000000..0dde7737d6eb2aaa68d0eb795583d9875cb30445 GIT binary patch literal 30918 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 literal 0 HcmV?d00001 diff --git a/test/uwp/square-44x44.png b/test/uwp/square-44x44.png new file mode 100644 index 0000000000000000000000000000000000000000..f0bdcd22488bbac7b2cb8a95c53fa439114eb01e GIT binary patch literal 2082 zcmV+-2;KLIP)h($8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H12d_y) zK~z|U?U;K|RQDCfKj+?MVOe11r3iv3s5Qj#k*Yv6qfULMlNwu11>@8t65Fx16BEbA zW}KL5o6e*U+l)11O~s<^nA+5-+GsLrO+{->9kE70OhH}?sQ3VdecaPOSaglMqM546 zjNh3%bAOL>&i8lj`Tg!WKT%b_NHFd6&mEQ;;Fo{` z<)|J7eh#caBs!Gn{qk@Y;0G3>+JHzpU16~v)q{xi2IA=Q_>EB2d;fq-;V%kBL49i! zqI;6PHz6T15|REvUb+bE0Ad2;0vrOK>QU9LvbB`q^PQ&CH`zk60fz|Hs#LfS4nCr~ z(h8oNnm_MJMX!a}z|OYFnJqQ;8Ru%!hFrN2V}t#u?g&~$4DfEHv)79ghtJ3~Ri*gk z-X|L4>`M!3YFh7@aO$H4^HBK}5P!22wIHuG94J|Lop50r-~@2_JQOvSbHLSyvk_5T zFzu}`)s+80YDaRcXek%V~u`aktJyZzl!KRa7|Q{y4Jj{JW^$ zu&KKdG9)B;HzVKgn_sXiE$``30goDp3CrL*pfV8AFAFvB^-Lwi6j9(1TMH?HL6om^5=ckKsNx1yW;!F zx7{ay8rW20ff1>mE7D+(CihY^k6mgU3hY6(1Ce)tSG*$6^zmFtZLvF8n>v)bDCh35 zN$)LiqlZNz5qTXb0lox`0iFYJmzHc7)mH)j9h<~}t8JOUi@V(R&Z z@j;ct0ig8llp(FJ4EVCKIxUB~NN1;oxr@<Y#tmJOM26irCln9jaw9@jqExdEg+h z9+7NRt5l2}P`qNWDP>@JVRO|HpaNC>QSMV7AmX?)o@CF}tiXa#_8T+b<+phwMP*92 zQH6Ex0~>ETV{e}@tN?}s>&s#jFSz`k?K=`OcBJO@uO4%`rD93_iS5tk&OMJ|AwI6|f&J5%!ueK!qQ ze5c{irjNP_djiHwAAfjy``qSJ%sgAe*5u60!?DSktNM?m(+IMuY;~u5N;pImP>4ve znLC%F#&RCJ=w@3|M)dFd49fVFNk6dOYByhSAKTb|3nz{W)oGdPg6kfB6PO6to9wl< z$D9dEm)Djp{cBQ&(<6qf(%}N=1U)Pm8yXG`+MowlT0ncCI(WULe4phLY5#G?h}PrI zcn^XPr3JK6g}pY7*j8IwT>ohzHnDsC_^NNQ00Km>b~)>M#=lr$QBZr9!u)=DvmFUz z3**964mk=X3i}lbv!_pw>>gvn1RIYOMRd1=$3i{X)2Bx!PnaFkQ^j#T9~K!xR{{9- zz;R>(OMo{+o|hsHU=Of+M?!k(b3?`t6V#_F7sSABSeC~Uvlo_rsD?gnh;#}xSkNDp z6NXBPirN^3^8nSs{X^0%{M0SB6d_gLG6A( zKB`*+Z4)rB%@IjN^;~-XoCH4+qy36g471Y2Hv_B+71K0)a##&(ykBfhrll7wv9b)+ z4h*9c)L|H=+wZqh1uM#raoL18OE{&Lks^lI5;X@2R+G=-MAM7AZ_rn56K5 z!r-1{a&l(d{~yIF6DHW0J=+W&65$~78Zd>fq9eNIl&lx^H*R8jS2ZZl79uU6U_`(tXA7#rjWNs035dZ)H M07*qoM6N<$f@+G`bpQYW literal 0 HcmV?d00001