summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/luapplib/src/Makefile.vc
blob: 481d9b20ab7ab022705d9f3a357385007df0e082 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98

CC=cl /nologo
LN=link /nologo
AR=lib /nologo # LIB variable has a special meaning for msvc

CFLAGS=/W3 /D_CRT_SECURE_NO_DEPRECATE /O2

# hans
# 5045: spectre
# 4820: local vars with same name as outer variable
# 4456: local vars with same name as outer variable
# 4457: local vars with same function parameter
# 4668: missing defines
# 4244: assignment in conditional expression
# 4127: constant conditional expression
# 4131: old style declarator
# 4464: relative include path
# 4201: nonstandard extension used: nameless struct/union
# 4710: no inlined
# 4711: inline expansion
# 4706: assignment in conditionals

#WFLAGS= /W3 /D_CRT_SECURE_NO_DEPRECATE
WFLAGS= /Wall /D_CRT_SECURE_NO_DEPRECATE /wd5045 /wd4820 /wd4456 /wd4457 /wd4668 /wd4244 /wd4127 /wd4131 /wd4464 /wd4201 /wd4710 /wd4711
CFLAGS= $(WFLAGS) /O2

#LFLAGS = /NODEFAULTLIB:LIBCMT # produces binary dependent from redistributable
LFLAGS = /NOIMPLIB

PPALLOC=utilmem.c utilmemheap.c utilmemheapiof.c utilmeminfo.c
PPUTILS=utillog.c utilnumber.c utiliof.c utilmd5.c utilsha.c utilcrypt.c
PPFILTERS=utilbasexx.c utilflate.c utillzw.c utilfpred.c
PPMODULES=ppheap.c pparray.c ppdict.c ppstream.c ppcrypt.c ppxref.c ppload.c

OUTDIR=build
UTILSDIR=util

PPSTATICALLOCOBJ=$(PPALLOC:.c=.obj)
PPSTATICALLOCOBJ=$(PPSTATICALLOCOBJ:util=build\util)
PPSTATICUTILSOBJ=$(PPUTILS:.c=.obj)
PPSTATICUTILSOBJ=$(PPSTATICUTILSOBJ:util=build\util)
PPSTATICFILTERSOBJ=$(PPFILTERS:.c=.obj)
PPSTATICFILTERSOBJ=$(PPSTATICFILTERSOBJ:util=build\util)
PPSTATICOBJ=$(PPMODULES:.c=.obj)
PPSTATICOBJ=$(PPSTATICOBJ:pp=build\pp)
PPSTATICLIB=build\pp.lib

# dependencies
FLATEDIR=..\zlib
FLATELIB=$(FLATEDIR)\zlib.static.lib
PPSTATICDEPS=$(FLATELIB)

# tests
TESTDIR=..\..\pplib-tests
PPTEST1=build\pptest1.exe
PPTEST2=build\pptest2.exe
PPTEST3=build\pptest3.exe

# includes
INC=/I $(UTILSDIR)
AUX=/I $(FLATEDIR)

default: $(PPSTATICLIB) $(PPTEST1) $(PPTEST2) $(PPTEST3) $(PPTEST4)

$(PPSTATICOBJ): $(*B).c
  $(CC) $(CFLAGS) $(INC) /Fo:$@ /c $**

$(PPSTATICALLOCOBJ): $(UTILSDIR)\$(*B).c
  $(CC) $(CFLAGS) $(INC) /Fo:$@ /c $**

$(PPSTATICUTILSOBJ): $(UTILSDIR)\$(*B).c
  $(CC) $(CFLAGS) $(INC) /Fo:$@ /c $**

$(PPSTATICFILTERSOBJ): $(UTILSDIR)\$(*B).c
  $(CC) $(CFLAGS) $(INC) $(AUX) /Fo:$@ /c $**

$(PPSTATICLIB): $(PPSTATICOBJ) $(PPSTATICALLOCOBJ) $(PPSTATICUTILSOBJ) $(PPSTATICFILTERSOBJ)
  $(AR) /OUT:$@ $**

$(PPTEST1): $(PPSTATICLIB) pptest1.c
  $(CC) $(CFLAGS) /Fo:build\pptest1.obj /c pptest1.c
  $(LN) $(LFLAGS) /OUT:$(PPTEST1) build\pptest1.obj $(PPSTATICLIB) $(PPSTATICDEPS) $(LIBS)

$(PPTEST2): $(PPSTATICLIB) pptest2.c
  $(CC) $(CFLAGS) /Fo:build\pptest2.obj /c pptest2.c
  $(LN) $(LFLAGS) /OUT:$(PPTEST2) build\pptest2.obj $(PPSTATICLIB) $(PPSTATICDEPS) $(LIBS)

$(PPTEST3): $(PPSTATICLIB) pptest3.c
  $(CC) $(CFLAGS) /I util /Fo:build\pptest3.obj /c pptest3.c
  $(LN) $(LFLAGS) /OUT:$(PPTEST3) build\pptest3.obj $(PPSTATICLIB) $(PPSTATICDEPS) $(LIBS)

clean:
  del /q build\*.obj build\*.lib build\*.exe

test: $(PPTEST1) $(PPTEST2) $(PPTEST3)
  build\pptest1 $(TESTDIR)\*.pdf $(TESTDIR)/crypt\*.pdf >pptest1.log
  build\pptest2 $(TESTDIR)\*.pdf $(TESTDIR)/crypt\*.pdf >pptest2.log
  build\pptest3 $(TESTDIR)\*.pdf $(TESTDIR)/crypt\*.pdf >pptest3.log