1
# FreeS/WAN master makefile
1
# Openswan master makefile
2
2
# Copyright (C) 1998-2002 Henry Spencer.
3
# Copyright (C) 2003-2004 Xelerance Corporation
4
5
# This program is free software; you can redistribute it and/or modify it
5
6
# under the terms of the GNU General Public License as published by the
11
12
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
13
# for more details.
14
# RCSID $Id: Makefile,v 1.238.2.1 2004/03/19 03:29:36 ken Exp $
17
FREESWANSRCDIR=$(shell pwd)
15
# RCSID $Id: Makefile,v 1.257 2004/12/10 21:20:12 ken Exp $
18
OPENSWANSRCDIR=$(shell pwd)
20
21
include Makefile.inc
40
41
KERNELREL=$(shell ${KVSHORTUTIL} ${KERNELSRC}/Makefile)
42
43
# directories visited by all recursion
43
45
SUBDIRS=doc lib programs linux testing
45
48
# declaration for make's benefit
46
49
.PHONY: def insert kpatch klink patches _patches _patches2.2 _patches2.4 \
47
50
klipsdefaults programs install clean distclean \
57
60
# dummy default rule
59
@echo "Please read doc/intro.html or INSTALL before running make"
62
# everything that's necessary to put Klips into the kernel
63
insert: patches klink klipsdefaults
62
@echo "Please read the README for detailed build instructions including how"
63
@echo "to enable NAT-T support for your kernel, if desired"
65
@echo "Commonly used build commands:"
67
@echo "Kernel 2.4: make KERNELSRC=/usr/src/linux-2.4 module minstall programs install"
68
@echo "Kernel 2.6: make programs install"
65
72
kpatch: unapplypatch applypatch klipsdefaults
68
-if [ -f ${KERNELSRC}/freeswan.patch ]; then \
75
-if [ -f ${KERNELSRC}/openswan.patch ]; then \
69
76
echo Undoing previous patches; \
70
cat ${KERNELSRC}/freeswan.patch | (cd ${KERNELSRC} && patch -p1 -R --force -E -z .preipsec --reverse --ignore-whitespace ); \
77
cat ${KERNELSRC}/openswan.patch | (cd ${KERNELSRC} && patch -p1 -R --force -E -z .preipsec --reverse --ignore-whitespace ); \
74
81
echo Now performing forward patches;
75
make kernelpatch${KERNELREL} | tee ${KERNELSRC}/freeswan.patch | (cd ${KERNELSRC} && patch -p1 -b -z .preipsec --forward --ignore-whitespace )
78
echo Comparing ${KERNELSRC} to ${FREESWANSRCDIR}/linux.
79
packaging/utils/kerneldiff ${KERNELSRC}
81
# create KERNELKLIPS and populate it with symlinks to the sources
83
-[ -L $(KERNELKLIPS)/ipsec_init.c ] && rm -rf ${KERNELKLIPS}
84
-[ -L $(KERNELCRYPTODES)/cbc_enc.c ] && rm -rf ${KERNELCRYPTODES}
85
-[ -L $(KERNELLIBFREESWAN)/subnettoa.c ] && rm -rf ${KERNELLIBFREESWAN}
86
-[ -L ${KERNELLIBZLIB}/deflate.c ] && rm -rf ${KERNELLIBZLIB}
87
-[ -L ${KERNELINCLUDE}/freeswan.h ] && for i in linux/include/*; do rm -f ${KERNELINCLUDE}/$$i; done
88
mkdir -p $(KERNELKLIPS)
89
mkdir -p $(KERNELCRYPTODES)
90
mkdir -p $(KERNELLIBFREESWAN)
91
mkdir -p $(KERNELLIBZLIB)
92
$(KLIPSLINK) `pwd`/Makefile.ver $(KERNELKLIPS)
93
$(KLIPSLINK) `pwd`/linux/include/* $(KERNELINCLUDE)
94
$(KLIPSLINK) `pwd`/linux/net/ipsec/Makefile* $(KERNELKLIPS)
95
$(KLIPSLINK) `pwd`/linux/net/ipsec/Config.in $(KERNELKLIPS)
96
$(KLIPSLINK) `pwd`/linux/net/ipsec/defconfig $(KERNELKLIPS)
97
$(KLIPSLINK) `pwd`/linux/net/ipsec/*.[ch] $(KERNELKLIPS)
98
$(KLIPSLINK) `pwd`/linux/lib/zlib/*.[ch] $(KERNELLIBZLIB)
99
$(KLIPSLINK) `pwd`/linux/lib/zlib/Makefile* $(KERNELLIBZLIB)
100
$(KLIPSLINK) `pwd`/linux/lib/libfreeswan/*.[ch] $(KERNELLIBFREESWAN)
101
$(KLIPSLINK) `pwd`/linux/lib/libfreeswan/Makefile* $(KERNELLIBFREESWAN)
102
$(KLIPSLINK) `pwd`/linux/crypto/ciphers/des/*.[chsS] $(KERNELCRYPTODES)
103
$(KLIPSLINK) `pwd`/linux/crypto/ciphers/des/Makefile* $(KERNELCRYPTODES)
104
sed '/"/s/xxx/$(IPSECVERSION)/' linux/lib/libfreeswan/version.in.c >$(KERNELKLIPS)/version.c
82
make kernelpatch${KERNELREL} | tee ${KERNELSRC}/openswan.patch | (cd ${KERNELSRC} && patch -p1 -b -z .preipsec --forward --ignore-whitespace )
107
85
PATCHER=packaging/utils/patcher
118
96
# Linux-2.0.x version
119
97
__patches __patches2.0:
120
98
@$(PATCHER) -v $(KERNELSRC) Documentation/Configure.help \
121
'CONFIG_IPSEC' $(PATCHES)/Documentation/Configure.help.fs2_0.patch
99
'CONFIG_KLIPS' $(PATCHES)/Documentation/Configure.help.fs2_0.patch
122
100
@$(PATCHER) -v $(KERNELSRC) net/Config.in \
123
'CONFIG_IPSEC' $(PATCHES)/net/Config.in.fs2_0.patch
101
'CONFIG_KLIPS' $(PATCHES)/net/Config.in.fs2_0.patch
124
102
@$(PATCHER) -v $(KERNELSRC) net/Makefile \
125
'CONFIG_IPSEC' $(PATCHES)/net/Makefile.fs2_0.patch
103
'CONFIG_KLIPS' $(PATCHES)/net/Makefile.fs2_0.patch
126
104
@$(PATCHER) -v $(KERNELSRC) net/ipv4/af_inet.c \
127
'CONFIG_IPSEC' $(PATCHES)/net/ipv4/af_inet.c.fs2_0.patch
105
'CONFIG_KLIPS' $(PATCHES)/net/ipv4/af_inet.c.fs2_0.patch
128
106
# Removed patches, will unpatch automatically.
129
107
@$(PATCHER) -v $(KERNELSRC) include/linux/proc_fs.h
130
108
@$(PATCHER) -v $(KERNELSRC) net/core/dev.c
137
115
PATCHES24=klips/patches2.3
139
117
@$(PATCHER) -v -c $(KERNELSRC) Documentation/Configure.help \
140
'CONFIG_IPSEC' $(PATCHES)/Documentation/Configure.help.fs2_2.patch
118
'CONFIG_KLIPS' $(PATCHES)/Documentation/Configure.help.fs2_2.patch
141
119
@$(PATCHER) -v $(KERNELSRC) net/Config.in \
142
'CONFIG_IPSEC' $(PATCHES)/net/Config.in.fs2_2.patch
120
'CONFIG_KLIPS' $(PATCHES)/net/Config.in.fs2_2.patch
143
121
@$(PATCHER) -v $(KERNELSRC) net/Makefile \
144
'CONFIG_IPSEC' $(PATCHES)/net/Makefile.fs2_2.patch
122
'CONFIG_KLIPS' $(PATCHES)/net/Makefile.fs2_2.patch
145
123
@$(PATCHER) -v $(KERNELSRC) net/ipv4/af_inet.c \
146
'CONFIG_IPSEC' $(PATCHES)/net/ipv4/af_inet.c.fs2_2.patch
124
'CONFIG_KLIPS' $(PATCHES)/net/ipv4/af_inet.c.fs2_2.patch
147
125
@$(PATCHER) -v $(KERNELSRC) net/ipv4/udp.c \
148
'CONFIG_IPSEC' $(PATCHES)/net/ipv4/udp.c.fs2_2.patch
126
'CONFIG_KLIPS' $(PATCHES)/net/ipv4/udp.c.fs2_2.patch
149
127
@$(PATCHER) -v $(KERNELSRC) include/net/sock.h \
150
'CONFIG_IPSEC' $(PATCHES)/include/net/sock.h.fs2_2.patch
128
'CONFIG_KLIPS' $(PATCHES)/include/net/sock.h.fs2_2.patch
151
129
# Removed patches, will unpatch automatically.
152
130
@$(PATCHER) -v $(KERNELSRC) include/linux/proc_fs.h
153
131
@$(PATCHER) -v $(KERNELSRC) net/core/dev.c
163
141
PATCHES22=klips/patches2.2
164
142
__patches2.3 __patches2.4:
165
143
@$(PATCHER) -v -c $(KERNELSRC) Documentation/Configure.help \
166
'CONFIG_IPSEC' $(PATCHES)/Documentation/Configure.help.fs2_2.patch
144
'CONFIG_KLIPS' $(PATCHES)/Documentation/Configure.help.fs2_2.patch
167
145
@$(PATCHER) -v $(KERNELSRC) net/Config.in \
168
'CONFIG_IPSEC' $(PATCHES)/net/Config.in.fs2_4.patch
146
'CONFIG_KLIPS' $(PATCHES)/net/Config.in.fs2_4.patch
169
147
@$(PATCHER) -v $(KERNELSRC) net/Makefile \
170
'CONFIG_IPSEC' $(PATCHES)/net/Makefile.fs2_4.patch
148
'CONFIG_KLIPS' $(PATCHES)/net/Makefile.fs2_4.patch
171
149
@$(PATCHER) -v $(KERNELSRC) net/ipv4/af_inet.c \
172
'CONFIG_IPSEC' $(PATCHES)/net/ipv4/af_inet.c.fs2_4.patch
150
'CONFIG_KLIPS' $(PATCHES)/net/ipv4/af_inet.c.fs2_4.patch
173
151
@$(PATCHER) -v $(KERNELSRC) net/ipv4/udp.c \
174
'CONFIG_IPSEC' $(PATCHES)/net/ipv4/udp.c.fs2_4.patch
152
'CONFIG_KLIPS' $(PATCHES)/net/ipv4/udp.c.fs2_4.patch
175
153
@$(PATCHER) -v $(KERNELSRC) include/net/sock.h \
176
'CONFIG_IPSEC' $(PATCHES)/include/net/sock.h.fs2_4.patch
154
'CONFIG_KLIPS' $(PATCHES)/include/net/sock.h.fs2_4.patch
177
155
# Removed patches, will unpatch automatically.
178
156
@$(PATCHER) -v $(KERNELSRC) include/linux/proc_fs.h
179
157
@$(PATCHER) -v $(KERNELSRC) net/core/dev.c
217
195
checkv199install:
218
if [ -f ${LIBDIR}/pluto ]; \
196
@if [ -f ${LIBDIR}/pluto ]; \
220
echo WARNING: FreeS/WAN 1.x or Openswan 1.x still installed. ;\
198
echo WARNING: Old version of FreeS/WAN Openswan 1.x installed. ;\
221
199
echo WARNING: moving ${LIBDIR} to ${LIBDIR}.v1 ;\
222
200
mv ${LIBDIR} ${LIBDIR}.v1 ;\
318
297
@if test ! -f $(KCFILE) ; \
319
298
then echo '*** no kernel configuration file written!!' ; exit 1 ; \
321
@if ! egrep -q '^CONFIG_IPSEC=[my]' $(KCFILE) ; \
300
@if ! egrep -q '^CONFIG_KLIPS=[my]' $(KCFILE) ; \
322
301
then echo '*** IPsec not in kernel config ($(KCFILE))!!' ; exit 1 ; \
324
@if ! egrep -q 'CONFIG_IPSEC[ ]+1' $(ACFILE) && \
325
! egrep -q 'CONFIG_IPSEC_MODULE[ ]+1' $(ACFILE) ; \
303
@if ! egrep -q 'CONFIG_KLIPS[ ]+1' $(ACFILE) && \
304
! egrep -q 'CONFIG_KLIPS_MODULE[ ]+1' $(ACFILE) ; \
326
305
then echo '*** IPsec in kernel config ($(KCFILE)),' ; \
327
306
echo '*** but not in config header file ($(ACFILE))!!' ; \
330
@if egrep -q '^CONFIG_IPSEC=m' $(KCFILE) && \
309
@if egrep -q '^CONFIG_KLIPS=m' $(KCFILE) && \
331
310
! egrep -q '^CONFIG_MODULES=y' $(KCFILE) ; \
332
311
then echo '*** IPsec configured as module in kernel with no module support!!' ; exit 1 ; \
334
@if ! egrep -q 'CONFIG_IPSEC_AH[ ]+1' $(ACFILE) && \
335
! egrep -q 'CONFIG_IPSEC_ESP[ ]+1' $(ACFILE) ; \
313
@if ! egrep -q 'CONFIG_KLIPS_AH[ ]+1' $(ACFILE) && \
314
! egrep -q 'CONFIG_KLIPS_ESP[ ]+1' $(ACFILE) ; \
336
315
then echo '*** IPsec configuration must include AH or ESP!!' ; exit 1 ; \
377
356
# module-only building, with error checks
378
357
ifneq ($(strip $(MODBUILDDIR)),)
379
${MODBUILDDIR}/Makefile : ${FREESWANSRCDIR}/packaging/makefiles/module.make
358
${MODBUILDDIR}/Makefile : ${OPENSWANSRCDIR}/packaging/makefiles/module.make
380
359
mkdir -p ${MODBUILDDIR}
381
cp ${FREESWANSRCDIR}/packaging/makefiles/module.make ${MODBUILDDIR}/Makefile
382
echo "# " >>${MODBUILDDIR}/Makefile
383
echo "# Local Variables: " >>${MODBUILDDIR}/Makefile
384
echo "# compile-command: \"${MAKE} FREESWANSRCDIR=${FREESWANSRCDIR} ARCH=${ARCH} ${MODULE_FLAGS} MODULE_DEF_INCLUDE=${MODULE_DEF_INCLUDE} ipsec.o\"" >>${MODBUILDDIR}/Makefile
385
echo "# End: " >>${MODBUILDDIR}/Makefile
360
cp ${OPENSWANSRCDIR}/packaging/makefiles/module.make ${MODBUILDDIR}/Makefile
361
echo "# " >> ${MODBUILDDIR}/Makefile
362
echo "# Local Variables: " >> ${MODBUILDDIR}/Makefile
363
echo "# compile-command: \"${MAKE} OPENSWANSRCDIR=${OPENSWANSRCDIR} ARCH=${ARCH} TOPDIR=${KERNELSRC} ${MODULE_FLAGS} MODULE_DEF_INCLUDE=${MODULE_DEF_INCLUDE} -f Makefile ipsec.o\"" >> ${MODBUILDDIR}/Makefile
364
echo "# End: " >> ${MODBUILDDIR}/Makefile
387
# clean out the linux/net/ipsec directory so that VPATH will work properly
388
366
module: ${MODBUILDDIR}/Makefile
389
${MAKE} -C linux/net/ipsec ${MODULE_FLAGS} MODULE_DEF_INCLUDE=${MODULE_DEF_INCLUDE} clean
390
${MAKE} -C ${MODBUILDDIR} ARCH=${ARCH} ${MODULE_FLAGS} MODULE_DEF_INCLUDE=${MODULE_DEF_INCLUDE} ipsec.o
367
${MAKE} -C ${MODBUILDDIR} OPENSWANSRCDIR=${OPENSWANSRCDIR} ARCH=${ARCH} ${MODULE_FLAGS} MODULE_DEF_INCLUDE=${MODULE_DEF_INCLUDE} TOPDIR=${KERNELSRC} -f Makefile ipsec.o
369
@echo '========================================================='
371
@echo 'KLIPS module built successfully. '
372
@echo ipsec.o is in ${MODBUILDDIR}
374
@(cd ${MODBUILDDIR}; ls -l ipsec.o)
375
@(cd ${MODBUILDDIR}; size ipsec.o)
377
@echo 'use make minstall as root to install it'
379
@echo '========================================================='
392
modclean: ${MODBUILDDIR}/Makefile
393
${MAKE} -C ${MODBUILDDIR} clean
383
rm -rf ${MODBUILDDIR}
395
385
# module-only install, with error checks
411
${MAKE} -C linux/net/ipsec ARCH=${ARCH} ${MODULE_FLAGS} MODULE_DEF_INCLUDE=${MODULE_DEF_INCLUDE} ipsec.o
414
${MAKE} -C linux/net/ipsec ARCH=${ARCH} ${MODULE_FLAGS} MODULE_DEF_INCLUDE=${MODULE_DEF_INCLUDE} clean
401
echo 'Building in place is no longer supported. Please set MODBUILDDIR='
406
# module-only building, with error checks
407
ifneq ($(strip $(MOD26BUILDDIR)),)
408
${MOD26BUILDDIR}/Makefile : ${OPENSWANSRCDIR}/packaging/makefiles/module26.make
409
mkdir -p ${MOD26BUILDDIR}
410
echo ln -s -f ${OPENSWANSRCDIR}/linux/net/ipsec/des/*.S ${MOD26BUILDDIR}
411
(rm -f ${MOD26BUILDDIR}/des; mkdir -p ${MOD26BUILDDIR}/des && cd ${MOD26BUILDDIR}/des && ln -s -f ${OPENSWANSRCDIR}/linux/net/ipsec/des/* . && ln -s -f Makefile.fs2_6 Makefile)
412
(rm -f ${MOD26BUILDDIR}/aes; mkdir -p ${MOD26BUILDDIR}/aes && cd ${MOD26BUILDDIR}/aes && ln -s -f ${OPENSWANSRCDIR}/linux/net/ipsec/aes/* . && ln -s -f Makefile.fs2_6 Makefile)
413
mkdir -p ${MOD26BUILDDIR}/aes
414
cp ${OPENSWANSRCDIR}/packaging/makefiles/module26.make ${MOD26BUILDDIR}/Makefile
415
echo "# " >> ${MOD26BUILDDIR}/Makefile
416
echo "# Local Variables: " >> ${MOD26BUILDDIR}/Makefile
417
echo "# compile-command: \"${MAKE} -C ${OPENSWANSRCDIR} ARCH=${ARCH} KERNELSRC=${KERNELSRC} MOD26BUILDDIR=${MOD26BUILDDIR} module26\"" >> ${MOD26BUILDDIR}/Makefile
418
echo "# End: " >> ${MOD26BUILDDIR}/Makefile
419
ln -s -f ${OPENSWANSRCDIR}/linux/net/ipsec/match*.S ${MOD26BUILDDIR}
421
module26: ${MOD26BUILDDIR}/Makefile
422
${MAKE} -C ${KERNELSRC} ${KERNELBUILDMFLAGS} BUILDDIR=${MOD26BUILDDIR} SUBDIRS=${MOD26BUILDDIR} MODULE_DEF_INCLUDE=${MODULE_DEF_INCLUDE} ARCH=${ARCH} modules
424
@echo '========================================================='
426
@echo 'KLIPS26 module built successfully. '
427
@echo ipsec.ko is in ${MOD26BUILDDIR}
429
@(cd ${MOD26BUILDDIR}; ls -l ipsec.ko)
430
@(cd ${MOD26BUILDDIR}; size ipsec.ko)
432
@echo 'use make m26install as root to install it'
434
@echo '========================================================='
437
mod26clean module26clean:
438
rm -rf ${MOD26BUILDDIR}
416
440
# module-only install, with error checks
418
( FSMODLIB=`make -C $(KERNELSRC) -p dummy | ( sed -n -e '/^MODLIB/p' -e '/^MODLIB/q' ; cat > /dev/null ) | sed -e 's/^MODLIB[ :=]*\([^;]*\).*/\1/'` ; \
442
( FSMODLIB=`make -C $(KERNELSRC) -p help | ( sed -n -e '/^MODLIB/p' -e '/^MODLIB/q' ; cat > /dev/null ) | sed -e 's/^MODLIB[ :=]*\([^;]*\).*/\1/'` ; \
419
443
if [ -z "$$FSMODLIB" ] ; then \
420
444
FSMODLIB=`make -C $(KERNELSRC) -n -p modules_install | ( sed -n -e '/^MODLIB/p' -e '/^MODLIB/q' ; cat > /dev/null ) | sed -e 's/^MODLIB[ :=]*\([^;]*\).*/\1/'` ; \
560
590
@echo "Moving ipsec.o into temporary location..."
561
591
KV=$(shell ${KVUTIL} ${KERNELSRC}/Makefile) && \
562
mkdir -p $(FREESWANSRCDIR)/packaging/ipkg/kernel-module/lib/modules/$$KV/net/ipsec
592
mkdir -p $(OPENSWANSRCDIR)/packaging/ipkg/kernel-module/lib/modules/$$KV/net/ipsec
563
593
KV=$(shell ${KVUTIL} ${KERNELSRC}/Makefile) && \
564
cp linux/net/ipsec/ipsec.o $(FREESWANSRCDIR)/packaging/ipkg/kernel-module/lib/modules/$$KV/net/ipsec/
594
cp linux/net/ipsec/ipsec.o $(OPENSWANSRCDIR)/packaging/ipkg/kernel-module/lib/modules/$$KV/net/ipsec/
565
595
KV=$(shell ${KVUTIL} ${KERNELSRC}/Makefile)
568
rm -rf $(FREESWANSRCDIR)/packaging/ipkg/kernel-module/
569
rm -rf $(FREESWANSRCDIR)/packaging/ipkg/ipkg/
570
rm -f $(FREESWANSRCDIR)/packaging/ipkg/control-freeswan
571
rm -f $(FREESWANSRCDIR)/packaging/ipkg/control-freeswan-module
574
ipkg: programs install ipkg_strip ipkg_module
598
rm -rf $(OPENSWANSRCDIR)/packaging/ipkg/kernel-module/
599
rm -rf $(OPENSWANSRCDIR)/packaging/ipkg/ipkg/
600
rm -f $(OPENSWANSRCDIR)/packaging/ipkg/control-freeswan
601
rm -f $(OPENSWANSRCDIR)/packaging/ipkg/control-freeswan-module
604
ipkg: programs install ipkg_strip
575
606
@echo "Generating ipkg...";
576
DESTDIR=${DESTDIR} FREESWANSRCDIR=${FREESWANSRCDIR} ARCH=${ARCH} IPSECVERSION=${IPSECVERSION} ./packaging/ipkg/generate-ipkg
607
DESTDIR=${DESTDIR} OPENSWANSRCDIR=${OPENSWANSRCDIR} ARCH=${ARCH} IPSECVERSION=${IPSECVERSION} ./packaging/ipkg/generate-ipkg