1# zxid/Makefile  -  How to build ZXID (try: make help)
2# Copyright (c) 2012-2016 Synergetics NV (sampo@synergetics.be), All Rights Reserved.
3# Copyright (c) 2010-2011 Sampo Kellomaki (sampo@iki.fi), All Rights Reserved.
4# Copyright (c) 2006-2009 Symlabs (symlabs@symlabs.com), All Rights Reserved.
5# Author: Sampo Kellomaki (sampo@iki.fi)
6# This is confidential unpublished proprietary source code of the author.
7# NO WARRANTY, not even implied warranties. Contains trade secrets.
8# Distribution prohibited unless authorized in writing.
9# Licensed under Apache License 2.0, see file COPYING.
10# $Id: Makefile,v 1.154 2010-01-08 02:10:09 sampo Exp $
11# 15.10.2006, refactor sources to be per namespace --Sampo
12# 19.1.2006, added new zxid_simple() / Hello World targets and JNI --Sampo
13# 26.2.2007, tweaks for the great SOAP merger, WSC support --Sampo
14# 3.3.2007,  added many service schemata --Sampo
15# 22.2.2008, added mod_auth_saml --Sampo
16# 14.4.2008, added SAML POST-SimpleSign binding and Orange APIs --Sampo
17# 25.8.2009, added improvements from TAS3 workshop in Lisbon --Sampo
18# 29.8.2009, merged in smime support --Sampo
19# 15.9.2009, added TAS3 packaging --Sampo
20# 14.11.2009, added yubikey support --Sampo
21# 12.2.2010, added pthread support --Sampo
22# 25.2.2010, added gcov support --Sampo
23# 15.9.2010, major hacking to support win32cl (MSVC cl compiler, link (ld), and lib (ar) --Sampo
24# 6.2.2012,  improved multiple config support --Sampo
25# 16.8.2012, added zxbusd build --Sampo
26# 16.4.2013, added diet64 statically linked targets --Sampo
27# 21.6.2013, added mini_httpd --Sampo
28# 4.11.2013, reformed the TARGET system; include and lib paths per Debian --Sampo
29# 21.11.2013, added zxid_httpd --Sampo
30# 9.2.2014,  added musl-libc compile --Sampo
31# 29.5.2015  upgraded the version due to addition of two factor authentication --Sampo
32#
33# Build so far only tested on Linux, Solaris 8, MacOS 10.3, and mingw-w64. This
34# makefile needs gmake-3.78 or newer.
35# (See dietlibc (fefe.de) Makefile for some useful wizardry.)
36# Try `make help'
37#
38# N.B. Before you edit this file, consider overriding select options in
39#      localconf.mk (see below for details).
40#
41# gcc's '-ffunction-sections' + '-fdata-sections' options. (dead code elimn.)
42
43vpath %.c ../zxid
44vpath %.h ../zxid
45
46### This is the authorative spot to set version number. Document in Changes file.
47### c/zxidvers.h is generated from these, see `make updatevers'
48ZXIDVERSION=0x000142
49ZXIDREL=1.42
50
51TOP=$(shell pwd)
52
53### Where package is installed (use `make PREFIX=/your/path' to change)
54PREFIX=/var/zxid/$(ZXIDREL)
55
56### Where runtime configuration and temporary data is kept.
57### If you change the following, be sure to edit zxidconf.h as
58### well. N.B. Trailing / (forward slash) is needed.
59ZXID_PATH=/var/zxid/
60
61###
62### Module selection options (you should enable all, unless building embedded)
63###
64
65ENA_SSO=1
66ENA_SAML2=1
67ENA_FF12=1
68ENA_SAML11=1
69ENA_WSF=1
70ENA_WSF2=1
71ENA_WSF11=1
72ENA_XACML2=1
73ENA_WST=1
74ENA_ZXID_HTTPD=1
75ENA_SMIME=1
76ENA_TAS3=1
77
78### You may supply additional defines on command line.
79###   make CDEF='-DZXID_CONF_PATH="/opt/zxid/zxid.conf"'
80
81# Advise other software, such as mini_httpd, to use ZXID specific features
82CDEF+= -DUSE_ZXID -DUSE_SSL
83# Without cURL the Artifact Profile, WSC, and metadata fetch features are disabled.
84CDEF+= -DUSE_CURL
85# Without OpenSSL signing and signature verification are not possible
86CDEF+= -DUSE_OPENSSL
87
88### The CDEF variable can be later overridden or modified in
89### one of the target sections or after all in localconf.mk
90### The CDEF is used for dependency computation. For actual
91### compilation it is added to CFLAGS.
92
93### Environment dependent options and dependency packages.
94### The default values are according to their usual locations
95### in Ubuntu and Debian based Linux distributions.
96
97# Try find / -name ap_config.h; find / -name apr.h; find / -name mod_auth_basic.so
98# apt-get install libapr1-dev
99# apt-get install apache2-dev
100APACHE_INC ?= -I/usr/include/apache2
101APR_INC    ?= -I/usr/include/apr-1.0
102APACHE_MODULES ?= /usr/lib/apache2/modules
103DIET_ROOT?=/usr/local/dietlibc-0.33
104PHP_CONFIG?=php-config
105CSHARP_CONFIG?=true
106PY_CONFIG?=true
107RUBY_CONFIG?=true
108
109###
110### Java options (watch out javac running out of heap)
111###
112
113JAR?=jar
114JAVAC?=javac
115JAVAC_FLAGS?=-J-Xmx128m -classpath . -g
116ZXIDJNI_SO?=zxidjava/libzxidjni.so
117# JNI library name is very platform dependent (see macosx and mingw)
118# find / -name jni.h; find / -name jni_md.h
119# apt-get install openjdk-6-jdk
120#JNI_INC?=-I/usr/java/include -I/usr/java/include/linux
121#JNI_INC?=-I/usr/lib/jvm/java-6-openjdk/include -I/usr/lib/jvm/java-6-openjdk/include/linux
122JNI_INC?=-I/usr/lib/jvm/java-6-openjdk-amd64/include -I/usr/lib/jvm/java-6-openjdk-amd64/include/linux
123#JNI_INC?=-I/usr/lib/jvm/java-6-openjdk-i386/include -I/usr/lib/jvm/java-6-openjdk-i386/include/linux
124#JNI_INC?=-I/usr/lib/jvm/java-6-openjdk-amd64/include -I/usr/lib/jvm/java-6-openjdk-amd64/include/linux
125# Path where HttpServlet supplied by your application server resides
126# find / -name 'servlet*api*.jar'
127# sudo apt-get install tomcat6
128SERVLET_PATH=/usr/share/tomcat6/lib/servlet-api.jar
129#SERVLET_PATH=../apache-tomcat-5.5.20/common/lib/servlet-api.jar
130#SERVLET_PATH=../apache-tomcat-6.0.18/lib/servlet-api.jar
131
132### You may supply additional include paths on command line.
133### For example if you compiled the openssl and libcurl from original
134### sources, you might specify:
135###   make CINC='-I/usr/local/include -I/usr/local/ssl/include'
136CINC+=-I. -I$(TOP)
137### This CINC variable can be later overridden or modified in
138### localconf.mk or in one of the target sections. The CINC is
139### used for dependency computation. For actual compilation it
140### is added to CFLAGS.
141
142### You may supply additional libs and library paths from the command line.
143### For example if you compiled the openssl and libcurl from original
144### sources, you might specify:
145###   make LIBS='-L/usr/local/lib -L/usr/local/ssl/lib'
146### If you need some special platform dependent libraries afterwards,
147### supply them using POSTLIBS, e.g.
148###   make POSTLIBS='-lxnet -lsocket'
149LIBS+= -lcurl -lssl -lcrypto -lz $(POSTLIBS)
150#LIBS+= -lpthread -static -lcurl -lssl -lcrypto -lz -dynamic
151#LIBS+= -lidn -lrt
152#LIBS+= -ldl
153### This LIBS variable can be later overridden or modified in
154### localconf.mk or in one of the target sections.
155
156### Where commands for build are found (override for cross compiler or Windows)
157
158#CC=ccache gcc
159CC=gcc
160# If you want to override LD setting you must supply LD_ALT on command line or use localconf.mk
161LD_ALT?=$(CC)
162LD=$(LD_ALT)
163ARC?=ar -crs
164ARX?=ar -x
165STRIP?=strip
166GCOV?=gcov
167LCOV?=lcov
168ECHO?=echo
169CP?=cp
170PERL?=perl
171XSD2SG_PL?= ../pd/xsd2sg.pl
172XSD2SG?=$(PERL) $(XSD2SG_PL)
173PD2TEX_PL?= ../pd/pd2tex
174PD2TEX?=$(PERL) $(PD2TEX_PL)
175PULVERIZE=$(PERL) ./pulverize.pl
176GPERF?=gperf
177SWIG?=swig
178GENHTML?=genhtml
179
180#SHARED_FLAGS=-shared --export-all-symbols -Wl,--whole-archive -Wl,--allow-multiple-definition
181# --export-all-symbols does not seem to work on gcc-4.6.1... try -Wl,--export-dynamic instead
182SHARED_FLAGS=-shared -Wl,--export-dynamic -Wl,--whole-archive -Wl,--allow-multiple-definition
183SHARED_CLOSE=-Wl,--no-whole-archive
184### Form CFLAGS from its components
185CDEF+= -D_REENTRANT -DDEBUG
186CDEF+= -DMUTEX_DEBUG=1
187CFLAGS+= -g -fPIC -fno-strict-aliasing
188#CFLAGS += -Os    # gcc-3.4.6 miscompiles with -Os on ix86 (2010 --Sampo)
189CFLAGS+= -fmessage-length=0
190CFLAGS+= -Wall -Wno-parentheses -Wno-unused-label -Wno-unknown-pragmas -Wno-char-subscripts
191#LDFLAGS += -Wl,--gc-sections
192LIBZXID_A?=libzxid.a
193LIBZXID?=-L. -lzxid
194PLATFORM_OBJ?=
195OUTOPT?=-o
196OBJ_EXT?=o
197EXE?=
198SO?=.so
199
200ifeq ($(ENA_PG),1)
201### To compile for profiling your should run make ENA_PG=1
202### See also: make gcov, make lcov (and lcovhtml directory), man gcov, man gprof
203### N.B. ccache seems to be incompatible with profiling.
204$(info Profiling build)
205CFLAGS+= -pg -ftest-coverage -fprofile-arcs
206LDFLAGS+= -pg -ftest-coverage -fprofile-arcs
207else
208# -ffunction-sections is incompatible with profiling
209CFLAGS+= -ffunction-sections -fdata-sections
210# Following ld flags as well as C flag -ffunction-sections are a quest to
211# eliminate unused functions from final link.
212#LDFLAGS= -Wl,-O -Wl,2 --gc-sections
213endif
214
215####################################################################
216### Platform dependent options (choose one with `make TARGET=foo')
217###
218
219ifeq ($(TARGET),)
220# Target guesser (only works for native builds and only of output of uname is the target name)
221TARGET=$(shell uname)
222$(warning Guessed TARGET=$(TARGET))
223endif
224
225ifeq ($(TARGET),Linux)
226### Flags for Linux 2.6 native compile (gcc + gnu binutils)
227CDEF+=-DLINUX
228# Using PTHREAD helps to avoid problems in multithreaded programs, such as Java servlets
229CDEF+= -DUSE_PTHREAD -pthread
230ifeq ($(DISTRO),fedora)
231CDEF+=-DFEDORA
232endif
233LIBS+=-lpthread
234SO_LIBS+=$(LIBS)
235# Marks that target has been detected
236TARGET_FOUND=1
237endif
238
239ifeq ($(TARGET),diet-linux)
240CROSS_COMPILE=1
241DIETDIR=/usr/local/dietlibc-0.33
242CC=$(DIETDIR)/bin/diet gcc
243LD=$(DIETDIR)/bin/diet gcc
244CDEF+=-DLINUX
245# Using PTHREAD helps to avoid problems in multithreaded programs, such as Java servlets
246CDEF+= -DUSE_PTHREAD -pthread
247CINC= -I. -I$(DIETDIR)/include
248# -fno-stack-protector is needed to eliminate unwanted function plrologue code that causes segv
249CFLAGS+= -fno-stack-protector
250LDFLAGS= -L$(DIETDIR)/lib-i386 -L$(DIETDIR)/lib
251LIBS+=-lpthread
252# Marks that target has been detected
253TARGET_FOUND=1
254endif
255
256ifeq ($(TARGET),musl-linux)
257CROSS_COMPILE=1
258MUSLDIR=/usr/local/musl-0.9.15
259CC=$(MUSLDIR)/bin/musl-gcc
260LD=$(MUSLDIR)/bin/musl-gcc
261CDEF+=-DLINUX
262# Using PTHREAD helps to avoid problems in multithreaded programs, such as Java servlets
263CDEF+= -DUSE_PTHREAD -pthread
264CINC= -I. -I$(MUSLDIR)/include
265# -fno-stack-protector is needed to eliminate unwanted function plrologue code that causes segv
266CFLAGS+= -fno-stack-protector
267LDFLAGS= -L$(MUSLDIR)/lib-i386 -L$(MUSLDIR)/lib
268LIBS+=-lpthread
269# Marks that target has been detected
270TARGET_FOUND=1
271endif
272
273ifeq ($(TARGET),xsol8)
274### Cross compilation for Solaris 8 target (on Linux host). Invoke as `make TARGET=xsol8'
275# You must have the cross compiler installed in /apps/gcc/sol8 and in path. Similarily
276# the cross binutils must be in path.
277#    export PATH=/apps/gcc/sol8/bin:/apps/binutils/sol8/bin:$PATH
278
279SYSROOT=/apps/gcc/sol8/sysroot
280CROSS_COMPILE=1
281CC=sparc-sun-solaris2.8-gcc
282LD=sparc-sun-solaris2.8-gcc
283CDEF+=-DSUNOS -DBYTE_ORDER=4321 -DBIG_ENDIAN=4321
284# Using PTHREAD helps to avoid problems in multithreaded programs, such as Java servlets
285CDEF+= -DUSE_PTHREAD -pthread
286LIBS+=-lxnet -lsocket
287SO_LIBS+=$(LIBS)
288TARGET_FOUND=1
289endif
290
291ifeq ($(TARGET),sol8)
292### Flags for Solaris 8 native compile (with gc and gnu binutils) (BIG_ENDIAN BYTE_ORDER)
293CDEF+=-DSUNOS -DBYTE_ORDER=4321 -DBIG_ENDIAN=4321 -I/opt/sfw/include -I/usr/sfw/include
294# Using PTHREAD helps to avoid problems in multithreaded programs, such as Java servlets
295CDEF+= -DUSE_PTHREAD -pthread
296LIBS=-R/opt/sfw/lib -R/usr/sfw/lib -lcurl -lssl -lcrypto -lz -lxnet -lsocket
297SO_LIBS+=$(LIBS)
298SHARED_FLAGS=-shared --export-all-symbols -Wl,-z -Wl,allextract
299SHARED_CLOSE=-Wl,-z -Wl,defaultextract
300TARGET_FOUND=1
301endif
302
303ifeq ($(TARGET),sol8x86)
304# Flags for Solaris 8/x86 native compile (with gc and gnu binutils) (LITTLE_ENDIAN BYTE_ORDER)
305CDEF+=-DSUNOS -DBYTE_ORDER=1234 -I/opt/sfw/include -I/usr/sfw/include
306# Using PTHREAD helps to avoid problems in multithreaded programs, such as Java servlets
307CDEF+= -DUSE_PTHREAD -pthread
308LIBS=-R/opt/sfw/lib -R/usr/sfw/lib -lcurl -lssl -lcrypto -lz  -lxnet -lsocket
309SO_LIBS+=$(LIBS)
310SHARED_FLAGS=-shared --export-all-symbols -Wl,-z -Wl,allextract
311SHARED_CLOSE=-Wl,-z -Wl,defaultextract
312endif
313
314ifeq ($(TARGET),macosx)
315#### Flags for MacOS 10 / Darwin native compile (gcc + Apple linker)
316#   alias ldd='otool -L'
317#   alias strace=ktrace or dtrace or dtruss
318CFLAGS=-g -fPIC -fmessage-length=0 -Wno-unused-label -Wno-unknown-pragmas -fno-strict-aliasing -DMAYBE_UNUSED=''
319CDEF+=-DMACOSX
320# Using PTHREAD helps to avoid problems in multithreaded programs, such as Java servlets
321CDEF+= -DUSE_PTHREAD -pthread
322JNI_INC=-I/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Headers
323SHARED_FLAGS=-dylib -all_load -bundle
324SHARED_CLOSE=
325SO_LIBS+=$(LIBS)
326ZXIDJNI_SO=zxidjava/libzxidjni.jnilib
327#SHARED_FLAGS=-dylib -all_load -keep_private_externs
328#OPENSSL_ROOT=/Developer/SDKs/MacOSX10.4u.sdk/usr
329#CURL_ROOT=/Developer/SDKs/MacOSX10.4u.sdk/usr
330# Try find / -name ap_config.h; find / -name apr.h
331APACHE_INC = -I/Developer/SDKs/MacOSX10.6.sdk/usr/include/apache2
332APR_INC    = -I/Developer/SDKs/MacOSX10.6.sdk/usr/include/apr-1
333APACHE_MODULES = /usr/libexec/apache2
334MOD_AUTH_SAML_LIBS=-lapr-1
335#  -lhttpd2core
336TARGET_FOUND=1
337endif
338
339ifeq ($(TARGET),FreeBSD)
340# Some freebsd guesses result "FreeBSD" so we map it to "freebsd"
341TARGET=freebsd
342endif
343ifeq ($(TARGET),freebsd)
344### Putative flags for Freebsd compile
345CDEF+=-DFREEBSD
346# Using PTHREAD helps to avoid problems in multithreaded programs, such as Java servlets
347CDEF+= -DUSE_PTHREAD -pthread
348LIBS+=-lpthread
349SO_LIBS+=$(LIBS)
350TARGET_FOUND=1
351endif
352
353ifeq ($(TARGET),CYGWIN_NT-6.1)
354TARGET=cygwin
355endif
356
357ifeq ($(TARGET),cygwin)
358### Native Windows build using Cygwin environment and gcc
359CDEF+=-DCYGWIN -DUSE_LOCK=dummy_no_flock -DCURL_STATICLIB -DLOCK_UN=0
360MOD_AUTH_SAML_LIBS=-lapr-1 -lhttpd2core
361SO_LIBS+=$(LIBS)
362TARGET_FOUND=1
363endif
364
365ifeq ($(TARGET),mingw)
366### These options work with late 2010 vintage mingw (x86-mingw32-build-1.0-sh.tar.bz2?)
367CP=ln
368ZXID_PATH=/c/zxid/
369EXE=.exe
370SO=.dll
371PRECHECK_PREP=precheck_prep_win
372CDEF+=-DMINGW -DUSE_LOCK=dummy_no_flock -DCURL_STATICLIB -DUSE_PTHREAD
373SO_LIBS= -L/mingw/lib -lcurl -lssl -lcrypto -lz -lssh2 -lidn -lwldap32 -lgdi32 -lwsock32 -lwinmm -lkernel32 -lz
374LIBS= -mconsole $(SO_LIBS) -lpthread
375# --dll  -mdll
376SHARED_FLAGS= -mdll -Wl,--add-stdcall-alias -static -Wl,--export-all-symbols -Wl,--whole-archive -Wl,-no-undefined -Wl,--enable-runtime-pseudo-reloc -Wl,--allow-multiple-definition
377CFLAGS=-g -fmessage-length=0 -Wno-unused-label -Wno-unknown-pragmas -fno-strict-aliasing -mno-cygwin -D'ZXID_PATH="$(ZXID_PATH)"'
378#JNI_INC=-I"C:/Program Files/Java/jdk1.5.0_14/include" -I"C:/Program Files/Java/jdk1.5.0_14/include/win32"
379JNI_INC=-I"/cygdrive/c/Program Files (x86)/Java/jdk1.7.0_21/include/" -I"/cygdrive/c/Program Files (x86)/Java/jdk1.7.0_21/include/win32/"
380ZXIDJNI_SO=zxidjava/zxidjni.dll
381ifeq ($(SHARED),1)
382LIBZXID=-L. -lzxiddll
383endif
384TARGET_FOUND=1
385endif
386
387ifeq ($(TARGET),xmingw)
388### Cross compilation for MINGW 32bit target (on Linux host).
389# Invoke as `make zxid.dll TARGET=xmingw'
390# You must have the cross compiler installed in /apps/gcc/mingw and in
391# path. Similarily the cross binutils must be in path.
392#    export PATH=/apps/gcc/mingw/bin:/apps/binutils/mingw/bin:$PATH
393#
394# For best results use the same cross compiler for compiling the dependency
395# libraries like curl, openssl, and zlib. Furthermore: your cross compiler
396# should be for MinGW target, not for Cygwin (i.e. default compiler of Cygwin
397# may have trouble due to linking against cygwin dependent libraries).
398#
399# Cross compiling curl
400#   CPPFLAGS='-I/apps/gcc/mingw/sysroot/include' LDFLAGS='-L/apps/gcc/mingw/sysroot/lib' LIBS='-lz' ./configure --prefix=/usr --with-ssl=/apps/gcc/mingw/sysroot --without-gnutls --enable-thread --enable-nonblocking --host=i586-pc-mingw32 --with-random=/random.txt --disable-shared --enable-static
401#   # Despite apparent misdetection of ar, the compile finishes
402#   make
403#   cp lib/.libs/libcurl* /apps/gcc/mingw/sysroot/lib
404#   cp -r include/curl/ /apps/gcc/mingw/sysroot/include
405#
406# Symbol hunting
407#   undefined reference to `WinMain@16'               --> add -Wl,--no-whole-archive after all libs
408#   undefined reference to `_imp__curl_easy_setopt'   --> compile with -DCURL_STATICLIB
409#   undefined reference to `_imp__curl_easy_strerror' --> compile with -DCURL_STATICLIB
410#   undefined reference to `timeGetTime@0'            --> add -lwinmm
411
412MINGWDIR=/apps/gcc/mingw
413SYSROOT=$(MINGWDIR)/sysroot
414CROSS_COMPILE=1
415EXE=.exe
416SO=.dll
417CC=$(MINGWDIR)/bin/i586-pc-mingw32-gcc
418LD=$(MINGWDIR)/bin/i586-pc-mingw32-gcc
419ARC=/apps/binutils/mingw/bin/i586-pc-mingw32-ar -crs
420ARX=/apps/binutils/mingw/bin/i586-pc-mingw32-ar -x
421PRECHECK_PREP=precheck_prep_win
422#CDEF+=-DMINGW -DUSE_LOCK=flock -DCURL_STATICLIB
423CDEF+=-DMINGW -DUSE_LOCK=dummy_no_flock -DCURL_STATICLIB -DUSE_PTHREAD
424# All dependency libraries are assumed to be in the mingw environment
425CINC=-I. -I$(TOP) -I$(SYSROOT)/include
426APACHE_INC = -I$(SYSROOT)/include
427APR_INC    = -I$(SYSROOT)/srclib/apr-util/include
428ZXIDJNI_SO=zxidjava/zxidjni.dll
429ifeq ($(SHARED),1)
430LIBZXID=-L. -lzxiddll
431endif
432# -lws2_32  -lmingw32  -u _imp__curl_easy_setopt -u _imp__curl_easy_strerror
433SO_LIBS= -L$(SYSROOT)/lib -lcurl -lssl -lcrypto -lz -lwinmm -lwsock32 -lgdi32 -lkernel32
434LIBS= -mconsole $(SO_LIBS)
435# --dll  -mdll
436#SHARED_FLAGS=-shared --export-all-symbols -Wl,--whole-archive -Wl,-no-undefined -Wl,--enable-runtime-reloc -Wl,--whole-archive
437SHARED_FLAGS= -shared -Wl,--add-stdcall-alias --export-all-symbols -Wl,--whole-archive -Wl,-no-undefined -Wl,--enable-runtime-pseudo-reloc -Wl,--allow-multiple-definition
438CFLAGS=-g -fmessage-length=0 -Wno-unused-label -Wno-unknown-pragmas -fno-strict-aliasing -mno-cygwin
439
440# java.lang.UnsatisfiedLinkError: Given procedure could not be found
441# -mno-cygwin -mrtd -Wl,--kill-at -Wl,--add-stdcall-alias
442# http://www.inonit.com/cygwin/jni/helloWorld/c.html
443# http://www.1702.org/jniswigdll.html
444# http://maba.wordpress.com/2004/07/28/generating-dll-files-for-jni-under-windowscygwingcc/
445
446#/apps/gcc/mingw/bin/i586-pc-mingw32-gcc -o zxid.dll -Wl,--add-stdcall-alias -shared --export-all-symbols -Wl,-whole-archive -Wl,-no-undefined -Wl,--enable-runtime-pseudo-reloc -Wl,--allow-multiple-definition -Wl,--output-def,zxid.def,--out-implib,zxidimp.lib libzxid.a -Wl,-no-whole-archive -L/apps/gcc/mingw/sysroot/lib -L/apps/gcc/mingw/sysroot/lib -lcurl -lssl -lcrypto -lz -lwinmm -lwsock32 -lgdi32 -lkernel32 -mdll
447#i586-pc-mingw32-gcc: shared and mdll are not compatible
448#make: *** [zxid.dll] Error 1
449# remove the -shared flag and it compiles
450TARGET_FOUND=1
451endif
452
453ifeq ($(TARGET),xmingw64)
454### Cross compilation for MINGW64 target (on Linux host).
455# Invoke as `make zxid.dll TARGET=xmingw64'
456# You must have the cross compiler installed. You can get one from
457# http://mingw-w64.sourceforge.net/download.php
458#
459# For best results use the same cross compiler for compiling the dependency
460# libraries like curl, openssl, and zlib. Furthermore: your cross compiler
461# should be for MinGW target, not for Cygwin (i.e. default compiler of Cygwin
462# may have trouble due to linking against cygwin dependent libraries).
463#
464# Cross compiling zlib
465#     export PATH=/apps/mingw/mingw-w64-bin_i686-linux_20130523/bin:$PATH
466#     ./configure --prefix=/mingw
467#     CC=x86_64-w64-mingw32-gcc LD=x86_64-w64-mingw32-ld AR=x86_64-w64-mingw32-ar RANLIB=x86_64-w64-mingw32-gcc-ranlib make -e
468#     cp libz.a /apps/mingw/3.0.0-w64/mingw/lib
469#     cp zlib.h zconf.h /apps/mingw/3.0.0-w64/mingw/include
470#
471# Cross compiling openssl
472#     ./Configure --prefix=/mingw --cross-compile-prefix=x86_64-w64-mingw32- enable-rc5 enable-mdc2 zlib mingw64-cross-debug -I/apps/mingw/3.0.0-w64/x86_64-w64-mingw32/include
473#     #make depend   # error, apparently not needed
474#     make
475#     # If you have syntax errors with string "<symlink>" then eliminate
476#     # symlinks from include/openssl by copying the files directly there.
477#     #make test     # not doable since openssl.exe will not execute on Linux
478#     cp -Lr include/openssl /apps/mingw/3.0.0-w64/mingw/include
479#     cp libssl.a libcrypto.a /apps/mingw/3.0.0-w64/mingw/lib
480#     cp apps/openssl.exe /apps/mingw/3.0.0-w64/mingw/bin-w64
481#
482# Cross compiling curl
483#     CPPFLAGS='-I/apps/mingw/3.0.0-w64/mingw/include' LDFLAGS='-L/apps/mingw/3.0.0-w64/mingw/lib' LIBS='-lz' ./configure --prefix=/mingw --with-ssl=/apps/mingw/3.0.0-w64/mingw --without-gnutls -enable-debug --enable-thread --enable-nonblocking --host=x86_64-w64-mingw32 --with-random=/random.txt --disable-shared --enable-static
484#     make
485#     cp lib/.libs/libcurl* /apps/mingw/3.0.0-w64/mingw/lib
486#     cp -r include/curl/ /apps/mingw/3.0.0-w64/mingw/include
487#     cp src/curl.exe /apps/mingw/3.0.0-w64/mingw/bin-w64
488#
489# Fix illegal relocation error on linking libws2_32.a
490# wget http://www.dependencywalker.com/depends22_x86.zip
491# dependes.exe /c /? zxid_httpd.exe
492# psutils
493
494# MinGW-W64 Runtime 3.0 (alpha - rev. 5871) 2013-05-21
495MINGWDIR=/apps/mingw/mingw-w64-bin_i686-linux_20130523
496SYSROOT=$(MINGWDIR)/x86_64-w64-mingw32
497CROSS_COMPILE=1
498EXE=.exe
499SO=.dll
500CC=$(MINGWDIR)/bin/x86_64-w64-mingw32-gcc
501LD=$(MINGWDIR)/bin/x86_64-w64-mingw32-gcc
502ARC=$(MINGWDIR)/bin/x86_64-w64-mingw32-ar -crs
503ARX=$(MINGWDIR)/bin/x86_64-w64-mingw32-ar -x
504STRIP=$(MINGWDIR)/bin/x86_64-w64-mingw32-strip
505PRECHECK_PREP=precheck_prep_win
506#CDEF+=-DMINGW -DUSE_LOCK=flock -DCURL_STATICLIB
507CDEF+=-DMINGW -DUSE_LOCK=dummy_no_flock -DCURL_STATICLIB -DUSE_PTHREAD
508# All dependency libraries are assumed to be in the mingw environment
509CINC=-I. -I$(TOP) -I$(SYSROOT)/include
510APACHE_INC = -I$(SYSROOT)/include/apache2
511APR_INC    = -I$(SYSROOT)/include/apr-1
512JNI_INC=-I$(SYSROOT)/include
513ZXIDJNI_SO=zxidjava/zxidjni.dll
514ifeq ($(SHARED),1)
515LIBZXID=-L. -lzxiddll
516endif
517# -lws2_32 -lwldap32 -lmingw64 -lcrtdll -u _imp__curl_easy_setopt -u _imp__curl_easy_strerror
518SO_LIBS= -L$(SYSROOT)/lib -lcurl -lssl -lcrypto -lz -lws2_32 -lwldap32 -lcrypt32 -lwinmm -lwsock32 -lgdi32 -lkernel32
519LIBS= -mconsole $(SO_LIBS)
520# --dll  -mdll
521#SHARED_FLAGS=-shared --export-all-symbols -Wl,--whole-archive -Wl,-no-undefined -Wl,--enable-runtime-reloc -Wl,--whole-archive
522SHARED_FLAGS= -shared -Wl,--add-stdcall-alias -Wl,--whole-archive -Wl,-no-undefined -Wl,--enable-runtime-pseudo-reloc -Wl,--allow-multiple-definition
523CFLAGS=-g -fmessage-length=0 -Wno-unused-label -Wno-unknown-pragmas -fno-strict-aliasing
524TARGET_FOUND=1
525endif
526
527ifeq ($(TARGET),xmingw64b)
528### Cross compilation for MINGW64 target (on Ubuntu Linux host).
529# Invoke as `make zxid.dll TARGET=xmingw64b'
530# This target was tested with Ubuntu/Debian supplied mingw-w64 cross compiler package
531#    apt-get install mingw-w64
532#
533# For best results use the same cross compiler for compiling the dependency
534# libraries like curl, openssl, and zlib. Furthermore: your cross compiler
535# should be for MinGW target, not for Cygwin (i.e. default compiler of Cygwin
536# may have trouble due to linking against cygwin dependent libraries).
537#
538# Cross compiling zlib
539#     export PATH=/usr/bin:/bin
540#     ./configure --prefix=/usr/x86_64-w64-mingw32
541#     make CC=x86_64-w64-mingw32-gcc LD=x86_64-w64-mingw32-ld AR=x86_64-w64-mingw32-ar RANLIB=x86_64-w64-mingw32-gcc-ranlib
542#     # compilation fails when trying to create .so, but the .a has been built by then
543#     cp libz.a /usr/x86_64-w64-mingw32/lib
544#     cp zlib.h zconf.h /usr/x86_64-w64-mingw32/include
545#
546# Cross compiling openssl
547#     ./Configure --prefix=/usr/x86_64-w64-mingw32 --cross-compile-prefix=x86_64-w64-mingw32- enable-rc5 enable-mdc2 zlib mingw64-cross-debug
548#     #make depend   # error, apparently not needed
549#     make
550#     # If you have syntax errors with string "<symlink>" then eliminate
551#     # symlinks from include/openssl by copying the files directly there.
552#     #make test     # not doable since openssl.exe will not execute on Linux
553#     cp -Lr include/openssl /usr/x86_64-w64-mingw32/include
554#     cp libssl.a libcrypto.a /usr/x86_64-w64-mingw32/lib
555#     cp apps/openssl.exe /usr/x86_64-w64-mingw32/bin
556#
557# Cross compiling curl
558#     CPPFLAGS='-I/usr/x86_64-w64-mingw32/include' LDFLAGS='-L/usr/x86_64-w64-mingw32/lib' LIBS='-lz' ./configure --prefix=/usr/x86_64-w64-mingw32 --with-ssl=/usr/x86_64-w64-mingw32 --without-gnutls -enable-debug --enable-thread --enable-nonblocking --host=x86_64-w64-mingw32 --with-random=/random.txt --disable-shared --enable-static
559#     make
560#     cp lib/.libs/libcurl* /usr/x86_64-w64-mingw32/lib
561#     cp -r include/curl/ /usr/x86_64-w64-mingw32/include
562#     cp src/curl.exe /usr/x86_64-w64-mingw32/bin
563
564# apt-get install mingw-w64
565# MinGW-W64 Runtime 1.0 (stable - rev. 0) 0000-00-00
566MINGWDIR=/usr
567SYSROOT=$(MINGWDIR)/x86_64-w64-mingw32
568CROSS_COMPILE=1
569EXE=.exe
570SO=.dll
571CC=$(MINGWDIR)/bin/x86_64-w64-mingw32-gcc
572LD=$(MINGWDIR)/bin/x86_64-w64-mingw32-gcc
573ARC=$(MINGWDIR)/bin/x86_64-w64-mingw32-ar -crs
574ARX=$(MINGWDIR)/bin/x86_64-w64-mingw32-ar -x
575PRECHECK_PREP=precheck_prep_win
576#CDEF+=-DMINGW -DUSE_LOCK=flock -DCURL_STATICLIB
577CDEF+=-DMINGW -DUSE_LOCK=dummy_no_flock -DCURL_STATICLIB -DUSE_PTHREAD
578# All dependency libraries are assumed to be in the mingw environment
579CINC=-I. -I$(TOP) -I$(SYSROOT)/include
580APACHE_INC = -I$(SYSROOT)/include
581APR_INC    = -I$(SYSROOT)/srclib/apr-util/include
582JNI_INC=-I$(SYSROOT)/include
583ZXIDJNI_SO=zxidjava/zxidjni.dll
584ifeq ($(SHARED),1)
585LIBZXID=-L. -lzxiddll
586endif
587# -lws2_32 -lwldap32 -lmingw64 -lcrtdll -u _imp__curl_easy_setopt -u _imp__curl_easy_strerror
588SO_LIBS= -L$(SYSROOT)/lib -lcurl -lssl -lcrypto -lz -lws2_32 -lwldap32 -lcrypt32 -lwinmm -lwsock32 -lgdi32 -lkernel32
589LIBS= -mconsole $(SO_LIBS)
590# --dll  -mdll
591#SHARED_FLAGS=-shared --export-all-symbols -Wl,--whole-archive -Wl,-no-undefined -Wl,--enable-runtime-reloc -Wl,--whole-archive
592SHARED_FLAGS= -shared -Wl,--add-stdcall-alias -Wl,--whole-archive -Wl,-no-undefined -Wl,--enable-runtime-pseudo-reloc -Wl,--allow-multiple-definition
593CFLAGS=-g -fmessage-length=0 -Wno-unused-label -Wno-unknown-pragmas -fno-strict-aliasing
594TARGET_FOUND=1
595endif
596
597ifeq ($(TARGET),win32cl)
598### Native Compilation with Microsoft Visual C++ compiler's command line (aka msvc)
599CP=copy
600CC=cl
601LD=link
602ARC=lib
603CDEF+=-DMINGW -DWIN32CL -DUSE_LOCK=flock -DCURL_STATICLIB -DUSE_PTHREAD
604CURL_ROOT="G:/cvsdev/libcurl-7.19.3-win32-ssl-msvc"
605OPENSSL_ROOT="C:/OpenSSL"
606ZLIB_ROOT="C:/Program Files/GnuWin32"
607CINC=-I. -I$(TOP) -I"$(CURL_ROOT)/include" -I"$(OPENSSL_ROOT)/include" -I"$(ZLIB_ROOT)/include"
608JNI_INC=-I"C:/Program Files/Java/jdk1.5.0_14/include" -I"C:\Program Files\Java\jdk1.5.0_14\include\win32"
609WIN_DDL_LIBS= -LIBPATH:$(CURL_ROOT)/lib/Debug -LIBPATH:$(OPENSSL_ROOT)/lib/VC -LIBPATH:$(ZLIB_ROOT)/lib curllib.lib libeay32MD.lib ssleay32MD.lib zlib.lib kernel32.lib user32.lib winmm.lib Ws2_32.lib
610LIBS= $(SO_LIBS)
611#SHARED_FLAGS=-LDd -MDd -shared --export-all-symbols
612#SHARED_CLOSE=/SUBSYSTEM:WINDOWS
613SHARED_FLAGS=-DLL -shared --export-all-symbols
614SHARED_CLOSE=
615CFLAGS=-Zi -WL -DMAYBE_UNUSED=''
616#CFLAGS+=-Yd
617OUTOPT=-OUT:
618OBJ_EXT=obj
619EXE=.exe
620SO=.dll
621PLATFORM_OBJ=zxdirent.obj
622LIBZXID_A=zxid.lib
623GPERF=gperf.exe
624SHELL="C:\Program Files\GNU Utils\bin"
625MAKESHELL="C:\Program Files\GNU Utils\bin"
626ZXIDJNI_SO=zxidjava/zxidjni.dll
627ifeq ($(SHARED),1)
628LIBZXID=-L. -lzxiddll
629else
630LIBZXID=zxid.lib
631endif
632TARGET_FOUND=1
633endif
634
635ifeq ($(TARGET_FOUND),)
636$(error TARGET $(TARGET) not found. Run make help)
637endif
638
639### To change any of the above options, you can either supply
640### alternate values on make command line, like `make PREFIX=/your/path'
641### or you can create localconf.mk file to hold your options. This
642### file is included here, but if it's missing, no problem.
643
644-include localconf.mk
645
646####################################################################
647### End of platform dependent options (mortals can look, but
648### should not edit below this line).
649
650ifeq ($(V),)
651$(info Nonverbose build (use make V=1 to enable verbose build).)
652$(info TARGET=$(TARGET))
653$(info TOP=$(TOP))
654$(info CC=$(CC))
655$(info CFLAGS=$(CFLAGS))
656$(info CDEF=$(CDEF))
657$(info CINC=$(CINC))
658$(info LD=$(LD))
659$(info LDFLAGS=$(LDFLAGS))
660$(info LIBS=$(LIBS))
661$(info --------------------------)
662endif
663#CFLAGS += $(CDEF) $(CINC)
664
665# Avoid make's built-in implicit rules and variables; do not print entry msg
666.SUFFIXES:
667MAKEFLAGS= -rR --no-print-directory
668
669ifeq ($(V),1)
670
671ifeq ($(TARGET),win32cl)
672%.obj: %.c
673	$(CC) $(CFLAGS) $(CDEF) $(CINC) -Fo$@ -c $<
674else
675%.$(OBJ_EXT): %.c
676	$(CC) $(OUTOPT)$@ -c $< $(CFLAGS) $(CDEF) $(CINC)
677endif
678
679%$(EXE): %.$(OBJ_EXT)
680	$(LD) $(OUTOPT)$@ $< $(LDFLAGS) $(LIBZXID) $(LIBS)
681
682precheck/%$(EXE): precheck/%.$(OBJ_EXT)
683	$(LD) $(OUTOPT)$@ $< $(LDFLAGS) $(LIBS)
684
685else
686
687ifeq ($(TARGET),win32cl)
688%.obj: %.c
689	@echo "  Compiling $<"
690	@if $(CC) $(CFLAGS) $(CDEF) $(CINC) -Fo$@ -c $< ; then : ; else \
691	echo Failed command:; echo '$(CC) $(CFLAGS) $(CDEF) $(CINC) -Fo$@ -c $<' ; false; fi
692else
693%.$(OBJ_EXT): %.c
694	@echo "  Compiling $<"
695	@if $(CC) $(OUTOPT)$@ -c $< $(CFLAGS) $(CDEF) $(CINC) ; then : ; else \
696	echo Failed command:; echo '$(CC) $(OUTOPT)$@ -c $< $(CFLAGS) $(CDEF) $(CINC)' ; false; fi
697endif
698
699precheck/chk-%$(EXE): precheck/chk-%.$(OBJ_EXT)
700	@echo "  Link exe  $@"
701	@if $(LD) $(OUTOPT)$@ $< $(LDFLAGS) $(LIBS) ; then : ; else \
702	echo Failed command:; echo '$(LD) $(OUTOPT)$@ $< $(LDFLAGS) $(LIBS)' ; false; fi
703
704%$(EXE): %.$(OBJ_EXT)
705	@echo "  Linking   $@"
706	@if $(LD) $(OUTOPT)$@ $< $(LDFLAGS) $(LIBZXID) $(LIBS) ; then : ; else \
707	echo Failed command:; echo '$(LD) $(OUTOPT)$@ $< $(LDFLAGS) $(LIBZXID) $(LIBS)' ; false; fi
708
709endif
710
711# Avoid funny character set dependencies
712unexport LC_ALL
713LC_COLLATE=C
714LC_NUMERIC=C
715export LC_COLLATE LC_NUMERIC
716
717### Start of dependencies and targets
718
719DEFAULT_EXE= zxidhlo$(EXE) zxididp$(EXE) zxidhlowsf$(EXE) zxidsimple$(EXE) zxidwsctool$(EXE) zxlogview$(EXE) zxidhrxmlwsc$(EXE) zxidhrxmlwsp$(EXE) zxdecode$(EXE) zxcot$(EXE) zxpasswd$(EXE) zxcall$(EXE) zxumacall$(EXE) zxencdectest$(EXE)
720
721ALL_EXE= smime$(EXE) zxidwspcgi$(EXE) zxid_httpd$(EXE) htpasswd$(EXE)
722
723#$(info DEFAULT_EXE=$(DEFAULT_EXE))
724
725default: seehelp precheck $(DEFAULT_EXE)
726
727all: default precheck_apache samlmod phpzxid javazxid apachezxid $(ALL_EXE)
728
729all_minus_perl: default precheck_apache apachezxid phpzxid javazxid app_demo.class $(ALL_EXE)
730
731zxbus:  zxbusd zxbustailf zxbuslist
732
733aller: all zxbus app_demo.class
734
735maymay: javazxid app_demo.class
736
737diet64: zxcot-static-x64 zxpasswd-static-x64 zxididp-static-x64 zxidhlo-static-x64 zxlogview-static-x64 zxcall-static-x64 zxumacall-static-x64 zxdecode-static-x64 zxbusd-static-x64 zxbuslist-static-x64 zxbustailf-static-x64
738
739ZXIDHDRS=zx.h zxid.h zxidnoswig.h c/zxidvers.h
740
741ZXID_LIB_OBJ=zxidsimp.$(OBJ_EXT) zxidpool.$(OBJ_EXT) zxidpsso.$(OBJ_EXT) zxidsso.$(OBJ_EXT) zxidslo.$(OBJ_EXT) zxiddec.$(OBJ_EXT) zxidspx.$(OBJ_EXT) zxididpx.$(OBJ_EXT) zxidmni.$(OBJ_EXT) zxidpep.$(OBJ_EXT) zxidpdp.$(OBJ_EXT) zxidmk.$(OBJ_EXT) zxida7n.$(OBJ_EXT) zxidses.$(OBJ_EXT) zxiduser.$(OBJ_EXT) zxidcgi.$(OBJ_EXT) zxidconf.$(OBJ_EXT) zxidecp.$(OBJ_EXT) zxidcdc.$(OBJ_EXT) zxidloc.$(OBJ_EXT) zxidlib.$(OBJ_EXT) zxidmeta.$(OBJ_EXT) zxidmda.$(OBJ_EXT) zxidcurl.$(OBJ_EXT) zxidepr.$(OBJ_EXT) zxida7n.$(OBJ_EXT) ykcrc.$(OBJ_EXT) ykaes.$(OBJ_EXT) $(PLATFORM_OBJ)
742
743ZX_OBJ=c/zx-ns.$(OBJ_EXT) c/zx-attrs.$(OBJ_EXT) c/zx-elems.$(OBJ_EXT) zxlibdec.$(OBJ_EXT) zxlibenc.$(OBJ_EXT) zxlib.$(OBJ_EXT) zxns.$(OBJ_EXT) zxpw.$(OBJ_EXT) zxutil.$(OBJ_EXT) zxbusprod.$(OBJ_EXT) zxlog.$(OBJ_EXT) zxsig.$(OBJ_EXT) zxcrypto.$(OBJ_EXT) akbox_fn.$(OBJ_EXT) match.$(OBJ_EXT) c/license.$(OBJ_EXT)
744
745WSF_OBJ=zxidmkwsf.$(OBJ_EXT) zxidwsf.$(OBJ_EXT) zxidwsc.$(OBJ_EXT) zxidwsp.$(OBJ_EXT) zxiddi.$(OBJ_EXT) zxidim.$(OBJ_EXT) zxidps.$(OBJ_EXT)
746
747OAUTH_OBJ=zxidoauth.$(OBJ_EXT)
748
749SMIME_LIB_OBJ=certauth.$(OBJ_EXT) keygen.$(OBJ_EXT) pkcs12.$(OBJ_EXT) smime-enc.$(OBJ_EXT) smime-qry.$(OBJ_EXT) smime-vfy.$(OBJ_EXT) smimemime.$(OBJ_EXT) smimeutil.$(OBJ_EXT)
750
751ifeq ($(PULVER),1)
752
753# WARNING: THE PULVER OPTIONS ARE NOT CURRENTLY MAINTAINED AND ARE OUT OF DATE!
754# Pulverize dependencies. These arrange some source files to be split
755# to one-function-per-file format ("pulver") so that GNU ld will only
756# pull in those files, i.e. functions, that are actually used. This is
757# a workaround for GNU ld not having a dead function elimination
758# feature.  You should do `make PULVER=1' for production or
759# distribution build of this library as that will ensure smallest
760# possible binaries for eventual users of the library.
761
762PULVER_DEPS=pulver/c_saml2_dec_c.deps pulver/c_saml2_enc_c.deps \
763	pulver/c_saml2_aux_c.deps pulver/c_saml2_getput_c.deps \
764	pulver/c_saml2md_dec_c.deps pulver/c_saml2md_enc_c.deps \
765	pulver/c_saml2md_aux_c.deps pulver/c_saml2md_getput_c.deps
766
767c_saml2_dec_c_o=$(shell cat pulver/c_saml2_dec_c.deps)
768c_saml2_enc_c_o=$(shell cat pulver/c_saml2_enc_c.deps)
769c_saml2_aux_c_o=$(shell cat pulver/c_saml2_aux_c.deps)
770c_saml2_getput_c_o=$(shell pulver/c_saml2_getput_c.deps)
771
772#pulver/c_saml2_dec_c.deps $(c_saml2_dec_c_o:.$(OBJ_EXT)=.c): c/saml2-dec.c
773
774pulver/c_saml2_dec_c.deps: c/saml2-dec.c
775	$(PULVERIZE) pulver c/saml2-dec.c >pulver/c_saml2_dec_c.deps
776
777#pulver/c_saml2_enc_c.deps $(c_saml2_enc_c_o:%.$(OBJ_EXT)=%.c): c/saml2-enc.c
778
779pulver/c_saml2_enc_c.deps $(foo:%.o=%.c): c/saml2-enc.c
780	$(PULVERIZE) pulver c/saml2-enc.c >pulver/c_saml2_enc_c.deps
781
782pulver/c_saml2_aux_c.deps $(c_saml2_aux_c_o:.o=.c): c/saml2-aux.c
783	$(PULVERIZE) pulver c/saml2-aux.c >pulver/c_saml2_aux_c.deps
784pulver/c_saml2_getput_c.deps $(c_saml2_getput_c_o:.o=.c): c/saml2-getput.c
785	$(PULVERIZE) pulver c/saml2-getput.c >pulver/c_saml2_getput_c.deps
786
787c_saml2md_dec_c_o=$(shell cat pulver/c_saml2md_dec_c.deps)
788c_saml2md_enc_c_o=$(shell cat pulver/c_saml2md_enc_c.deps)
789c_saml2md_aux_c_o=$(shell cat pulver/c_saml2md_aux_c.deps)
790c_saml2md_getput_c_o=$(shell pulver/c_saml2md_getput_c.deps)
791
792pulver/c_saml2md_dec_c.deps $(c_saml2md_dec_c_o:.o=.c): c/saml2md-dec.c
793	$(PULVERIZE) pulver c/saml2md-dec.c >pulver/c_saml2md_dec_c.deps
794pulver/c_saml2md_enc_c.deps $(c_saml2md_enc_c_o:.o=.c): c/saml2md-enc.c
795	$(PULVERIZE) pulver c/saml2md-enc.c >pulver/c_saml2md_enc_c.deps
796pulver/c_saml2md_aux_c.deps $(c_saml2md_aux_c_o:.o=.c): c/saml2md-aux.c
797	$(PULVERIZE) pulver c/saml2md-aux.c >pulver/c_saml2md_aux_c.deps
798pulver/c_saml2md_getput_c.deps $(c_saml2md_getput_c_o:.o=.c): c/saml2md-getput.c
799	$(PULVERIZE) pulver c/saml2md-getput.c >pulver/c_saml2md_getput_c.deps
800
801#-include pulver/c_saml2_dec_c.deps
802#-include pulver/c_saml2_enc_c.deps
803#-include pulver/c_saml2_aux_c.deps
804#-include pulver/c_saml2_getput_c.deps
805
806ZX_OBJ += \
807  $(c_saml2_dec_c_o)    $(c_saml2md_dec_c_o) \
808  $(c_saml2_enc_c_o)    $(c_saml2md_enc_c_o) \
809  $(c_saml2_aux_c_o)    $(c_saml2md_aux_c_o) \
810  $(c_saml2_getput_c_o) $(c_saml2md_getput_c_o)
811
812else
813
814### Nonpulver deps
815
816ifeq ($(ENA_SSO),1)
817
818# Nonpulverized build. This will result in bigger binaries because gnu ld does
819# not understand to do dead function elimination. However, this is faster to build.
820
821#ZX_OBJ +=
822
823endif
824
825ifeq ($(ENA_WSF),1)
826
827#WSF_OBJ +=
828
829endif
830
831endif
832
833ZXBUSD_OBJ=zxbusd.$(OBJ_EXT) hiios.$(OBJ_EXT) hiinit.$(OBJ_EXT) hitodo.$(OBJ_EXT) hinet.$(OBJ_EXT) hiread.$(OBJ_EXT) hiwrite.$(OBJ_EXT) hiiosdump.$(OBJ_EXT) testping.$(OBJ_EXT) http.$(OBJ_EXT) smtp.$(OBJ_EXT) stomp.$(OBJ_EXT) zxbusdist.$(OBJ_EXT) zxbussubs.$(OBJ_EXT) zxbusent.$(OBJ_EXT)
834
835#
836# Schemata and potential xml document roots.
837# See also sg/wsf-soap11.sg for a place to "glue" new functions in.
838# N.B. As of 0.69 implementation, the search to zx_ns_tab is a linear
839# scan, so it pays to place commonly referenced namespaces early in ZX_SG.
840#
841
842ZX_SG+=sg/xmldsig-core.sg sg/xenc-schema.sg sg/ec.sg
843
844# SAML 2.0
845
846ifeq ($(ENA_SAML2),1)
847
848ZX_SG+=sg/wsf-soap11.sg sg/saml-schema-assertion-2.0.sg sg/saml-schema-protocol-2.0.sg sg/saml-schema-ecp-2.0.sg sg/liberty-paos-v2.0.sg
849ZX_ROOTS+=-r sa:Assertion -r sa:EncryptedAssertion -r sa:NameID -r sa:EncryptedID -r sp:NewID -r sp:AuthnRequest -r sp:Response
850ZX_ROOTS+=-r sp:LogoutRequest -r sp:LogoutResponse
851ZX_ROOTS+=-r sp:ManageNameIDRequest -r sp:ManageNameIDResponse
852ZX_ROOTS+=-r e:Envelope -r e:Header -r e:Body
853
854ZX_SG+=sg/saml-schema-metadata-2.0.sg
855ZX_SG+=sg/shibboleth-metadata-1.0.sg
856ZX_SG+=sg/sstc-saml-idp-discovery.sg
857ZX_ROOTS+=-r md:EntityDescriptor -r md:EntitiesDescriptor
858
859endif
860
861# OASIS XACML 2.0 (and committee draft 1)
862
863ifeq ($(ENA_XACML2),1)
864
865ZX_SG += sg/access_control-xacml-2.0-context-schema-os.sg
866ZX_SG += sg/access_control-xacml-2.0-policy-schema-os.sg
867ZX_SG += sg/access_control-xacml-2.0-saml-assertion-schema-os.sg
868ZX_SG += sg/access_control-xacml-2.0-saml-protocol-schema-os.sg
869ZX_SG += sg/xacml-2.0-profile-saml2.0-v2-schema-protocol-cd-1.sg
870ZX_SG += sg/xacml-2.0-profile-saml2.0-v2-schema-assertion-cd-1.sg
871ZX_ROOTS += -r xasp:XACMLAuthzDecisionQuery -r xasp:XACMLPolicyQuery
872ZX_ROOTS += -r xaspcd1:XACMLAuthzDecisionQuery -r xaspcd1:XACMLPolicyQuery
873
874endif
875
876# Liberty ID-WSF 2.0
877
878ifeq ($(ENA_WSF2),1)
879
880ZX_SG += sg/ws-addr-1.0.sg
881ZX_SG += sg/wss-secext-1.0.sg sg/wss-util-1.0.sg
882ZX_SG += sg/liberty-idwsf-soap-binding.sg sg/liberty-idwsf-soap-binding-v2.0.sg
883ZX_SG += sg/liberty-idwsf-security-mechanisms-v2.0.sg sg/liberty-idwsf-disco-svc-v2.0.sg
884ZX_SG += sg/liberty-idwsf-interaction-svc-v2.0.sg sg/liberty-idwsf-utility-v2.0.sg
885ZX_SG += sg/id-dap.sg sg/liberty-idwsf-subs-v1.0.sg sg/liberty-idwsf-dst-v2.1.sg
886ZX_SG += sg/liberty-idwsf-idmapping-svc-v2.0.sg sg/liberty-idwsf-people-service-v1.0.sg
887ZX_SG += sg/liberty-idwsf-authn-svc-v2.0.sg sg/xml.sg sg/xsi.sg sg/xs.sg sg/id-mm7-R6-1-4.sg
888ZX_SG += sg/lib-id-sis-cb-proto.sg sg/lib-id-sis-cb-cdm.sg sg/liberty-id-sis-gl-v1.0-14.sg
889ZX_SG += sg/liberty-idwsf-dp-v1.0.sg sg/liberty-idwsf-idp-v1.0.sg
890ZX_SG += sg/liberty-idwsf-pmm-v1.0.sg sg/liberty-idwsf-prov-v1.0.sg
891ZX_SG += sg/liberty-idwsf-shps-v1.0.sg
892ZX_SG += sg/hr-xml-sampo.sg sg/id-hrxml.sg
893ZX_SG += sg/demo-media-v1.0.sg
894ZX_ROOTS+= -r a:EndpointReference -r sec:Token
895ZX_ROOTS+= -r hrxml:Candidate
896
897#ZX_SG += sg/saml-schema-assertion-2.0.sg sg/saml-schema-protocol-2.0.sg sg/xmldsig-core.sg sg/xenc-schema.sg sg/saml-schema-metadata-2.0.sg sg/oasis-sstc-saml-schema-protocol-1.1.sg sg/oasis-sstc-saml-schema-assertion-1.1.sg sg/liberty-idff-protocols-schema-1.2-errata-v2.0.sg sg/liberty-authentication-context-v2.0.sg
898
899endif
900
901# SAML 1.1
902
903ifeq ($(ENA_SAML11),1)
904
905ZX_SG += sg/oasis-sstc-saml-schema-protocol-1.1.sg sg/oasis-sstc-saml-schema-assertion-1.1.sg
906ZX_ROOTS += -r sa11:Assertion -r sp11:Request -r sp11:Response
907
908endif
909
910# Liberty ID-FF 1.2
911
912ifeq ($(ENA_FF12),1)
913
914ZX_SG += sg/liberty-idff-protocols-schema-1.2-errata-v2.0.sg sg/liberty-authentication-context-v2.0.sg
915ZX_ROOTS+= -r ff12:Assertion -r ff12:AuthnRequest -r ff12:AuthnResponse
916ZX_ROOTS+= -r ff12:AuthnRequestEnvelope -r ff12:AuthnResponseEnvelope
917ZX_ROOTS+= -r ff12:RegisterNameIdentifierRequest -r ff12:RegisterNameIdentifierResponse
918ZX_ROOTS+= -r ff12:FederationTerminationNotification
919ZX_ROOTS+= -r ff12:LogoutRequest -r ff12:LogoutResponse
920ZX_ROOTS+= -r ff12:NameIdentifierMappingRequest -r ff12:NameIdentifierMappingResponse
921ZX_SG+=    sg/liberty-metadata-v2.0.sg
922ZX_ROOTS+= -r m20:EntityDescriptor -r m20:EntitiesDescriptor
923
924endif
925
926# Liberty ID-WSF 1.1
927
928ifeq ($(ENA_WSF11),1)
929
930ZX_SG += sg/liberty-idwsf-soap-binding-v1.2.sg  sg/liberty-idwsf-security-mechanisms-v1.2.sg
931ZX_SG += sg/liberty-idwsf-disco-svc-v1.2.sg     sg/liberty-idwsf-interaction-svc-v1.1.sg
932
933endif
934
935# WS-Trust
936
937ifeq ($(ENA_WST),1)
938
939ZX_SG += sg/ws-trust-1.3.sg sg/ws-policy.sg sg/ws-secureconversation-1.3.sg
940
941endif
942
943# TAS3
944
945ifeq ($(ENA_TAS3),1)
946
947ZX_SG += sg/tas3.sg sg/tas3sol.sg
948
949endif
950
951#
952# Generated files (the zxid/c subdirectory) (see also Manifest if you add files)
953#
954
955ZX_GEN_GPERF=\
956 c/zx-a.gperf    c/zx-di12.gperf  c/zx-lu.gperf    c/zx-xenc.gperf \
957 c/zx-ac.gperf   c/zx-m20.gperf   c/zx-sec.gperf   c/zx-exca.gperf \
958 c/zx-b.gperf    c/zx-ds.gperf    c/zx-md.gperf    c/zx-sec12.gperf \
959 c/zx-b12.gperf  c/zx-e.gperf     c/zx-sp.gperf \
960 c/zx-ff12.gperf c/zx-sa.gperf    c/zx-sp11.gperf \
961 c/zx-is.gperf   c/zx-sa11.gperf  c/zx-wsse.gperf \
962 c/zx-di.gperf   c/zx-is12.gperf  c/zx-sbf.gperf   c/zx-wsu.gperf \
963 c/zx-ecp.gperf  c/zx-paos.gperf  c/zx-dap.gperf   c/zx-ps.gperf \
964 c/zx-im.gperf   c/zx-as.gperf    c/zx-subs.gperf  c/zx-dst.gperf \
965 c/zx-cb.gperf   c/zx-cdm.gperf   c/zx-gl.gperf    c/zx-mm7.gperf \
966 c/zx-wst.gperf  c/zx-wsp.gperf   c/zx-wsc.gperf \
967 c/zx-xa.gperf   c/zx-xac.gperf   c/zx-xasa.gperf  c/zx-xasp.gperf \
968 c/zx-xasacd1.gperf               c/zx-xaspcd1.gperf \
969 c/zx-dp.gperf   c/zx-pmm.gperf   c/zx-prov.gperf  c/zx-idp.gperf c/zx-shps.gperf \
970 c/zx-demomed.gperf c/zx-hrxml.gperf c/zx-idhrxml.gperf \
971 c/zx-tas3.gperf  c/zx-tas3sol.gperf c/zx-shibmd.gperf c/zx-idpdisc.gperf \
972 c/zx-xml.gperf
973
974ZX_GEN_H=\
975 c/zx-a-data.h    c/zx-di12-data.h  c/zx-lu-data.h    c/zx-xenc-data.h \
976 c/zx-ac-data.h   c/zx-m20-data.h   c/zx-sec-data.h   c/zx-exca-data.h \
977 c/zx-b-data.h    c/zx-ds-data.h    c/zx-md-data.h    c/zx-sec12-data.h \
978 c/zx-b12-data.h  c/zx-e-data.h     c/zx-ns.h         c/zx-sp-data.h \
979 c/zx-ff12-data.h c/zx-sa-data.h    c/zx-sp11-data.h \
980 c/zx-data.h      c/zx-is-data.h    c/zx-sa11-data.h  c/zx-wsse-data.h \
981 c/zx-di-data.h   c/zx-is12-data.h  c/zx-sbf-data.h   c/zx-wsu-data.h \
982 c/zx-ecp-data.h  c/zx-paos-data.h  c/zx-dap-data.h   c/zx-ps-data.h \
983 c/zx-im-data.h   c/zx-as-data.h    c/zx-subs-data.h  c/zx-dst-data.h \
984 c/zx-cb-data.h   c/zx-cdm-data.h   c/zx-gl-data.h    c/zx-mm7-data.h \
985 c/zx-wst-data.h  c/zx-wsp-data.h   c/zx-wsc-data.h \
986 c/zx-xa-data.h   c/zx-xac-data.h   c/zx-xasa-data.h  c/zx-xasp-data.h \
987 c/zx-xasacd1-data.h  c/zx-xaspcd1-data.h \
988 c/zx-dp-data.h   c/zx-pmm-data.h   c/zx-prov-data.h  c/zx-idp-data.h        c/zx-shps-data.h \
989 c/zx-demomed-data.h c/zx-hrxml-data.h c/zx-idhrxml-data.h \
990 c/zx-xsi-data.h  c/zx-xs-data.h    c/zx-xml-data.h \
991 c/zx-tas3-data.h  c/zx-tas3sol-data.h c/zx-shibmd-data.h c/zx-idpdisc-data.h
992
993ZX_GEN_GETPUT_C= \
994 c/zx-is-getput.c \
995 c/zx-di12-getput.c c/zx-sa11-getput.c c/zx-sp11-getput.c \
996 c/zx-a-getput.c \
997 c/zx-is12-getput.c \
998 c/zx-sbf-getput.c  c/zx-wsse-getput.c \
999 c/zx-ac-getput.c \
1000 c/zx-lu-getput.c \
1001 c/zx-ds-getput.c c/zx-wsu-getput.c \
1002 c/zx-b-getput.c c/zx-m20-getput.c \
1003 c/zx-e-getput.c c/zx-sec-getput.c   c/zx-xenc-getput.c \
1004 c/zx-b12-getput.c c/zx-ff12-aux.c    c/zx-md-getput.c   c/zx-sec12-enc.c \
1005 c/zx-sec12-getput.c \
1006 c/zx-ff12-getput.c \
1007 c/zx-getput.c \
1008 c/zx-di-getput.c c/zx-sa-getput.c   c/zx-sp-getput.c \
1009 c/zx-sp11-aux.c \
1010 c/zx-ecp-getput.c \
1011 c/zx-paos-getput.c \
1012 c/zx-dap-getput.c \
1013 c/zx-ps-getput.c \
1014 c/zx-im-getput.c \
1015 c/zx-as-getput.c \
1016 c/zx-subs-getput.c \
1017 c/zx-dst-getput.c \
1018 c/zx-cb-getput.c \
1019 c/zx-cdm-getput.c \
1020 c/zx-gl-getput.c \
1021 c/zx-mm7-getput.c \
1022 c/zx-wst-getput.c \
1023 c/zx-wsp-getput.c \
1024 c/zx-wsc-getput.c \
1025 c/zx-xa-getput.c \
1026 c/zx-xac-getput.c \
1027 c/zx-xasa-getput.c \
1028 c/zx-xasacd1-getput.c \
1029 c/zx-xasp-getput.c \
1030 c/zx-xaspcd1-getput.c \
1031 c/zx-dp-getput.c \
1032 c/zx-pmm-getput.c \
1033 c/zx-prov-getput.c \
1034 c/zx-idp-getput.c \
1035 c/zx-shps-getput.c \
1036 c/zx-exca-getput.c \
1037 c/zx-hrxml-getput.c \
1038 c/zx-idhrxml-getput.c \
1039 c/zx-demomed-getput.c \
1040 c/zx-xsi-getput.c \
1041 c/zx-xs-getput.c \
1042 c/zx-xml-getput.c \
1043 c/zx-tas3-getput.c \
1044 c/zx-tas3sol-getput.c \
1045 c/zx-shibmd-getput.c \
1046 c/zx-idpdisc-getput.c
1047
1048ZX_GEN_AUX_C= \
1049 c/zx-a-aux.c      c/zx-is12-aux.c \
1050 c/zx-sbf-aux.c     c/zx-wsse-aux.c \
1051 c/zx-ac-aux.c     c/zx-lu-aux.c \
1052 c/zx-ds-aux.c     c/zx-wsu-aux.c \
1053 c/zx-aux.c        c/zx-b-aux.c       c/zx-m20-aux.c \
1054 c/zx-e-aux.c      c/zx-sec-aux.c     c/zx-xenc-aux.c \
1055 c/zx-b12-aux.c    c/zx-md-aux.c \
1056 c/zx-sec12-aux.c \
1057 c/zx-ff12-aux.c   c/zx-di-aux.c      c/zx-sa-aux.c      c/zx-sp-aux.c \
1058 c/zx-is-aux.c \
1059 c/zx-di12-aux.c   c/zx-sa11-aux.c    c/zx-sp11-aux.c \
1060 c/zx-ecp-aux.c    c/zx-paos-aux.c \
1061 c/zx-dap-aux.c    c/zx-ps-aux.c      c/zx-im-aux.c \
1062 c/zx-as-aux.c     c/zx-subs-aux.c    c/zx-dst-aux.c \
1063 c/zx-cb-aux.c     c/zx-cdm-aux.c     c/zx-gl-aux.c \
1064 c/zx-mm7-aux.c    c/zx-wst-aux.c     c/zx-wsp-aux.c \
1065 c/zx-wsc-aux.c    c/zx-xa-aux.c      c/zx-xac-aux.c \
1066 c/zx-xasa-aux.c   c/zx-xasacd1-aux.c c/zx-xasp-aux.c \
1067 c/zx-xaspcd1-aux.c c/zx-dp-aux.c     c/zx-pmm-aux.c \
1068 c/zx-prov-aux.c   c/zx-idp-aux.c     c/zx-shps-aux.c \
1069 c/zx-exca-aux.c   c/zx-hrxml-aux.c   c/zx-idhrxml-aux.c \
1070 c/zx-demomed-aux.c c/zx-xsi-aux.c    c/zx-xs-aux.c \
1071 c/zx-xml-aux.c     c/zx-tas3-aux.c   c/zx-tas3sol-aux.c \
1072 c/zx-shibmd-aux.c  c/zx-idpdisc-aux.c
1073
1074ZX_GEN_C= \
1075 c/zx-di12-dec.c   c/zx-sa11-dec.c     c/zx-sp11-dec.c \
1076 c/zx-a-dec.c \
1077 c/zx-is12-dec.c   c/zx-sbf-dec.c     c/zx-wsse-dec.c \
1078 c/zx-ac-dec.c     c/zx-lu-dec.c \
1079 c/zx-ds-dec.c     c/zx-wsu-dec.c \
1080 c/zx-b-dec.c      c/zx-m20-dec.c \
1081 c/zx-e-dec.c      c/zx-sec-dec.c     c/zx-xenc-dec.c \
1082 c/zx-b12-dec.c    c/zx-md-dec.c      c/zx-sec12-dec.c \
1083 c/zx-dec.c        c/zx-ff12-dec.c \
1084 c/zx-di-dec.c     c/zx-sa-dec.c      c/zx-sp-dec.c \
1085 c/zx-is-dec.c     c/zx-ecp-dec.c     c/zx-paos-dec.c \
1086 c/zx-dap-dec.c    c/zx-ps-dec.c      c/zx-im-dec.c \
1087 c/zx-as-dec.c     c/zx-subs-dec.c    c/zx-dst-dec.c \
1088 c/zx-cb-dec.c     c/zx-cdm-dec.c     c/zx-gl-dec.c \
1089 c/zx-mm7-dec.c    c/zx-wst-dec.c     c/zx-wsp-dec.c \
1090 c/zx-wsc-dec.c    c/zx-xa-dec.c      c/zx-xac-dec.c \
1091 c/zx-xasa-dec.c   c/zx-xasacd1-dec.c c/zx-xasp-dec.c \
1092 c/zx-xaspcd1-dec.c c/zx-dp-dec.c     c/zx-pmm-dec.c \
1093 c/zx-prov-dec.c   c/zx-idp-dec.c     c/zx-shps-dec.c \
1094 c/zx-exca-dec.c   c/zx-hrxml-dec.c   c/zx-idhrxml-dec.c \
1095 c/zx-demomed-dec.c c/zx-xsi-dec.c    c/zx-xs-dec.c \
1096 c/zx-xml-dec.c    c/zx-tas3-dec.c    c/zx-tas3sol-dec.c \
1097 c/zx-shibmd-dec.c c/zx-idpdisc-dec.c
1098
1099ifeq ($(ENA_GEN),1)
1100
1101### Schema based code generation
1102### If this runs over and over again, check timestamps in sg/ directory, or make -d -p
1103# gperf mystery flags explanation (most of these should be set via directives in .gperf source)
1104#  -t  programmer supplied struct type
1105#  -T  prevent the struct type from leaking in output (it is properly available from zx.h)
1106#  -K  indicate key field name (when not "name")
1107#  -D  duplicates allowed
1108#  -C  constant (readonly) tables
1109#  -l  compare key lengths before strcmp, nul byte compatibility
1110#  -G  global static table (i.e. not hidden as function static variable)
1111#  -P  pic tables (starting with int) for faster dynamic linking
1112#  -W arg  Word array name
1113#  -N arg  Lookup function name
1114
1115$(XSD2SG_PL):
1116	@ls $(XSD2SG_PL) || ( echo "You need to install xsd2sg.pl from Plaindoc distribution at http://zxid.org/plaindoc/pd.html. Not found $(XSD2SG)" && exit 2 )
1117
1118c/zx-ns.gperf c/zx-attrs.gperf c/zx-elems.gperf $(ZX_GEN_C) $(ZX_GEN_H): $(ZX_SG) dec-templ.c enc-templ.c aux-templ.c getput-templ.c $(XSD2SG_PL)
1119	$(XSD2SG) -z zx -gen c/zx -p zx_ $(ZX_ROOTS) -S $(ZX_SG) >junk
1120
1121c/zx-ns.c: c/zx-ns.gperf
1122	@which $(GPERF) || ( echo "You need to install gperf from ftp.gnu.org. Not found $(GPERF)" && exit 2 )
1123	$(GPERF) $< | $(PERL) ./sed-zxid.pl nss >$@
1124
1125#c/%.c: c/%.gperf
1126#	@which $(GPERF) || ( echo "You need to install gperf from ftp.gnu.org. Not found $(GPERF)" && exit 2 )
1127#	$(GPERF) -l $< | $(PERL) ./sed-zxid.pl elems >$@
1128
1129c/zx-attrs.c: c/zx-attrs.gperf
1130	@which $(GPERF) || ( echo "You need to install gperf from ftp.gnu.org. Not found $(GPERF)" && exit 2 )
1131	$(GPERF) $< | $(PERL) ./sed-zxid.pl attrs >$@
1132
1133c/zx-elems.c: c/zx-elems.gperf
1134	@which $(GPERF) || ( echo "You need to install gperf from ftp.gnu.org. Not found $(GPERF)" && exit 2 )
1135	$(GPERF) $< | $(PERL) ./sed-zxid.pl elems >$@
1136
1137c/zx-const.h: c/zx-ns.c c/zx-attrs.c c/zx-elems.c
1138	$(PERL) ./gen-consts-from-gperf-output.pl zx_ $^ >$@
1139
1140#	cat c/zx-ns.c | $(PERL) gen-consts-from-gperf-output.pl zx_ _NS zx_ns_tab >$@
1141#	cat c/zx-attrs.c | $(PERL) gen-consts-from-gperf-output.pl zx_ _ATTR zx_at_tab >>$@
1142#	cat c/zx-elems.c | $(PERL) gen-consts-from-gperf-output.pl zx_ _ELEM zx_el_tab >>$@
1143
1144#c/zx-const.h: c/zx-attrs.c c/zx-ns.c
1145#	cat c/zx-attrs.c | $(PERL) gen-consts-from-gperf-output.pl zx_ _ATTR zx_at_tab >$@
1146#	cat c/zx-ns.c | $(PERL) gen-consts-from-gperf-output.pl zx_ _NS zx_ns_tab >>$@
1147
1148# Other
1149
1150# N.B. echo(1) command of some shells, such as dash, is broken such that the \n\ sequence
1151# is not preserved.
1152
1153c/license.c: LICENSE-2.0.txt sed-zxid.pl
1154	$(PERL) ./sed-zxid.pl license <LICENSE-2.0.txt >$@
1155
1156c/zxidvers.h: sed-zxid.pl
1157	$(PERL) ./sed-zxid.pl zxidvers $(ZXIDVERSION) $(ZXIDREL) <zxrev >$@
1158
1159gen: c/zxidvers.h c/license.c c/zx-const.h c/zx-attrs.gperf
1160
1161genwrap: gen zxidjava/zxid_wrap.c Net/SAML_wrap.c php/zxid_wrap.c py/zxid_wrap.c ruby/zxid_wrap.c csharp/zxid_wrap.c
1162
1163# make cleany && make genwrap ENA_GEN=1 && make all ENA_GEN=1
1164
1165endif
1166
1167updatevers:
1168	rm -f c/zxidvers.h
1169	$(MAKE) c/zxidvers.h ENA_GEN=1
1170
1171###
1172###  Perl Modules
1173###
1174
1175# Main Net::SAML module - high level APIs
1176
1177ifeq ($(ENA_GEN),1)
1178
1179Net/SAML_wrap.c Net/SAML.pm: $(ZX_GEN_H) zxid.h zxid.i
1180	@which $(SWIG) || ( echo "You need to install swig-1.3.x from swig.org. Not found $(SWIG)" && exit 2 )
1181	$(SWIG) -o Net/SAML_wrap.c -perl zxid.i
1182	$(PERL) -pi -e 's/\*zxid_/*/i; s/\*SAML2?_/*/i' Net/SAML.pm
1183
1184# Net::SAML::Metadata - low level metadata APIs
1185
1186Metadata/Metadata_wrap.c Metadata/Metadata.pm: $(ZX_GEN_H) zxidmd.i
1187	@which $(SWIG) || ( echo "You need to install swig-1.3.x from swig.org. Not found $(SWIG)" && exit 2 )
1188	$(SWIG) -o Metadata/Metadata_wrap.c -perl zxidmd.i
1189	$(PERL) -pi -e 's/\*SAML2?_/*/i' Metadata/Metadata.pm
1190
1191# Net::SAML::Raw - low level assertion and protocol APIs
1192
1193Raw/Raw_wrap.c Raw/Raw.pm: $(ZX_GEN_H) zxidraw.i
1194	@which $(SWIG) || ( echo "You need to install swig-1.3.x from swig.org. Not found $(SWIG)" && exit 2 )
1195	$(SWIG) -o Raw/Raw_wrap.c -perl zxidraw.i
1196	$(PERL) -pi -e 's/\*SAML2?_/*/i' Raw/Raw.pm
1197
1198# Net::WSF::WSC - high level APIs for implementing WSC
1199
1200WSC/WSC_wrap.c WSC/WSC.pm: $(ZX_GEN_H) zxwsc.h wsc.i
1201	@which $(SWIG) || ( echo "You need to install swig-1.3.x from swig.org. Not found $(SWIG)" && exit 2 )
1202	$(SWIG) -o WSC/WSC_wrap.c -perl wsc.i
1203	$(PERL) -pi -e 's/\*zxwsc_/*/i; s/\*SAML2?_/*/i' WSC/WSC.pm
1204
1205# Net::WSF::Raw - low level protocol APIs
1206
1207WSF_Raw/Raw_wrap.c WSF_Raw/Raw.pm: $(ZX_GEN_H) wsfraw.i
1208	@which $(SWIG) || ( echo "You need to install swig-1.3.x from swig.org. Not found $(SWIG)" && exit 2 )
1209	$(SWIG) -o WSF_Raw/Raw_wrap.c -perl wsfraw.i
1210	$(PERL) -pi -e 's/\*zxwsc_/*/i; s/\*SAML2?_/*/i' WSF_Raw/Raw.pm
1211
1212endif
1213
1214# Overall
1215
1216samlmod Net/Makefile: Net/SAML_wrap.c Net/SAML.pm $(LIBZXID_A)
1217	cd Net; $(PERL) Makefile.PL && $(MAKE)
1218
1219samlmod_install: Net/Makefile
1220	cd Net; $(MAKE) install
1221
1222samlmod_install_adhoc: Net/Makefile
1223	mkdir -p /usr/local/lib/site_perl/Net/
1224	mkdir -p /usr/local/lib/site_perl/auto/Net/SAML/
1225	cp Net/SAML.pm /usr/local/lib/site_perl/Net/
1226	cp Net/blib/arch/auto/Net/SAML/SAML.bs /usr/local/lib/site_perl/auto/Net/SAML/
1227	cp Net/blib/arch/auto/Net/SAML/SAML.so /usr/local/lib/site_perl/auto/Net/SAML/
1228
1229mdmod: Metadata/Metadata_wrap.c Metadata/Metadata.pm
1230	cd Metadata; $(PERL) Makefile.PL && $(MAKE)
1231
1232rawmod: Raw/Raw.pm Raw/Raw_wrap.c
1233	cd Raw; $(PERL) Makefile.PL && $(MAKE)
1234
1235wscmod: WSC/WSC.pm WSC/WSC_wrap.c
1236	cd WSC; $(PERL) Makefile.PL && $(MAKE)
1237
1238wsfrawmod: WSF_Raw/Raw.pm WSF_Raw/Raw_wrap.c
1239	cd WSF_Raw; $(PERL) Makefile.PL && $(MAKE)
1240
1241ifeq ($(TARGET),xmingw64)
1242
1243Net/SAML_wrap.$(OBJ_EXT): Net/SAML_wrap.c
1244	$(warning SAMLWRAP)
1245	$(CC) -c $(OUTOPT)$@ $(CFLAGS) $(CDEF) $(CINC) $<
1246
1247endif
1248
1249perlmod: samlmod
1250
1251perlzxid: samlmod
1252
1253perlzxid_install: samlmod_install
1254
1255perlclean:
1256	@$(ECHO) ------------------ Making perlclean
1257	rm -rf Net/blib Net/*~ Net/*.o Net/Makefile Net/Makefile.old Net/SAML.bs
1258	rm -rf Metadata/blib Metadata/*~ Metadata/*.o Metadata/Makefile Metadata/Makefile.old Metadata/Metadata.bs
1259	rm -rf Raw/blib Raw/*~ Raw/*.o Raw/Makefile Raw/Makefile.old Raw/Raw.bs
1260	rm -rf WSC/blib WSC/*~ WSC/*.o WSC/Makefile WSC/Makefile.old WSC/WSC.bs
1261	rm -rf WSF_Raw/blib WSF_Raw/*~ WSF_Raw/*.o WSF_Raw/Makefile WSF_Raw/Makefile.old WSF_Raw/Raw.bs
1262
1263perlcleaner: perlclean
1264	@$(ECHO) ------------------ Making perlcleaner
1265	rm -f Net/SAML.pm Net/SAML_wrap.c
1266	rm -f Metadata/Metadata_wrap.c Metadata/Metadata.pm
1267	rm -f Raw/Raw.pm Raw/Raw_wrap.c
1268	rm -f WSC/WSC.pm WSC/WSC_wrap.c
1269	rm -f WSF_Raw/Raw.pm WSF_Raw/Raw_wrap.c
1270
1271###
1272###  PHP Module
1273###
1274
1275ifeq ($(ENA_GEN),1)
1276
1277php/zxid_wrap.c php/zxid.php php/php_zxid.h php/Makefile: $(ZX_GEN_H) zxid.h phpzxid.i
1278	@which $(SWIG) || ( echo "You need to install swig-1.3.x from swig.org. Not found $(SWIG)" && exit 2 )
1279	cd php; $(SWIG) -o zxid_wrap.c -noproxy -php ../phpzxid.i
1280
1281endif
1282
1283# -Wno-unused-label
1284
1285php/zxid_wrap.$(OBJ_EXT): php/zxid_wrap.c
1286	$(warning PHPWRAP)
1287	$(CC) -c $(OUTOPT)$@ `$(PHP_CONFIG) --includes` $(CFLAGS) $(CDEF) $(CINC) $<
1288
1289php/php_zxid$(SO): php/zxid_wrap.$(OBJ_EXT) $(LIBZXID_A)
1290	$(warning PHPLINK)
1291	$(LD) $(LDFLAGS) $(OUTOPT)php/php_zxid$(SO) -shared php/zxid_wrap.$(OBJ_EXT) $(LIBZXID) $(LIBS)
1292
1293phpzxid: php/php_zxid$(SO)
1294
1295phpzxid_install: php/php_zxid$(SO)
1296	@$(ECHO) Installing in `$(PHP_CONFIG) --extension-dir`
1297	mkdir -p `$(PHP_CONFIG) --extension-dir`
1298	$(CP) $< `$(PHP_CONFIG) --extension-dir`
1299
1300#cp zxid.ini `$(PHP_CONFIG) --extension-dir`
1301
1302phpclean:
1303	rm -rf php/*.$(OBJ_EXT) php/*~ php/*$(SO)
1304
1305phpcleaner: phpclean
1306	rm -rf php/php_zxid.h php/zxid.php php/zxid_wrap.c
1307
1308###
1309###  Python Module (*** Never tested)
1310###
1311
1312ifeq ($(ENA_GEN),1)
1313
1314py/zxid_wrap.c py/zxid.py py/Makefile: $(ZX_GEN_H) zxid.h pyzxid.i
1315	@which $(SWIG) || ( echo "You need to install swig-1.3.x from swig.org. Not found $(SWIG)" && exit 2 )
1316	cd py; $(SWIG) -o zxid_wrap.c -python ../pyzxid.i
1317
1318endif
1319
1320py/zxid_wrap.$(OBJ_EXT): py/zxid_wrap.c
1321	$(CC) -c $(OUTOPT)$@ `$(PY_CONFIG) --includes` $(CFLAGS) $(CDEF) $(CINC) $<
1322
1323py/py_zxid$(SO): py/zxid_wrap.$(OBJ_EXT) $(LIBZXID_A)
1324	$(LD) $(LDFLAGS) $(OUTOPT)py/py_zxid$(SO) -shared py/zxid_wrap.$(OBJ_EXT) $(LIBZXID) $(LIBS)
1325
1326pyzxid: py/py_zxid$(SO)
1327
1328pyzxid_install: py/py_zxid$(SO)
1329	@$(ECHO) Installing in `$(PY_CONFIG) --extension-dir`
1330	mkdir -p `$(PY_CONFIG) --extension-dir`
1331	$(CP) $< `$(PY_CONFIG) --extension-dir`
1332
1333pyclean:
1334	rm -rf py/*.$(OBJ_EXT) py/*~ py/*$(SO)
1335
1336pycleaner: pyclean
1337	rm -rf py/zxid.py py/zxid_wrap.c
1338
1339###
1340###  Ruby Module (*** Never tested)
1341###
1342
1343ifeq ($(ENA_GEN),1)
1344
1345ruby/zxid_wrap.c ruby/zxid.ruby ruby/Makefile: $(ZX_GEN_H) zxid.h rubyzxid.i
1346	@which $(SWIG) || ( echo "You need to install swig-1.3.x from swig.org. Not found $(SWIG)" && exit 2 )
1347	cd ruby; $(SWIG) -o zxid_wrap.c -ruby ../rubyzxid.i
1348
1349endif
1350
1351ruby/zxid_wrap.$(OBJ_EXT): ruby/zxid_wrap.c
1352	$(CC) -c $(OUTOPT)$@ `$(RUBY_CONFIG) --includes` $(CFLAGS) $(CDEF) $(CINC) $<
1353
1354ruby/ruby_zxid$(SO): ruby/zxid_wrap.$(OBJ_EXT) $(LIBZXID_A)
1355	$(LD) $(LDFLAGS) $(OUTOPT)ruby/ruby_zxid$(SO) -shared ruby/zxid_wrap.$(OBJ_EXT) $(LIBZXID) $(LIBS)
1356
1357rubyzxid: ruby/ruby_zxid$(SO)
1358
1359rubyzxid_install: ruby/ruby_zxid$(SO)
1360	@$(ECHO) Installing in `$(RUBY_CONFIG) --extension-dir`
1361	mkdir -p `$(RUBY_CONFIG) --extension-dir`
1362	$(CP) $< `$(RUBY_CONFIG) --extension-dir`
1363
1364rubyclean:
1365	rm -rf ruby/*.$(OBJ_EXT) ruby/*~ ruby/*$(SO)
1366
1367rubycleaner: rubyclean
1368	rm -rf ruby/zxid.ruby ruby/zxid_wrap.c
1369
1370###
1371###  C# (csharp) Module (*** Poorly tested)
1372###
1373
1374ifeq ($(ENA_GEN),1)
1375
1376csharp/zxid_wrap.c csharp/zxid.csharp csharp/Makefile: $(ZX_GEN_H) zxid.h csharpzxid.i
1377	@which $(SWIG) || ( echo "You need to install swig-1.3.x from swig.org. Not found $(SWIG)" && exit 2 )
1378	cd csharp; $(SWIG) -o zxid_wrap.c -noproxy -csharp ../csharpzxid.i
1379
1380endif
1381
1382csharp/zxid_wrap.$(OBJ_EXT): csharp/zxid_wrap.c
1383	$(CC) -c $(OUTOPT)$@ `$(CSHARP_CONFIG) --includes` $(CFLAGS) $(CDEF) $(CINC) $<
1384
1385csharp/csharp_zxid$(SO): csharp/zxid_wrap.$(OBJ_EXT) $(LIBZXID_A)
1386	$(LD) $(LDFLAGS) $(OUTOPT)csharp/csharp_zxid$(SO) -shared csharp/zxid_wrap.$(OBJ_EXT) $(LIBZXID) $(LIBS)
1387
1388csharpzxid: csharp/csharp_zxid$(SO)
1389
1390csharpzxid_install: csharp/csharp_zxid$(SO)
1391	@$(ECHO) Installing in `$(CSHARP_CONFIG) --extension-dir`
1392	mkdir -p `$(CSHARP_CONFIG) --extension-dir`
1393	$(CP) $< `$(CSHARP_CONFIG) --extension-dir`
1394
1395csharpclean:
1396	rm -rf csharp/*.$(OBJ_EXT) csharp/*~ csharp/*$(SO)
1397
1398csharpcleaner: csharpclean
1399	rm -rf csharp/zxid.csharp csharp/zxid_wrap.c
1400
1401###
1402###  Java JNI Module
1403###
1404
1405ifeq ($(ENA_GEN),1)
1406
1407zxidjava/zxid_wrap.c: $(ZX_GEN_H) zxid.h javazxid.i
1408	@which $(SWIG) || ( echo "You need to install swig-1.3.x from swig.org. Not found $(SWIG)" && exit 2 )
1409	cd zxidjava; $(SWIG) -noproxy -Dconst= -w451 -o zxid_wrap.c -java -package zxidjava ../javazxid.i
1410	$(PERL) -pi -e 's/SWIGTYPE_p_zxid_conf/zxid_conf/g' zxidjava/*.java
1411	mv zxidjava/SWIGTYPE_p_zxid_conf.java zxidjava/zxid_conf.java
1412	$(PERL) -pi -e 's/SWIGTYPE_p_zxid_ses/zxid_ses/g' zxidjava/*.java
1413	mv zxidjava/SWIGTYPE_p_zxid_ses.java zxidjava/zxid_ses.java
1414	$(PERL) -pi -e 's/SWIGTYPE_p_zxid_cgi/zxid_cgi/g' zxidjava/*.java
1415	mv zxidjava/SWIGTYPE_p_zxid_cgi.java zxidjava/zxid_cgi.java
1416	$(PERL) -pi -e 's/SWIGTYPE_p_zxid_entity_s/zxid_entity/g' zxidjava/*.java
1417	mv zxidjava/SWIGTYPE_p_zxid_entity_s.java zxidjava/zxid_entity.java
1418	$(PERL) -pi -e 's/SWIGTYPE_p_zx_sa_Assertion_s/zxid_a7n/g' zxidjava/*.java
1419	mv zxidjava/SWIGTYPE_p_zx_sa_Assertion_s.java zxidjava/zxid_a7n.java
1420	$(PERL) -pi -e 's/SWIGTYPE_p_zx_sa_NameID_s/zxid_nid/g' zxidjava/*.java
1421	mv zxidjava/SWIGTYPE_p_zx_sa_NameID_s.java zxidjava/zxid_nid.java
1422	$(PERL) -pi -e 's/SWIGTYPE_p_zx_a_EndpointReference_s/zxid_epr/g' zxidjava/*.java
1423	mv zxidjava/SWIGTYPE_p_zx_a_EndpointReference_s.java zxidjava/zxid_epr.java
1424	$(PERL) -pi -e 's/SWIGTYPE_p_zx_tas3_Status_s/zxid_tas3_status/g' zxidjava/*.java
1425	mv zxidjava/SWIGTYPE_p_zx_tas3_Status_s.java zxidjava/zxid_tas3_status.java
1426	$(PERL) -pi -e 's/SWIGTYPE_p_zx_e_Fault_s/zxid_fault/g' zxidjava/*.java
1427	mv zxidjava/SWIGTYPE_p_zx_e_Fault_s.java zxidjava/zxid_fault.java
1428	$(PERL) -pi -e 's/SWIGTYPE_p_zx_sec_Token_s/zxid_tok/g' zxidjava/*.java
1429	mv zxidjava/SWIGTYPE_p_zx_sec_Token_s.java zxidjava/zxid_tok.java
1430	$(PERL) -pi -e 's/(public static \w+ )zxid_/$$1/' zxidjava/zxidjni.java
1431
1432endif
1433
1434ifeq ($(TARGET),win32cl)
1435zxidjava/zxid_wrap.$(OBJ_EXT): zxidjava/zxid_wrap.c
1436	$(warning JAVAWRAP)
1437	$(CC) -c $< -Fozxid_wrap.obj $(JNI_INC) $(CFLAGS) $(CDEF) $(CINC)
1438	$(CP) zxid_wrap.obj $@
1439else
1440zxidjava/zxid_wrap.$(OBJ_EXT): zxidjava/zxid_wrap.c
1441	$(warning JAVAWRAP)
1442	$(CC) -c $< $(OUTOPT)$@ $(JNI_INC) $(CFLAGS) $(CDEF) $(CINC)
1443endif
1444
1445$(ZXIDJNI_SO): zxidjava/zxid_wrap.$(OBJ_EXT) $(LIBZXID_A)
1446	$(warning JNILINK)
1447	$(LD) $(LDFLAGS) $(OUTOPT)$@ $(SHARED_FLAGS) $< $(SHARED_CLOSE) $(LIBZXID) $(SO_LIBS)
1448
1449#link  -OUT:zxidjava/zxidjni.dll -DLL -LDd -MDd -shared --export-all-symbols zxidjava/zxid_wrap.obj zxid.lib -LIBPATH:&quot;G:/cvsdev/libcurl-7.19.3-win32-ssl-msvc/&quot;/lib/Debug -LIBPATH:&quot;C:/OpenSSL/&quot;/lib/VC -LIBPATH:&quot;C:/Program Files/GnuWin32/&quot;/lib curllib.lib libeay32MD.lib ssleay32MD.lib zlib.lib kernel32.lib user32.lib winmm.lib Ws2_32.lib -Wl,-no-whole-archive /SUBSYSTEM:WINDOWS /INCREMENTAL
1450
1451zxidjava/zxidjni.class: zxidjava/zxidjni.java
1452	cd zxidjava; $(JAVAC) $(JAVAC_FLAGS) *.java
1453
1454zxidjavatest.class: zxidjavatest.java zxidjava/zxidjni.class
1455	$(JAVAC) $(JAVAC_FLAGS) zxidjavatest.java
1456
1457zxid.class: zxid.java zxidjava/zxidjni.class
1458	$(JAVAC) $(JAVAC_FLAGS) zxidjava/*.java zxid.java
1459
1460zxidhlo.class: zxidhlo.java zxidjava/zxidjni.class
1461	$(JAVAC) $(JAVAC_FLAGS) -classpath $(SERVLET_PATH) zxidjava/*.java zxidhlo.java
1462
1463zxidsrvlet.class: zxidsrvlet.java zxidjava/zxidjni.class
1464	$(JAVAC) $(JAVAC_FLAGS) -classpath $(SERVLET_PATH) zxidjava/*.java zxidsrvlet.java
1465
1466app_demo.class: app_demo.java zxidjava/zxidjni.class
1467	$(JAVAC) $(JAVAC_FLAGS) -classpath $(SERVLET_PATH) zxidjava/*.java app_demo.java
1468
1469zxidappdemo.class: zxidappdemo.java zxidjava/zxidjni.class
1470	$(JAVAC) $(JAVAC_FLAGS) -classpath $(SERVLET_PATH) zxidjava/*.java zxidappdemo.java
1471
1472zxidwspdemo.class: zxidwspdemo.java zxidjava/zxidjni.class
1473	$(JAVAC) $(JAVAC_FLAGS) -classpath $(SERVLET_PATH) zxidjava/*.java zxidwspdemo.java
1474
1475zxidwspleaf.class: zxidwspleaf.java zxidjava/zxidjni.class
1476	$(JAVAC) $(JAVAC_FLAGS) -classpath $(SERVLET_PATH) zxidjava/*.java zxidwspleaf.java
1477
1478zxidwscprepdemo.class: zxidwscprepdemo.java zxidjava/zxidjni.class
1479	$(JAVAC) $(JAVAC_FLAGS) -classpath $(SERVLET_PATH) zxidjava/*.java zxidwscprepdemo.java
1480
1481ZxidSSOFilter.class: ZxidSSOFilter.java zxidjava/zxidjni.class
1482	$(JAVAC) $(JAVAC_FLAGS) -classpath $(SERVLET_PATH) zxidjava/*.java ZxidSSOFilter.java
1483
1484ZxidServlet.class: ZxidServlet.java zxidjava/zxidjni.class
1485	$(JAVAC) $(JAVAC_FLAGS) -classpath $(SERVLET_PATH) zxidjava/*.java ZxidServlet.java
1486
1487zxidjava.jar: zxidjava/zxidjni.class zxidjava/README.zxid-java
1488	$(CP) COPYING LICENSE-2.0.txt LICENSE.openssl LICENSE.ssleay LICENSE.curl zxidjava/
1489	$(JAR) cf zxidjava.jar zxidjava/*.class zxidjava/*.java zxidjava/COPYING zxidjava/LICENSE*
1490
1491zxiddemo.war: zxidjava.jar
1492	mkdir -p zxidservlet/WEB-INF/classes/ #mkdir -p zxidservlet/WEB-INF/classes/zxidjava/
1493	$(CP) -f zxidjava.jar ./zxidservlet/WEB-INF/classes/
1494	$(CP) -f ./servlet/WEB-INF/web.xml ./zxidservlet/WEB-INF/
1495	$(CP) -f zxidsrvlet.class zxidappdemo.class zxidwscprepdemo.class zxidwspdemo.class zxidwspleaf.class zxidhlo.class zxidservlet/WEB-INF/classes/
1496	cd ./zxidservlet ; $(JAR) cf ../zxiddemo.war *; cd ../
1497	rm -rf zxidservlet
1498
1499javazxid: $(ZXIDJNI_SO) zxidjava/zxidjni.class zxidhlo.class zxidsrvlet.class zxidappdemo.class zxidwscprepdemo.class zxidwspdemo.class zxidwspleaf.class zxidjavatest.class zxidjava.jar zxiddemo.war
1500
1501# ZxidSSOFilter.class ZxidServlet.class
1502
1503javazxid_install: $(ZXIDJNI_SO)
1504	@$(ECHO) "javazxid_install: Work in Progress. See zxid-java.pd"
1505
1506# from Brian, somewhat obsoleted by zxiddemo.war
1507javazxid_war:
1508	mkdir -p zxidservlet/WEB-INF/classes/zxidjava/
1509	$(CP) -f ./zxidjava/*.class ./zxidservlet/WEB-INF/classes/zxidjava/
1510	$(CP) -f ./servlet/WEB-INF/web.xml ./zxidservlet/WEB-INF/
1511	$(CP) -f zxidsrvlet.class zxidappdemo.class zxidwscprepdemo.class zxidwspdemo.class zxidwspleaf.class zxidhlo.class zxidservlet/WEB-INF/classes/
1512	cd ./zxidservlet ; $(JAR) cf ../zxidservlet.war *; cd ../
1513	rm -rf zxidservlet
1514
1515#  rsync zxididp root@elsa:/var/zxid/webroot/apache-tomcat-5.5.20/webapps
1516#  mv zxidservlet.war $(WEBAPPS_PATH)/
1517
1518javaswigchk:
1519	ls zxidjava/SWIGTYPE*.java >foo
1520	fgrep zxidjava/SWIGTYPE Manifest | cmp - foo
1521
1522gitreaddnoc:
1523	git add zxidjava/*.java zxidjava/*.c Net/Makefile Net/SAML.pm Net/*.c php/*.[hc]
1524
1525gitreadd:
1526	git add zxidjava/*.java zxidjava/*.c Net/Makefile Net/SAML.pm Net/*.c php/*.[hc] c/*.[hc]
1527
1528javaclean:
1529	rm -rf zxidjava/*.$(OBJ_EXT) zxidjava/*~ zxidjava/*$(SO) zxidjava/*.class *.class
1530
1531javacleaner: javaclean
1532	rm -rf zxidjava/*.java zxidjava/zxid_wrap.c
1533
1534benessosrvlet.class: benessosrvlet.java zxidjava/zxidjni.class
1535	$(JAVAC) $(JAVAC_FLAGS) -classpath $(SERVLET_PATH) zxidjava/*.java benessosrvlet.java
1536
1537benedemo.class: benedemo.java zxidjava/zxidjni.class
1538	$(JAVAC) $(JAVAC_FLAGS) -classpath $(SERVLET_PATH) zxidjava/*.java benedemo.java
1539
1540bene: benessosrvlet.class benedemo.class
1541
1542###
1543### Apache authentication module
1544###
1545
1546mod_auth_saml.$(OBJ_EXT): mod_auth_saml.c $(LIBZXID_A)
1547	$(warning MOD_AUTH_SAML COMPILE)
1548	$(CC) -o $@ -c $<  $(CFLAGS) $(CDEF) $(CINC) $(APACHE_INC) $(APR_INC)
1549
1550mod_auth_saml$(SO): mod_auth_saml.$(OBJ_EXT) $(LIBZXID_A)
1551	$(warning MOD_AUTH_SAML LINK SO)
1552	$(LD) $(LDFLAGS) $(OUTOPT)mod_auth_saml$(SO) $(SHARED_FLAGS) mod_auth_saml.$(OBJ_EXT) $(SHARED_CLOSE) $(LIBZXID) $(MOD_AUTH_SAML_LIBS) $(LIBS)
1553
1554precheck_apache:  precheck/chk-apache.$(OBJ_EXT) precheck/chk-apache
1555	precheck/chk-apache
1556
1557apachezxid: precheck_apache precheck mod_auth_saml$(SO)
1558
1559apachezxid_install: mod_auth_saml$(SO)
1560	$(CP) $< $(APACHE_MODULES)
1561
1562mod_auth_saml: apachezxid
1563	@$(ECHO) "mod_auth_saml: not an official target. Use make apachezxid"
1564
1565###
1566### mini_httpd with ZXID support. See also mini_httpd-1.19-zxid/Makefile
1567### for regular build without ZXID support.
1568### N.B. This is obsoleted by zxid_httpd, below.
1569
1570MINI_HTTPD_DIR?=mini_httpd-1.19-zxid
1571
1572$(MINI_HTTPD_DIR)/htpasswd: $(MINI_HTTPD_DIR)/htpasswd.$(OBJ_EXT)
1573	$(warning MINI_HTTPD COMPILE)
1574	$(LD) $(LDFLAGS) $(OUTOPT)$@$(EXE) $< $(LIBS)
1575
1576$(MINI_HTTPD_DIR)/mini_httpd_zxid$(EXE): $(MINI_HTTPD_DIR)/mini_httpd.$(OBJ_EXT) $(MINI_HTTPD_DIR)/match.$(OBJ_EXT) $(MINI_HTTPD_DIR)/tdate_parse.$(OBJ_EXT) mini_httpd_filter.$(OBJ_EXT) $(LIBZXID_A)
1577	$(warning MINI_HTTPD LINK)
1578	$(LD) $(LDFLAGS) $(OUTOPT)$@ $^ $(LIBZXID) $(LIBS)
1579
1580$(MINI_HTTPD_DIR)/mime_encodings.h: $(MINI_HTTPD_DIR)/mime_encodings.txt
1581	rm -f $@
1582	sed < $^ > $@ \
1583	  -e 's/#.*//' -e 's/[ 	]*$$//' -e '/^$$/d' \
1584	  -e 's/[ 	][ 	]*/", 0, "/' -e 's/^/{ "/' -e 's/$$/", 0 },/'
1585
1586$(MINI_HTTPD_DIR)/mime_types.h: $(MINI_HTTPD_DIR)/mime_types.txt
1587	rm -f $@
1588	sed < $^ > $@ \
1589	  -e 's/#.*//' -e 's/[ 	]*$$//' -e '/^$$/d' \
1590	  -e 's/[ 	][ 	]*/", 0, "/' -e 's/^/{ "/' -e 's/$$/", 0 },/'
1591
1592mini_httpd_zxid: $(MINI_HTTPD_DIR)/mini_httpd_zxid $(MINI_HTTPD_DIR)/htpasswd
1593
1594###
1595### zxid_httpd (derived from mini_httd).
1596###
1597
1598zxid_httpd$(EXE): zxid_httpd.$(OBJ_EXT) tdate_parse.$(OBJ_EXT) mini_httpd_filter.$(OBJ_EXT) $(LIBZXID_A)
1599	$(warning ZXID_HTTPD LINK)
1600	$(LD) $(LDFLAGS) $(OUTOPT)$@ $^ $(LIBS)
1601
1602###
1603### Binaries (most binaries are built by implicit rules)
1604###
1605
1606#zxid$(EXE): zxid.$(OBJ_EXT) $(LIBZXID_A)
1607
1608$(DEFAULT_EXE) $(ALL_EXE): $(LIBZXID_A)
1609
1610zxcot-static-x64: zxcot.$(OBJ_EXT) $(LIBZXID_A)
1611	diet gcc $(OUTOPT)$@$(EXE) $< -static -L. -lzxid -pthread -lpthread -L$(DIET_ROOT)/lib -L$(DIET_ROOT)/ssl/lib-x86_64 -lcurl -lssl -lcrypto -lz
1612
1613zxdecode-static-x64: zxdecode.$(OBJ_EXT) $(LIBZXID_A)
1614	diet gcc $(OUTOPT)$@$(EXE) $< -static -L. -lzxid -pthread -lpthread -L$(DIET_ROOT)/lib -L$(DIET_ROOT)/ssl/lib-x86_64 -lcurl -lssl -lcrypto -lz
1615
1616zxpasswd-static-x64: zxpasswd.$(OBJ_EXT) $(LIBZXID_A)
1617	diet gcc $(OUTOPT)$@$(EXE) $< -static -L. -lzxid -pthread -lpthread -L$(DIET_ROOT)/lib -L$(DIET_ROOT)/ssl/lib-x86_64 -lcurl -lssl -lcrypto -lz
1618
1619# *** unresolved link problem with __gcov_fork, which is not found in 3.4.6 libgcov.a
1620
1621zxcall-static-x64: zxcall.$(OBJ_EXT) $(LIBZXID_A)
1622	diet gcc $(OUTOPT)$@$(EXE) $< -static -L. -lzxid -pthread -lpthread -L$(DIET_ROOT)/lib -L$(DIET_ROOT)/ssl/lib-x86_64 -lcurl -lssl -lcrypto -lz
1623
1624zxumacall-static-x64: zxumacall.$(OBJ_EXT) $(LIBZXID_A)
1625	diet gcc $(OUTOPT)$@$(EXE) $< -static -L. -lzxid -pthread -lpthread -L$(DIET_ROOT)/lib -L$(DIET_ROOT)/ssl/lib-x86_64 -lcurl -lssl -lcrypto -lz
1626
1627zxidhlo-static-x64: zxidhlo.$(OBJ_EXT) $(LIBZXID_A)
1628	diet gcc $(OUTOPT)$@$(EXE) $< -static -L. -lzxid -pthread -lpthread -L$(DIET_ROOT)/lib -L$(DIET_ROOT)/ssl/lib-x86_64 -lcurl -lssl -lcrypto -lz
1629
1630zxididp-static$(EXE): zxididp.$(OBJ_EXT) $(LIBZXID_A)
1631	$(LD) $(LDFLAGS) $(OUTOPT)$@ $< -static $(LIBZXID) $(LIBS)
1632
1633zxididp-semistatic$(EXE): zxididp.$(OBJ_EXT) $(LIBZXID_A)
1634	$(LD) $(LDFLAGS) $(OUTOPT)$@ $< -static $(LIBZXID) $(LIBS) -dynamic -lc
1635
1636zxididp-static-x64: zxididp.$(OBJ_EXT) $(LIBZXID_A)
1637	diet gcc $(OUTOPT)$@ $< -static -L. -lzxid -pthread -lpthread -L$(DIET_ROOT)/lib -L$(DIET_ROOT)/ssl/lib-x86_64 -lcurl -lssl -lcrypto -lz
1638
1639#	diet gcc -o zxididp zxididp.o -static -L. -lzxid -pthread -lpthread -L$(DIET_ROOT)/lib -L$(DIET_ROOT)/ssl/lib-x86_64 -lcurl -lssl -lcrypto -lz
1640
1641zxbench-static-x64: zxbench.$(OBJ_EXT) $(LIBZXID_A)
1642	diet gcc $(OUTOPT)$@ $< -static -L. -lzxid -pthread -lpthread -L$(DIET_ROOT)/lib -L$(DIET_ROOT)/ssl/lib-x86_64 -lcurl -lssl -lcrypto -lz
1643
1644ifeq ($(TARGET),mingw)
1645zxencdectest:
1646	echo "Port this for mingw" > zxencdectest
1647endif
1648
1649zxmqtest-zmq$(EXE): zxmqtest.$(OBJ_EXT) $(LIBZXID_A)
1650	$(LD) $(LDFLAGS) $(OUTOPT)$@$(EXE) $^ -lzmq $(LIBZXID) $(LIBS)
1651
1652zxmqtest.$(OBJ_EXT): zxmqtest.c
1653	$(CC)  $(OUTOPT)$@ -c $^ $(CFLAGS) $(CDEF) $(CINC) -DOPENAMQ -I/apps/openamq/std/include
1654
1655zxmqtest-amq$(EXE): zxmqtest.$(OBJ_EXT) $(LIBZXID_A)
1656	$(LD) $(LDFLAGS) $(OUTOPT)$@ $^ -L/apps/openamq/std/lib -lamq_wireapi -lamq_common -lsmt -lasl -lipr -licl -lpcre -laprutil -lapr -lcrypt -lm $(LIBZXID) $(LIBS)
1657
1658zxlogview-static-x64: zxlogview.$(OBJ_EXT) $(LIBZXID_A)
1659	diet gcc $(OUTOPT)$@ $< -static -L. -lzxid -pthread -lpthread -L$(DIET_ROOT)/lib -L$(DIET_ROOT)/ssl/lib-x86_64 -lcurl -lssl -lcrypto -lz
1660
1661zxbustailf-static-x64: zxbustailf.$(OBJ_EXT) $(LIBZXID_A)
1662	diet gcc $(OUTOPT)$@ $< -static -L. -lzxid -pthread -lpthread -L$(DIET_ROOT)/lib -L$(DIET_ROOT)/ssl/lib-x86_64 -lcurl -lssl -lcrypto -lz
1663
1664zxbuslist-static-x64: zxbuslist.$(OBJ_EXT) $(LIBZXID_A)
1665	diet gcc $(OUTOPT)$@ $< -static -L. -lzxid -pthread -lpthread -L$(DIET_ROOT)/lib -L$(DIET_ROOT)/ssl/lib-x86_64 -lcurl -lssl -lcrypto -lz
1666
1667zxbusd: $(ZXBUSD_OBJ) $(LIBZXID_A)
1668	$(CC) $(OUTOPT)$@ $^ $(LIBS)
1669
1670zxbusd-static-x64: $(ZXBUSD_OBJ) $(LIBZXID_A)
1671	diet gcc $(OUTOPT)$@ $^ -static -L. -lzxid -pthread -lpthread -L$(DIET_ROOT)/lib -L$(DIET_ROOT)/ssl/lib-x86_64 -lcurl -lssl -lcrypto -lz
1672
1673zxidhrxml: zxidhrxmlwsc zxidhrxmlwsp
1674
1675###
1676### Libraries
1677###
1678
1679ifeq ($(PULVER),1)
1680
1681$(LIBZXID_A): $(ZX_OBJ) $(ZXID_LIB_OBJ)
1682	cat pulver/c_saml2_dec_c.deps      | xargs $(ARC) $(LIBZXID_A)
1683	cat pulver/c_saml2_enc_c.deps      | xargs $(ARC) $(LIBZXID_A)
1684	cat pulver/c_saml2_aux_c.deps      | xargs $(ARC) $(LIBZXID_A)
1685	cat pulver/c_saml2_getput_c.deps   | xargs $(ARC) $(LIBZXID_A)
1686	cat pulver/c_saml2md_dec_c.deps    | xargs $(ARC) $(LIBZXID_A)
1687	cat pulver/c_saml2md_enc_c.deps    | xargs $(ARC) $(LIBZXID_A)
1688	cat pulver/c_saml2md_aux_c.deps    | xargs $(ARC) $(LIBZXID_A)
1689	cat pulver/c_saml2md_getput_c.deps | xargs $(ARC) $(LIBZXID_A)
1690	$(ARC) $(LIBZXID_A) $(ZXID_LIB_OBJ)
1691
1692#	$(foreach fil,$^,$(shell $(ARC) $(LIBZXID_A) $(fil)))
1693
1694else
1695
1696ifeq ($(TARGET),win32cl)
1697$(LIBZXID_A): $(ZX_OBJ) $(ZX_GEN_C:.c=.obj) $(ZXID_LIB_OBJ) $(WSF_OBJ) $(OAUTH_OBJ) $(SMIME_LIB_OBJ)
1698	$(ARC) $(OUTOPT)zxid.lib $^
1699else
1700$(LIBZXID_A): $(ZX_OBJ) $(ZX_GEN_C:.c=.o) $(ZXID_LIB_OBJ) $(WSF_OBJ) $(OAUTH_OBJ) $(SMIME_LIB_OBJ)
1701	$(ARC) $(LIBZXID_A) $^
1702endif
1703endif
1704
1705libzxid.so.0.0: $(LIBZXID_A)
1706	$(LD) $(OUTOPT)libzxid.so.0.0 $(SHARED_FLAGS) $^ $(SHARED_CLOSE) $(LIBS)
1707
1708zxid.dll zxidimp.lib: $(LIBZXID_A)
1709	$(LD) $(OUTOPT)zxid.dll $(SHARED_FLAGS) -Wl,--output-def,zxid.def,--out-implib,zxidimp.lib $^ $(SHARED_CLOSE) $(SO_LIBS)
1710
1711# -mdll
1712
1713# N.B. Failing to supply -Wl,-no-whole-archive above will cause
1714# /apps/gcc/mingw/sysroot/lib/libmingw32.a(main.o):main.c:(.text+0x106): undefined reference to `WinMain@16'
1715# due to implicitly linked library libmingw32.a pulling in main. See also
1716# binutils ld info documentation (e.g. invocation/options specific to i386 PE
1717# targets).
1718
1719###
1720### TAS3 Project Specific Targets
1721###
1722
1723TAS3COMMONFILES=README.zxid-tas3 README.zxid Changes COPYING LICENSE-2.0.txt LICENSE.openssl LICENSE.ssleay LICENSE.curl Makefile zxmkdirs.sh
1724
1725TAS3MAS=T3-SSO-ZXID-MODAUTHSAML_$(ZXIDREL)
1726
1727tas3maspkg: mod_auth_saml$(SO)
1728	rm -rf $(TAS3MAS) $(TAS3MAS).zip
1729	mkdir $(TAS3MAS)
1730	$(PERL) ./sed-zxid.pl version $(ZXIDREL) < Manifest.T3-SSO-ZXID-MODAUTHSAML > $(TAS3MAS)/Manifest
1731	$(CP) mod_auth_saml$(SO) $(TAS3MAS)
1732	$(CP) $(TAS3COMMONFILES) $(TAS3MAS)
1733	zip -r $(TAS3MAS).zip $(TAS3MAS)
1734
1735TAS3PHP=T3-SSO-ZXID-PHP_$(ZXIDREL)
1736
1737tas3phppkg: php/php_zxid$(SO)
1738	rm -rf $(TAS3PHP) $(TAS3PHP).zip
1739	mkdir $(TAS3PHP)
1740	$(PERL) ./sed-zxid.pl version $(ZXIDREL) <Manifest.T3-SSO-ZXID-PHP >$(TAS3PHP)/Manifest
1741	$(CP) *.php php/php_zxid$(SO) php/zxid.php php/zxid.ini php/README.zxid-php zxid-php.pd $(TAS3PHP)
1742	$(CP) $(TAS3COMMONFILES) $(TAS3PHP)
1743	zip -r $(TAS3PHP).zip $(TAS3PHP)
1744
1745TAS3JAVA=T3-SSO-ZXID-JAVA_$(ZXIDREL)
1746
1747tas3javapkg: $(ZXIDJNI_SO) zxidjava/zxidjni.class
1748	rm -rf $(TAS3JAVA) $(TAS3JAVA).zip
1749	mkdir $(TAS3JAVA)
1750	mkdir $(TAS3JAVA)/zxidjava
1751	$(PERL) ./sed-zxid.pl version $(ZXIDREL) <Manifest.T3-SSO-ZXID-JAVA >$(TAS3JAVA)/Manifest
1752	$(CP) $(ZXIDJNI_SO) zxidjava/*.java zxidjava/*.class zxidjava/README.zxid-java zxid-java.pd $(TAS3JAVA)/zxidjava
1753	$(CP) $(TAS3COMMONFILES) $(TAS3JAVA)
1754	zip -r $(TAS3JAVA).zip $(TAS3JAVA)
1755
1756TAS3IDP=T3-IDP-ZXID_$(ZXIDREL)
1757
1758tas3idppkg: zxididp zxpasswd zxcot zxdecode
1759	rm -rf $(TAS3IDP) $(TAS3IDP).zip
1760	mkdir $(TAS3IDP)
1761	$(PERL) ./sed-zxid.pl version $(ZXIDREL) < Manifest.T3-IDP-ZXID > $(TAS3IDP)/Manifest
1762	$(CP) zxididp zxpasswd zxcot zxdecode zxid-idp.pd $(TAS3IDP)
1763	$(CP) $(TAS3COMMONFILES) $(TAS3IDP)
1764	zip -r $(TAS3IDP).zip $(TAS3IDP)
1765
1766TAS3LINUXX86=T3-ZXID-LINUX-X86_$(ZXIDREL)
1767
1768tas3linuxx86pkg: zxididp zxpasswd zxcot zxdecode zxlogview mod_auth_saml$(SO) php/php_zxid$(SO) $(ZXIDJNI_SO) zxidjava/zxidjni.class
1769	rm -rf $(TAS3LINUXX86) $(TAS3LINUXX86).zip
1770	mkdir $(TAS3LINUXX86)
1771	mkdir $(TAS3LINUXX86)/zxidjava
1772	mkdir $(TAS3LINUXX86)/php
1773	mkdir $(TAS3LINUXX86)/include
1774	mkdir $(TAS3LINUXX86)/include/zx
1775	mkdir $(TAS3LINUXX86)/include/zx/c
1776	$(PERL) ./sed-zxid.pl version $(ZXIDREL) < Manifest.T3-ZXID-LINUX-X86 > $(TAS3LINUXX86)/Manifest
1777	$(CP) mod_auth_saml$(SO) $(TAS3LINUXX86)
1778	$(CP) *.php zxid-php.pd $(TAS3LINUXX86)
1779	$(CP) php/php_zxid$(SO) php/zxid.php php/zxid.ini php/README.zxid-php $(TAS3LINUXX86)/php
1780	$(CP) zxididp zxpasswd zxcot zxdecode zxlogview zxid-idp.pd $(TAS3LINUXX86)
1781	$(CP) $(LIBZXID_A) $(TAS3LINUXX86)
1782	$(CP) $(ZXIDHDRS) $(TAS3LINUXX86)/include/zx
1783	$(CP) c/*.h $(TAS3LINUXX86)/include/zx/c
1784	$(CP) $(ZXIDJNI_SO) zxidjava/*.java zxidjava/*.class zxidjava/README.zxid-java zxid-java.pd $(TAS3LINUXX86)/zxidjava
1785	$(CP) $(TAS3COMMONFILES) $(TAS3LINUXX86)
1786	zip -r $(TAS3LINUXX86).zip $(TAS3LINUXX86)
1787
1788TAS3WIN32=T3-ZXID-WIN32_$(ZXIDREL)
1789
1790#tas3win32pkg: mod_auth_saml$(SO) php/php_zxid$(SO)
1791#	$(CP) mod_auth_saml$(SO) $(TAS3LINUXX86)
1792#	$(CP) *.php php/php_zxid.dll php/zxid.php php/zxid.ini php/README.zxid-php zxid-php.pd $(TAS3LINUXX86)
1793
1794tas3win32pkg: zxid.dll zxididp zxpasswd zxcot zxdecode zxlogview $(ZXIDJNI_SO) zxidjava/zxidjni.class zxidappdemo.class zxidjava.jar zxiddemo.war
1795	rm -rf $(TAS3WIN32) $(TAS3WIN32).zip
1796	mkdir $(TAS3WIN32)
1797	mkdir $(TAS3WIN32)/include
1798	mkdir $(TAS3WIN32)/include/zx
1799	mkdir $(TAS3WIN32)/include/zx/c
1800	$(PERL) ./sed-zxid.pl version $(ZXIDREL) < Manifest.T3-ZXID-WIN32 > $(TAS3WIN32)/Manifest
1801	$(CP) zxid.dll zxid*.lib $(TAS3WIN32)/
1802	$(CP) $(ZXIDHDRS) $(TAS3WIN32)/include/zx
1803	$(CP) zxididp $(TAS3WIN32)/zxididp.exe
1804	$(CP) zxpasswd $(TAS3WIN32)/zxpasswd.exe
1805	$(CP) zxcot $(TAS3WIN32)/zxcot.exe
1806	$(CP) zxdecode $(TAS3WIN32)/zxdecode.exe
1807	$(CP) zxlogview $(TAS3WIN32)/zxlogview.exe
1808	$(CP) zxid-idp.pd $(TAS3WIN32)
1809	$(CP) mod_auth_saml.dll $(TAS3WIN32)
1810	$(CP) *.php php/php_zxid.dll php/zxid.php php/zxid.ini php/README.zxid-php zxid-php.pd $(TAS3WIN32)
1811	$(CP) $(ZXIDJNI_SO) $(TAS3WIN32)/
1812	$(CP) zxidjava.jar zxiddemo.war zxid-java.pd $(TAS3WIN32)
1813	$(CP) *.java *.class $(TAS3WIN32)
1814	$(CP) $(TAS3COMMONFILES) $(TAS3WIN32)
1815	zip -r $(TAS3WIN32).zip $(TAS3WIN32)
1816
1817# Minimal package with mod_auth_saml or PHP
1818tas3win32pkg-mini: zxid.dll zxididp zxpasswd zxcot zxdecode zxlogview $(ZXIDJNI_SO) zxidjava/zxidjni.class zxidappdemo.class zxidjava.jar zxiddemo.war
1819	rm -rf $(TAS3WIN32) $(TAS3WIN32).zip
1820	mkdir $(TAS3WIN32)
1821	mkdir $(TAS3WIN32)/include
1822	mkdir $(TAS3WIN32)/include/zx
1823	mkdir $(TAS3WIN32)/include/zx/c
1824	$(PERL) ./sed-zxid.pl version $(ZXIDREL) < Manifest.T3-ZXID-WIN32 > $(TAS3WIN32)/Manifest
1825	$(CP) zxid.dll zxid*.lib $(TAS3WIN32)/
1826	$(CP) $(ZXIDHDRS) $(TAS3WIN32)/include/zx
1827	$(CP) zxididp $(TAS3WIN32)/zxididp.exe
1828	$(CP) zxpasswd $(TAS3WIN32)/zxpasswd.exe
1829	$(CP) zxcot $(TAS3WIN32)/zxcot.exe
1830	$(CP) zxdecode $(TAS3WIN32)/zxdecode.exe
1831	$(CP) zxlogview $(TAS3WIN32)/zxlogview.exe
1832	$(CP) zxid-idp.pd $(TAS3WIN32)
1833	$(CP) $(ZXIDJNI_SO) $(TAS3WIN32)/
1834	$(CP) zxidjava.jar zxiddemo.war zxid-java.pd $(TAS3WIN32)
1835	$(CP) *.java *.class $(TAS3WIN32)
1836	$(CP) $(TAS3COMMONFILES) $(TAS3WIN32)
1837	zip -r $(TAS3WIN32).zip $(TAS3WIN32)
1838
1839TAS3SRC=T3-ZXID-SRC_$(ZXIDREL)
1840
1841tas3srcpkg: zxid-$(ZXIDREL).tgz
1842	rm -rf $(TAS3SRC) $(TAS3SRC).zip
1843	mkdir $(TAS3SRC)
1844	$(PERL) ./sed-zxid.pl version $(ZXIDREL) < Manifest.T3-ZXID-SRC > $(TAS3SRC)/Manifest
1845	$(CP) zxid-$(ZXIDREL).tgz $(TAS3SRC)
1846	$(CP) README.zxid-tas3 Changes COPYING LICENSE-2.0.txt LICENSE.openssl LICENSE.ssleay LICENSE.curl $(TAS3SRC)
1847	zip -r $(TAS3SRC).zip $(TAS3SRC)
1848
1849#tas3rel: tas3idppkg tas3javapkg tas3phppkg tas3maspkg tas3srcpkg
1850#tas3copyrel: tas3rel
1851#	scp $(TAS3SRC).zip $(TAS3IDP).zip $(TAS3JAVA).zip $(TAS3PHP).zip $(TAS3MAS).zip tas3repo:pool-in
1852
1853tas3rel: tas3linuxx86pkg tas3srcpkg
1854
1855# tas3pool T3-ZXID-SRC_0.54.zip && tas3pool -u T3-ZXID-SRC_0.54.zip
1856# tas3pool T3-ZXID-LINUX-X86_0.54.zip && tas3pool -u T3-ZXID-LINUX-X86_0.54.zip
1857# tas3pool T3-ZXID-WIN32_0.56.zip
1858
1859tas3copyrel: tas3rel
1860	rsync $(TAS3SRC).zip $(TAS3LINUXX86).zip tas3repo:pool-in
1861
1862.PHONY: precheck_prep_win precheck precheckclean tas3copyrel tas3rel tas3srcpkg
1863.PHONY: tas3win32pkg-mini tas3win32pkg tas3linuxx86pkg tas3idppkg tas3javapkg tas3phppkg tas3maspkg
1864
1865###
1866### Precheck to help analyse compilation problems
1867###
1868
1869ifeq (IGNORE,)
1870precheck/chk-zlib$(EXE): precheck/chk-zlib.$(OBJ_EXT)
1871	$(LD) $(LDFLAGS) $(OUTOPT)$@ $< $(LIBS)
1872
1873precheck/chk-openssl$(EXE): precheck/chk-openssl.$(OBJ_EXT)
1874	$(LD) $(LDFLAGS) $(OUTOPT)$@ $< $(LIBS)
1875
1876precheck/chk-curl$(EXE): precheck/chk-curl.$(OBJ_EXT)
1877	$(LD) $(LDFLAGS) $(OUTOPT)$@ $< $(LIBS)
1878
1879else
1880endif
1881
1882precheck/chk-apache.$(OBJ_EXT): precheck/chk-apache.c
1883	$(CC) $(OUTOPT)$@ -c $< $(CFLAGS) $(APACHE_INC) $(APR_INC)
1884
1885precheck/chk-apache$(EXE): precheck/chk-apache.$(OBJ_EXT)
1886	$(LD) $(LDFLAGS) $(OUTOPT)$@ $< $(LIBS)
1887
1888zxsizeof: zxsizeof.$(OBJ_EXT)
1889	$(LD) $(LDFLAGS) $(OUTOPT)$@ $< $(LIBZXID) $(LIBS)
1890
1891zxsizeof-static-x64: zxsizeof.$(OBJ_EXT)
1892	diet gcc $(OUTOPT)$@$(EXE) zxsizeof.c -static
1893
1894xzxsizeof:
1895	$(CC) $(OUTOPT)zxsizeof zxsizeof.o
1896
1897zx/zx.h:
1898	echo "zx symlink for includes (ln -s . zx) missing. Emulating by creating zx directory..."
1899	mkdir zx
1900	mkdir zx/c
1901	$(CP) *.h zx
1902	$(CP) c/*.h zx/c
1903
1904ifeq ($(CROSS_COMPILE),1)
1905precheck: precheck/chk-zlib.$(OBJ_EXT) precheck/chk-zlib$(EXE) precheck/chk-openssl.$(OBJ_EXT) precheck/chk-openssl$(EXE) precheck/chk-curl.$(OBJ_EXT) precheck/chk-curl$(EXE)
1906	@$(ECHO) "Cross compile simplified precheck ok."
1907	@$(ECHO)
1908else
1909
1910# Windows does not support symlinks (or the support is confusing and buggy, especially
1911# when cygwin and/or mingw are involved): solution is to simply copy the headers.
1912
1913precheck_prep_win:
1914	rm -rf zx
1915	mkdir zx zx/c
1916	$(CP) *.h zx/
1917	$(CP) c/*.h zx/c/
1918
1919precheck: $(PRECHECK_PREP) precheck/chk-zlib.$(OBJ_EXT) precheck/chk-zlib$(EXE) precheck/chk-openssl.$(OBJ_EXT) precheck/chk-openssl$(EXE) precheck/chk-curl.$(OBJ_EXT) precheck/chk-curl$(EXE) zx/zx.h
1920	@$(ECHO) CC=$(CC)
1921	which gcc
1922	$(CC) -v
1923	@$(ECHO)
1924	precheck/chk-zlib$(EXE)
1925	precheck/chk-openssl$(EXE)
1926	precheck/chk-curl$(EXE)
1927	@$(ECHO) "Precheck ok."
1928	@$(ECHO)
1929endif
1930
1931precheckclean:
1932	rm -f precheck/*.$(OBJ_EXT)
1933	rm -f precheck/chk-zlib.exe precheck/chk-openssl.exe precheck/chk-curl.exe precheck/chk-apache.exe
1934
1935###
1936### Test suite (outdated, use zxcot -dirs instead)
1937###
1938
1939t/cot:
1940	sh ./zxmkdirs.sh t/
1941
1942t/idpcot:
1943	sh ./zxmkdirs.sh t/idp
1944
1945t/wspcot:
1946	sh ./zxmkdirs.sh t/wsp
1947
1948t/wsp2cot:
1949	sh ./zxmkdirs.sh t/wsp2
1950
1951test: t/cot t/idpcot t/wsp t/wsp2 zxencdectest zxcall zxumacall zxididp
1952	$(PERL) zxtest.pl -a
1953
1954#test: test.$(OBJ_EXT)
1955#	$(CC) $(OUTOPT)$@ $< $(LIBZXID) $(LIBS)
1956
1957win32loadlibtest.exe: win32loadlibtest.$(OBJ_EXT)
1958	$(CC) $(OUTOPT)$@ $<
1959
1960### Test dynamic link library loading (on Windows)
1961
1962zxidjava/testjni.class: zxidjava/testjni.java
1963	cd zxidjava; $(JAVAC) $(JAVAC_FLAGS) test*.java
1964
1965zxidjava/testjni.$(OBJ_EXT): zxidjava/testjni.c
1966	$(CC) -c $< $(OUTOPT)$@ $(JNI_INC) $(CFLAGS) $(CDEF) $(CINC)
1967
1968zxidjava/libtestjni.a: zxidjava/testjni.$(OBJ_EXT)
1969	$(ARC) $@ $^
1970
1971zxidjava/testjni.dll: zxidjava/libtestjni.a
1972	$(LD) $(OUTOPT)$@ $(SHARED_FLAGS) $^ $(SHARED_CLOSE)
1973
1974zxidjava/testmain: zxidjava/testmain.$(OBJ_EXT)
1975	$(LD) $(LDFLAGS) $(OUTOPT)$@ $< $(LIBS)
1976
1977testmain.class: testmain.java
1978	$(JAVAC) $(JAVAC_FLAGS) zxidjava/test*.java testmain.java
1979
1980testdll: zxidjava/testmain zxidjava/testjni.dll testmain.class
1981
1982testdll.zip: testdll
1983	zip $@ zxidjava/testmain zxidjava/testjni.dll testmain.class testmain.java zxidjava/test*.class zxidjava/test*.java
1984
1985testdll.tar: testdll
1986	tar cf $@ zxidjava/testmain zxidjava/testjni.dll testmain.class testmain.java zxidjava/test*.class zxidjava/test*.java
1987
1988testdllclean:
1989	rm -rf testmain.class zxidjava/test*.class zxidjava/test*.$(OBJ_EXT) zxidjava/testmain zxidjava/libtestjni.a zxidjava/test*.dll
1990
1991testclean:
1992	rm -rf t/*ses t/*user t/*/uid t/*nid t/*log t/*cot t/*pem tmp/*.out tmp/*.err
1993
1994###
1995### Installation (needs more work, try `make dir' or `make dir ZXID_PATH=/var/zxid/idp')
1996###  ./zxmkdirs.sh /var/zxid/idp
1997###
1998
1999dir:
2000	sh ./zxmkdirs.sh $(ZXID_PATH)
2001	-cp default-cot/* $(ZXID_PATH)cot
2002
2003#	cp zxid.pem $(ZXID_PATH)pem/sign-nopw-cert.pem
2004#	cp zxid.pem $(ZXID_PATH)pem/enc-nopw-cert.pem
2005#	cp zxid.pem $(ZXID_PATH)pem/logenc-nopw-cert.pem
2006#	cp zxid.pem $(ZXID_PATH)pem/logsign-nopw-cert.pem
2007#	cp zxid.pem $(ZXID_PATH)pem/logenc.key
2008
2009dirs: dir
2010	@$(ECHO) "You should use `make dir' instead!"
2011
2012install_nodep:
2013	@$(ECHO) "===== Installing in $(PREFIX) (to change do make install PREFIX=/your/path)"
2014	-mkdir -p $(PREFIX) $(PREFIX)/bin $(PREFIX)/lib $(PREFIX)/include/zxid $(PREFIX)/include/zx $(PREFIX)/doc
2015	$(CP) zxmkdirs.sh zxcall zxumacall zxpasswd zxcot zxlogview zxbusd zxbustailf zxbuslist zxdecode zxencdectest zxcleanlogs.sh zximport-htpasswd.pl zximport-ldif.pl xml-pretty.pl diffy.pl smime send.pl xacml2ldif.pl mockpdp.pl env.cgi zxid-java.sh zxidatsel.pl zxidnewuser.pl zxidcot.pl zxiddash.pl zxidexplo.pl zxidhlo zxidhlo.pl zxidhlo.php zxidhlo.sh zxidhlo-java.sh zxidhlocgi.php zxidhlowsf zxidhrxmlwsc zxidhrxmlwsp zxididp zxidsimple zxidwsctool zxidwspcgi zxtest.pl mini_httpd_zxid $(PREFIX)/bin
2016	$(CP) $(LIBZXID_A) libzxid.so* $(PREFIX)/lib
2017	$(CP) libzxid.so.0.0 $(PREFIX)/lib
2018	$(CP) *.h c/*.h $(PREFIX)/include/zxid
2019	$(CP) zx.h $(PREFIX)/include/zx
2020	$(CP) *.pd *.dia $(PREFIX)/doc
2021	@$(ECHO) "You will need to copy zxidhlo binary where your web server can find it and"
2022	@$(ECHO) "make sure your web server is configured to recognize zxidhlo as a CGI script."
2023	@$(ECHO)
2024	@$(ECHO) "For a quick test, you can try putting following in your /etc/hosts:"
2025	@$(ECHO)
2026	@$(ECHO) "  127.0.0.1       localhost sp1.zxidcommon.org sp1.zxidsp.org"
2027	@$(ECHO)
2028	@$(ECHO) "and then run"
2029	@$(ECHO)
2030	@$(ECHO) "  mini_httpd -p 8443 -c zxid -S -E zxid.pem"
2031	@$(ECHO)
2032	@$(ECHO) "in the zxid build (usually distribution) directory and then point web browser to"
2033	@$(ECHO)
2034	@$(ECHO) "https://sp1.zxidsp.org:8443/zxid"
2035	@$(ECHO)
2036
2037install:  $(DEFAULT_EXE) $(LIBZXID_A) libzxid.so.0.0 dir install_nodep
2038
2039.PHONY: dir dirs installtestclean testdllclean
2040
2041#
2042# Maintenance
2043#
2044
2045tags:
2046	etags *.[hc] c/*.[hc] mini_httpd-1.19-zxid/*.[hc]
2047
2048#SSL=/aino/openssl-0.9.8g
2049#SSL=/aino/openssl-1.0.0c
2050SSL=/home/sampo/openssl-1.0.1m
2051BB=/aino/busybox-1.11.1
2052#DS=~/ds
2053#DS=/d/sampo/ds4/ds
2054DS=/home/sampo/ds
2055SLIM=/home/sampo/slim
2056PD=/home/sampo/pd
2057APACHE=/aino/httpd-2.2.8
2058
2059megatags:
2060	etags *.[hc] c/*.[hc] c/*.ds  mini_httpd-1.19-zxid/*.[hc] $(SSL)/*/*.[hc] $(SSL)/*/*/*.[hc] $(PD)/xsd2sg.pl $(PD)/pd2tex $(BB)/*/*.[hc] $(BB)/*/*/*.[hc] $(BB)/*/*/*/*.[hc]
2061
2062# $(DS)/*/*.[hc] $(DS)/*/*.ds $(DS)/io/dsproxy-test.pl $(SLIM)/*/*.ds $(SLIM)/conf/*/*.ds
2063# $(APACHE)/*/*.[hc] $(APACHE)/*/*/*.[hc] $(APACHE)/*/*/*/*.[hc] $(APACHE)/*/*/*/*/*.[hc] $(APACHE)/*/*/*/*/*/*.[hc]
2064
2065docclean:
2066	rm -f *.dbx *.tex
2067
2068distclean: clean
2069
2070cleanbin:
2071	rm -f zxid zxidsimple zxbench zxencdectest zxmqtest $(LIBZXID_A) libzxid.so* zxsizeof zxid.stderr
2072	rm -f zxidhlo zxidhlowsf zxidhrxmlwsc zxidhrxmlwsp zxidsimple zxidsp zxidwsctool
2073	rm -f zxidwspcgi zxidxfoobarwsp zxpasswd zxcot zxcall zxumacall zxbusd zxbustailf zxbuslist
2074	rm -f mod_auth_saml$(SO) zxididp zxdecode zxlogview zxcot zxpasswd smime
2075	rm -f zxid.dll zxidjava/zxidjni.dll *.exe
2076
2077miniclean: perlclean phpclean pyclean rubyclean csharpclean javaclean docclean precheckclean
2078	@$(ECHO) ------------------ Making miniclean
2079	rm -f *.o *.obj zxid zxlogview zxbench zxencdectest zxmqtest $(LIBZXID_A) libzxid.so* sizeof zxid.stderr
2080	rm -f zxidhlo zxidhlowsf zxidhrxmlwsc zxidhrxmlwsp zxidsimple zxidsp zxidwsctool
2081	rm -f mod_auth_saml$(SO) zxididp zxbusd zxbustailf zxbuslist
2082	rm -f core* *~ .*~ .\#* c/.*~ c/.\#* sg/*~ sg/.*~ sg/.\#* foo bar ak.*
2083
2084# make cleany && make genwrap ENA_GEN=1 && make all ENA_GEN=1
2085# make cleany && make gen ENA_GEN=1 && make all ENA_GEN=1
2086
2087cleany: clean perlcleaner phpcleaner pycleaner rubycleaner csharpcleaner javacleaner cleangcov
2088	@$(ECHO) ------------------ Making cleany
2089	rm -f c/*.[hc] c/*.gperf c/*.y c/*.ds
2090	rm -rf pulver; mkdir pulver
2091
2092cleaner: cleany
2093	@$(ECHO) ================== Making cleaner
2094	rm -f deps deps.dep c/*.deps
2095
2096regen: clean perlcleaner phpcleaner pycleaner rubycleaner csharpcleaner javacleaner
2097	@$(ECHO) ================== Making regen
2098	rm -f c/*.[hc] c/*.gperf c/*.y deps deps.dep c/*.deps
2099
2100# N.B. The clean and dist targets deliberately do not delete contents of
2101#      directory c/ although they are generated files. This is to allow
2102#      zxid to be built without the tools needed to generate those files.
2103clean: perlclean phpclean pyclean rubyclean csharpclean javaclean docclean precheckclean cleanbin
2104	@$(ECHO) ------------------ Making clean
2105	rm -f *.o */*.o *.obj */*.obj
2106	rm -f core* *~ .*~ .\#* c/.*~ c/.\#* sg/*~ sg/.*~ sg/.\#* foo bar ak.*
2107
2108winclean:
2109	del /Q precheck\*.obj precheck\*.exe
2110	del /Q *.obj c\*.obj
2111
2112.PHONY: winclean clean regen cleaner cleany miniclean cleanbin distclean docclean megatags tags
2113
2114strip_bins:
2115	$(ECHO) $(STRIP) $(DEFAULT_EXE) $(ALL_EXE)
2116	$(STRIP) $(DEFAULT_EXE) $(ALL_EXE)
2117
2118# zxcot -n -g http://federation.njedge.net/metadata/njedge-fed-metadata.xml
2119
2120dist zxid-$(ZXIDREL).tgz:
2121	rm -rf zxid-$(ZXIDREL)
2122	mkdir zxid-$(ZXIDREL) zxid-$(ZXIDREL)/c zxid-$(ZXIDREL)/sg zxid-$(ZXIDREL)/t zxid-$(ZXIDREL)/tex  zxid-$(ZXIDREL)/html zxid-$(ZXIDREL)/pulver zxid-$(ZXIDREL)/Net zxid-$(ZXIDREL)/Metadata zxid-$(ZXIDREL)/Raw zxid-$(ZXIDREL)/WSC zxid-$(ZXIDREL)/WSF_Raw zxid-$(ZXIDREL)/php zxid-$(ZXIDREL)/zxidjava zxid-$(ZXIDREL)/servlet zxid-$(ZXIDREL)/servlet/WEB-INF zxid-$(ZXIDREL)/servlet/META-INF zxid-$(ZXIDREL)/default-cot zxid-$(ZXIDREL)/py zxid-$(ZXIDREL)/ruby zxid-$(ZXIDREL)/csharp zxid-$(ZXIDREL)/precheck zxid-$(ZXIDREL)/pers zxid-$(ZXIDREL)/intra zxid-$(ZXIDREL)/protected zxid-$(ZXIDREL)/strong zxid-$(ZXIDREL)/other zxid-$(ZXIDREL)/mini_httpd-1.19-zxid  zxid-$(ZXIDREL)/mini_httpd-1.19-zxid/contrib  zxid-$(ZXIDREL)/mini_httpd-1.19-zxid/contrib/redhat-rpm zxid-$(ZXIDREL)/mini_httpd-1.19-zxid/scripts zxid-$(ZXIDREL)/drupal zxid-$(ZXIDREL)/drupal/authn_sso
2123	(cd zxid-$(ZXIDREL); ln -s . zx)
2124	$(PERL) mkdist.pl zxid-$(ZXIDREL) <Manifest
2125	tar czf zxid-$(ZXIDREL).tgz zxid-$(ZXIDREL)
2126
2127linbindist:
2128	rm -rf zxid-$(ZXIDREL)-ix86-linux-bin
2129	mkdir zxid-$(ZXIDREL)-ix86-linux-bin zxid-$(ZXIDREL)-ix86-linux-bin/c zxid-$(ZXIDREL)-ix86-linux-bin/sg zxid-$(ZXIDREL)-ix86-linux-bin/t  zxid-$(ZXIDREL)-ix86-linux-bin/tex  zxid-$(ZXIDREL)-ix86-linux-bin/html zxid-$(ZXIDREL)-ix86-linux-bin/pulver zxid-$(ZXIDREL)-ix86-linux-bin/Net zxid-$(ZXIDREL)-ix86-linux-bin/Metadata zxid-$(ZXIDREL)-ix86-linux-bin/Raw zxid-$(ZXIDREL)-ix86-linux-bin/WSC zxid-$(ZXIDREL)-ix86-linux-bin/WSF_Raw zxid-$(ZXIDREL)-ix86-linux-bin/php zxid-$(ZXIDREL)-ix86-linux-bin/zxidjava zxid-$(ZXIDREL)-ix86-linux-bin/servlet zxid-$(ZXIDREL)-ix86-linux-bin/servlet/WEB-INF
2130	(cd zxid-$(ZXIDREL)-ix86-linux-bin; ln -s . zx)
2131	$(PERL) mkdist.pl zxid-$(ZXIDREL)-ix86-linux-bin <Manifest.bin
2132	tar czf zxid-$(ZXIDREL)-ix86-linux-bin.tgz zxid-$(ZXIDREL)-ix86-linux-bin
2133
2134winbindist:
2135	rm -rf zxid-$(ZXIDREL)-win32-bin
2136	mkdir zxid-$(ZXIDREL)-win32-bin zxid-$(ZXIDREL)-win32-bin/c zxid-$(ZXIDREL)-win32-bin/zxidjava  zxid-$(ZXIDREL)-win32-bin/php
2137	$(CP) zxid.dll zxidhlo.exe zxidsimple.exe zxididp.exe zxcot.exe zxpasswd.exe zxdecode.exe zxlogview.exe smime.exe zxcall.exe zxumacall.exe *.a *.def *.h *.java *.class *.war zxid-$(ZXIDREL)-win32-bin
2138	$(CP) zxidjava/*.class $(ZXIDJNI_SO) zxidjava/zxid_wrap.c zxid-$(ZXIDREL)-win32-bin/zxidjava
2139	$(CP) COPYING LICENSE-2.0.txt LICENSE.openssl LICENSE.ssleay LICENSE.curl README.zxid README.zxid-win32 zxid-$(ZXIDREL)-win32-bin
2140	$(CP) c/*.h zxid-$(ZXIDREL)-win32-bin/c
2141	zip -r zxid-$(ZXIDREL)-win32-bin.zip zxid-$(ZXIDREL)-win32-bin
2142
2143#	$(CP) *.php mod_auth_saml.dll zxid-$(ZXIDREL)-win32-bin
2144#	$(CP) php/*.php php/php_zxid.dll  zxid-$(ZXIDREL)-win32-bin/php
2145
2146
2147common_bins: zxlogview$(EXE)  zxcot$(EXE) zxdecode$(EXE) zxcall$(EXE) zxumacall$(EXE) smime$(EXE) zxidhlo$(EXE) zxidsimple$(EXE) zxididp$(EXE) zxpasswd$(EXE)
2148
2149
2150.PHONY: winbindist linbindist dist
2151
2152# To create release
2153#   make cleaner          # remember c/zxidvers.h
2154#   time make dep ENA_GEN=1
2155#   time make all ENA_GEN=1
2156#   make doc
2157#     pd2tex README.zxid
2158#     pd2tex index.pd
2159#     pd2tex apache.pd
2160#     pd2tex mod_auth_saml.pd
2161#   make javaswigchk
2162#   make gitreadd
2163#   make dist
2164#   make copydist
2165#   make release
2166#   make relhtml
2167#   make clean
2168#   make TARGET=xmingw
2169#   make zxid.dll TARGET=xmingw
2170#   make winbindist
2171#   make winbinrel
2172#   make tas3rel
2173#   make tas3copyrel         # tas3pool -u T3-ZXID-LINUX-X86_0.54.zip
2174#    ./pool-submit.sh 0.62   # ssh kilo.tas3.eu
2175#   make gen ENA_GEN=1
2176# zxid.user@lists.unh.edu, wsf-dev@lists.openliberty.org
2177
2178#WEBROOT=sampo@zxid.org:zxid.org
2179WEBROOTHOST=sampo@zxidp.org
2180WEBROOTDIR=/var/zxid/webroot
2181WEBROOT=sampo@zxidp.org:/var/zxid/webroot/zxid.org/
2182
2183copydist:
2184	rsync zxid-$(ZXIDREL).tgz $(WEBROOT)
2185
2186tex/%.pdf: %.pd
2187	$(PD2TEX) -noref -nortf -nodbx -nohtml $<
2188
2189html/%.html: %.pd doc-inc.pd doc-end.pd
2190	$(PD2TEX) -noref -nortf -nodbx -notex $<
2191
2192tex/README.zxid.pdf: README.zxid
2193	$(PD2TEX) -noref -nortf -nodbx -nohtml $<
2194
2195html/README.zxid.html: README.zxid doc-inc.pd doc-end.pd
2196	$(PD2TEX) -noref -nortf -nodbx -notex README.zxid
2197
2198DOC= html/README.zxid.html html/index.html html/apache.html html/mod_auth_saml.html html/zxid-simple.html html/zxid-install.html html/zxid-conf.html html/zxid-cot.html html/zxid-java.html html/zxid-log.html html/zxid-perl.html html/zxid-php.html html/zxid-raw.html html/zxid-wsf.html html/zxid-idp.html html/zxid-faq.html html/schemata.html
2199
2200doc: $(DOC)
2201
2202docpdf: $(DOC:html/%.html=tex/%.pdf)
2203
2204cleandoc:
2205	rm -f $(DOC)
2206
2207release:
2208	rsync tex/README.zxid.pdf html/README.zxid-win32.html html/i-*.png zxid-frame.html $(WEBROOT)
2209
2210winbinrel:
2211	rsync zxid-$(ZXIDREL)-win32-bin.zip $(WEBROOT)
2212
2213indexrel: zxid-tas3-ios-index.html old-releases.html
2214	rsync $^ $(WEBROOT)
2215
2216reldoc:
2217	rsync $(DOC)  $(WEBROOT)/html
2218
2219relhtml:
2220	rsync html/*  $(WEBROOT)/html
2221
2222refhtml:
2223	rsync ref/html/*  $(WEBROOT)/ref/html
2224
2225zxidpcopytc: html/zxidp-user-terms.html html/zxidp-sp-terms.html
2226	rsync html/zxidp-user-terms.html html/zxidp-sp-terms.html $(WEBROOT)/html
2227
2228rsynclite:
2229	cd ..; rsync -a '--exclude=*.o' '--exclude=*.zip' '--exclude=TAGS' '--exclude=*.tgz' '--exclude=*.class' '--exclude=*.so' '--exclude=*.a'  '--exclude=zxlogview' '--exclude=zxidsimple'  '--exclude=zxidhlowsf'  '--exclude=zxidhlo' '--exclude=zxidsp' '--exclude=zxbusd' '--exclude=zxbustailf' '--exclude=zxbuslist' zxid mesozoic.homeip.net:
2230
2231cvstag:
2232	cvs tag ZXID_ZXIDREL_$(ZXIDVERSION)
2233
2234.PHONY: cvstag cleandoc docpdf doc copydist
2235.PHONY: rsyncline zxidpcopytc refhtml relhtml reldoc indexrel winbinrel release
2236
2237### Coverage analysis
2238### See also: make gcov, make lcov (and lcovhtml directory), man gcov, man gprof
2239###   profiling:/home/sampo/zxid/zxidconf.gcda:Version mismatch - expected 304* got 403*
2240###
2241### N.B. Apparently gcov is very picky between compiler versions (and libgcov version).
2242### Be sure to use you only use matching pair. gcov is also fidgety about processing
2243### source code subdirectories (presumably because it was compiled from top level
2244### directory). Apparently all subdirectory .gcov files land on top level.
2245###
2246### .gcno graph files are created at compile time. Recompile (with  -ftest-coverage) to recreate.
2247### .gcda arc files are updated at runtime (if compiled with -fprofile-arcs)
2248### gmon.out is created at runtime if compiled with -pg
2249#
2250#ls *.c c/*.c Net/*.c php/*.c zxidjava/*.c precheck/*.c | xargs $(GCOV)
2251# 	$(GCOV) *.c c/*.c Net/*.c php/*.c zxidjava/*.c precheck/*.c
2252#	$(GCOV) -o Net Net/*.c
2253#	$(GCOV) -o php php/*.c
2254
2255gcov:
2256	@$(ECHO) "Remember to compile for profiling: make all ENA_PG=1 && make gcov"
2257	echo GCOV=$(GCOV)
2258	which gcov
2259	$(GCOV) -v
2260	$(GCOV) *.c
2261	ls c/*.c | xargs -l $(GCOV) -o c
2262	$(GCOV) -o zxidjava zxidjava/*.c
2263	$(GCOV) -o precheck precheck/*.c
2264
2265# gcov /a/d/sampo/zxid/zxidconf.gcda -o /home/sampo/zxid -b -c -a -p
2266
2267covrep:
2268	sh ./covrep.sh
2269
2270### lcov is alternative to gcov target (it runs gcove internally, as specified by --gcov-tool)
2271### We have tested with versions 1.8 and 1.9, see http://ltp.sourceforge.net/coverage/lcov.php
2272
2273lcov:
2274	rm -rf lcovhtml; mkdir lcovhtml
2275	$(LCOV) --gcov-tool $(GCOV) --ignore-errors graph -b . -d . -c -no-checksum -o lcovhtml/zxid.info
2276	$(GENHTML) -t 'ZXID Code Coverage' -o lcovhtml lcovhtml/zxid.info
2277
2278copylcov:
2279	ssh $(WEBROOTHOST) mkdir $(WEBROOTDIR)/lcovhtml-$(ZXIDREL) || true
2280	rsync -a lcovhtml/* $(WEBROOT)/lcovhtml-$(ZXIDREL)
2281
2282gprof:
2283	gprof zxencdectest
2284
2285cleangcov:
2286	rm -f *.gcno *.gcda *.c.gcov *.y.gcov *.c-ann gmon.out
2287	rm -f */*.gcno */*.gcda */*.c.gcov */*.y.gcov */*.c-ann */gmon.out
2288	rm -f lcovhtml/zxid.info lcovhtml/zxid/*.html lcovhtml/zxid/c/*.html
2289	rm -f gmon.out
2290
2291.PHONY: cleangcov gprof copylcov lcov gcov covrep
2292
2293### Call graphs and reference documentation
2294
2295function.list:
2296	$(PERL) ./call-anal.pl -n *.c >junk
2297
2298callgraph_annotate:
2299	$(PERL) ./call-anal.pl *.c >callgraph.dot
2300
2301callgraph:
2302	$(PERL) ./call-anal.pl -n *.c >callgraph.dot
2303	dot -Tps main-call.dot -o main-call.ps
2304	dot -Tps callgraph.dot -o callgraph.ps  # slow
2305
2306callgraph_zxbus:
2307	$(PERL) ./call-anal.pl -n *.c >callgraph.dot
2308	dot -Tps ref/hi_shuffle-call.dot       -o ref/hi_shuffle-call.ps
2309	dot -Tps ref/zxbus_listen_msg-call.dot -o ref/zxbus_listen_msg-call.ps
2310	dot -Tps ref/zxid_simple_cf-call.dot   -o ref/zxid_simple_cf-call.ps
2311
2312API_REF_SRC=aux-templ.c dec-templ.c enc-templ.c getput-templ.c \
2313 mod_auth_saml.c \
2314 zxcrypto.c zxida7n.c zxidcdc.c zxidcgi.c zxidconf.c zxidcurl.c \
2315 zxidecp.c zxidepr.c zxidlib.c zxidloc.c \
2316 zxidmeta.c zxidmk.c zxidmkwsf.c zxidmni.c zxidpep.c zxidpdp.c \
2317 zxidses.c zxidsimp.c zxidpool.c zxidslo.c zxidspx.c zxididpx.c zxiddec.c \
2318 zxidsso.c zxidpsso.c zxiddi.c   zxidim.c  zxidps.c \
2319 zxiduser.c zxidwsc.c zxidwsp.c \
2320 zxlib.c zxlibdec.c zxlibenc.c zxbusprod.c zxlog.c zxlogview.c zxns.c zxpw.c zxsig.c zxutil.c
2321
2322refcall:
2323	$(PERL) ./call-anal.pl -n $(API_REF_SRC) >callgraph.dot
2324
2325reference: refcall
2326	cd ref; $(PD2TEX) -noref -nortf -nodbx ref.pd
2327	cd ref/tex; pdflatex -file-line-error-style -interaction=errorstopmode ref.tex # Thrice so refs and index are right
2328	cd ref/tex #; pdflatex -file-line-error-style -interaction=errorstopmode ref.tex # Thrice so refs and index are right
2329
2330ifeq ($(PULVER),1)
2331
2332dep: $(PULVER_DEPS)
2333	rm -f deps.dep
2334	$(MAKE) deps.dep
2335
2336deps: zxdecode.c zxcot.c zxpasswd.c zxidhlo.c zxbusd.c zxbustailf.c zxbuslist.c zxidsimple.c $(ZX_OBJ:.o=.c) c/saml2-const.h c/saml2md-const.h c/wsf-const.h $(PULVER_DEPS) c/zxidvers.h
2337	@$(ECHO) ================== Making deps
2338	cat pulver/c_saml2_dec_c.deps | xargs $(CC) $(CDEF) $(CINC) -MM >>deps.dep
2339	cat pulver/c_saml2_enc_c.deps | xargs $(CC) $(CDEF) $(CINC) -MM >>deps.dep
2340	cat pulver/c_saml2_aux_c.deps | xargs $(CC) $(CDEF) $(CINC) -MM >>deps.dep
2341	cat pulver/c_saml2_getput_c.deps | xargs $(CC) $(CDEF) $(CINC) -MM >>deps.dep
2342	cat pulver/c_saml2md_dec_c.deps | xargs $(CC) $(CDEF) $(CINC) -MM >>deps.dep
2343	cat pulver/c_saml2md_enc_c.deps | xargs $(CC) $(CDEF) $(CINC) -MM >>deps.dep
2344	cat pulver/c_saml2md_aux_c.deps | xargs $(CC) $(CDEF) $(CINC) -MM >>deps.dep
2345	cat pulver/c_saml2md_getput_c.deps | xargs $(CC) $(CDEF) $(CINC) -MM >>deps.dep
2346	$(CC) $(CDEF) $(CINC) -MM zxdecode.c zxcot.c zxpasswd.c zxidhlo.c zxbusd.c zxbustailf.c zxbuslist.c zxidsimple.c c/saml2-const.h c/saml2md-const.h >>deps.dep
2347
2348#	$(ECHO) Deps built. $(foreach fil,$^,$(shell $(fil) >>deps.dep))
2349
2350else
2351
2352dep: deps
2353
2354deps: $(ZX_OBJ:.o=.c) $(ZXID_LIB_OBJ:.o=.c) $(WSF_OBJ:.o=.c) $(OAUTH_OBJ:.o=.c) $(SMIME_LIB_OBJ:.o=.c) zxdecode.c zxcot.c zxpasswd.c zxidhlo.c zxbusd.c zxbustailf.c zxbuslist.c zxidsp.c zxidsimple.c $(ZX_OBJ:.o=.c) $(ZX_GEN_H) $(ZX_GEN_C) c/zx-const.h c/zxidvers.h
2355	$(CC) $(CDEF) $(CINC) -MM $^ >deps.dep
2356
2357# make gen ENA_GEN=1
2358
2359endif
2360
2361# N.B. If deps target and the actual deps.dep file have same name,
2362# the deps target will be made every time deps is missing - even
2363# when attempting to run `make clean'
2364
2365-include deps.dep
2366
2367seehelp:
2368	@$(ECHO) "If you get compilation errors, try: make help"
2369	@$(ECHO) "Now trying to compile series of test programs to check dependencies..."
2370	@$(ECHO)
2371
2372help:
2373	@$(ECHO) "ZXID $(ZXIDREL) make help (see zxid.org for further information)"
2374	@$(ECHO)
2375	@$(ECHO) "N.B.  There is no configure script. The Makefile works for all"
2376	@$(ECHO) "      supported platforms by provision of correct TARGET option."
2377	@$(ECHO) "N.B2: We distribute some generated files. If they are missing, you need"
2378	@$(ECHO) "      to regenerate them: make cleaner; make dep ENA_GEN=1"
2379	@$(ECHO)
2380	@$(ECHO) "To compile for Linux 2.6: make or make TARGET=Linux"
2381	@$(ECHO) "To compile for MacOS 10:  make TARGET=macosx"
2382	@$(ECHO) "To compile for Solaris 8: make TARGET=sol8"
2383	@$(ECHO) "To compile for Sparc Solaris 8 with cross compiler:"
2384	@$(ECHO) '  PATH=/apps/gcc/sol8/bin:/apps/binutils/sol8/bin:$$PATH make TARGET=xsol8'
2385	@$(ECHO)
2386	@$(ECHO) "If you get compilation or linking errors about missing this or that,"
2387	@$(ECHO) "the chances are that you need to override some make variables with"
2388	@$(ECHO) "paths that make sense in your local situation. The best way is to"
2389	@$(ECHO) "first study the Makefile and then add your overrides to localconf.mk"
2390	@$(ECHO) "or on make command line. Some of the most common ones:"
2391	@$(ECHO) "  CFLAGS        Additional compiler flags needed on your platform"
2392	@$(ECHO) "  CDEF          Additional -D flags needed on your platform"
2393	@$(ECHO) "  CINC          Additional -I flags needed on your platform"
2394	@$(ECHO) "  LIBS          Additional -L and -l flags needed on your platform"
2395	@$(ECHO) "  JAVAC         Where to find javac; where jdk is installed"
2396	@$(ECHO) "  JNI_INC       Where jni.h and jni_md.h are found"
2397	@$(ECHO) "  SERVLET_PATH  Where servlet-api.jar is found; where Tomcat is installed."
2398	@$(ECHO) "  SHARED        Set to 1 for shared object (DLL) build. Default: static."
2399	@$(ECHO)
2400	@$(ECHO) "You may need to install dependency packages. For compilation you"
2401	@$(ECHO) "need the devel versions that have the headers. For example: "
2402	@$(ECHO) "  sudo apt-get install build-essential  # Debian"
2403	@$(ECHO) "  sudo apt-get install linux-libc-dev"
2404	@$(ECHO) "  sudo apt-get install libc6-dev-i386"
2405	@$(ECHO) "  sudo apt-get install libgcrypt-dev"
2406	@$(ECHO) "  sudo apt-get install libssl-dev"
2407	@$(ECHO) "  sudo apt-get install libcurl4-openssl-dev"
2408	@$(ECHO) "  sudo apt-get install libapr1-dev"
2409	@$(ECHO) "  sudo apt-get install apache2-dev"
2410	@$(ECHO) "  sudo apt-get install php5-dev"
2411	@$(ECHO) "  sudo apt-get install openjdk-6-jdk"
2412	@$(ECHO) "  sudo apt-get install mini-httpd"
2413	@$(ECHO) "  sudo yum -y install openssl-devel     # Redhat"
2414	@$(ECHO) "  sudo yum -y install libcurl-devel"
2415	@$(ECHO)
2416	@$(ECHO) "Following platform TARGETs are available:"
2417	@$(ECHO)
2418	@egrep '^ifeq \(.\(TARGET\),[A-Za-z0-9-]+\)' Makefile
2419	@$(ECHO)
2420	@$(ECHO) "Following make targets are available:"
2421	@$(ECHO)
2422	@egrep '^[a-z-]+:' Makefile
2423
2424.PHONY: help seehelp dep deps reference refcall callgraph_zxbus callgraph callgraph_annotate
2425
2426#EOF
2427