diff options
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/CPackRPM.cmake | 103 | ||||
-rw-r--r-- | Modules/Compiler/GHS-C.cmake | 4 | ||||
-rw-r--r-- | Modules/Compiler/GHS-CXX.cmake | 4 | ||||
-rw-r--r-- | Modules/Compiler/GHS.cmake | 8 | ||||
-rw-r--r-- | Modules/FindXCTest.cmake | 4 |
5 files changed, 118 insertions, 5 deletions
diff --git a/Modules/CPackRPM.cmake b/Modules/CPackRPM.cmake index 7ffec13..ae51dc1 100644 --- a/Modules/CPackRPM.cmake +++ b/Modules/CPackRPM.cmake @@ -531,6 +531,54 @@ # - /usr/share/doc/.*/man/man.* # - /usr/lib/.*/man/man.* # +# .. variable:: CPACK_RPM_DEFAULT_USER +# CPACK_RPM_<compName>_DEFAULT_USER +# +# default user ownership of RPM content +# +# * Mandatory : NO +# * Default : root +# +# Value should be user name and not UID. +# Note that <compName> must be in upper-case. +# +# .. variable:: CPACK_RPM_DEFAULT_GROUP +# CPACK_RPM_<compName>_DEFAULT_GROUP +# +# default group ownership of RPM content +# +# * Mandatory : NO +# * Default : root +# +# Value should be group name and not GID. +# Note that <compName> must be in upper-case. +# +# .. variable:: CPACK_RPM_DEFAULT_FILE_PERMISSIONS +# CPACK_RPM_<compName>_DEFAULT_FILE_PERMISSIONS +# +# default permissions used for packaged files +# +# * Mandatory : NO +# * Default : - (system default) +# +# Accepted values are lists with PERMISSIONS. Valid permissions +# are OWNER_READ, OWNER_WRITE, OWNER_EXECUTE, GROUP_READ, +# GROUP_WRITE, GROUP_EXECUTE, WORLD_READ, WORLD_WRITE and WORLD_EXECUTE. +# Note that <compName> must be in upper-case. +# +# .. variable:: CPACK_RPM_DEFAULT_DIR_PERMISSIONS +# CPACK_RPM_<compName>_DEFAULT_DIR_PERMISSIONS +# +# default permissions used for packaged directories +# +# * Mandatory : NO +# * Default : - (system default) +# +# Accepted values are lists with PERMISSIONS. Valid permissions +# are OWNER_READ, OWNER_WRITE, OWNER_EXECUTE, GROUP_READ, +# GROUP_WRITE, GROUP_EXECUTE, WORLD_READ, WORLD_WRITE and WORLD_EXECUTE. +# Note that <compName> must be in upper-case. +# # Packaging of Symbolic Links # ^^^^^^^^^^^^^^^^^^^^^^^^^^^ # @@ -581,6 +629,35 @@ # Author: Eric Noulard with the help of Alexander Neundorf. +function(get_unix_permissions_octal_notation PERMISSIONS_VAR RETURN_VAR) + set(PERMISSIONS ${${PERMISSIONS_VAR}}) + list(LENGTH PERMISSIONS PERM_LEN_PRE) + list(REMOVE_DUPLICATES PERMISSIONS) + list(LENGTH PERMISSIONS PERM_LEN_POST) + + if(NOT ${PERM_LEN_PRE} EQUAL ${PERM_LEN_POST}) + message(FATAL_ERROR "${PERMISSIONS_VAR} contains duplicate values.") + endif() + + foreach(PERMISSION_TYPE "OWNER" "GROUP" "WORLD") + set(${PERMISSION_TYPE}_PERMISSIONS 0) + + foreach(PERMISSION ${PERMISSIONS}) + if("${PERMISSION}" STREQUAL "${PERMISSION_TYPE}_READ") + math(EXPR ${PERMISSION_TYPE}_PERMISSIONS "${${PERMISSION_TYPE}_PERMISSIONS} + 4") + elseif("${PERMISSION}" STREQUAL "${PERMISSION_TYPE}_WRITE") + math(EXPR ${PERMISSION_TYPE}_PERMISSIONS "${${PERMISSION_TYPE}_PERMISSIONS} + 2") + elseif("${PERMISSION}" STREQUAL "${PERMISSION_TYPE}_EXECUTE") + math(EXPR ${PERMISSION_TYPE}_PERMISSIONS "${${PERMISSION_TYPE}_PERMISSIONS} + 1") + elseif(PERMISSION MATCHES "${PERMISSION_TYPE}.*") + message(FATAL_ERROR "${PERMISSIONS_VAR} contains invalid values.") + endif() + endforeach() + endforeach() + + set(${RETURN_VAR} "${OWNER_PERMISSIONS}${GROUP_PERMISSIONS}${WORLD_PERMISSIONS}" PARENT_SCOPE) +endfunction() + function(cpack_rpm_prepare_relocation_paths) # set appropriate prefix, remove possible trailing slash and convert backslashes to slashes if(CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT}_PACKAGE_PREFIX) @@ -1572,6 +1649,30 @@ function(cpack_rpm_generate_package) "${CPACK_RPM_PACKAGE_RELOCATABLE}" ) + # set default user and group + foreach(_PERM_TYPE "USER" "GROUP") + if(CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DEFAULT_${_PERM_TYPE}) + set(TMP_DEFAULT_${_PERM_TYPE} "${CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DEFAULT_${_PERM_TYPE}}") + elseif(CPACK_RPM_DEFAULT_${_PERM_TYPE}) + set(TMP_DEFAULT_${_PERM_TYPE} "${CPACK_RPM_DEFAULT_${_PERM_TYPE}}") + else() + set(TMP_DEFAULT_${_PERM_TYPE} "root") + endif() + endforeach() + + # set default file and dir permissions + foreach(_PERM_TYPE "FILE" "DIR") + if(CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DEFAULT_${_PERM_TYPE}_PERMISSIONS) + get_unix_permissions_octal_notation("CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DEFAULT_${_PERM_TYPE}_PERMISSIONS" "TMP_DEFAULT_${_PERM_TYPE}_PERMISSIONS") + set(_PERMISSIONS_VAR "CPACK_RPM_${CPACK_RPM_PACKAGE_COMPONENT_UPPER}_DEFAULT_${_PERM_TYPE}_PERMISSIONS") + elseif(CPACK_RPM_DEFAULT_${_PERM_TYPE}_PERMISSIONS) + get_unix_permissions_octal_notation("CPACK_RPM_DEFAULT_${_PERM_TYPE}_PERMISSIONS" "TMP_DEFAULT_${_PERM_TYPE}_PERMISSIONS") + set(_PERMISSIONS_VAR "CPACK_RPM_DEFAULT_${_PERM_TYPE}_PERMISSIONS") + else() + set(TMP_DEFAULT_${_PERM_TYPE}_PERMISSIONS "-") + endif() + endforeach() + # The name of the final spec file to be used by rpmbuild set(CPACK_RPM_BINARY_SPECFILE "${CPACK_RPM_ROOTDIR}/SPECS/${CPACK_RPM_PACKAGE_NAME}.spec") @@ -1671,7 +1772,7 @@ mv \"\@CPACK_TOPLEVEL_DIRECTORY\@/tmpBBroot\" $RPM_BUILD_ROOT \@CPACK_RPM_SPEC_PREUNINSTALL\@ %files -%defattr(-,root,root,-) +%defattr(\@TMP_DEFAULT_FILE_PERMISSIONS\@,\@TMP_DEFAULT_USER\@,\@TMP_DEFAULT_GROUP\@,\@TMP_DEFAULT_DIR_PERMISSIONS\@) \@CPACK_RPM_INSTALL_FILES\@ \@CPACK_RPM_ABSOLUTE_INSTALL_FILES\@ \@CPACK_RPM_USER_INSTALL_FILES\@ diff --git a/Modules/Compiler/GHS-C.cmake b/Modules/Compiler/GHS-C.cmake index a58d9b0..50532ce 100644 --- a/Modules/Compiler/GHS-C.cmake +++ b/Modules/Compiler/GHS-C.cmake @@ -1,3 +1,5 @@ +include(Compiler/GHS) + set(CMAKE_C_VERBOSE_FLAG "-v") set(CMAKE_C_FLAGS_INIT "") @@ -12,8 +14,6 @@ set(CMAKE_C_GHS_KERNEL_FLAGS_RELEASE_INIT "${CMAKE_C_FLAGS_RELEASE_INIT}") set(CMAKE_C_GHS_KERNEL_FLAGS_RELWITHDEBINFO_INIT "-ldebug ${CMAKE_C_FLAGS_RELWITHDEBINFO_INIT}") -set(CMAKE_EXECUTABLE_SUFFIX ".as") - if(NOT CMAKE_NOT_USING_CONFIG_FLAGS) set (CMAKE_C_GHS_KERNEL_FLAGS_DEBUG "${CMAKE_C_GHS_KERNEL_FLAGS_DEBUG_INIT}" CACHE STRING "Kernel flags used by the compiler during debug builds.") diff --git a/Modules/Compiler/GHS-CXX.cmake b/Modules/Compiler/GHS-CXX.cmake index 9e202d3..2cffa0d 100644 --- a/Modules/Compiler/GHS-CXX.cmake +++ b/Modules/Compiler/GHS-CXX.cmake @@ -1,3 +1,5 @@ +include(Compiler/GHS) + set(CMAKE_CXX_VERBOSE_FLAG "-v") set(CMAKE_CXX_FLAGS_INIT "") @@ -15,8 +17,6 @@ set(CMAKE_CXX_GHS_KERNEL_FLAGS_RELEASE_INIT set(CMAKE_CXX_GHS_KERNEL_FLAGS_RELWITHDEBINFO_INIT "-ldebug ${CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT}") -set(CMAKE_EXECUTABLE_SUFFIX ".as") - if(NOT CMAKE_NOT_USING_CONFIG_FLAGS) set (CMAKE_CXX_GHS_KERNEL_FLAGS_DEBUG "${CMAKE_CXX_GHS_KERNEL_FLAGS_DEBUG_INIT}" diff --git a/Modules/Compiler/GHS.cmake b/Modules/Compiler/GHS.cmake new file mode 100644 index 0000000..e6a867d --- /dev/null +++ b/Modules/Compiler/GHS.cmake @@ -0,0 +1,8 @@ +if(__COMPILER_GHS) + return() +endif() +set(__COMPILER_GHS 1) + +set(CMAKE_EXECUTABLE_SUFFIX ".as") +set(CMAKE_LIBRARY_PATH_TERMINATOR "\n") +set(CMAKE_LIBRARY_PATH_FLAG " -L") diff --git a/Modules/FindXCTest.cmake b/Modules/FindXCTest.cmake index 3cd9c22..805a58c 100644 --- a/Modules/FindXCTest.cmake +++ b/Modules/FindXCTest.cmake @@ -140,6 +140,10 @@ function(xctest_add_bundle target testee) set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_BUNDLE_LOADER "$(TEST_HOST)" XCODE_ATTRIBUTE_TEST_HOST "$<TARGET_FILE:${testee}>") + if(NOT XCODE_VERSION VERSION_LESS 7.3) + set_target_properties(${target} PROPERTIES + LIBRARY_OUTPUT_DIRECTORY "$<TARGET_FILE_DIR:${testee}>/../PlugIns") + endif() else(XCODE) target_link_libraries(${target} PRIVATE -bundle_loader $<TARGET_FILE:${testee}>) |