From d819f9d82978af3a519a99fe838cefdffa92faed Mon Sep 17 00:00:00 2001 From: Luke2Sky Date: Fri, 19 Dec 2025 14:09:19 -0300 Subject: [PATCH 1/3] This fixes the constant rebuilds even if nothing changed in the source files. --- featomic/CMakeLists.txt | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/featomic/CMakeLists.txt b/featomic/CMakeLists.txt index 1d04698d9..4e8cd4e53 100644 --- a/featomic/CMakeLists.txt +++ b/featomic/CMakeLists.txt @@ -339,14 +339,19 @@ else() endif() endif() -add_custom_target(cargo-build-featomic ALL - COMMAND - ${CMAKE_COMMAND} -E env ${CARGO_ENV} - cargo rustc ${CARGO_BUILD_ARG} -- ${CARGO_RUSTC_ARGS} +set(FEATOMIC_OUTPUTS ${FEATOMIC_STATIC_LOCATION} ${FEATOMIC_SHARED_LOCATION} $<$:${FEATOMIC_IMPLIB_LOCATION}>) +add_custom_command( + OUTPUT ${FEATOMIC_OUTPUTS} + COMMAND ${CMAKE_COMMAND} -E env ${CARGO_ENV} + cargo rustc ${CARGO_BUILD_ARG} -- ${CARGO_RUSTC_ARGS} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} DEPENDS ${ALL_RUST_SOURCES} - COMMENT "Building ${FILES_CREATED_BY_CARGO} with cargo" - BYPRODUCTS ${FEATOMIC_STATIC_LOCATION} ${FEATOMIC_SHARED_LOCATION} ${FEATOMIC_IMPLIB_LOCATION} + COMMENT "Building libfeatomic with cargo" + VERBATIM +) + +add_custom_target(cargo-build-featomic ALL + DEPENDS ${FEATOMIC_OUTPUTS} ) add_dependencies(featomic::shared cargo-build-featomic) From 2908c25acfbcbe18d50a8d3100b112419816bf3e Mon Sep 17 00:00:00 2001 From: Luke2Sky Date: Fri, 19 Dec 2025 15:36:54 -0300 Subject: [PATCH 2/3] also fixes shared libs --- featomic/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/featomic/CMakeLists.txt b/featomic/CMakeLists.txt index 4e8cd4e53..486fac1ca 100644 --- a/featomic/CMakeLists.txt +++ b/featomic/CMakeLists.txt @@ -339,7 +339,7 @@ else() endif() endif() -set(FEATOMIC_OUTPUTS ${FEATOMIC_STATIC_LOCATION} ${FEATOMIC_SHARED_LOCATION} $<$:${FEATOMIC_IMPLIB_LOCATION}>) +set(FEATOMIC_OUTPUTS ${FEATOMIC_STATIC_LOCATION} $<$:${FEATOMIC_SHARED_LOCATION}> $<$:${FEATOMIC_IMPLIB_LOCATION}>) add_custom_command( OUTPUT ${FEATOMIC_OUTPUTS} COMMAND ${CMAKE_COMMAND} -E env ${CARGO_ENV} From 6b2c6bfd74f31f30e15904c32a602421969fd39b Mon Sep 17 00:00:00 2001 From: Guillaume Fraux Date: Mon, 5 Jan 2026 16:02:07 +0100 Subject: [PATCH 3/3] Also handle building both shared and static libraries --- featomic/CMakeLists.txt | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/featomic/CMakeLists.txt b/featomic/CMakeLists.txt index 486fac1ca..ad69e8b3f 100644 --- a/featomic/CMakeLists.txt +++ b/featomic/CMakeLists.txt @@ -317,7 +317,7 @@ if (NOT "${EXTRA_RUST_FLAGS}" STREQUAL "") set(CARGO_RUSTC_ARGS "${CARGO_RUSTC_ARGS};${EXTRA_RUST_FLAGS}") endif() -# Set environement variables for cargo build +# Set environment variables for cargo build set(CARGO_ENV "") if (NOT "${CMAKE_OSX_DEPLOYMENT_TARGET}" STREQUAL "") list(APPEND CARGO_ENV "MACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}") @@ -328,32 +328,41 @@ endif() if (FEATOMIC_INSTALL_BOTH_STATIC_SHARED) set(CARGO_BUILD_ARG "${CARGO_BUILD_ARG};--crate-type=cdylib;--crate-type=staticlib") - set(FILES_CREATED_BY_CARGO "${FEATOMIC_SHARED_LIB_NAME} and ${FEATOMIC_STATIC_LIB_NAME}") + set(CARGO_OUTPUTS ${FEATOMIC_SHARED_LOCATION} ${FEATOMIC_STATIC_LOCATION}) + if (WIN32) + list(APPEND CARGO_OUTPUTS ${FEATOMIC_IMPLIB_LOCATION}) + set(FILE_CREATED_MESSAGE "${FEATOMIC_SHARED_LIB_NAME}, ${FEATOMIC_STATIC_LIB_NAME}, and ${FEATOMIC_IMPLIB_NAME}") + else() + set(FILE_CREATED_MESSAGE "${FEATOMIC_SHARED_LIB_NAME} and ${FEATOMIC_STATIC_LIB_NAME}") + endif() else() if (BUILD_SHARED_LIBS) set(CARGO_BUILD_ARG "${CARGO_BUILD_ARG};--crate-type=cdylib") - set(FILES_CREATED_BY_CARGO "${FEATOMIC_SHARED_LIB_NAME}") + set(CARGO_OUTPUTS ${FEATOMIC_SHARED_LOCATION}) + if (WIN32) + list(APPEND CARGO_OUTPUTS ${FEATOMIC_IMPLIB_LOCATION}) + set(FILE_CREATED_MESSAGE "${FEATOMIC_SHARED_LIB_NAME} and ${FEATOMIC_IMPLIB_NAME}") + else() + set(FILE_CREATED_MESSAGE "${FEATOMIC_SHARED_LIB_NAME}") + endif() else() set(CARGO_BUILD_ARG "${CARGO_BUILD_ARG};--crate-type=staticlib") - set(FILES_CREATED_BY_CARGO "${FEATOMIC_STATIC_LIB_NAME}") + set(CARGO_OUTPUTS ${FEATOMIC_STATIC_LOCATION}) + set(FILE_CREATED_MESSAGE "${FEATOMIC_STATIC_LIB_NAME}") endif() endif() -set(FEATOMIC_OUTPUTS ${FEATOMIC_STATIC_LOCATION} $<$:${FEATOMIC_SHARED_LOCATION}> $<$:${FEATOMIC_IMPLIB_LOCATION}>) add_custom_command( - OUTPUT ${FEATOMIC_OUTPUTS} + OUTPUT ${CARGO_OUTPUTS} COMMAND ${CMAKE_COMMAND} -E env ${CARGO_ENV} cargo rustc ${CARGO_BUILD_ARG} -- ${CARGO_RUSTC_ARGS} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} DEPENDS ${ALL_RUST_SOURCES} - COMMENT "Building libfeatomic with cargo" + COMMENT "Building ${FILE_CREATED_MESSAGE} with cargo" VERBATIM ) -add_custom_target(cargo-build-featomic ALL - DEPENDS ${FEATOMIC_OUTPUTS} -) - +add_custom_target(cargo-build-featomic ALL DEPENDS ${CARGO_OUTPUTS}) add_dependencies(featomic::shared cargo-build-featomic) add_dependencies(featomic::static cargo-build-featomic)