make/project.xml

Sun, 23 Nov 2025 13:15:19 +0100

author
Mike Becker <universe@uap-core.de>
date
Sun, 23 Nov 2025 13:15:19 +0100
changeset 1508
dfc0ddd9571e
parent 1471
2309b553c604
permissions
-rw-r--r--

optimize sorted insertion by using the infimum instead of the supremum

The reason is that the supremum returns the equal element with the smallest index, and we want the largest.
Therefore, we use the infimum, which already gives us the largest index when there are equal elements, and increase the index by one. The infimum is also guaranteed to exist in that case.

<?xml version="1.0" encoding="UTF-8"?>
<project version="0.4" 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=6.0.0
            LIBVERSION_MAJOR=6

            # 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>
        <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 platform="macos">
        <lang>c</lang>
        <make>
            AR=ar
            ARFLAGS=r
            STLIB_EXT=.a
            SHLIB_EXT=.dylib

            SHLIB_LDFLAGS=-dynamiclib -current_version \$(LIBVERSION) -compatibility_version \$(LIBVERSION)
            INSTALL_LIB=\$(root_dir)/make/install-lib-macos.sh
        </make>
    </dependency>

    <dependency platform="unix" not="macos">
        <lang>c</lang>
        <make>
            AR=ar
            ARFLAGS=cr
            STLIB_EXT=.a
            SHLIB_EXT=.so
            INSTALL_LIB=\$(root_dir)/make/install-lib.sh
        </make>
    </dependency>

    <dependency toolchain="gnuc" not="macos">
        <make>
            SHLIB_LDFLAGS += -Wl,-soname,libucx\$(SHLIB_EXT).\$(LIBVERSION_MAJOR)
        </make>
    </dependency>

    <dependency toolchain="suncc">
        <make>
            SHLIB_LDFLAGS += -h libucx\$(SHLIB_EXT).\$(LIBVERSION_MAJOR)
        </make>
    </dependency>

    <dependency platform="solaris">
        <ldflags>-lm</ldflags>
    </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>

    <dependency name="memrchr">
        <test>$TOOLCHAIN_CC $CFLAGS -o /dev/null make/test_memrchr.c</test>
        <cflags>-DWITH_MEMRCHR</cflags>
    </dependency>

    <dependency name="memrchr">
        <test>$TOOLCHAIN_CC $CFLAGS -o /dev/null -D_GNU_SOURCE make/test_memrchr.c</test>
        <cflags>-DWITH_MEMRCHR -DMEMRCHR_NEED_GNU</cflags>
    </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="memrchr" default="true">
            <dependencies>memrchr</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>
    </target>
</project>

mercurial