summaryrefslogtreecommitdiffhomepage
path: root/cmake
diff options
context:
space:
mode:
authorAki <please@ignore.pl>2024-03-07 23:59:51 +0100
committerAki <please@ignore.pl>2024-03-07 23:59:51 +0100
commit3f857bb284d3c8aa99bcd61980e0f0cab2dd8e19 (patch)
tree4a2724f89ce213b1834d5550229243cccfad9fb3 /cmake
parent1ef05b8b227194ec32ae49f0eaf3e483ef35bb6b (diff)
downloadstarshatter-3f857bb284d3c8aa99bcd61980e0f0cab2dd8e19.zip
starshatter-3f857bb284d3c8aa99bcd61980e0f0cab2dd8e19.tar.gz
starshatter-3f857bb284d3c8aa99bcd61980e0f0cab2dd8e19.tar.bz2
Added gtest to the project and a stub test for showcase
Diffstat (limited to 'cmake')
-rw-r--r--cmake/modules/AddDatafile.cmake7
-rw-r--r--cmake/modules/GenerateEmulator.cmake21
-rwxr-xr-xcmake/modules/wine.sh.in5
-rwxr-xr-xcmake/toolchains/i686-w64-mingw32-wine7
-rw-r--r--cmake/toolchains/i686-w64-mingw32.cmake3
5 files changed, 29 insertions, 14 deletions
diff --git a/cmake/modules/AddDatafile.cmake b/cmake/modules/AddDatafile.cmake
index fd454b7..4badc0b 100644
--- a/cmake/modules/AddDatafile.cmake
+++ b/cmake/modules/AddDatafile.cmake
@@ -48,6 +48,7 @@ function(add_datafile DATAFILE_TARGET)
COMMAND ${CMAKE_COMMAND} -E rm -f ${DATAFILE_OUTPUT}
COMMENT "Creating datafile ${DATAFILE_TARGET}"
)
+ get_target_property(EMULATOR dat CROSSCOMPILING_EMULATOR)
foreach(RESOURCE_TARGET IN ITEMS ${DATAFILE_RESOURCES})
get_property(RESOURCE_DIRECTORY TARGET ${RESOURCE_TARGET} PROPERTY RESOURCE_DIRECTORY)
add_custom_command(
@@ -56,8 +57,7 @@ function(add_datafile DATAFILE_TARGET)
COMMAND
${CMAKE_COMMAND} -E chdir ${RESOURCE_DIRECTORY}
${CMAKE_COMMAND} -E env "${DATAFILE_VAR}='${DATAFILE_PATHS}'"
- ${CMAKE_CROSSCOMPILING_EMULATOR}
- $<TARGET_FILE:dat> -cu $<SHELL_PATH:${DATAFILE_OUTPUT}> .
+ ${EMULATOR} $<TARGET_FILE:dat> -cu $<SHELL_PATH:${DATAFILE_OUTPUT}> .
)
endforeach()
if(NOT DATAFILE_SKIP_SOURCE)
@@ -73,8 +73,7 @@ function(add_datafile DATAFILE_TARGET)
COMMAND
${CMAKE_COMMAND} -E chdir ${DATAFILE_SOURCE}
${CMAKE_COMMAND} -E env "${DATAFILE_VAR}='${DATAFILE_PATHS}'"
- ${CMAKE_CROSSCOMPILING_EMULATOR}
- $<TARGET_FILE:dat> -cu $<SHELL_PATH:${DATAFILE_OUTPUT}> .
+ ${EMULATOR} $<TARGET_FILE:dat> -cu $<SHELL_PATH:${DATAFILE_OUTPUT}> .
)
endif()
add_custom_target(${DATAFILE_TARGET} ALL DEPENDS ${DATAFILE_OUTPUT})
diff --git a/cmake/modules/GenerateEmulator.cmake b/cmake/modules/GenerateEmulator.cmake
new file mode 100644
index 0000000..f25ae5f
--- /dev/null
+++ b/cmake/modules/GenerateEmulator.cmake
@@ -0,0 +1,21 @@
+# Generates and attaches new emulator wrapper for a TARGET for use with tests and custom target jobs.
+
+set(GENERATE_EMULATOR_TEMPLATE "${CMAKE_CURRENT_LIST_DIR}/wine.sh.in")
+if(CMAKE_CROSSCOMPILING)
+ function(generate_emulator TARGET)
+ cmake_parse_arguments(PARSE_ARGV 1 GENERATE_EMULATOR "" "" "LIBS")
+ set(WINE_PREFIX "$ENV{HOME}/.wine-${TOOLCHAIN_PREFIX}")
+ set(WINE_PATH "${CMAKE_FIND_ROOT_PATH}/bin")
+ foreach(LIB IN ITEMS ${GENERATE_EMULATOR_LIBS})
+ get_target_property(DIR ${LIB} BINARY_DIR)
+ list(PREPEND WINE_PATH "${DIR}")
+ endforeach()
+ set(EMULATOR "${CMAKE_CURRENT_BINARY_DIR}/wine")
+ configure_file("${GENERATE_EMULATOR_TEMPLATE}" "${EMULATOR}" @ONLY)
+ set_target_properties(${TARGET} PROPERTIES CROSSCOMPILING_EMULATOR "${EMULATOR}")
+ endfunction()
+else()
+ function(generate_emulator TARGET)
+ # no-op
+ endfunction()
+endif()
diff --git a/cmake/modules/wine.sh.in b/cmake/modules/wine.sh.in
new file mode 100755
index 0000000..2a9be49
--- /dev/null
+++ b/cmake/modules/wine.sh.in
@@ -0,0 +1,5 @@
+#!/bin/sh -e
+# See GenerateEmulator.cmake
+export WINEPREFIX="@WINE_PREFIX@"
+export WINEPATH="@WINE_PATH@"
+exec /usr/bin/wine "$@"
diff --git a/cmake/toolchains/i686-w64-mingw32-wine b/cmake/toolchains/i686-w64-mingw32-wine
deleted file mode 100755
index 6f67c68..0000000
--- a/cmake/toolchains/i686-w64-mingw32-wine
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh -e
-toolchain=i686-w64-mingw32
-prefix=/usr/$toolchain
-export WINEPREFIX=$HOME/.wine-$toolchain
-export WINEPATH="${WINEPATH:+${WINEPATH};}$prefix/bin"
-export WINEARCH=win32
-exec /usr/bin/wine "$@"
diff --git a/cmake/toolchains/i686-w64-mingw32.cmake b/cmake/toolchains/i686-w64-mingw32.cmake
index b4d66eb..debc649 100644
--- a/cmake/toolchains/i686-w64-mingw32.cmake
+++ b/cmake/toolchains/i686-w64-mingw32.cmake
@@ -7,11 +7,8 @@
set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_SYSTEM_PROCESSOR i686)
-set(CMAKE_CROSSCOMPILING ON)
set(TOOLCHAIN_DIR "${CMAKE_CURRENT_LIST_DIR}")
-set(CMAKE_CROSSCOMPILING_EMULATOR "${TOOLCHAIN_DIR}/i686-w64-mingw32-wine")
-
set(TOOLCHAIN_PREFIX i686-w64-mingw32)
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)