summaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
authorBernhard Guillon <Bernhard.Guillon@begu.org>2026-06-30 21:41:32 +0200
committerBernhard Guillon <Bernhard.Guillon@begu.org>2026-06-30 21:41:32 +0200
commitbf2f3e0acdf98020295732a3a63b7ddbc64a6d6a (patch)
tree5c92e0ea4874d72eefda81ac3c696389c6d68668 /cmake
parent1c9acabddfdce47a1b7db9275215450802ac709a (diff)
downloadcsharp-cmake-bf2f3e0acdf98020295732a3a63b7ddbc64a6d6a.tar.gz
csharp-cmake-bf2f3e0acdf98020295732a3a63b7ddbc64a6d6a.zip
Fix rebuild tracking by adding DEPENDS parameter for .dll file-level dependencies
Diffstat (limited to 'cmake')
-rw-r--r--cmake/dotnet.cmake26
1 files changed, 22 insertions, 4 deletions
diff --git a/cmake/dotnet.cmake b/cmake/dotnet.cmake
index 4c5c4ca..cd848e2 100644
--- a/cmake/dotnet.cmake
+++ b/cmake/dotnet.cmake
@@ -1,5 +1,5 @@
function(add_dotnet_library NAME)
- set(multiValueArgs SOURCES REFERENCES)
+ set(multiValueArgs SOURCES REFERENCES DEPENDS)
cmake_parse_arguments(PARSE_ARGV 1 arg
"" "" "${multiValueArgs}"
@@ -16,6 +16,11 @@ function(add_dotnet_library NAME)
list(APPEND CSC_FLAGS "-reference:${ref}")
endforeach()
+ set(DEPS "")
+ foreach(dep IN LISTS arg_DEPENDS)
+ list(APPEND DEPS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${dep}.dll)
+ endforeach()
+
add_custom_command(
OUTPUT ${OUTPUT_FILE}
COMMAND dotnet ${CSC_DLL}
@@ -27,13 +32,17 @@ function(add_dotnet_library NAME)
-reference:System.Runtime.dll
-reference:System.Console.dll
${arg_SOURCES}
- DEPENDS ${arg_SOURCES}
+ DEPENDS ${arg_SOURCES} ${DEPS}
COMMENT "Compiling ${NAME} library with Roslyn csc..."
COMMAND_EXPAND_LISTS
)
add_custom_target(${NAME} ALL DEPENDS ${OUTPUT_FILE})
+ foreach(dep IN LISTS arg_DEPENDS)
+ add_dependencies(${NAME} ${dep})
+ endforeach()
+
set_target_properties(${NAME} PROPERTIES
DOTNET_ALL_REFS ""
DOTNET_PUBLIC_REFS ""
@@ -43,7 +52,7 @@ endfunction()
function(add_dotnet_executable NAME)
set(oneValueArgs MAIN)
- set(multiValueArgs SOURCES REFERENCES)
+ set(multiValueArgs SOURCES REFERENCES DEPENDS)
cmake_parse_arguments(PARSE_ARGV 1 arg
"" "${oneValueArgs}" "${multiValueArgs}"
@@ -71,6 +80,11 @@ function(add_dotnet_executable NAME)
COPYONLY
)
+ set(DEPS ${RUNTIMECONFIG})
+ foreach(dep IN LISTS arg_DEPENDS)
+ list(APPEND DEPS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${dep}.dll)
+ endforeach()
+
add_custom_command(
OUTPUT ${OUTPUT_FILE}
COMMAND dotnet ${CSC_DLL}
@@ -82,13 +96,17 @@ function(add_dotnet_executable NAME)
-reference:System.Runtime.dll
-reference:System.Console.dll
${arg_SOURCES}
- DEPENDS ${arg_SOURCES} ${RUNTIMECONFIG}
+ DEPENDS ${arg_SOURCES} ${DEPS}
COMMENT "Compiling ${NAME} with Roslyn csc..."
COMMAND_EXPAND_LISTS
)
add_custom_target(${NAME} ALL DEPENDS ${OUTPUT_FILE})
+ foreach(dep IN LISTS arg_DEPENDS)
+ add_dependencies(${NAME} ${dep})
+ endforeach()
+
set_target_properties(${NAME} PROPERTIES
DOTNET_ALL_REFS ""
DOTNET_PUBLIC_REFS ""