1# Makefile for xmlsec, specific for Windows, MSVC and NMAKE.
2#
3# Take a look at the beginning and modify the variables to suit your
4# environment.
5XMLSEC_STATIC          = yes
6XMLSEC_DEFAULT_CRYPTO  = openssl
7XMLSEC_CFLAGS          =
8XMLSEC_LIBS            =
9
10# There should never be a need to modify anything below this line.
11XMLSEC_OBJS_DIR = build
12XMLSEC_EXAMPLES = \
13	$(XMLSEC_OBJS_DIR)\sign1.exe \
14	$(XMLSEC_OBJS_DIR)\sign2.exe \
15	$(XMLSEC_OBJS_DIR)\sign3.exe \
16	$(XMLSEC_OBJS_DIR)\verify1.exe \
17	$(XMLSEC_OBJS_DIR)\verify2.exe \
18	$(XMLSEC_OBJS_DIR)\verify3.exe \
19	$(XMLSEC_OBJS_DIR)\verify4.exe \
20	$(XMLSEC_OBJS_DIR)\encrypt1.exe \
21	$(XMLSEC_OBJS_DIR)\encrypt2.exe \
22	$(XMLSEC_OBJS_DIR)\encrypt3.exe \
23	$(XMLSEC_OBJS_DIR)\decrypt1.exe \
24	$(XMLSEC_OBJS_DIR)\decrypt2.exe \
25	$(XMLSEC_OBJS_DIR)\decrypt3.exe \
26
27#
28!IF "$(XMLSEC_DEFAULT_CRYPTO)" == "openssl"
29XMLSEC_CFLAGS = $(XMLSEC_CFLAGS) /D "XMLSEC_CRYPTO_OPENSSL" /D "XMLSEC_DEFAULT_CRYPTO=\"openssl\""
30XMLSEC_SOLIBS = libxmlsec-openssl.lib libeay32.lib wsock32.lib user32.lib gdi32.lib
31XMLSEC_ALIBS  = libxmlsec-openssl_a.lib libeay32.lib wsock32.lib user32.lib gdi32.lib
32!ENDIF
33
34!IF "$(XMLSEC_DEFAULT_CRYPTO)" == "nss"
35XMLSEC_CFLAGS = $(XMLSEC_CFLAGS) /D "XMLSEC_CRYPTO_NSS" /D "XMLSEC_DEFAULT_CRYPTO=\"nss\""
36XMLSEC_SOLIBS = libxmlsec-nss.lib nss3.lib nspr4.lib plds4.lib plc4.lib
37XMLSEC_ALIBS  = libxmlsec-nss_a.lib nss3.lib nspr4.lib plds4.lib plc4.lib
38!ENDIF
39
40!IF "$(XMLSEC_DEFAULT_CRYPTO)" == "mscrypto"
41XMLSEC_CFLAGS = $(XMLSEC_CFLAGS) /D "XMLSEC_CRYPTO_MSCRYPTO" /D "XMLSEC_DEFAULT_CRYPTO=\"mscrypto\""
42XMLSEC_SOLIBS = libxmlsec-mscrypto.lib user32.lib gdi32.lib crypt32.lib advapi32.lib
43XMLSEC_ALIBS  = libxmlsec-mscrypto_a.lib user32.lib gdi32.lib crypt32.lib advapi32.lib
44!ENDIF
45
46!IF "$(XMLSEC_STATIC)" == "yes"
47XMLSEC_CFLAGS = $(XMLSEC_CFLAGS) /D "LIBXML_STATIC" /D "LIBXSLT_STATIC" /D "XMLSEC_STATIC"
48XMLSEC_LIBS   = $(XMLSEC_LIBS) $(XMLSEC_ALIBS) libxmlsec_a.lib \
49		libxml2_a.lib libxslt_a.lib libexslt_a.lib
50!ELSE
51XMLSEC_LIBS   = $(XMLSEC_LIBS) $(XMLSEC_SOLIBS) libxmlsec.lib libxml2.lib \
52		libxslt.lib libexslt.lib
53!ENDIF
54
55# The preprocessor and its options.
56CPP = cl.exe /EP
57CPPFLAGS = /nologo
58
59# The compiler and its options.
60CC = cl.exe
61CFLAGS = /nologo /D "WIN32" /D "_WINDOWS" /D "_MBCS" /DWIN32_SOCKETS /W1 /MD $(XMLSEC_CFLAGS)
62
63# The linker and its options.
64LD = link.exe
65LDFLAGS = /nologo $(XMLSEC_LIBS) wsock32.lib
66
67# Optimisation and debug symbols.
68!if "$(DEBUG)" == "1"
69CFLAGS = $(CFLAGS) /D "_DEBUG" /Od /Z7
70LDFLAGS = $(LDFLAGS) /DEBUG
71!else
72CFLAGS = $(CFLAGS) /D "NDEBUG" /O2
73LDFLAGS = $(LDFLAGS) /OPT:NOWIN98
74!endif
75
76all : $(XMLSEC_OBJS_DIR) $(XMLSEC_EXAMPLES)
77
78$(XMLSEC_OBJS_DIR) :
79	if not exist $(XMLSEC_OBJS_DIR) mkdir $(XMLSEC_OBJS_DIR)
80
81.c{$(XMLSEC_OBJS_DIR)}.exe :
82	$(CC) /c $(CFLAGS) /Fo$(XMLSEC_OBJS_DIR)\ $<
83	$(LD) $(LDFLAGS) /OUT:$*.exe $*.obj
84
85clean:
86	if exist $(XMLSEC_OBJS_DIR) rmdir /S /Q $(XMLSEC_OBJS_DIR)
87