#!/usr/bin/make -f SOVERSION=1 FULLVERSION=1.9.0 export DEB_BUILD_MAINT_OPTIONS = hardening=+all include /usr/share/dpkg/buildflags.mk include /usr/share/dpkg/pkg-info.mk # these files are to be moved out of python3-highspy package after built TARGET_PREFIX = debian/tmp/usr TARGET_LIBDIR = $(TARGET_PREFIX)/lib/$(DEB_HOST_MULTIARCH) SYSTEM_LIBDIR = usr/lib/$(DEB_HOST_MULTIARCH) # we need a hardcoded path to find in dh_auto_test BUILDDIR = /tmp/highs-build BUILD_LIBDIR = $(BUILDDIR)/$(TARGET_LIBDIR) SKBUILD_ARGS = \ -C skbuild.build-dir=$(BUILDDIR) \ -C skbuild.ninja.version=">=1.5" \ -C skbuild.build.verbose=true \ -C skbuild.install.strip=false \ -C skbuild.cmake.build-type=RelWithDebInfo \ -C skbuild.cmake.args=-DCMAKE_C_FLAGS="$(CFLAGS) $(CPPFLAGS)" \ -C skbuild.cmake.args=-DCMAKE_CXX_FLAGS="$(CXXFLAGS) $(CPPFLAGS)" \ -C skbuild.cmake.args=-DCMAKE_EXE_LINKER_FLAGS="$(LDFLAGS)" \ -C skbuild.cmake.args=-DPYTHON_BUILD_SETUP=ON \ -C skbuild.cmake.args=-DFAST_BUILD=ON \ -C skbuild.cmake.args=-DBUILD_SHARED_LIBS=ON \ -C skbuild.cmake.args=-DCMAKE_INSTALL_PREFIX=/usr \ -C skbuild.cmake.args=-DCMAKE_INSTALL_LIBDIR=$(TARGET_LIBDIR) \ -C skbuild.cmake.args=-DCMAKE_INSTALL_INCLUDEDIR=$(TARGET_PREFIX)/include ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) SKBUILD_ARGS += -C skbuild.cmake.args=-DALL_TESTS=ON endif # config pybuild and skbuild export PYBUILD_NAME = highspy export PYBUILD_SYSTEM = pyproject export PYBUILD_BUILD_ARGS_$(shell py3versions -d) = $(SKBUILD_ARGS) PY_DEST_DIR=debian/python3-highspy/usr/lib/$(shell py3versions -d)/dist-packages %: dh $@ --with python3 --buildsystem=pybuild override_dh_auto_test: ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) # the tests use regex to match FP numbers precisely, # thus are only reproducible on amd64 ISAs ifeq ($(DEB_BUILD_ARCH_CPU),amd64) cd $(BUILDDIR) && ctest --output-on-failure endif # set LD_LIBRARY_PATH to find compiled _core.so and libhighs.so LD_LIBRARY_PATH=$(shell realpath $(BUILD_LIBDIR)) dh_auto_test endif execute_after_dh_auto_install: # move files out of python3-highspy package mkdir -p debian/tmp/ mv $(PY_DEST_DIR)/$(TARGET_PREFIX) $(TARGET_PREFIX) mv $(PY_DEST_DIR)/bin $(TARGET_PREFIX)/bin # CMAKE_INSTALL_BINDIR does not work, I don't know why rm -rf $(PY_DEST_DIR)/debian # remove hardcoded build path sed -i 's|#define HIGHS_DIR .*|#define HIGHS_DIR "/usr"|' $(TARGET_PREFIX)/include/highs/HConfig.h # generate manpage from help LD_LIBRARY_PATH=$(TARGET_LIBDIR) help2man --version-string=$(DEB_VERSION_UPSTREAM) --name="HiGHS -- High performance linear optimization software" -N -o highs.1 $(TARGET_PREFIX)/bin/highs execute_after_dh_install: # replace duplicated .so files (copied when building wheels) with symlinks dh_link -p libhighs$(SOVERSION) $(SYSTEM_LIBDIR)/libhighs.so.$(FULLVERSION) $(SYSTEM_LIBDIR)/libhighs.so.$(SOVERSION) dh_link -p libhighs-dev $(SYSTEM_LIBDIR)/libhighs.so.$(SOVERSION) $(SYSTEM_LIBDIR)/libhighs.so