File: rules

package info (click to toggle)
eccodes 2.44.2-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 150,256 kB
  • sloc: cpp: 163,056; ansic: 26,308; sh: 21,602; f90: 6,854; perl: 6,363; python: 5,087; java: 2,226; javascript: 1,427; yacc: 854; fortran: 543; lex: 359; makefile: 274; xml: 183; awk: 66
file content (118 lines) | stat: -rwxr-xr-x 4,606 bytes parent folder | download
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
#!/usr/bin/make -f

export DH_VERBOSE=1

include /usr/share/dpkg/pkg-info.mk
include /usr/share/debhelper/dh-fortran/fortran-support.mk

DEB_BUILD_MAINT_OPTIONS:= hardening=+all
export DEB_BUILD_MAINT_OPTIONS

FC_DEFAULT:= gfortran
FC_OPTIONAL:= flang-21
export FC:=gfortran

DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
LIBDIR=/usr/lib/$(DEB_HOST_MULTIARCH)
INCDIR=/usr/include/$(DEB_HOST_MULTIARCH)
DESTDIR=$(CURDIR)/debian/tmp
CMAKEDIR:=debian/libeccodes-dev/$(LIBDIR)/cmake/eccodes

BUILDDIR:=debian/build
BUILDDIR_DEFAULT:=$(BUILDDIR)-$(FC_DEFAULT)

# For hardening
CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS)
CFLAGS:=$(shell dpkg-buildflags --get CFLAGS) $(CPPFLAGS) #  -fPIC
CXXFLAGS:=$(shell dpkg-buildflags --get CXXFLAGS) $(CPPFLAGS)
LDFLAGS:=$(shell dpkg-buildflags --get LDFLAGS)

export LDFLAGS CFLAGS CPPFLAGS CXXFLAGS

# Pull in ecbuild macros rather than local ones
BUILD_FLAGS =  \
	-DENABLE_INSTALL_ECCODES_DEFINITIONS=ON \
	-DENABLE_INSTALL_ECCODES_SAMPLES=ON \
	-DENABLE_PNG=ON \
	-DENABLE_ECKIT_GEO=ON \
	-DENABLE_AEC=ON \
	-DENABLE_RPATHS=OFF \
	-DENABLE_RELATIVE_RPATHS=OFF \
	-DCMAKE_C_CFLAGS="${CFLAGS} ${LDFLAGS}" \
	-DENABLE_ALIGN_MEMORY=ON \
	-DENABLE_GRIB_TIMER=ON \
	-DENABLE_ECCODES_OMP_THREADS=On  \

%:
	dh $@ --buildsystem=ecbuild --builddirectory=${BUILDDIR_DEFAULT}  --no-parallel --with fortran

define dh_build_fortran_TEMPLATE =
  dh_build_fortran_$(1):
	@echo DEBUGF  CALLING dh_build_fortran_$(1)
	dh_auto_build --builddirectory=${BUILDDIR}-$(1) 
	@echo DEBUGF  LEAVING dh_build_fortran_$(1)
endef
$(eval $(call foreach_fc_execute_before,build))

define dh_configure_fortran_TEMPLATE =
  dh_configure_fortran_$(1):
	@echo DEBUGF ENTERING dh_configure_fortran_$(1)
	FFLAGS=`dh_fortran get_fc_flags --fc $(1)`  \
	LDFLAGS=`dh_fortran get_ld_flags --fc $(1)`  \
	dh_auto_configure --builddirectory=${BUILDDIR}-$(1)  -- \
			${BUILD_FLAGS} \
			-DCMAKE_Fortran_COMPILER=$(1) 
	@echo DEBUGF LEAVING dh_configure_fortran_$(1)
endef
$(eval $(call foreach_fc_execute_before,configure))


# TODO fix static installs properly with dh_fortran_cmake

override_dh_install:
	cd $(BUILDDIR_DEFAULT) && $(MAKE) install DESTDIR=$(DESTDIR)  
	# Move to multiarch dir
	mkdir -p  $(DESTDIR)/$(INCDIR)
	mv $(DESTDIR)/usr/include/*.h $(DESTDIR)/$(INCDIR)
	dh_install
	# Setup cmake files for magics++, metview, etc. (full builds only)
	[ -e $(CMAKEDIR)/eccodes-targets.cmake ] && ( \
	sed -i -e 's%$${_IMPORT_PREFIX}/include%/usr/include/${DEB_HOST_MULTIARCH}%g' 	$(CMAKEDIR)/eccodes-targets.cmake  ; \
	sed -i -e 's%/usr/lib/libeccodes%${LIBDIR}/libeccodes%' 			$(CMAKEDIR)/eccodes-targets-release.cmake ;\
	sed -i -e 's%/libeccodes_f90_static.a%/fortran/gnu/libeccodes_f90_static.a%' 	$(CMAKEDIR)/eccodes-targets-release.cmake ;\
	sed -i -e 's%$${_IMPORT_PREFIX}%/usr%'                  			$(CMAKEDIR)/eccodes-targets-release.cmake ;\
	sed -i -e 's%${LIBDIR}/libopenjpeg.so;%%' 					$(CMAKEDIR)/eccodes-targets-release.cmake ;\
	sed -i -e 's%;${LIBDIR}/libpng.so%%g' 						$(CMAKEDIR)/eccodes-targets-release.cmake ;\
	sed -i -e 's%;${LIBDIR}/libopenjpeg.so%%g' 					$(CMAKEDIR)/eccodes-config.cmake ;\
	sed -i -e 's%$${PACKAGE_PREFIX_DIR}/lib/cmake/eccodes%${LIBDIR}/cmake/eccodes%g' $(CMAKEDIR)/eccodes-config.cmake ;\
	sed -i -e 's%;${LIBDIR}/libpng.so%%g' 						$(CMAKEDIR)/eccodes-config.cmake ;\
	for f in eccodes-config.cmake eccodes-import.cmake ; do \
		sed -i -e 's%${CURDIR}%/build/eccodes%g' $(CMAKEDIR)/$$f ; \
		sed -i -e 's%$${eccodes_BASE_DIR}/share%/usr/share%g' $(CMAKEDIR)/$$f ; \
		done ; \
        ) || true
	# file exists on full builds only
	[ - e debian/libeccodes-dev/$(INCDIR)/eccodes_ecbuild_config.h ] && ( \
		sed -i -e 's%${CURDIR}%/build/eccodes%g'  debian/libeccodes-dev/$(INCDIR)/eccodes_ecbuild_config.h \
		) || true	


execute_after_dh_auto_clean:
	rm -rf debian/build-*

execute_after_dh_fixperms:
	-chmod -x debian/libeccodes-dev/usr/share/doc/libeccodes-dev/examples/F90/include.sh
	-chmod -x debian/libeccodes-dev/usr/share/doc/libeccodes-dev/examples/extra/include.sh
	-chmod -x debian/libeccodes-dev/usr/share/doc/libeccodes-dev/examples/extra/f_clone.f90
	-chmod +x debian/libeccodes-data/usr/share/eccodes/definitions/installDefinitions.sh
	-chrpath -d debian/libeccodes0/$(LIBDIR)/*.so.0
	-chrpath -d debian/libeccodes-tools/usr/bin/grib_to_netcdf


define dh_test_fortran_TEMPLATE =
  dh_test_fortran_$(1):
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
	(LD_LIBRARY_PATH=$(BUILDDIR)-$(1)/lib dh_auto_test --builddirectory=$(BUILDDIR)-$(1) || true)
endif
endef
$(eval $(call foreach_fc_execute_before,test))