[cmake-developers] [PATCH 2/3] CPackRPM: Support rpm architecture in components

Joshua A Clayton stillcompiling at gmail.com
Thu Feb 19 03:01:15 EST 2015


CPACK_RPM_<component>_PACKAGE_ARCHITECTURE variable allows
the same project to support packages of different architectures
including noarch, native and foreign architectures.
---
 Modules/CPackRPM.cmake | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/Modules/CPackRPM.cmake b/Modules/CPackRPM.cmake
index 5135893..485c586 100644
--- a/Modules/CPackRPM.cmake
+++ b/Modules/CPackRPM.cmake
@@ -51,6 +51,7 @@
 #  * Default   : CPACK_PACKAGE_VERSION
 #
 # .. variable:: CPACK_RPM_PACKAGE_ARCHITECTURE
+#               CPACK_RPM_<component>_PACKAGE_ARCHITECTURE
 #
 #  The RPM package architecture.
 #
@@ -629,6 +630,16 @@ else()
     message("CPackRPM:Debug: using user-specified build arch = ${CPACK_RPM_PACKAGE_ARCHITECTURE}")
   endif()
 endif()
+#prefer component architecture
+unset(CPACK_RPM_PACKAGE_ARCHITECTURE_)
+if(CPACK_RPM_PACKAGE_COMPONENT)
+  if(CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_ARCHITECTURE)
+    set(CPACK_RPM_PACKAGE_ARCHITECTURE_ ${CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_ARCHITECTURE})
+    if(CPACK_RPM_PACKAGE_DEBUG)
+      message("CPackRPM:Debug: using component build arch = ${CPACK_RPM_PACKAGE_ARCHITECTURE}")
+    endif()
+  endif()
+endif()
 if (NOT CPACK_RPM_PACKAGE_ARCHITECTURE_)
   set(CPACK_RPM_PACKAGE_ARCHITECTURE_ ${CPACK_RPM_PACKAGE_ARCHITECTURE})
 endif()
-- 
2.2.2



More information about the cmake-developers mailing list