make/project.xml

Fri, 23 May 2025 12:44:24 +0200

author
Mike Becker <universe@uap-core.de>
date
Fri, 23 May 2025 12:44:24 +0200
changeset 1327
ed75dc1db503
parent 1320
f76b70a72614
permissions
-rw-r--r--

make test-compile depend on both static and shared

the shared lib is not needed for the tests,
but when run with coverage, gcov will be confused
when outdated line information is available from
a previous shared build

<?xml version="1.0" encoding="UTF-8"?>
<project version="0.3" xmlns="http://unixwork.de/uwproj">
    <config>
        <var name="root_dir" exec="true">pwd</var>
        <var name="DOXYGEN" exec="true">command -v doxygen</var>
    </config>

    <dependency>
        <make>
            # library version
            VERSION=3.2.0
            LIBVERSION=5.1.0
            LIBVERSION_MAJOR=5

            # build directory structure !! do not change or override !!
            root_dir=${root_dir}
            build_dir=${root_dir}/build
            docs_dir=${root_dir}/build/docs
            dist_dir=${root_dir}/dist
        </make>
    </dependency>
    
    <dependency platform="solaris">
        <ldflags>-lm</ldflags>
    </dependency>

    <dependency name="file-tools">
        <make>
            MKDIR=/bin/mkdir -p
            RMFILE=/bin/rm -f
            RMDIR=/bin/rm -f -R
            COPYFILE=/bin/cp -f
            COPYALL=/bin/cp -f -R
            SYMLINK=/bin/ln -s
        </make>
    </dependency>

    <dependency name="c" platform="mingw">
        <lang>c</lang>
        <make>
            AR=ar
            ARFLAGS=r
            STLIB_EXT=.lib
            SHLIB_EXT=.dll
        </make>
    </dependency>

    <dependency name="c" platform="macos">
        <lang>c</lang>
        <make>
            AR=ar
            ARFLAGS=r
            STLIB_EXT=.a
            SHLIB_EXT=.dylib
        </make>
    </dependency>

    <dependency name="c" platform="unix">
        <lang>c</lang>
        <make>
            AR=ar
            ARFLAGS=cr
            STLIB_EXT=.a
            SHLIB_EXT=.so
        </make>
    </dependency>

    <dependency name="cxx">
        <lang>cpp</lang>
    </dependency>

    <dependency name="doxygen">
        <test>test -n "$DOXYGEN"</test>
        <make>DOXYGEN=$DOXYGEN</make>
    </dependency>

    <dependency name="coverage" toolchain="gcc">
        <cflags>\${COVERAGE_CFLAGS}</cflags>
        <ldflags>\${COVERAGE_LDFLAGS}</ldflags>
        <test>command -v gcovr</test>
    </dependency>

    <dependency name="asan" toolchain="gnuc">
        <cflags>-fsanitize=address</cflags>
        <ldflags>-fsanitize=address</ldflags>
    </dependency>

    <dependency name="no_coverage">
        <test>test -z "$FEATURE_COVERAGE"</test>
    </dependency>

    <target>
        <feature name="api-docs">
            <dependencies>doxygen</dependencies>
            <desc>run Doxygen during build</desc>
            <make>
                # Documentation
                WITH_API_DOCS=yes
            </make>
        </feature>
        <feature name="coverage">
            <desc>test coverage with gcov</desc>
            <dependencies>coverage</dependencies>
        </feature>
        <feature name="asan">
            <desc>address sanitizer</desc>
            <dependencies>asan</dependencies>
        </feature>
        <feature name="cxx-tests" default="true">
            <dependencies>cxx</dependencies>
            <desc>the check-cxx makefile target</desc>
            <make>
                # Enable the check-cxx target
                WITH_CXX_TEST=yes
            </make>
        </feature>
        <feature name="szmul-builtin" default="true">
            <dependencies>no_coverage</dependencies>
            <desc>use custom implementation, instead</desc>
            <disabled>
                <define name="CX_NO_SZMUL_BUILTIN"/>
            </disabled>
        </feature>
        <dependencies>c,file-tools</dependencies>
    </target>
</project>

mercurial