Skip to content

Commit

Permalink
Allow install headers to different location
Browse files Browse the repository at this point in the history
Use standard `CMAKE_INSTALL_INCLUDEDIR` location to define headers
installation. This variable can be redefined on configuration phase to
allow install headers to different location (like `include/mbedtls3`).

Additionally removing explicit permission rules as they may broke proper
permissions for system installation (like remove executable bit from
libraries). By default CMake sets permissions correctly on all files and
directories.

See Mbed-TLS#8723 for rationale.

Signed-off-by: Azamat H. Hackimov <azamat.hackimov@gmail.com>
  • Loading branch information
winterheart committed Feb 7, 2024
1 parent 8bdd8cd commit 38a9e25
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 18 deletions.
12 changes: 6 additions & 6 deletions 3rdparty/everest/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,16 @@ if(MBEDTLS_USER_CONFIG_FILE)
endif()

if(INSTALL_MBEDTLS_HEADERS)

install(DIRECTORY include/everest
DESTINATION include
FILE_PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
FILES_MATCHING PATTERN "*.h")

endif(INSTALL_MBEDTLS_HEADERS)

install(TARGETS ${everest_target}
EXPORT MbedTLSTargets
DESTINATION ${CMAKE_INSTALL_LIBDIR}
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
16 changes: 8 additions & 8 deletions 3rdparty/p256-m/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,16 @@ if(MBEDTLS_USER_CONFIG_FILE)
endif()

if(INSTALL_MBEDTLS_HEADERS)

install(DIRECTORY :${CMAKE_CURRENT_SOURCE_DIR}
DESTINATION include
FILE_PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
FILES_MATCHING PATTERN "*.h")

endif(INSTALL_MBEDTLS_HEADERS)

install(TARGETS ${p256m_target}
EXPORT MbedTLSTargets
DESTINATION ${CMAKE_INSTALL_LIBDIR}
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
EXPORT MbedTLSTargets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
6 changes: 6 additions & 0 deletions ChangeLog.d/mbedtls-subslotting.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Changes
* Use standard `CMAKE_INSTALL_INCLUDEDIR` location to define headers
installation. This variable can be redefined on configuration phase to
allow install headers to different location (like `include/mbedtls3`,
#8723).

5 changes: 2 additions & 3 deletions include/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
option(INSTALL_MBEDTLS_HEADERS "Install Mbed TLS headers." ON)

if(INSTALL_MBEDTLS_HEADERS)

file(GLOB headers "mbedtls/*.h")
file(GLOB psa_headers "psa/*.h")

install(FILES ${headers}
DESTINATION include/mbedtls
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/mbedtls
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)

install(FILES ${psa_headers}
DESTINATION include/psa
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/psa
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)

endif(INSTALL_MBEDTLS_HEADERS)
Expand Down
3 changes: 2 additions & 1 deletion library/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,8 @@ foreach(target IN LISTS target_libraries)
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
endforeach(target)

set(lib_target "${MBEDTLS_TARGET_PREFIX}lib")
Expand Down

0 comments on commit 38a9e25

Please sign in to comment.