Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ENH: Update mangled third-party libraries to use MANGLE_PREFIX CMake variable #4102

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion Modules/ThirdParty/Expat/src/expat/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,11 @@ CONFIGURE_FILE(${ITK3P_EXPAT_SOURCE_DIR}/expatDllConfig.h.in

configure_file(expat_config.h.cmake "${ITK3P_EXPAT_BINARY_DIR}/expat_config.h")

set(MANGLE_PREFIX itk_expat)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this respect cache? If the calling code has set(MANGLE_PREFIX slicer_expat), will this line not override that?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are local variables not intended to allow customization.

Customization of mangling will be done in a follow-up pull request introducing code like:

set(MANGLE_PREFIX ${ITK_NAMESPACE}_expat)

or

set(MANGLE_PREFIX ${ITK_NAMESPACE})

based on the third-party library mangling requirements.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Purpose of these changes it to introduce a uniform mangling interface for all third-parties.

configure_file(itk_expat_mangle.h.in
"${ITK3P_EXPAT_BINARY_DIR}/itk_expat_mangle.h"
@ONLY)

ADD_LIBRARY(ITKEXPAT ${expat_SRCS})

# Apply user-defined properties to the library target.
Expand All @@ -197,6 +202,6 @@ INSTALL(FILES
${ITK3P_EXPAT_SOURCE_DIR}/expat.h
${ITK3P_EXPAT_BINARY_DIR}/expat_config.h
${ITK3P_EXPAT_SOURCE_DIR}/expat_external.h
${ITK3P_EXPAT_SOURCE_DIR}/itk_expat_mangle.h
${ITK3P_EXPAT_BINARY_DIR}/itk_expat_mangle.h
DESTINATION ${ITK3P_INSTALL_INCLUDE_DIR} # TODO: itk_expat.h #include "itkexpat/expat.h"
COMPONENT Development)
122 changes: 0 additions & 122 deletions Modules/ThirdParty/Expat/src/expat/itk_expat_mangle.h

This file was deleted.

122 changes: 122 additions & 0 deletions Modules/ThirdParty/Expat/src/expat/itk_expat_mangle.h.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
/*=========================================================================
*
* Copyright NumFOCUS
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*=========================================================================*/
#ifndef itk_expat_mangle_h
#define itk_expat_mangle_h

/*

This header file mangles all symbols exported from the expat library.
It is included in all files while building the expat library. Due to
namespace pollution, no expat headers should be included in .h files in
ITK.

The following command was used to obtain the symbol list:

nm libITKEXPAT-5.3.a | grep " [TRD] " | awk '{ print $3 }' | sort -df | awk '{ print "#define "$1" @MANGLE_PREFIX@_ "$1 }'

*/

#define _INTERNAL_trim_to_complete_utf8_characters @MANGLE_PREFIX@__INTERNAL_trim_to_complete_utf8_characters
#define testingAccountingGetCountBytesDirect @MANGLE_PREFIX@_testingAccountingGetCountBytesDirect
#define testingAccountingGetCountBytesIndirect @MANGLE_PREFIX@_testingAccountingGetCountBytesIndirect
#define unsignedCharToPrintable @MANGLE_PREFIX@_unsignedCharToPrintable
#define XML_DefaultCurrent @MANGLE_PREFIX@_XML_DefaultCurrent
#define XML_ErrorString @MANGLE_PREFIX@_XML_ErrorString
#define XML_ExpatVersion @MANGLE_PREFIX@_XML_ExpatVersion
#define XML_ExpatVersionInfo @MANGLE_PREFIX@_XML_ExpatVersionInfo
#define XML_ExternalEntityParserCreate @MANGLE_PREFIX@_XML_ExternalEntityParserCreate
#define XML_FreeContentModel @MANGLE_PREFIX@_XML_FreeContentModel
#define XML_GetBase @MANGLE_PREFIX@_XML_GetBase
#define XML_GetBuffer @MANGLE_PREFIX@_XML_GetBuffer
#define XML_GetCurrentByteCount @MANGLE_PREFIX@_XML_GetCurrentByteCount
#define XML_GetCurrentByteIndex @MANGLE_PREFIX@_XML_GetCurrentByteIndex
#define XML_GetCurrentColumnNumber @MANGLE_PREFIX@_XML_GetCurrentColumnNumber
#define XML_GetCurrentLineNumber @MANGLE_PREFIX@_XML_GetCurrentLineNumber
#define XML_GetErrorCode @MANGLE_PREFIX@_XML_GetErrorCode
#define XML_GetFeatureList @MANGLE_PREFIX@_XML_GetFeatureList
#define XML_GetIdAttributeIndex @MANGLE_PREFIX@_XML_GetIdAttributeIndex
#define XML_GetInputContext @MANGLE_PREFIX@_XML_GetInputContext
#define XML_GetParsingStatus @MANGLE_PREFIX@_XML_GetParsingStatus
#define XML_GetSpecifiedAttributeCount @MANGLE_PREFIX@_XML_GetSpecifiedAttributeCount
#define XmlGetUtf16InternalEncoding @MANGLE_PREFIX@_XmlGetUtf16InternalEncoding
#define XmlGetUtf16InternalEncodingNS @MANGLE_PREFIX@_XmlGetUtf16InternalEncodingNS
#define XmlGetUtf8InternalEncoding @MANGLE_PREFIX@_XmlGetUtf8InternalEncoding
#define XmlGetUtf8InternalEncodingNS @MANGLE_PREFIX@_XmlGetUtf8InternalEncodingNS
#define XmlInitEncoding @MANGLE_PREFIX@_XmlInitEncoding
#define XmlInitEncodingNS @MANGLE_PREFIX@_XmlInitEncodingNS
#define XmlInitUnknownEncoding @MANGLE_PREFIX@_XmlInitUnknownEncoding
#define XmlInitUnknownEncodingNS @MANGLE_PREFIX@_XmlInitUnknownEncodingNS
#define XML_MemFree @MANGLE_PREFIX@_XML_MemFree
#define XML_MemMalloc @MANGLE_PREFIX@_XML_MemMalloc
#define XML_MemRealloc @MANGLE_PREFIX@_XML_MemRealloc
#define XML_Parse @MANGLE_PREFIX@_XML_Parse
#define XML_ParseBuffer @MANGLE_PREFIX@_XML_ParseBuffer
#define XML_ParserCreate @MANGLE_PREFIX@_XML_ParserCreate
#define XML_ParserCreate_MM @MANGLE_PREFIX@_XML_ParserCreate_MM
#define XML_ParserCreateNS @MANGLE_PREFIX@_XML_ParserCreateNS
#define XML_ParserFree @MANGLE_PREFIX@_XML_ParserFree
#define XML_ParserReset @MANGLE_PREFIX@_XML_ParserReset
#define XmlParseXmlDecl @MANGLE_PREFIX@_XmlParseXmlDecl
#define XmlParseXmlDeclNS @MANGLE_PREFIX@_XmlParseXmlDeclNS
#define XmlPrologStateInit @MANGLE_PREFIX@_XmlPrologStateInit
#define XmlPrologStateInitExternalEntity @MANGLE_PREFIX@_XmlPrologStateInitExternalEntity
#define XML_ResumeParser @MANGLE_PREFIX@_XML_ResumeParser
#define XML_SetAttlistDeclHandler @MANGLE_PREFIX@_XML_SetAttlistDeclHandler
#define XML_SetBase @MANGLE_PREFIX@_XML_SetBase
#define XML_SetBillionLaughsAttackProtectionActivationThreshold @MANGLE_PREFIX@_XML_SetBillionLaughsAttackProtectionActivationThreshold
#define XML_SetBillionLaughsAttackProtectionMaximumAmplification @MANGLE_PREFIX@_XML_SetBillionLaughsAttackProtectionMaximumAmplification
#define XML_SetCdataSectionHandler @MANGLE_PREFIX@_XML_SetCdataSectionHandler
#define XML_SetCharacterDataHandler @MANGLE_PREFIX@_XML_SetCharacterDataHandler
#define XML_SetCommentHandler @MANGLE_PREFIX@_XML_SetCommentHandler
#define XML_SetDefaultHandler @MANGLE_PREFIX@_XML_SetDefaultHandler
#define XML_SetDefaultHandlerExpand @MANGLE_PREFIX@_XML_SetDefaultHandlerExpand
#define XML_SetDoctypeDeclHandler @MANGLE_PREFIX@_XML_SetDoctypeDeclHandler
#define XML_SetElementDeclHandler @MANGLE_PREFIX@_XML_SetElementDeclHandler
#define XML_SetElementHandler @MANGLE_PREFIX@_XML_SetElementHandler
#define XML_SetEncoding @MANGLE_PREFIX@_XML_SetEncoding
#define XML_SetEndCdataSectionHandler @MANGLE_PREFIX@_XML_SetEndCdataSectionHandler
#define XML_SetEndDoctypeDeclHandler @MANGLE_PREFIX@_XML_SetEndDoctypeDeclHandler
#define XML_SetEndElementHandler @MANGLE_PREFIX@_XML_SetEndElementHandler
#define XML_SetEndNamespaceDeclHandler @MANGLE_PREFIX@_XML_SetEndNamespaceDeclHandler
#define XML_SetEntityDeclHandler @MANGLE_PREFIX@_XML_SetEntityDeclHandler
#define XML_SetExternalEntityRefHandler @MANGLE_PREFIX@_XML_SetExternalEntityRefHandler
#define XML_SetExternalEntityRefHandlerArg @MANGLE_PREFIX@_XML_SetExternalEntityRefHandlerArg
#define XML_SetHashSalt @MANGLE_PREFIX@_XML_SetHashSalt
#define XML_SetNamespaceDeclHandler @MANGLE_PREFIX@_XML_SetNamespaceDeclHandler
#define XML_SetNotationDeclHandler @MANGLE_PREFIX@_XML_SetNotationDeclHandler
#define XML_SetNotStandaloneHandler @MANGLE_PREFIX@_XML_SetNotStandaloneHandler
#define XML_SetParamEntityParsing @MANGLE_PREFIX@_XML_SetParamEntityParsing
#define XML_SetProcessingInstructionHandler @MANGLE_PREFIX@_XML_SetProcessingInstructionHandler
#define XML_SetReturnNSTriplet @MANGLE_PREFIX@_XML_SetReturnNSTriplet
#define XML_SetSkippedEntityHandler @MANGLE_PREFIX@_XML_SetSkippedEntityHandler
#define XML_SetStartCdataSectionHandler @MANGLE_PREFIX@_XML_SetStartCdataSectionHandler
#define XML_SetStartDoctypeDeclHandler @MANGLE_PREFIX@_XML_SetStartDoctypeDeclHandler
#define XML_SetStartElementHandler @MANGLE_PREFIX@_XML_SetStartElementHandler
#define XML_SetStartNamespaceDeclHandler @MANGLE_PREFIX@_XML_SetStartNamespaceDeclHandler
#define XML_SetUnknownEncodingHandler @MANGLE_PREFIX@_XML_SetUnknownEncodingHandler
#define XML_SetUnparsedEntityDeclHandler @MANGLE_PREFIX@_XML_SetUnparsedEntityDeclHandler
#define XML_SetUserData @MANGLE_PREFIX@_XML_SetUserData
#define XML_SetXmlDeclHandler @MANGLE_PREFIX@_XML_SetXmlDeclHandler
#define XmlSizeOfUnknownEncoding @MANGLE_PREFIX@_XmlSizeOfUnknownEncoding
#define XML_StopParser @MANGLE_PREFIX@_XML_StopParser
#define XML_UseForeignDTD @MANGLE_PREFIX@_XML_UseForeignDTD
#define XML_UseParserAsHandlerArg @MANGLE_PREFIX@_XML_UseParserAsHandlerArg
#define XmlUtf16Encode @MANGLE_PREFIX@_XmlUtf16Encode
#define XmlUtf8Encode @MANGLE_PREFIX@_XmlUtf8Encode

#endif /* itk_expat_mangle_h */
10 changes: 8 additions & 2 deletions Modules/ThirdParty/HDF5/src/itkhdf5/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,12 @@ cmake_minimum_required (VERSION 3.12)
# ITK --stop ]]
project (HDF5_SRC C)

# ITK --start
set(MANGLE_PREFIX itk)
configure_file(${HDF5_SRC_DIR}/itk_hdf5_mangle.h.in
${HDF5_SRC_BINARY_DIR}/itk_hdf5_mangle.h
@ONLY)
# ITK --stop
#-----------------------------------------------------------------------------
# List Source Files
#-----------------------------------------------------------------------------
Expand All @@ -23,7 +29,7 @@ set (H5_HDRS
#${HDF5_SRC_DIR}/H5version.h
#${HDF5_SRC_DIR}/H5overflow.h
# ITK --start
${HDF5_SRC_DIR}/itk_hdf5_mangle.h
${HDF5_SRC_BINARY_DIR}/itk_hdf5_mangle.h
# ITK --stop
)
IDE_GENERATED_PROPERTIES ("H5" "${H5_HDRS}" "${H5_SOURCES}" )
Expand Down Expand Up @@ -835,7 +841,7 @@ set (H5_PUBLIC_HEADERS
${H5VL_HDRS}
${H5Z_HDRS}
# ITK --start
${HDF5_SRC_DIR}/itk_hdf5_mangle.h
${HDF5_SRC_BINARY_DIR}/itk_hdf5_mangle.h
# ITK --stop
)

Expand Down
4 changes: 2 additions & 2 deletions Modules/ThirdParty/HDF5/src/itkhdf5/src/H5make_libsettings.c
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ insert_libhdf5_settings(FILE *flibinfo)
/* print variable definition and the string */
/* Do not use const else AIX strings does not show it. */
/* ITK --start */
fprintf(flibinfo, "char itk_H5libhdf5_settings[]=\n");
fprintf(flibinfo, "char " H5_TOSTRING(H5libhdf5_settings) "[]=\n");
/* ITK --stop */
bol++;
while (EOF != (inchar = HDgetc(fsettings))) {
Expand Down Expand Up @@ -108,7 +108,7 @@ insert_libhdf5_settings(FILE *flibinfo)
/* print variable definition and an empty string */
/* Do not use const else AIX strings does not show it. */
/* ITK --start */
fprintf(flibinfo, "char itk_H5libhdf5_settings[]=\"\";\n");
fprintf(flibinfo, "char " H5_TOSTRING(H5libhdf5_settings) "[]=\"\";\n");
/* ITK --stop */
#endif
} /* insert_libhdf5_settings() */
Expand Down
Loading