# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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
#
# 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.
#
lib_LTLIBRARIES = liblog4cxx.la

AM_CPPFLAGS = -I$(top_srcdir)/src/main/include -I$(top_builddir)/src/main/include

liblog4cxx_la_SOURCES = \
        action.cpp \
        andfilter.cpp \
        appenderattachableimpl.cpp \
        appenderskeleton.cpp \
        aprinitializer.cpp \
        basicconfigurator.cpp \
        bufferedwriter.cpp \
        bytearrayinputstream.cpp \
        bytearrayoutputstream.cpp \
        bytebuffer.cpp \
        cacheddateformat.cpp \
        charsetdecoder.cpp \
        charsetencoder.cpp \
        class.cpp \
        classnamepatternconverter.cpp \
        classregistration.cpp \
        condition.cpp \
        configurator.cpp \
        consoleappender.cpp \
        cyclicbuffer.cpp \
        dailyrollingfileappender.cpp \
        datagrampacket.cpp \
        datagramsocket.cpp \
        date.cpp \
        dateformat.cpp \
        datelayout.cpp \
        datepatternconverter.cpp \
        defaultloggerfactory.cpp \
        defaultconfigurator.cpp \
        defaultrepositoryselector.cpp \
        domconfigurator.cpp \
        exception.cpp \
        fallbackerrorhandler.cpp \
        file.cpp \
        fileappender.cpp \
        filedatepatternconverter.cpp \
        fileinputstream.cpp \
        filelocationpatternconverter.cpp \
        fileoutputstream.cpp \
        filerenameaction.cpp \
        filewatchdog.cpp \
        filter.cpp \
        filterbasedtriggeringpolicy.cpp \
        fixedwindowrollingpolicy.cpp \
        formattinginfo.cpp \
        fulllocationpatternconverter.cpp \
        gzcompressaction.cpp \
        hierarchy.cpp \
        htmllayout.cpp \
        inetaddress.cpp \
        inputstream.cpp \
        inputstreamreader.cpp \
        integer.cpp \
        integerpatternconverter.cpp \
        layout.cpp\
        level.cpp \
        levelmatchfilter.cpp \
        levelrangefilter.cpp \
        levelpatternconverter.cpp \
        linelocationpatternconverter.cpp \
        lineseparatorpatternconverter.cpp \
        literalpatternconverter.cpp \
        loggermatchfilter.cpp \
        loggerpatternconverter.cpp \
        loggingeventpatternconverter.cpp \
        loader.cpp\
        locale.cpp\
        locationinfo.cpp\
        logger.cpp \
        loggingevent.cpp \
        loglog.cpp \
        logmanager.cpp \
        logstream.cpp \
        manualtriggeringpolicy.cpp \
        messagebuffer.cpp \
        messagepatternconverter.cpp \
        methodlocationpatternconverter.cpp \
        mdc.cpp \
        mutex.cpp \
        nameabbreviator.cpp \
        namepatternconverter.cpp \
        ndcpatternconverter.cpp \
        ndc.cpp \
        nteventlogappender.cpp \
        objectimpl.cpp \
        objectptr.cpp \
        objectoutputstream.cpp \
        obsoleterollingfileappender.cpp \
        odbcappender.cpp \
        onlyonceerrorhandler.cpp \
        optionconverter.cpp \
        outputdebugstringappender.cpp \
        outputstream.cpp \
        outputstreamwriter.cpp \
        patternconverter.cpp \
        patternlayout.cpp \
        patternparser.cpp \
        pool.cpp \
        properties.cpp \
        propertiespatternconverter.cpp \
        propertyconfigurator.cpp \
        propertyresourcebundle.cpp \
        propertysetter.cpp \
        reader.cpp \
        relativetimedateformat.cpp \
        relativetimepatternconverter.cpp \
        resourcebundle.cpp \
        rollingfileappender.cpp \
        rollingpolicy.cpp \
        rollingpolicybase.cpp \
        rolloverdescription.cpp \
        rootlogger.cpp \
        serversocket.cpp \
        simpledateformat.cpp \
        simplelayout.cpp \
        sizebasedtriggeringpolicy.cpp \
        smtpappender.cpp \
        socket.cpp \
        socketappender.cpp \
        socketappenderskeleton.cpp \
        sockethubappender.cpp \
        socketoutputstream.cpp \
        strftimedateformat.cpp \
        stringhelper.cpp \
        stringmatchfilter.cpp \
        stringtokenizer.cpp \
        synchronized.cpp \
        syslogappender.cpp \
        syslogwriter.cpp \
        system.cpp \
        systemerrwriter.cpp \
        systemoutwriter.cpp \
        telnetappender.cpp \
        threadcxx.cpp \
        threadlocal.cpp \
        threadspecificdata.cpp \
        threadpatternconverter.cpp \
        throwableinformationpatternconverter.cpp \
        timezone.cpp \
        timebasedrollingpolicy.cpp \
        transform.cpp \
        triggeringpolicy.cpp \
        transcoder.cpp \
        ttcclayout.cpp \
        writer.cpp \
        writerappender.cpp \
        xmllayout.cpp\
        xmlsocketappender.cpp \
        zipcompressaction.cpp

if NON_BLOCKING
liblog4cxx_la_SOURCES += asyncappender_nonblocking.cpp
else
liblog4cxx_la_SOURCES += asyncappender.cpp
endif

AM_CPPFLAGS += @CPPFLAGS_ODBC@
liblog4cxx_la_LDFLAGS = -version-info @LT_VERSION@ @LIBS_ODBC@ -@APR_LIBS@
