summaryrefslogtreecommitdiff
path: root/scripts/makefile.cygwin
blob: a5587a00b12c684a234924806b1de9f3fbc2ad1c (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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
# makefile for cygwin on x86
#   builds both dll (with import lib) and static lib versions
#   of the library, and builds two copies of pngtest: one
#   statically linked and one dynamically linked.
#
#   based on makefile for linux-elf w/mmx by:
# Copyright (C) 1998-2000 Greg Roelofs
# Copyright (C) 1996, 1997 Andreas Dilger
# For conditions of distribution and use, see copyright notice in png.h

# To enable assembler optimizations, add '-DPNG_USE_PNGGCCRD' to
# $CFLAGS, and include pnggccrd.o in $OBJS, below.

CC=gcc

# where "make install" puts libpng.a, libpng.so*, png.h, and pngconf.h
prefix=/usr

# Where the zlib library and include files are located
ZLIBLIB=${prefix}/lib
ZLIBINC=${prefix}/include
#ZLIBLIB=../zlib
#ZLIBINC=../zlib

ALIGN=
# for i386:
#ALIGN=-malign-loops=2 -malign-functions=2

WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \
	-Wmissing-declarations -Wtraditional -Wcast-align \
	-Wstrict-prototypes -Wmissing-prototypes #-Wconversion

#CFLAGS=-DPNG_USE_PNGGCCRD -I$(ZLIBINC) -Wall -O3 $(ALIGN) -funroll-loops \
#        -fomit-frame-pointer  # $(WARNMORE) -g -DPNG_DEBUG=5
CFLAGS=-I$(ZLIBINC) -Wall -O3 $(ALIGN) -funroll-loops \
	-fomit-frame-pointer

# read libpng.txt or png.h to see why PNGMAJ is 3.  You should not
# have to change it.
PNGMAJ = 3
#PNGDLL = $3
PNGMIN = 1.2.1
PNGMIN_BASE = 1.2.1
PNGVER = $(PNGMAJ).$(PNGMIN)

SHAREDLIB=cygpng$(PNGDLL).dll
STATLIB=libpng.a
IMPLIB=libpng.dll.a
SHAREDDEF=libpng.def
LIBS=$(SHAREDLIB) $(STATLIB)
EXE=.exe

LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz
LDSHARED=gcc -shared -Wl,--enable-auto-image-base
LDEXTRA=-Wl,--out-implib=$(IMPLIB) $(SHAREDDEF)

RANLIB=ranlib
#RANLIB=echo

INCPATH=$(prefix)/include
LIBPATH=$(prefix)/lib
BINPATH=$(prefix)/bin
MANPATH=$(prefix)/man
MAN3PATH=$(MANPATH)/man3
DOCPATH=$(prefix)/doc/libpng-$(PNGMIN_BASE)

OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \
	pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
	pngwtran.o pngmem.o pngerror.o pngpread.o # pnggccrd.o

OBJSDLL = $(OBJS:.o=.pic.o)

.SUFFIXES:      .c .o .pic.o

%.o : %.c
	$(CC) -c $(CFLAGS) -DPNG_STATIC -DZLIB_STATIC -o $@ $<

%.pic.o : %.c
	$(CC) -c $(CFLAGS) -DPNG_BUILD_DLL -o $@ $<

all: all-static all-shared

static: all-static

shared: all-shared

all-static: $(STATLIB) pngtest-stat$(EXE)

all-shared: $(SHAREDLIB) pngtest$(EXE)

pnggccrd.o:	png.h pngconf.h
	@echo ""
	@echo '    You can ignore the single "control reaches end of non-void function"'
	@echo '    warning and multiple "<variable> defined but not used" warnings:'
	@echo ""
	$(CC) -c $(CFLAGS) -DPNG_STATIC -DZLIB_STATIC -o $@ $*.c

pnggccrd.pic.o:	png.h pngconf.h
	@echo ""
	@echo '    You can ignore the single "control reaches end of non-void function"'
	@echo '    warning and multiple "<variable> defined but not used" warnings:'
	@echo ""
	$(CC) -c $(CFLAGS) -DPNG_BUILD_DLL -o $@ pnggccrd.c

$(STATLIB): $(OBJS)
	ar rc $@ $(OBJS)
	$(RANLIB) $@

$(SHAREDDEF): projects/msvc/png32ms.def
	cat $< | sed -e '1{G;s/^\(.*\)\(\n\)/EXPORTS/;};2,/^EXPORTS/d' | \
	sed -e 's/\([^;]*\);/;/' > $@

$(SHAREDLIB): $(OBJSDLL) $(SHAREDDEF)
	$(LDSHARED) -o $@ $(LDEXTRA) $(OBJSDLL) -L. -L$(ZLIBLIB) -lz

pngtest$(EXE): pngtest.pic.o $(SHAREDLIB)
	$(CC) $(CFLAGS) $< $(LDFLAGS) -o $@

pngtest-stat$(EXE): pngtest.o $(STATLIB)
	$(CC) -static $(CFLAGS) $< $(LDFLAGS) -o $@

pngtest.pic.o: pngtest.c
	$(CC) $(CFLAGS) -c $< -o $@

pngtest.o: pngtest.c
	$(CC) $(CFLAGS) -DPNG_STATIC -DZLIB_STATIC -c $< -o $@

test: test-static test-shared

test-static: pngtest-stat$(EXE)
	./pngtest-stat

test-shared: pngtest$(EXE)
	./pngtest

install: install-static install-shared

install-static: $(STATLIB) install-headers install-docs install-man
	-@if [ ! -d $(LIBPATH) ]; then mkdir -p $(LIBPATH); fi
	install -m 755 $(STATLIB) $(LIBPATH)

install-shared: $(SHAREDLIB) install-headers install-docs install-man
	-@if [ ! -d $(LIBPATH) ]; then mkdir -p $(LIBPATH); fi
	-@if [ ! -d $(BINPATH) ]; then mkdir -p $(BINPATH); fi
	install -m 755 $(IMPLIB) $(LIBPATH)
	install -s -m 755 $(SHAREDLIB) $(BINPATH)

install-headers:
	-@if [ ! -d $(INCPATH)  ]; then mkdir -p $(INCPATH); fi
	install -m 644 png.h pngconf.h $(INCPATH)

install-docs:
	-@if [ ! -d $(DOCPATH) ]; then mkdir -p $(DOCPATH); fi
	install -m 644 $(DOCS) $(DOCPATH)

install-man:
	-@if [ ! -d $(MAN3PATH) ]; then mkdir -p $(MAN3PATH); fi
	install -m 644 libpngpf.3 libpng.3 $(MAN3PATH)

clean:
	/bin/rm -f *.pic.o *.o $(STATLIB) $(IMPLIB) $(SHAREDLIB) \
	pngtest-stat$(EXE) pngtest$(EXE) pngout.png $(SHAREDDEF)

DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
writelock:
	chmod a-w *.[ch35] $(DOCS) scripts/*

# DO NOT DELETE THIS LINE -- make depend depends on it.

png.o png.pic.o:		png.h pngconf.h png.c
pngerror.o pngerror.pic.o:	png.h pngconf.h pngerror.c
pngrio.o pngrio.pic.o:		png.h pngconf.h pngrio.c
pngwio.o pngwio.pic.o:		png.h pngconf.h pngwio.c
pngmem.o pngmem.pic.o:		png.h pngconf.h pngmem.c
pngset.o pngset.pic.o:		png.h pngconf.h pngset.c
pngget.o pngget.pic.o:		png.h pngconf.h pngget.c
pngread.o pngread.pic.o:	png.h pngconf.h pngread.c
pngrtran.o pngrtran.pic.o:	png.h pngconf.h pngrtran.c
pngrutil.o pngrutil.pic.o:	png.h pngconf.h pngrutil.c
pngtrans.o pngtrans.pic.o:	png.h pngconf.h pngtrans.c
pngwrite.o pngwrite.pic.o:	png.h pngconf.h pngwrite.c
pngwtran.o pngwtran.pic.o:	png.h pngconf.h pngwtran.c
pngwutil.o pngwutil.pic.o:	png.h pngconf.h pngwutil.c
pngpread.o pngpread.pic.o:	png.h pngconf.h pngpread.c

pngtest.o:			png.h pngconf.h pngtest.c
pngtest-stat.o:			png.h pngconf.h pngtest.c