summaryrefslogtreecommitdiff
path: root/makefile.msvc
blob: 9d7d84bf16a35f9597c6c1ce9df6bbc9c9bdef75 (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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# Set default configuration
!if "$(CFG)"==""
CFG=dbg
!endif

# O is directory where object and binary files go
O = obj-$(CFG)-win

ZLIB_DIR=ext\zlib
FREETYPE_DIR=ext\freetype231
JPEG_DIR=ext\jpeg

CC = cl.exe

CFLAGS = $(CFLAGS) /nologo /c
# standard windows defines
CFLAGS = $(CFLAGS) /D "WIN32" /D "_WIN32_WINNT=0x0500"
#CFLAGS = $(CFLAGS) /D "WIN32_LEAN_AND_MEAN"
CFLAGS = $(CFLAGS) /D "_SCL_SECURE_NO_DEPRECATE" /D "_CRT_SECURE_NO_DEPRECATE"
CFLAGS = $(CFLAGS) /D "NEED_STRLCPY" /D "NEED_STRSEP" /D "NEED_MATH" /D "NEED_GETOPT" /D "NEED_GETTIMEOFDAY"
CFLAGS = $(CFLAGS) /D "__func__=\"\""
CFLAGS = $(CFLAGS) /D "isnan=_isnan"

# disable "warning C4244: 'argument' : conversion from 'foo' to 'bar', possible loss of data"
CFLAGS = $(CFLAGS) /wd4244 /wd4996

CFLAGS = $(CFLAGS) /W3 /GR- /EHs-c- /Zi /TC /GS /RTCu /RTCs
CFLAGS = $(CFLAGS) /Iinclude /I$(FREETYPE_DIR)\include /I$(JPEG_DIR) /I$(ZLIB_DIR)

#CFLAGS = $(CFLAGS) /showIncludes
#CFLAGS = $(CFLAGS) /analyze

LIBS = $(LIBS) advapi32.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib shell32.lib

LD = link.exe
LDFLAGS = $(LDFLAGS) /nologo /DEBUG

!if "$(CFG)"=="dbg"
LDFLAGS = $(LDFLAGS)
LIBS = /NODEFAULTLIB:libcmtd $(LIBS) $(FREETYPE_DIR)\freetype231mt_d.lib $(JPEG_DIR)\jpeg_ds.lib $(ZLIB_DIR)\zlib_ds.lib
!endif

!if "$(CFG)"=="rel"
LIBS = $(LIBS) $(FREETYPE_DIR)\freetype231mt.lib $(JPEG_DIR)\jpeg_s.lib $(ZLIB_DIR)\zlib_s.lib
LDFLAGS = $(LDFLAGS) /opt:nowin98
LDFLAGS = $(LDFLAGS) /opt:ref /opt:icf
!endif

BASE_OBJS = \
	$(O)\base_memory.obj $(O)\base_error.obj $(O)\base_hash.obj $(O)\base_matrix.obj \
	$(O)\base_rect.obj $(O)\base_rune.obj $(O)\util_strlcat.obj $(O)\util_strlcpy.obj \
	$(O)\util_strsep.obj $(O)\util_getopt.obj $(O)\util_gettimeofday.obj \
	$(O)\base_cpudep.obj

STREAM_OBJS = \
	$(O)\crypt_arc4.obj $(O)\crypt_crc32.obj $(O)\crypt_md5.obj $(O)\filt_a85d.obj \
	$(O)\filt_a85e.obj $(O)\filt_ahxd.obj $(O)\filt_ahxe.obj $(O)\filt_arc4.obj \
	$(O)\filt_faxd.obj $(O)\filt_faxdtab.obj $(O)\filt_faxe.obj $(O)\filt_faxetab.obj \
	$(O)\filt_flate.obj $(O)\filt_lzwd.obj $(O)\filt_lzwe.obj $(O)\filt_null.obj \
	$(O)\filt_pipeline.obj $(O)\filt_predict.obj $(O)\filt_rld.obj $(O)\filt_rle.obj \
	$(O)\obj_array.obj $(O)\obj_dict.obj $(O)\obj_parse.obj $(O)\obj_print.obj \
	$(O)\obj_simple.obj $(O)\stm_buffer.obj $(O)\stm_filter.obj $(O)\stm_misc.obj \
	$(O)\stm_open.obj $(O)\stm_read.obj $(O)\stm_write.obj $(O)\filt_dctd.obj $(O)\filt_dcte.obj

RASTER_OBJS = \
	$(O)\archx86.obj $(O)\imagescale.obj $(O)\pathfill.obj $(O)\pixmap.obj \
	$(O)\glyphcache.obj $(O)\imageunpack.obj $(O)\pathscan.obj $(O)\porterduff.obj \
	$(O)\imagedraw.obj $(O)\meshdraw.obj $(O)\pathstroke.obj $(O)\render.obj

WORLD_OBJS = \
	$(O)\node_misc1.obj $(O)\node_misc2.obj $(O)\node_optimize.obj $(O)\node_path.obj \
	$(O)\node_text.obj $(O)\node_toxml.obj $(O)\node_tree.obj $(O)\res_colorspace.obj \
	$(O)\res_font.obj $(O)\res_image.obj $(O)\res_shade.obj

MUPDF_OBJS = \
	$(O)\pdf_annot.obj $(O)\pdf_build.obj $(O)\pdf_cmap.obj $(O)\pdf_colorspace1.obj \
	$(O)\pdf_colorspace2.obj $(O)\pdf_crypt.obj $(O)\pdf_debug.obj $(O)\pdf_doctor.obj \
	$(O)\pdf_font.obj $(O)\pdf_fontagl.obj $(O)\pdf_fontenc.obj $(O)\pdf_function.obj \
	$(O)\pdf_image.obj $(O)\pdf_interpret.obj $(O)\pdf_lex.obj $(O)\pdf_nametree.obj \
	$(O)\pdf_open.obj $(O)\pdf_outline.obj $(O)\pdf_page.obj $(O)\pdf_pagetree.obj \
	$(O)\pdf_parse.obj $(O)\pdf_pattern.obj $(O)\pdf_repair.obj $(O)\pdf_resources.obj \
	$(O)\pdf_save.obj $(O)\pdf_shade.obj $(O)\pdf_shade1.obj $(O)\pdf_shade4.obj \
	$(O)\pdf_store.obj $(O)\pdf_stream.obj $(O)\pdf_type3.obj $(O)\pdf_unicode.obj \
	$(O)\pdf_xobject.obj $(O)\pdf_xref.obj $(O)\pdf_fontfilems.obj

LIBS_OBJS = \
	$(BASE_OBJS) \
	$(STREAM_OBJS) \
	$(RASTER_OBJS) \
	$(WORLD_OBJS) \
	$(MUPDF_OBJS)

PDFTOOL_OBJS = $(LIBS_OBJS) $(O)\pdftool.obj

PDFTOOL_APP = $(O)\pdftool.exe
PDFTOOL_PDB = $(O)\pdftool.pdb
PDFTOOL_MAP = $(O)\pdftool.map

PDFAPP_OBJS = $(LIBS_OBJS) $(O)\pdfapp.obj $(O)\winmain.obj

PDFAPP_APP = $(O)\pdfapp.exe
PDFAPP_PDB = $(O)\pdfapp.pdb
PDFAPP_MAP = $(O)\pdfapp.map

all: $(O) $(PDFTOOL_APP) $(PDFAPP_APP)

clean: force
	-rmdir /S /Q $(O)

cleanall: force
	-rmdir /S /Q obj-*-win

$(O): force
	@if not exist $(O) mkdir $(O)

$(PDFTOOL_APP): $(PDFTOOL_OBJS)
	$(LD) $(LDFLAGS) /OUT:$(PDFTOOL_APP) /PDB:$(PDFTOOL_PDB) \
	$(PDFTOOL_OBJS) $(LIBS) \
	/MAP:$(PDFTOOL_MAP) \
	/SUBSYSTEM:CONSOLE

$(PDFAPP_APP): $(PDFAPP_OBJS)
	$(LD) $(LDFLAGS) /OUT:$(PDFAPP_APP) /PDB:$(PDFAPP_PDB) \
	$(PDFAPP_OBJS) $(LIBS) \
	/MAP:$(PDFAPP_MAP) \
	/SUBSYSTEM:CONSOLE

{apps\}.c{$(O)}.obj::
	$(CC) $(CFLAGS) /Fo$(O)\ /Fd$(O)\vc80.pdb  $<

{apps\common\}.c{$(O)}.obj::
	$(CC) $(CFLAGS) /Fo$(O)\ /Fd$(O)\vc80.pdb  $<

{apps\windows\}.c{$(O)}.obj::
	$(CC) $(CFLAGS) /Fo$(O)\ /Fd$(O)\vc80.pdb  $<

{base\}.c{$(O)}.obj::
	$(CC) $(CFLAGS) /Fo$(O)\ /Fd$(O)\vc80.pdb  $<

{mupdf\}.c{$(O)}.obj::
	$(CC) $(CFLAGS) /Fo$(O)\ /Fd$(O)\vc80.pdb  $<

{raster\}.c{$(O)}.obj::
	$(CC) $(CFLAGS) /Fo$(O)\ /Fd$(O)\vc80.pdb  $<

{stream\}.c{$(O)}.obj::
	$(CC) $(CFLAGS) /Fo$(O)\ /Fd$(O)\vc80.pdb  $<

{world\}.c{$(O)}.obj::
	$(CC) $(CFLAGS) /Fo$(O)\ /Fd$(O)\vc80.pdb  $<

force: ;