(thanks to Winfried for his help)
[openjpeg.git] / Makefile.nix
1 #top Makefile.nix
2 include  config.nix
3
4 TARGET  = openjpeg
5 COMPILERFLAGS = -Wall -O3 -ffast-math -std=c99 -fPIC
6
7 INCLUDE = -I. -Ilibopenjpeg
8 LIBRARIES = -lstdc++
9
10 SRCS = ./libopenjpeg/bio.c ./libopenjpeg/cio.c ./libopenjpeg/dwt.c \
11  ./libopenjpeg/event.c ./libopenjpeg/image.c ./libopenjpeg/j2k.c \
12  ./libopenjpeg/j2k_lib.c ./libopenjpeg/jp2.c ./libopenjpeg/jpt.c \
13  ./libopenjpeg/mct.c ./libopenjpeg/mqc.c ./libopenjpeg/openjpeg.c \
14  ./libopenjpeg/pi.c ./libopenjpeg/raw.c ./libopenjpeg/t1.c \
15  ./libopenjpeg/t2.c ./libopenjpeg/tcd.c ./libopenjpeg/tgt.c \
16
17 INCLS = ./libopenjpeg/bio.h ./libopenjpeg/cio.h ./libopenjpeg/dwt.h \
18  ./libopenjpeg/event.h ./libopenjpeg/fix.h ./libopenjpeg/image.h \
19  ./libopenjpeg/int.h ./libopenjpeg/j2k.h ./libopenjpeg/j2k_lib.h \
20  ./libopenjpeg/jp2.h ./libopenjpeg/jpt.h ./libopenjpeg/mct.h \
21  ./libopenjpeg/mqc.h ./libopenjpeg/openjpeg.h ./libopenjpeg/pi.h \
22  ./libopenjpeg/raw.h ./libopenjpeg/t1.h ./libopenjpeg/t2.h \
23  ./libopenjpeg/tcd.h ./libopenjpeg/tgt.h ./libopenjpeg/opj_malloc.h \
24  ./libopenjpeg/opj_includes.h
25
26 INSTALL_LIBDIR = $(prefix)/lib
27 headerdir = openjpeg-$(MAJOR).$(MINOR)
28 INSTALL_INCLUDE = $(prefix)/include/$(headerdir)
29
30 # Converts cr/lf to just lf
31 DOS2UNIX = dos2unix
32
33 ifeq ($(WITH_LCMS1),yes)
34 INCLUDE += $(LCMS1_INCLUDE)
35 LIBRARIES += $(LCMS1_LIB)
36 endif
37
38 ifeq ($(WITH_LCMS2),yes)
39 INCLUDE += $(LCMS2_INCLUDE)
40 LIBRARIES += $(LCMS2_LIB)
41 endif
42
43 MODULES = $(SRCS:.c=.o)
44
45 CFLAGS = $(COMPILERFLAGS) $(INCLUDE)
46
47 LIBNAME = lib$(TARGET)
48 STATICLIB = $(LIBNAME).a
49
50 ifeq ($(ENABLE_SHARED),yes)
51 SHAREDLIB = $(LIBNAME).so.$(MAJOR).$(MINOR).$(BUILD)
52 endif
53
54 default: all
55
56 all: OpenJPEG
57         make -C codec -f Makefile.nix all
58         make -C mj2 -f Makefile.nix all
59 ifeq ($(WITH_JPWL),yes)
60         make -C jpwl -f Makefile.nix all
61 endif
62 ifeq ($(WITH_JP3D),yes)
63         make -C jp3d -f Makefile.nix all
64 endif
65
66 dos2unix:
67         @$(DOS2UNIX) $(SRCS) $(INCLS)
68
69 OpenJPEG: $(STATICLIB) $(SHAREDLIB)
70         install -d bin
71         install -m 644 $(STATICLIB) bin
72 ifeq ($(ENABLE_SHARED),yes)
73         install -m 755 $(SHAREDLIB) bin
74         (cd bin && ln -sf $(SHAREDLIB) $(LIBNAME).so.$(MAJOR).$(MINOR))
75         (cd bin && ln -sf $(LIBNAME).so.$(MAJOR).$(MINOR) $(LIBNAME).so)
76 endif
77
78 .c.o:
79         $(CC) $(CFLAGS) -c $< -o $@
80
81 $(STATICLIB): $(MODULES)
82         rm -f $(STATICLIB)
83         $(AR) r $@ $(MODULES)
84
85 ifeq ($(ENABLE_SHARED),yes)
86 $(SHAREDLIB): $(MODULES)
87         $(CC) -s -shared -Wl,-soname,$(LIBNAME) -o $@ $(MODULES) $(LIBRARIES)
88 endif
89
90 install: OpenJPEG
91         install -d $(DESTDIR)$(INSTALL_LIBDIR) 
92         install -m 644 -o root -g root $(STATICLIB) $(DESTDIR)$(INSTALL_LIBDIR)
93         (cd $(DESTDIR)$(INSTALL_LIBDIR) && ranlib $(STATICLIB) )
94 ifeq ($(ENABLE_SHARED),yes)
95         install -m 755 -o root -g root $(SHAREDLIB) $(DESTDIR)$(INSTALL_LIBDIR)
96         (cd $(DESTDIR)$(INSTALL_LIBDIR) && \
97         ln -sf $(SHAREDLIB) $(LIBNAME).so.$(MAJOR).$(MINOR) )
98         (cd $(DESTDIR)$(INSTALL_LIBDIR) && \
99         ln -sf $(LIBNAME).so.$(MAJOR).$(MINOR) $(LIBNAME).so )
100 endif
101         install -d $(DESTDIR)$(INSTALL_INCLUDE)
102         install -m 644 -o root -g root libopenjpeg/openjpeg.h \
103         $(DESTDIR)$(INSTALL_INCLUDE)
104         (cd $(DESTDIR)$(prefix)/include && \
105         ln -sf $(headerdir)/openjpeg.h openjpeg.h)
106         make -C codec -f Makefile.nix install
107         make -C mj2 -f Makefile.nix install
108 ifeq ($(WITH_JPWL),yes)
109         make -C jpwl -f Makefile.nix install
110 endif
111 ifeq ($(WITH_JP3D),yes)
112         make -C jp3d -f Makefile.nix install
113 endif
114         $(LDCONFIG)
115         make -C doc -f Makefile.nix install
116
117 ifeq ($(WITH_JPWL),yes)
118 jpwl-all:
119         make -C jpwl -f Makefile.nix all
120
121 jpwl-install: jpwl-all
122         make -C jpwl -f Makefile.nix install
123         $(LDCONFIG)
124
125 jpwl-clean:
126         make -C jpwl -f Makefile.nix clean
127
128 jpwl-uninstall:
129         make -C jpwl -f Makefile.nix uninstall
130 endif
131
132 ifeq ($(WITH_JP3D),yes)
133 jp3d-all:
134         make -C jp3d -f Makefile.nix all
135
136 jp3d-install: jp3d-all
137         make -C jp3d -f Makefile.nix install
138         $(LDCONFIG)
139
140 jp3d-clean:
141         make -C jp3d -f Makefile.nix clean
142
143 jp3d-uninstall:
144         make -C jp3d -f Makefile.nix uninstall
145 endif
146
147 doc-all:
148         make -C doc -f Makefile.nix all
149
150 doc-install: doc-all
151         make -C doc -f Makefile.nix install
152
153 clean:
154         rm -rf bin
155         rm -f core u2dtmp* $(MODULES) $(STATICLIB) $(SHAREDLIB)
156         make -C codec -f Makefile.nix clean
157         make -C mj2 -f Makefile.nix clean
158         make -C doc -f Makefile.nix clean
159 ifeq ($(WITH_JPWL),yes)
160         make -C jpwl -f Makefile.nix clean
161 endif
162 ifeq ($(WITH_JP3D),yes)
163         make -C jp3d -f Makefile.nix clean
164 endif
165
166 doc-clean:
167         make -C doc -f Makefile.nix clean
168
169 uninstall:
170         rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(STATICLIB)
171 ifeq ($(ENABLE_SHARED),yes)
172         (cd $(DESTDIR)$(INSTALL_LIBDIR) && \
173         rm -f $(LIBNAME).so $(LIBNAME).so.$(MAJOR).$(MINOR) $(SHAREDLIB) )
174 endif
175         $(LDCONFIG)
176         rm -f $(DESTDIR)$(prefix)/include/openjpeg.h
177         rm -rf $(DESTDIR)$(INSTALL_INCLUDE)
178         make -C codec -f Makefile.nix uninstall
179         make -C mj2 -f Makefile.nix uninstall
180         make -C doc -f Makefile.nix uninstall
181 ifeq ($(WITH_JPWL),yes)
182         make -C jpwl -f Makefile.nix uninstall
183 endif
184 ifeq ($(WITH_JP3D),yes)
185         make -C jp3d -f Makefile.nix uninstall
186 endif