Windows: Build hcrypto shared library
[openafs.git] / src / crypto / hcrypto / NTMakefile
1 # Copyright 2010, Your File System Inc
2 # All rights reserved
3 #
4 # This software has been released under the terms of the BSD License
5 # For details, see the LICENSE file in the top level source directory
6
7 RELDIR=crypto\hcrypto
8 !include ..\..\config\NTMakefile.$(SYS_NAME)
9 !include ..\..\config\NTMakefile.version
10 AFSDEV_AUXCDEFINES = $(AFSDEV_AUXCDEFINES) -I$(SRC)\external\heimdal\hcrypto -DHAVE_CONFIG_H=1
11
12 ROKEN = $(SRC)\external\heimdal\roken
13
14 HCRYPTO = $(SRC)\external\heimdal\hcrypto
15
16 INCFILEDIR = $(DESTDIR)\include\hcrypto
17
18 INCFILES = \
19         $(INCFILEDIR)\engine.h \
20         $(INCFILEDIR)\err.h
21
22 HCRYPTO_INCFILES = \
23         $(INCFILEDIR)\aes.h \
24         $(INCFILEDIR)\des.h \
25         $(INCFILEDIR)\evp.h \
26         $(INCFILEDIR)\evp-hcrypto.h \
27         $(INCFILEDIR)\evp-cc.h \
28         $(INCFILEDIR)\hmac.h \
29         $(INCFILEDIR)\md2.h \
30         $(INCFILEDIR)\md4.h \
31         $(INCFILEDIR)\md5.h \
32         $(INCFILEDIR)\rand.h \
33         $(INCFILEDIR)\rc2.h \
34         $(INCFILEDIR)\rc4.h \
35         $(INCFILEDIR)\sha.h \
36         $(INCFILEDIR)\ui.h
37
38 LIBFILE = $(DESTDIR)\lib\afshcrypto.dll
39
40 # Object files by category.
41 LOCAL_OBJS = \
42         $(OUT)\engine.obj
43
44 HCRYPTO_OBJS = $(OUT)\aes.obj \
45         $(OUT)\camellia.obj \
46         $(OUT)\camellia-ntt.obj \
47         $(OUT)\des.obj \
48         $(OUT)\evp.obj \
49         $(OUT)\evp-hcrypto.obj \
50         $(OUT)\evp-cc.obj \
51         $(OUT)\hmac.obj \
52         $(OUT)\md2.obj \
53         $(OUT)\md4.obj \
54         $(OUT)\md5.obj \
55         $(OUT)\pkcs5.obj \
56         $(OUT)\rand.obj \
57         $(OUT)\rand-w32.obj \
58         $(OUT)\rc2.obj \
59         $(OUT)\rc4.obj \
60         $(OUT)\rijndael-alg-fst.obj \
61         $(OUT)\rnd_keys.obj \
62         $(OUT)\sha.obj \
63         $(OUT)\sha256.obj \
64         $(OUT)\sha512.obj \
65         $(OUT)\ui.obj \
66         $(OUT)\validate.obj
67
68 ROKEN_OBJS = \
69         $(OUT)\cloexec.obj \
70         $(OUT)\ct.obj \
71         $(OUT)\err.obj \
72         $(OUT)\errx.obj \
73         $(OUT)\getprogname.obj \
74         $(OUT)\issuid.obj \
75         $(OUT)\verr.obj \
76         $(OUT)\verrx.obj \
77         $(OUT)\vwarn.obj \
78         $(OUT)\vwarnx.obj \
79         $(OUT)\warn.obj \
80         $(OUT)\warnerr.obj \
81         $(OUT)\warnx.obj
82
83 # This is a horrible hack that is required to get
84 # around the fact that the OpenAFS build system copies
85 # its own des.h into the top-level OpenAFS include
86 # directory.  When the OpenAFS des implementation is
87 # removed, this hack can be removed as well
88 des.h: $(HCRYPTO)\des.h
89         $(COPY) $** $@
90
91 $(ROKEN_OBJS):$(ROKEN)\$$(@B).c
92         $(C2OBJ) $** -I$(ROKEN) 
93
94 $(HCRYPTO_OBJS):$(HCRYPTO)\$$(@B).c
95         $(C2OBJ) $** -I$(HCRYPTO) 
96
97 $(HCRYPTO_INCFILES):$(HCRYPTO)\$$(@B).h
98         $(COPY) $** $(INCFILEDIR)
99
100 $(INCFILES):$$(@B).h
101         $(COPY) $** $(INCFILEDIR)
102
103 err.h: $(ROKEN)\err.hin
104         $(COPY) $** $@
105
106 !if !defined(NMAKE)
107 NTMAKE = nmake /nologo /f ntmakefile
108 !endif
109
110 DLLLIBS = \
111 #       $(DESTDIR)\lib\afs\afsreg.lib
112
113 $(LIBFILE): $(LOCAL_OBJS) $(HCRYPTO_OBJS) $(ROKEN_OBJS) $(DLLLIBS)
114         $(DLLCONLINK) /DEF:afshcrypto.def shell32.lib
115         $(_VC_MANIFEST_EMBED_DLL)
116         $(DLLPREP)
117         $(CODESIGN_USERLAND)
118         $(SYMSTORE_IMPORT)
119         $(MAKECYGLIB) --input-def afshcrypto.def
120
121 # Definitions for generating versioninfo resources
122 $(OUT)\afshcrypto.res: AFS_component_version_number.h
123
124 install_headers: $(INCFILES) $(HCRYPTO_INCFILES)
125
126 install: install_headers des.h $(LIBFILE)
127
128 clean::
129         $(DEL) $(INCFILES)
130         $(DEL) err.h des.h
131         $(DEL) $(LIBFILE) $(DESTDIR)\lib\afshcrypto.lib $(DESTDIR)\lib\afshcrypto.exp