1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238
|
#!/usr/bin/make -f
#export DH_VERBOSE=1
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
include /usr/share/dpkg/default.mk
# OpenVDB AX is a beast to compile on some low mem arches such as mipsel (https://bugs.debian.org/1025144)
# Do not build AX on alpha & hppa since no LLVM
AX_ARCHS=amd64 arm64 armel armhf i386 mips64el ppc64el s390x arc hurd-i386 ia64 kfreebsd-amd64 kfreebsd-i386 m68k powerpc ppc64 riscv64 sh4 sparc64 x32
ifneq (,$(filter $(DEB_HOST_ARCH), $(AX_ARCHS)))
WITH_AX=ON
else
WITH_AX=OFF
endif
WITH_VDB_TOOL=ON
ifneq (,$(filter $(DEB_HOST_ARCH), mipsel))
WITH_VDB_TOOL=OFF
endif
# Lower max parallel jobs always:
DH_FLAGS = --max-parallel=2
ifneq (,$(filter $(DEB_HOST_ARCH), armel armhf arm64 ppc64el))
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77728
DEB_CXXFLAGS_MAINT_APPEND += -Wno-psabi
endif
# default setting
WITH_EXPLICIT_INSTANTIATION=ON
# `virtual memory exhausted: Cannot allocate memory` is the new ICE
ifeq ($(DEB_BUILD_ARCH_BITS),32)
# Lower memory requirements on architectures with only 2 GB address space
WITH_EXPLICIT_INSTANTIATION=OFF
ifneq (,$(filter $(DEB_HOST_ARCH), mipsel))
# smaller debug packages:
CXXFLAGS := $(CXXFLAGS:-g=-g1)
CXXFLAGS := $(CXXFLAGS:-O2=-O1)
DEB_CXXFLAGS_MAINT_APPEND += --param ggc-min-expand=10
# makes linking slower, so it shouldn't be enabled when not needed:
DEB_LDFLAGS_MAINT_APPEND += -Wl,--no-keep-memory -Wl,--reduce-memory-overhead
# openvdb.cc:(.text+0x7c): relocation truncated to fit: R_MIPS_CALL16 against `pthread_once@@GLIBC_2.34'
DEB_CXXFLAGS_MAINT_APPEND += -mxgot
DH_FLAGS = --max-parallel=1
else ifneq (,$(filter $(DEB_HOST_ARCH), armel))
# smaller debug packages:
CXXFLAGS := $(CXXFLAGS:-g=-g1)
CXXFLAGS := $(CXXFLAGS:-O2=-Os)
DEB_CXXFLAGS_MAINT_APPEND += --param ggc-min-expand=10
else
# reduce memory pressure also on i386 buildds:
CXXFLAGS := $(CXXFLAGS:-g=-g1)
CXXFLAGS := $(CXXFLAGS:-O2=-Os)
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78971
DEB_CXXFLAGS_MAINT_APPEND += --param ggc-min-expand=20
endif
endif
VER_FULL = $(DEB_VERSION_UPSTREAM)
VER_SONAME = $(shell echo $(DEB_VERSION_UPSTREAM) | cut -f1-2 -d.)
# technically the following should reduce the amount of symbols being exported,
# it turns out this does not work in practice:
# https://bugs.debian.org/997080
#DEB_CFLAGS_MAINT_APPEND += -fvisibility=hidden -fvisibility-inlines-hidden
#DEB_CXXFLAGS_MAINT_APPEND += -fvisibility=hidden -fvisibility-inlines-hidden
export DEB_CXXFLAGS_MAINT_APPEND
export DEB_LDFLAGS_MAINT_APPEND
# deduce documentation option (build-indep target)
ifeq (,$(filter %-doc,$(shell dh_listpackages)))
BUILDDOC = OFF
else ifneq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
BUILDDOC = OFF
else
BUILDDOC = ON
endif
# remove test if specified:
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
BUILDTEST = ON
ifeq ($(WITH_AX),ON)
BUILDTEST_AX = ON
else
BUILDTEST_AX = OFF
endif
else
BUILDTEST = OFF
BUILDTEST_AX = OFF
endif
# notes:
# - https://github.com/AcademySoftwareFoundation/openvdb/issues/144#issuecomment-508984426
# - Force tbbmalloc for simplicity since jemalloc breaks python plugins. (#951704)
CONCURRENT_MALLOC = Tbbmalloc
ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
CONCURRENT_MALLOC = None
endif
WITH_CUDA ?= OFF
# https://bugs.debian.org/1025142
WITH_RPATH ?= OFF
# cannot use cmake+ninja because of -doc package:
%:
dh $@ --with python3 --buildsystem=cmake $(DH_FLAGS)
MPL: LICENSE
cp -f $< $@
PYVERS := $(shell py3versions -rd)
CMAKE_EXTRA_FLAGS = \
-DBUILD_TEST:BOOL=$(BUILDTEST) \
-DCMAKE_SKIP_RPATH:BOOL=ON \
-DCONCURRENT_MALLOC:STRING=$(CONCURRENT_MALLOC) \
-DNANOVDB_BUILD_BENCHMARK:BOOL=OFF \
-DNANOVDB_BUILD_EXAMPLES:BOOL=OFF \
-DNANOVDB_BUILD_UNITTESTS:BOOL=$(BUILDTEST) \
-DNANOVDB_CUDA_KEEP_PTX:BOOL=$(WITH_CUDA) \
-DNANOVDB_USE_CUDA:BOOL=$(WITH_CUDA) \
-DNANOVDB_USE_INTRINSICS:BOOL=ON \
-DNANOVDB_USE_OPENVDB:BOOL=ON \
-DOPENVDB_AX_STATIC:BOOL=OFF \
-DOPENVDB_BUILD_AX:BOOL=$(WITH_AX) \
-DOPENVDB_BUILD_AX_GRAMMAR:BOOL=$(WITH_AX) \
-DOPENVDB_BUILD_AX_UNITTESTS:BOOL=$(BUILDTEST_AX) \
-DOPENVDB_BUILD_DOCS:BOOL=$(BUILDDOC) \
-DOPENVDB_BUILD_NANOVDB:BOOL=ON \
-DOPENVDB_BUILD_PYTHON_MODULE:BOOL=ON \
-DOPENVDB_BUILD_PYTHON_UNITTESTS:BOOL=$(BUILDTEST) \
-DOPENVDB_BUILD_UNITTESTS:BOOL=$(BUILDTEST) \
-DOPENVDB_BUILD_VDB_AX:BOOL=$(WITH_AX) \
-DOPENVDB_BUILD_VDB_LOD:BOOL=ON \
-DOPENVDB_BUILD_VDB_RENDER:BOOL=ON \
-DOPENVDB_BUILD_VDB_TOOL:BOOL=$(WITH_VDB_TOOL) \
-DOPENVDB_BUILD_VDB_VIEW:BOOL=ON \
-DOPENVDB_CORE_STATIC:BOOL=OFF \
-DOPENVDB_ENABLE_RPATH:BOOL=$(WITH_RPATH) \
-DOPENVDB_TOOL_USE_EXR:BOOL=ON \
-DOPENVDB_TOOL_USE_JPG:BOOL=ON \
-DOPENVDB_TOOL_USE_NANO:BOOL=ON \
-DOPENVDB_TOOL_USE_PNG:BOOL=ON \
-DPython_EXECUTABLE:FILEPATH=/usr/bin/$(PYVERS) \
-DUSE_AX:BOOL=$(WITH_AX) \
-DUSE_BLOSC:BOOL=ON \
-DUSE_EXPLICIT_INSTANTIATION:BOOL=$(WITH_EXPLICIT_INSTANTIATION) \
-DUSE_EXR:BOOL=ON \
-DUSE_IMATH_HALF:BOOL=ON \
-DUSE_LOG4CPLUS:BOOL=ON \
-DUSE_NANOVDB:BOOL=ON \
-DUSE_NUMPY:BOOL=ON \
-DUSE_PNG:BOOL=ON \
VDB_MANPAGES = debian/vdb_lod.1 debian/vdb_print.1 debian/vdb_render.1 debian/vdb_view.1
ifeq ($(WITH_VDB_TOOL),ON)
VDB_MANPAGES += debian/vdb_tool.1
endif
pkg_arun = libopenvdb-ax-tools
pkg_nrun = libnanovdb-tools
pkg_orun = libopenvdb-tools
pkg_alib = libopenvdb-ax$(VER_SONAME)
pkg_olib = libopenvdb$(VER_SONAME)
pkg_adev = libopenvdb-ax-dev
pkg_ndev = libnanovdb-dev
pkg_odev = libopenvdb-dev
pkg_doc = libopenvdb-doc
pkg_py = python3-openvdb
override_dh_auto_configure:
dh_auto_configure -- $(CMAKE_EXTRA_FLAGS)
override_dh_installdocs: MPL
dh_installdocs -A $^
override_dh_clean:
dh_clean doc/doxygen_sqlite3.db
dh_clean debian/*.1
override_dh_auto_test-arch:
timeout 2h dh_auto_test -- $(TESTOPS) || true
override_dh_install-arch: manpages
# update manpage listing:
for manpage in $(VDB_MANPAGES); do \
echo $$manpage >> debian/libopenvdb-tools.manpages \
; \
done
dh_numpy3 --package=$(pkg_py)
dh_install -p$(pkg_arun) debian/tmp/usr/bin/vdb_ax usr/bin
dh_install -p$(pkg_nrun) debian/tmp/usr/bin/nano* usr/bin
dh_install -p$(pkg_orun) -Xax debian/tmp/usr/bin/vdb* usr/bin
dh_install -p$(pkg_alib) debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libopenvdb_ax.so.$(VER_FULL)
dh_install -p$(pkg_alib) debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libopenvdb_ax.so.$(VER_SONAME)
dh_install -p$(pkg_olib) debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libopenvdb.so.$(VER_FULL)
dh_install -p$(pkg_olib) debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libopenvdb.so.$(VER_SONAME)
dh_install -p$(pkg_adev) debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libopenvdb_ax.so
dh_install -p$(pkg_odev) debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libopenvdb.so
dh_install -p$(pkg_odev) debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/cmake
dh_install -p$(pkg_adev) debian/tmp/usr/include/openvdb_ax* usr/include
dh_install -p$(pkg_ndev) debian/tmp/usr/include/nanovdb* usr/include
dh_install -p$(pkg_odev) -Xax debian/tmp/usr/include/openvdb* usr/include
dh_install -p$(pkg_py) debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/$(PYVERS)/dist-packages/pyopenvdb.so usr/lib/$(PYVERS)/dist-packages/
override_dh_auto_build-indep:
dh_auto_build -- doc
override_dh_auto_test-indep:
# No tests needed for docs
override_dh_auto_install-indep:
dh_auto_install -- -C doc
override_dh_install-indep:
dh_install -p$(pkg_doc) debian/tmp/usr/share/doc/OpenVDB/html usr/share/doc/libopenvdb-doc/
#override_dh_shlibdeps:
# dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
debian/%.1: debian/%.1.in
LD_PRELOAD= LD_LIBRARY_PATH=./debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH) help2man --version-string=$(VER_FULL) --include=$< --output=$@ --no-info --no-discard-stderr ./debian/tmp/usr/bin/`basename $@ .1`
echo "Done generation $@"
.PHONY: manpages vdb_manpages vdb_ax_manpages nano_manpages
vdb_manpages: $(VDB_MANPAGES)
vdb_ax_manpages: debian/vdb_ax.1
nano_manpages: debian/nanovdb_convert.1 debian/nanovdb_print.1 debian/nanovdb_validate.1
ifeq ($(WITH_AX),ON)
manpages: vdb_manpages nano_manpages vdb_ax_manpages
else
manpages: vdb_manpages nano_manpages
endif
debian/control: debian/control.in
sed -e "s/@AX_ARCHS@/$(AX_ARCHS)/g" $< > $@
get-orig-source:
uscan --verbose --force-download --rename --repack
|