File: rules

package info (click to toggle)
john 1.9.0-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 21,504 kB
  • sloc: ansic: 22,788; asm: 5,665; makefile: 898; sh: 518; perl: 158
file content (130 lines) | stat: -rwxr-xr-x 3,355 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
119
120
121
122
123
124
125
126
127
128
129
130
#!/usr/bin/make -f

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

# This has to be exported to make some magic below work.
export DH_OPTIONS

# Enable all hardening
export DEB_BUILD_MAINT_OPTIONS=hardening=+all

# This is for the target selection
CPU := $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU)
OS := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)

# This is to add missing hardening fortify functions export
CFLAGS += $(shell dpkg-buildflags --get CPPFLAGS)

CFLAGS += -DJOHN_SYSTEMWIDE=1
# See src/params.h

ifeq ($(OS),kfreebsd)
	# enabling crypt(3) for kfreebsd, there is a patch adding fmt_c3.o
	CFLAGS += -DHAVE_CRYPT
	LDFLAGS +=  -lcrypt
	# as we will use $(OS)-x86-*, it must be named freebsd, not kfreebsd
	OS := freebsd
endif

# arm FTBFS with -funroll-loops. Please see #476460
ifneq ($(CPU),arm)
	CFLAGS += -funroll-loops
endif

# selecting compilation target
ifeq ($(OS),hurd)
	TARGET := generic
else ifeq ($(CPU),i386)
	# targeting an unoptimized binary first
	TARGET := $(OS)-x86-any
	# enabling i386 fallbacks
	CFLAGS += -DCPU_FALLBACK
else ifeq ($(CPU),amd64)
	TARGET := $(OS)-x86-64
else ifeq ($(CPU),powerpc)
	TARGET := linux-ppc32
else ifeq ($(CPU),ppc64)
	TARGET := linux-ppc64
else ifeq ($(CPU),alpha)
	TARGET := linux-alpha
else ifeq ($(CPU),sparc)
	TARGET := linux-sparc
else ifeq ($(CPU),ia64)
	TARGET := linux-ia64
else
	TARGET := generic
endif

# please take a look at:
# https://buildd.debian.org/status/logs.php?pkg=john&ver=1.7.7-1
ifeq ($(OS),freebsd)
	# seems like freebsd targets don't like too much escaping
	CFLAGS += -DJOHN_SYSTEMWIDE_EXEC=\"/usr/lib/john\"
	CFLAGS += -DCFG_FULL_NAME=\"/etc/john/john.conf\"
else ifeq ($(TARGET),generic)
	# and it is just the same for generic targets:
	# armel, hurd-i386, mips, mipsel, and s390
	CFLAGS += -DJOHN_SYSTEMWIDE_EXEC=\"/usr/lib/john\"
	CFLAGS += -DCFG_FULL_NAME=\"/etc/john/john.conf\"
else
	# but, we need a lot of escaping for:
	# amd64, i386, ia64, powerpc, and sparc
	CFLAGS += -DJOHN_SYSTEMWIDE_EXEC=\\\"/usr/lib/john\\\"
	CFLAGS += -DCFG_FULL_NAME=\\\"/etc/john/john.conf\\\"
endif

# testing i386 for mmx instructions and sse2 extensions
ifeq ($(CPU),i386)
	ifneq ($(OS),hurd)
		MMX := $(shell grep -c '^flags.* mmx' /proc/cpuinfo)
		ifneq ($(MMX),0)
			HAVEMMX := 1
		endif
		SSE := $(shell grep -c '^flags.* sse2' /proc/cpuinfo)
		ifneq ($(SSE),0)
			HAVESSE := 1
		endif
	endif
endif

%:
	dh $@ --sourcedirectory=src --no-parallel

override_dh_auto_build:
	# building the selected target
	dh_auto_build -- clean $(TARGET)
ifeq ($(HAVEMMX),1)
	# renaming the non-mmx binary
	mv run/john run/john-non-mmx
	# building i386-mmx optimized binary
	dh_auto_build -- clean $(OS)-x86-mmx
endif
ifeq ($(HAVESSE),1)
	# renaming the non-sse2 binary
	mv run/john run/john-non-sse
	# building i386-sse2 optimized binary
	dh_auto_build -- clean $(OS)-x86-sse2
endif

override_dh_auto_install:
	# install the selected target
	dh_auto_install
	find . -name CREDITS -type f -exec \
	iconv -f ISO-8859-1 -t UTF-8 '{}' -o '{}'.utf8 \; -exec \
	mv -f '{}'.utf8 '{}' \;

	# install fallbacks as needed
ifeq ($(HAVEMMX),1)
	dh_install run/john-non-mmx /usr/lib/john
endif
ifeq ($(HAVESSE),1)
	dh_install run/john-non-sse /usr/lib/john
endif

override_dh_auto_clean:
	dh_auto_clean
	# script-not-executable
	chmod +x debian/extra/cronjob

override_dh_auto_test: