cmake_minimum_required(VERSION 3.20)
cmake_policy(SET CMP0091 NEW)

project (resip_parser)

set (RUTIL ../rutil)
set (STACK ../resip/stack)

set (SOURCES    ${RUTIL}/Data.hxx
                ${RUTIL}/Data.cxx
                ${RUTIL}/DataStream.hxx
                ${RUTIL}/DataStream.cxx
                ${RUTIL}/ParseBuffer.hxx
                ${RUTIL}/ParseBuffer.cxx
                ${RUTIL}/ParseException.hxx
                ${RUTIL}/ParseException.cxx
                ${RUTIL}/MD5Stream.hxx
                ${RUTIL}/MD5Stream.cxx
                ${RUTIL}/BaseException.hxx
                ${RUTIL}/BaseException.cxx
                ${RUTIL}/vmd5.hxx
                ${RUTIL}/vmd5.cxx
                ${RUTIL}/Log.hxx
                ${RUTIL}/Log.cxx
                ${RUTIL}/Subsystem.hxx
                ${RUTIL}/Subsystem.cxx
                ${RUTIL}/ThreadIf.hxx
                ${RUTIL}/ThreadIf.cxx
                #${RUTIL}/Mutex.hxx
                #${RUTIL}/Mutex.cxx
                #${RUTIL}/Lock.hxx
                #${RUTIL}/Lock.cxx
                ${RUTIL}/SysLogStream.hxx
                ${RUTIL}/SysLogStream.cxx
                #${RUTIL}/Condition.hxx
                #${RUTIL}/Condition.cxx
                ${RUTIL}/SysLogBuf.hxx
                ${RUTIL}/SysLogBuf.cxx
                ${RUTIL}/Time.hxx
                ${RUTIL}/Time.cxx
                ${RUTIL}/Random.hxx
                ${RUTIL}/Random.cxx
                ${RUTIL}/DnsUtil.hxx
                ${RUTIL}/DnsUtil.cxx
                ${RUTIL}/PoolBase.hxx
                ${RUTIL}/PoolBase.cxx
                ${RUTIL}/TransportType.hxx
                ${RUTIL}/TransportType.cxx
                ${RUTIL}/Socket.hxx
                ${RUTIL}/Socket.cxx
                ${RUTIL}/ConfigParse.hxx
                ${RUTIL}/ConfigParse.cxx

                ${STACK}/InteropHelper.hxx
                ${STACK}/InteropHelper.cxx
                ${STACK}/TokenOrQuotedStringCategory.cxx
                ${STACK}/TokenOrQuotedStringCategory.hxx
                ${STACK}/TrickleIceContents.hxx
                ${STACK}/TrickleIceContents.cxx
                ${STACK}/ParserCategory.hxx
                ${STACK}/ParserCategory.cxx
                ${STACK}/Uri.hxx
                ${STACK}/Uri.cxx
                ${STACK}/GenericUri.hxx
                ${STACK}/GenericUri.cxx
                ${STACK}/NameAddr.hxx
                ${STACK}/NameAddr.cxx
                ${STACK}/SipMessage.hxx
                ${STACK}/SipMessage.cxx
                ${STACK}/Contents.hxx
                ${STACK}/Contents.cxx
                ${STACK}/SdpContents.hxx
                ${STACK}/SdpContents.cxx
                ${STACK}/Headers.hxx
                ${STACK}/Headers.cxx
                ${STACK}/HeaderTypes.hxx
                ${STACK}/HeaderTypes.cxx
                ${STACK}/CallId.hxx
                ${STACK}/CallId.cxx
                ${STACK}/LazyParser.hxx
                ${STACK}/LazyParser.cxx
                ${STACK}/Symbols.hxx
                ${STACK}/Symbols.cxx
                ${STACK}/HeaderFieldValue.hxx
                ${STACK}/HeaderFieldValue.cxx
                ${STACK}/ParameterTypes.hxx
                ${STACK}/ParameterTypes.cxx
                ${STACK}/Parameter.hxx
                ${STACK}/Parameter.cxx
                ${STACK}/UInt32Parameter.hxx
                ${STACK}/UInt32Parameter.cxx
                ${STACK}/UnknownParameter.hxx
                ${STACK}/UnknownParameter.cxx
                ${STACK}/DataParameter.hxx
                ${STACK}/DataParameter.cxx
                ${STACK}/ExistsParameter.hxx
                ${STACK}/ExistsParameter.cxx
                ${STACK}/QuotedDataParameter.hxx
                ${STACK}/QuotedDataParameter.cxx
                ${STACK}/Tuple.hxx
                ${STACK}/Tuple.cxx
                ${STACK}/Token.hxx
                ${STACK}/Token.cxx
                ${STACK}/ExistsOrDataParameter.hxx
                ${STACK}/ExistsOrDataParameter.cxx
                ${STACK}/Embedded.hxx
                ${STACK}/Embedded.cxx
                ${STACK}/QValueParameter.hxx
                ${STACK}/QValueParameter.cxx
                ${STACK}/SecurityAttributes.hxx
                ${STACK}/SecurityAttributes.cxx
                ${STACK}/MsgHeaderScanner.hxx
                ${STACK}/MsgHeaderScanner.cxx
                ${STACK}/RequestLine.hxx
                ${STACK}/RequestLine.cxx
                ${STACK}/Via.hxx
                ${STACK}/Via.cxx
                ${STACK}/CSeqCategory.hxx
                ${STACK}/CSeqCategory.cxx
                ${STACK}/BranchParameter.hxx
                ${STACK}/BranchParameter.cxx
                ${STACK}/StatusLine.hxx
                ${STACK}/StatusLine.cxx
                ${STACK}/Mime.hxx
                ${STACK}/Mime.cxx
                ${STACK}/MethodTypes.hxx
                ${STACK}/MethodTypes.cxx
                ${STACK}/ContentsFactory.hxx
                #${STACK}/ContentsFactory.cxx
                ${STACK}/ExtensionHeader.hxx
                ${STACK}/ExtensionHeader.cxx
                ${STACK}/ParserContainer.hxx
                #${STACK}/ParserContainer.cxx
                ${STACK}/StringCategory.hxx
                ${STACK}/StringCategory.cxx
                ${STACK}/UInt32Category.hxx
                ${STACK}/UInt32Category.cxx
                ${STACK}/DateCategory.hxx
                ${STACK}/DateCategory.cxx
                ${STACK}/PrivacyCategory.hxx
                ${STACK}/PrivacyCategory.cxx
                ${STACK}/RAckCategory.hxx
                ${STACK}/RAckCategory.cxx
                ${STACK}/ExpiresCategory.hxx
                ${STACK}/ExpiresCategory.cxx
                ${STACK}/WarningCategory.hxx
                ${STACK}/WarningCategory.cxx
                ${STACK}/RportParameter.hxx
                ${STACK}/RportParameter.cxx
                ${STACK}/HeaderFieldValueList.hxx
                ${STACK}/HeaderFieldValueList.cxx
                ${STACK}/OctetContents.hxx
                ${STACK}/OctetContents.cxx
                ${STACK}/Message.hxx
                ${STACK}/Message.cxx
                ${STACK}/ParserContainerBase.hxx
                ${STACK}/ParserContainerBase.cxx
                ${STACK}/ContentsFactoryBase.hxx
                ${STACK}/ContentsFactoryBase.cxx
                ${STACK}/Auth.hxx
                ${STACK}/Auth.cxx
                ${STACK}/Helper.hxx
                ${STACK}/Helper.cxx
                ${STACK}/QValue.hxx
                ${STACK}/QValue.cxx
                ${STACK}/QValueParameter.hxx
                ${STACK}/QValueParameter.cxx
                ${STACK}/HeaderHash.hxx
                ${STACK}/gen/HeaderHash.cxx
                ${STACK}/Transport.hxx
                ${STACK}/Transport.cxx
                ${STACK}/ParameterHash.hxx
                ${STACK}/gen/ParameterHash.cxx
                ${STACK}/MethodHash.hxx
                ${STACK}/gen/MethodHash.cxx
                # ${STACK}/DayOfWeekHash.hxx
                ${STACK}/gen/DayOfWeekHash.cxx
                # ${STACK}/MonthHash.hxx
                ${STACK}/gen/MonthHash.cxx
                ${STACK}/NonceHelper.hxx
                ${STACK}/NonceHelper.cxx
                ${STACK}/MultipartMixedContents.hxx
                ${STACK}/MultipartMixedContents.cxx
                ${STACK}/MultipartSignedContents.hxx
                ${STACK}/MultipartSignedContents.cxx
                ${STACK}/MultipartAlternativeContents.hxx
                ${STACK}/MultipartAlternativeContents.cxx
                ${STACK}/Pkcs7Contents.hxx
                ${STACK}/Pkcs7Contents.cxx
                ${STACK}/BasicNonceHelper.hxx
                ${STACK}/BasicNonceHelper.cxx
                ${STACK}/ExtensionParameter.hxx
                ${STACK}/ExtensionParameter.cxx
                ${STACK}/TransportFailure.hxx
                ${STACK}/TransportFailure.cxx
                ${STACK}/TcpConnectState.hxx
                ${STACK}/TcpConnectState.cxx
                )

if (TARGET_WIN)
    set (SOURCES ${SOURCES} ${RUTIL}/WinCompat.hxx
                            ${RUTIL}/WinCompat.cxx)
endif()

add_library(resip_parser STATIC ${SOURCES})
target_include_directories(resip_parser PUBLIC ..)
set_property(TARGET resip_parser PROPERTY
             MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
