1 <?xml version="1.0" encoding="UTF-8"?>
2 <project version="0.4" xmlns="http://unixwork.de/uwproj">
3 <config>
4 <prefix/>
5 <exec-prefix/>
6 <libdir/>
7 <includedir/>
8 <var name="VERSION">4.0.0</var>
9 <var name="LIBVERSION">7.0.0</var>
10 <var name="LIBVERSION_MAJOR">7</var>
11 <var name="root_dir" exec="true">pwd</var>
12 <var name="build_dir">${root_dir}/build</var>
13 <var name="docs_dir">${root_dir}/build/docs</var>
14 <var name="dist_dir">${root_dir}/dist</var>
15 <var name="MKDIR">/bin/mkdir -p</var>
16 <var name="RMFILE">/bin/rm -f</var>
17 <var name="RMDIR">/bin/rm -f -R</var>
18 <var name="COPYFILE">/bin/cp -f</var>
19 <var name="COPYALL">/bin/cp -f -R</var>
20 <var name="SYMLINK">/bin/ln -s</var>
21 </config>
22 <config platform="freebsd">
23 <var name="pkgconfigdir" option-help="location of the *.pc files">
24 ${exec_prefix}/libdata/pkgconfig
25 </var>
26 </config>
27 <config not="freebsd">
28 <var name="pkgconfigdir" option-help="location of the *.pc files">
29 ${libdir}/pkgconfig
30 </var>
31 </config>
32 <config>
33 <var name="DOXYGEN" exec="true" option-help="path of the Doxygen executable">
34 command -v doxygen || echo '/bin/false'
35 </var>
36 </config>
37
38 <dependency platform="macos">
39 <lang>c</lang>
40 <make>
41 AR=ar
42 ARFLAGS=r
43 STLIB_EXT=.a
44 SHLIB_EXT=.dylib
45
46 SHLIB_LDFLAGS=-dynamiclib -current_version \$(LIBVERSION) -compatibility_version \$(LIBVERSION)
47 INSTALL_LIB=\$(root_dir)/make/install-lib-macos.sh
48 </make>
49 </dependency>
50
51 <dependency platform="unix" not="macos">
52 <lang>c</lang>
53 <make>
54 AR=ar
55 ARFLAGS=cr
56 STLIB_EXT=.a
57 SHLIB_EXT=.so
58 INSTALL_LIB=\$(root_dir)/make/install-lib.sh
59 </make>
60 </dependency>
61
62 <dependency toolchain="gnuc" not="macos">
63 <make>
64 SHLIB_LDFLAGS += -Wl,-soname,libucx\$(SHLIB_EXT).\$(LIBVERSION_MAJOR)
65 </make>
66 </dependency>
67
68 <dependency toolchain="suncc">
69 <make>
70 SHLIB_LDFLAGS += -h libucx\$(SHLIB_EXT).\$(LIBVERSION_MAJOR)
71 </make>
72 </dependency>
73
74 <dependency platform="solaris">
75 <ldflags>-lm</ldflags>
76 </dependency>
77
78 <dependency name="cxx">
79 <lang>cpp</lang>
80 </dependency>
81
82 <dependency name="doxygen">
83 <test>test -n "$DOXYGEN"</test>
84 </dependency>
85
86 <dependency name="coverage" toolchain="gcc">
87 <cflags>\${COVERAGE_CFLAGS}</cflags>
88 <ldflags>\${COVERAGE_LDFLAGS}</ldflags>
89 <test>command -v gcovr</test>
90 </dependency>
91
92 <dependency name="asan" toolchain="gnuc">
93 <cflags>-fsanitize=address</cflags>
94 <ldflags>-fsanitize=address</ldflags>
95 </dependency>
96
97 <dependency name="no_coverage">
98 <test>test -z "$FEATURE_COVERAGE"</test>
99 </dependency>
100
101 <dependency name="memrchr">
102 <test>$TOOLCHAIN_CC $CFLAGS -o /dev/null make/test_memrchr.c</test>
103 <cflags>-DWITH_MEMRCHR</cflags>
104 </dependency>
105
106 <dependency name="memrchr">
107 <test>$TOOLCHAIN_CC $CFLAGS -o /dev/null -D_GNU_SOURCE make/test_memrchr.c</test>
108 <cflags>-DWITH_MEMRCHR -DMEMRCHR_NEED_GNU</cflags>
109 </dependency>
110
111 <target>
112 <feature name="api-docs">
113 <dependencies>doxygen</dependencies>
114 <desc>run Doxygen during build</desc>
115 <make>
116 # Documentation
117 WITH_API_DOCS=yes
118 </make>
119 </feature>
120 <feature name="coverage">
121 <desc>test coverage with gcov</desc>
122 <dependencies>coverage</dependencies>
123 </feature>
124 <feature name="asan">
125 <desc>address sanitizer</desc>
126 <dependencies>asan</dependencies>
127 </feature>
128 <feature name="memrchr" default="true">
129 <dependencies>memrchr</dependencies>
130 </feature>
131 <feature name="cxx-tests" default="true">
132 <dependencies>cxx</dependencies>
133 <desc>the check-cxx makefile target</desc>
134 <make>
135 # Enable the check-cxx target
136 WITH_CXX_TEST=yes
137 </make>
138 </feature>
139 <feature name="szmul-builtin" default="true">
140 <dependencies>no_coverage</dependencies>
141 <desc>use custom implementation, instead</desc>
142 <disabled>
143 <define name="CX_NO_SZMUL_BUILTIN"/>
144 </disabled>
145 </feature>
146 </target>
147 </project>
148