CMake: support macOS code signing during build

To build with code signing, the macOS build must have:
  -G Xcode \
  -D CLAMAV_SIGN_FILE=ON \
  -D CODE_SIGN_IDENTITY="...your codesign ID..." \
  -D DEVELOPMENT_TEAM_ID="...your team ID..." \

You can find the codesign ID using:
  /usr/bin/env xcrun security find-identity -v -p codesigning

The team ID should also be listed in the identity description.

Also I changed the package name for APPLE to be "clamav" so it doesn't
put "ClamAV <version>" in the PKG PackageInfo like this:
  com.cisco.ClamAV 0.104.0.libraries
Instead, it should just be something like:
  com.cisco.clamav.libraries

Version is a separate field in that file and shouldn't be in the name.
This commit is contained in:
Micah Snyder
2021-09-01 13:08:52 -07:00
committed by Micah Snyder
parent ea625441e1
commit 016af483e6
16 changed files with 122 additions and 11 deletions

View File

@@ -322,9 +322,10 @@ if (WIN32)
DESTINATION ".")
elseif(APPLE)
set(CPACK_GENERATOR productbuild)
set(CPACK_PACKAGE_NAME ClamAV)
set(CPACK_GENERATOR productbuild)
set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_FILE_NAME}.macos.universal)
set(CPACK_PACKAGE_VENDOR "cisco") # For Apple, creates short name com.cisco.clamav.xxx in pkgutil
set(CPACK_PACKAGE_VENDOR "cisco") # For Apple, creates short name com.cisco.clamav.xxx in pkgutil
# productbuild requires components or it won't add anything to the PKG
set(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "Libraries")

View File

@@ -17,6 +17,14 @@ target_include_directories( clamav-milter
PRIVATE ${CMAKE_BINARY_DIR} # For clamav-config.h
)
set_target_properties( clamav-milter PROPERTIES COMPILE_FLAGS "${WARNCFLAGS}" )
if (APPLE AND CLAMAV_SIGN_FILE)
set_target_properties( clamav-milter PROPERTIES
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY}
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID}
)
endif()
target_link_libraries( clamav-milter
PRIVATE
ClamAV::libclamav

View File

@@ -22,6 +22,14 @@ target_include_directories( clambc
PRIVATE ${CMAKE_BINARY_DIR} # For clamav-config.h
)
set_target_properties( clambc PROPERTIES COMPILE_FLAGS "${WARNCFLAGS}" )
if (APPLE AND CLAMAV_SIGN_FILE)
set_target_properties( clambc PROPERTIES
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY}
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID}
)
endif()
target_link_libraries( clambc
PRIVATE
ClamAV::libclamav

View File

@@ -22,6 +22,14 @@ target_include_directories( clamconf
PRIVATE ${CMAKE_BINARY_DIR} # For clamav-config.h
)
set_target_properties( clamconf PROPERTIES COMPILE_FLAGS "${WARNCFLAGS}" )
if (APPLE AND CLAMAV_SIGN_FILE)
set_target_properties( clamconf PROPERTIES
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY}
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID}
)
endif()
target_link_libraries( clamconf
PRIVATE
ClamAV::libclamav

View File

@@ -31,8 +31,8 @@ target_sources( clamd
thrmgr.c
thrmgr.h )
if(WIN32)
target_sources( clamd
PRIVATE
target_sources( clamd
PRIVATE
${CMAKE_SOURCE_DIR}/win32/res/clamd.rc
${CMAKE_SOURCE_DIR}/win32/res/clam.manifest )
endif()
@@ -40,6 +40,14 @@ target_include_directories( clamd
PRIVATE ${CMAKE_BINARY_DIR} # For clamav-config.h
)
set_target_properties( clamd PROPERTIES COMPILE_FLAGS "${WARNCFLAGS}" )
if (APPLE AND CLAMAV_SIGN_FILE)
set_target_properties( clamd PROPERTIES
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY}
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID}
)
endif()
target_link_libraries( clamd
PRIVATE
ClamAV::libclamav

View File

@@ -20,8 +20,8 @@ target_sources( clamdscan
proto.c
proto.h )
if(WIN32)
target_sources( clamdscan
PRIVATE
target_sources( clamdscan
PRIVATE
${CMAKE_SOURCE_DIR}/win32/res/clamdscan.rc
${CMAKE_SOURCE_DIR}/win32/res/clam.manifest )
endif()
@@ -29,6 +29,14 @@ target_include_directories( clamdscan
PRIVATE ${CMAKE_BINARY_DIR} # For clamav-config.h
)
set_target_properties( clamdscan PROPERTIES COMPILE_FLAGS "${WARNCFLAGS}" )
if (APPLE AND CLAMAV_SIGN_FILE)
set_target_properties( clamdscan PROPERTIES
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY}
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID}
)
endif()
target_link_libraries( clamdscan
PRIVATE
ClamAV::libclamav

View File

@@ -22,6 +22,14 @@ target_include_directories( clamdtop
PRIVATE ${CMAKE_BINARY_DIR} # For clamav-config.h
)
set_target_properties( clamdtop PROPERTIES COMPILE_FLAGS "${WARNCFLAGS}" )
if (APPLE AND CLAMAV_SIGN_FILE)
set_target_properties( clamdtop PROPERTIES
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY}
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID}
)
endif()
target_link_libraries( clamdtop
PRIVATE
ClamAV::libclamav

View File

@@ -44,6 +44,7 @@ target_include_directories( clamonacc
)
set_target_properties( clamonacc PROPERTIES COMPILE_FLAGS "${WARNCFLAGS}" )
target_link_libraries( clamonacc
PRIVATE
ClamAV::libclamav

View File

@@ -19,15 +19,23 @@ target_sources( clamscan
manager.h
global.h )
if(WIN32)
target_sources( clamscan
PRIVATE
${CMAKE_SOURCE_DIR}/win32/res/clamscan.rc
target_sources( clamscan
PRIVATE
${CMAKE_SOURCE_DIR}/win32/res/clamscan.rc
${CMAKE_SOURCE_DIR}/win32/res/clam.manifest )
endif()
target_include_directories( clamscan
PRIVATE ${CMAKE_BINARY_DIR} # For clamav-config.h
)
set_target_properties( clamscan PROPERTIES COMPILE_FLAGS "${WARNCFLAGS}" )
if (APPLE AND CLAMAV_SIGN_FILE)
set_target_properties( clamscan PROPERTIES
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY}
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID}
)
endif()
target_link_libraries( clamscan
PRIVATE
ClamAV::libclamav

View File

@@ -22,6 +22,14 @@ target_include_directories( clamsubmit
PRIVATE ${CMAKE_BINARY_DIR} # For clamav-config.h
)
set_target_properties( clamsubmit PROPERTIES COMPILE_FLAGS "${WARNCFLAGS}" )
if (APPLE AND CLAMAV_SIGN_FILE)
set_target_properties( clamscan PROPERTIES
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY}
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID}
)
endif()
target_link_libraries( clamsubmit
PRIVATE
ClamAV::libclamav

View File

@@ -20,12 +20,20 @@ target_sources( freshclam-bin
notify.c
notify.h )
if(WIN32)
target_sources( freshclam-bin
PRIVATE
target_sources( freshclam-bin
PRIVATE
${CMAKE_SOURCE_DIR}/win32/res/freshclam.rc
${CMAKE_SOURCE_DIR}/win32/res/clam.manifest )
endif()
set_target_properties( freshclam-bin PROPERTIES COMPILE_FLAGS "${WARNCFLAGS}" )
if (APPLE AND CLAMAV_SIGN_FILE)
set_target_properties( freshclam-bin PROPERTIES
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY}
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID}
)
endif()
target_link_libraries(freshclam-bin
PRIVATE
ClamAV::libfreshclam

View File

@@ -546,6 +546,14 @@ if(ENABLE_SHARED_LIB)
set_target_properties( clamav PROPERTIES
COMPILE_FLAGS "${WARNCFLAGS}"
VERSION ${LIBCLAMAV_VERSION} SOVERSION ${LIBCLAMAV_SOVERSION} )
if (APPLE AND CLAMAV_SIGN_FILE)
set_target_properties( clamav PROPERTIES
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY}
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID}
)
endif()
if(WIN32)
set_target_properties( clamav PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON )
else()

View File

@@ -72,6 +72,13 @@ if(ENABLE_SHARED_LIB)
${CMAKE_CURRENT_BINARY_DIR}
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/mspack )
if (APPLE AND CLAMAV_SIGN_FILE)
set_target_properties( clammspack PROPERTIES
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY}
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID}
)
endif()
if(WIN32)
install(TARGETS clammspack DESTINATION . COMPONENT libraries)
else()

View File

@@ -84,6 +84,13 @@ if(ENABLE_SHARED_LIB)
COMPILE_FLAGS "-Wno-logical-op-parentheses -Wno-switch -Wno-dangling-else")
endif()
if (APPLE AND CLAMAV_SIGN_FILE)
set_target_properties( clamunrar PROPERTIES
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY}
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID}
)
endif()
if(WIN32)
set_target_properties(clamunrar PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
endif()

View File

@@ -53,6 +53,13 @@ if(ENABLE_UNRAR)
set_target_properties( clamunrar_iface PROPERTIES
COMPILE_FLAGS "${WARNCXXFLAGS} ${CXX1XCXXFLAGS}" )
if (APPLE AND CLAMAV_SIGN_FILE)
set_target_properties( clamunrar_iface PROPERTIES
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY}
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID}
)
endif()
if(WIN32)
set_target_properties(clamunrar_iface PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
endif()

View File

@@ -26,6 +26,14 @@ target_include_directories( sigtool
)
set_target_properties( sigtool PROPERTIES COMPILE_FLAGS "${WARNCFLAGS}" )
if (APPLE AND CLAMAV_SIGN_FILE)
set_target_properties( sigtool PROPERTIES
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY}
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID}
)
endif()
target_link_libraries( sigtool
PRIVATE
ClamAV::libclamav