155 lines
6.3 KiB
Makefile
Executable File
155 lines
6.3 KiB
Makefile
Executable File
#!/usr/bin/make -f
|
|
|
|
NULL =
|
|
|
|
# Make sure lintian does not complain about missing hardenings.
|
|
export DEB_BUILD_MAINT_OPTIONS=hardening=+all
|
|
|
|
# Make sure the decades-old source code gets compiled by allowing implicit
|
|
# function declarations and, for gcc-14 and above, by downgrading the
|
|
# diagnostics applied by the compiler. See
|
|
# https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/Warning-Options.html
|
|
# for further details.
|
|
export DEB_CFLAGS_MAINT_STRIP=-Wincompatible-pointer-types
|
|
cc_major := $(shell $(CC) --version | head -n1 | cut -d' ' -f4 | cut -d. -f1)
|
|
cc_major_ge_14 := $(shell [ $(cc_major) -ge 14 ] && echo 'true')
|
|
export DEB_CFLAGS_MAINT_APPEND=$(if $(cc_major_ge_14),-fpermissive)
|
|
|
|
DPKG_EXPORT_BUILDFLAGS = 1
|
|
include /usr/share/dpkg/buildflags.mk
|
|
|
|
include /usr/share/dpkg/architecture.mk
|
|
|
|
export LIBDIR = "/usr/lib/$(DEB_HOST_MULTIARCH)"
|
|
export LIBEXECDIR = "$(LIBDIR)/nx/bin"
|
|
export INCLUDEDIR = "/usr/include/$(DEB_HOST_MULTIARCH)"
|
|
|
|
VENDOR_DEBIAN := 0
|
|
RELEASE_VER := 0
|
|
|
|
# detect VENDOR_* variables and RELEASE_VER{,_MAJOR,_MINOR}
|
|
VENDOR_DEBIAN := $(shell { dpkg-vendor --is 'Debian' && echo 'yes'; } || { dpkg-vendor --is 'Raspbian' && echo 'yes'; })
|
|
|
|
ifeq ($(VENDOR_DEBIAN),yes)
|
|
RELEASE_VER := $(shell /usr/bin/lsb_release -r | cut -d ':' -f'2' | sed -e 's/\s*//g' | cut -d '.' -f'1')
|
|
|
|
# Newer Debian versions might report "n/a" for testing and unstable.
|
|
ifeq ($(RELEASE_VER),n/a)
|
|
# On these platforms, the best way to determine the system version is by
|
|
# going through "apt-cache policy".
|
|
# Note that this should only be the case for either testing or unstable.
|
|
# Other systems should have a proper version number.
|
|
# This is also why we can just drop any suites/archive names (this is
|
|
# what a= means) containing a dash character (e.g., "stable-updates")
|
|
# and only pick the first match.
|
|
RELEASE_VER := $(shell /usr/bin/apt-cache policy | grep -E 'o=(De|Rasp)bian,' | grep -E 'l=(De|Rasp)bian,' | grep -F 'c=main,' | grep -Eo 'a=[^, ]*' | sed -e 's/^a=//' | grep -v -- '-' | head -n '1')
|
|
|
|
# Do error checking.
|
|
ifneq ($(RELEASE_VER),testing)
|
|
ifneq ($(RELEASE_VER),unstable)
|
|
$(error Release version could not be determined, sorry. Extracted value: $(RELEASE_VER))
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
# Let's fake testing's and unstable's "release version"...
|
|
ifeq ($(RELEASE_VER),testing)
|
|
RELEASE_VER := 999
|
|
endif
|
|
ifeq ($(RELEASE_VER),unstable)
|
|
RELEASE_VER := 9999
|
|
endif
|
|
else
|
|
VENDOR_UBUNTU := $(shell dpkg-vendor --is 'Ubuntu' && echo 'yes')
|
|
|
|
ifeq ($(VENDOR_UBUNTU),yes)
|
|
RELEASE_VER_MAJOR := $(shell lsb_release -r | cut -d ':' -f '2' | sed -e 's/\s*//g' | cut -d '.' -f '1')
|
|
RELEASE_VER_MINOR := $(shell lsb_release -r | cut -d ':' -f '2' | sed -e 's/\s*//g' | cut -d '.' -f '2')
|
|
endif
|
|
endif
|
|
|
|
# detect when to use libtirpc and when glibc still provides rpc/rpc.h
|
|
IMAKE_EXTRA_DEFINES := ""
|
|
ifeq ($(VENDOR_DEBIAN),yes)
|
|
ifeq ($(shell /bin/bash -c '(( $(RELEASE_VER) >= 10 )) && echo '"'"'yes'"'"),yes)
|
|
IMAKE_EXTRA_DEFINES+="-DUseTIRPC=1"
|
|
endif
|
|
else
|
|
ifeq ($(VENDOR_UBUNTU),yes)
|
|
ifeq ($(shell /bin/bash -c '(( $(RELEASE_VER_MAJOR) >= 18 )) && echo '"'"'yes'"'"),yes)
|
|
IMAKE_EXTRA_DEFINES+="-DUseTIRPC=1"
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
%:
|
|
VERBOSE=1 CONFIGURE="./configure --disable-silent-rules \
|
|
--prefix=/usr \
|
|
--libdir=$(LIBDIR) \
|
|
--includedir=$(INCLUDEDIR) \
|
|
--libexecdir=$(LIBEXECDIR) \
|
|
--build=$(DEB_BUILD_GNU_TYPE) \
|
|
--host=$(DEB_HOST_GNU_TYPE)" dh $@ --no-parallel --with quilt
|
|
|
|
override_dh_auto_clean:
|
|
rm -Rf nx-X11/.build-exports
|
|
dh_auto_clean --no-parallel || dh_auto_clean
|
|
|
|
override_dh_clean:
|
|
dh_clean
|
|
rm -f nx-X11/config/cf/date.def
|
|
|
|
override_dh_install:
|
|
|
|
# strip static libs and remove .la files
|
|
rm debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libXcomp.la
|
|
strip --strip-debug --remove-section=.comment --remove-section=.note debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libXcomp.a
|
|
rm debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libXcompshad.la
|
|
strip --strip-debug --remove-section=.comment --remove-section=.note debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libXcompshad.a
|
|
rm debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libNX_X11.la
|
|
strip --strip-debug --remove-section=.comment --remove-section=.note debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libNX_X11.a
|
|
|
|
# remove extras, GL, and other unneeded headers
|
|
rm -R debian/tmp/usr/include/$(DEB_HOST_MULTIARCH)/GL/
|
|
rm -R debian/tmp/usr/include/$(DEB_HOST_MULTIARCH)/nx-X11/extensions/XK*.h
|
|
rm -R debian/tmp/usr/include/$(DEB_HOST_MULTIARCH)/nx-X11/extensions/*Xv*.h
|
|
rm -R debian/tmp/usr/include/$(DEB_HOST_MULTIARCH)/nx-X11/extensions/XRes*.h
|
|
rm -R debian/tmp/usr/include/$(DEB_HOST_MULTIARCH)/nx-X11/extensions/XIproto.h
|
|
rm -R debian/tmp/usr/include/$(DEB_HOST_MULTIARCH)/nx-X11/extensions/XI.h
|
|
rm -R debian/tmp/usr/include/$(DEB_HOST_MULTIARCH)/nx-X11/Xtrans/
|
|
|
|
dh_install
|
|
|
|
override_dh_missing:
|
|
dh_missing --fail-missing
|
|
|
|
override_dh_auto_install:
|
|
PREFIX='/usr' dh_auto_install --no-parallel -Smakefile || \
|
|
PREFIX='/usr' dh_auto_install -Smakefile
|
|
|
|
override_dh_auto_build:
|
|
debian/compat.sh
|
|
PREFIX='/usr' dh_auto_build --no-parallel -- CDEBUGFLAGS="$(CPPFLAGS) $(CFLAGS)" LOCAL_LDFLAGS="$(LDFLAGS)" SHLIBGLOBALSFLAGS='$(filter-out -pie,$(LDFLAGS))' IMAKE_DEFINES="$(IMAKE_EXTRA_DEFINES)" || \
|
|
PREFIX='/usr' dh_auto_build -- CDEBUGFLAGS="$(CPPFLAGS) $(CFLAGS)" LOCAL_LDFLAGS="$(LDFLAGS)" SHLIBGLOBALSFLAGS='$(filter-out -pie,$(LDFLAGS))' IMAKE_DEFINES="$(IMAKE_EXTRA_DEFINES)"
|
|
|
|
override_dh_strip:
|
|
dh_strip -plibnx-x11-6 --dbg-package=libnx-x11-6-dbg
|
|
dh_strip -plibxcomp3 --dbg-package=libxcomp3-dbg
|
|
dh_strip -plibxcompshad3 --dbg-package=libxcompshad3-dbg
|
|
dh_strip -pnxagent --dbg-package=nxagent-dbg
|
|
dh_strip -pnxproxy --dbg-package=nxproxy-dbg
|
|
|
|
override_dh_makeshlibs:
|
|
dh_makeshlibs -n
|
|
|
|
# Needed for the libX11 RUNPATH/RPATH link-time hack.
|
|
# dh_shlibdeps will follow dependencies within binaries and choke
|
|
# on the libX11 dependency, since the SONAME (libX11.*) used while linking
|
|
# does not match the later detected SONAME (libNX_X11.*) obtained through
|
|
# the libX11 -> libNX_X11 compat symlink.
|
|
override_dh_shlibdeps:
|
|
dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
|
|
|
|
get-orig-source:
|
|
uscan --noconf --force-download --rename --download-current-version --destdir=..
|