makefile.linux 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. #
  2. # For conditions of distribution and use, see copyright notice in libmng.h
  3. #
  4. # makefile for libmng - THE MNG library
  5. # this makefile is suitable for Linux ELF with gcc
  6. #
  7. # (this file is heavily copied from makefile.linux in the libpng package)
  8. # compiler
  9. CC=gcc
  10. # default build options (this forces shared library compatibility!!)
  11. #OPTIONS = -DMNG_BUILD_SO
  12. OPTIONS = -DMNG_BUILD_SO -DMNG_FULL_CMS
  13. # where "make install" puts libmng.a,libmng.so*,libmng.h,libmng_conf.h,libmng_types.h
  14. prefix=/usr/local
  15. # Where the zlib library and include files are located
  16. #ZLIBLIB=../zlib
  17. #ZLIBINC=../zlib
  18. ZLIBLIB=/usr/local/lib
  19. ZLIBINC=/usr/local/include
  20. # Where the jpeg library and include files are located
  21. #JPEGLIB=../jpgsrc
  22. #JPEGINC=../jpgsrc
  23. JPEGLIB=/usr/local/lib
  24. JPEGINC=/usr/local/include
  25. # Where the lcms library and include files are located
  26. #LCMSLIB=../lcms/lib
  27. #LCMSINC=../lcms/source
  28. LCMSLIB=/usr/local/lib
  29. LCMSINC=/usr/local/include
  30. ALIGN=
  31. # for i386:
  32. #ALIGN=-malign-loops=2 -malign-functions=2
  33. WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \
  34. -Wmissing-declarations -Wtraditional -Wcast-align \
  35. -Wstrict-prototypes -Wmissing-prototypes #-Wconversion
  36. # for pgcc version 2.95.1, -O3 is buggy; don't use it.
  37. CFLAGS=-I$(ZLIBINC) -I$(JPEGINC) -I$(LCMSINC) -Wall -O3 -funroll-loops \
  38. $(OPTIONS) $(ALIGN) # $(WARNMORE) -g
  39. LDFLAGS=-L. -Wl,-rpath,. \
  40. -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) \
  41. -L$(JPEGLIB) -Wl,-rpath,$(JPEGLIB) \
  42. -L$(LCMSLIB) -Wl,-rpath,$(LCMSLIB) \
  43. -lmng -lz -ljpeg -llcms -lm
  44. RANLIB=ranlib
  45. #RANLIB=echo
  46. # current version numbers
  47. MNGMAJ = 1
  48. MNGMIN = 1.0.9
  49. MNGVER = $(MNGMAJ).$(MNGMIN)
  50. INCPATH=$(prefix)/include
  51. LIBPATH=$(prefix)/lib
  52. OBJS = \
  53. libmng_callback_xs.o \
  54. libmng_chunk_io.o \
  55. libmng_chunk_descr.o \
  56. libmng_chunk_prc.o \
  57. libmng_chunk_xs.o \
  58. libmng_cms.o \
  59. libmng_display.o \
  60. libmng_dither.o \
  61. libmng_error.o \
  62. libmng_filter.o \
  63. libmng_hlapi.o \
  64. libmng_jpeg.o \
  65. libmng_object_prc.o \
  66. libmng_pixels.o \
  67. libmng_prop_xs.o \
  68. libmng_read.o \
  69. libmng_trace.o \
  70. libmng_write.o \
  71. libmng_zlib.o
  72. OBJSDLL = $(OBJS:.0=.pic.o)
  73. .SUFFIXES: .c .o .pic.o
  74. .c.pic.o:
  75. $(CC) -c $(CFLAGS) -fPIC -o $@ $*.c
  76. all: libmng.a libmng.so
  77. libmng.a: $(OBJS)
  78. ar rc $@ $(OBJS)
  79. $(RANLIB) $@
  80. libmng.so: libmng.so.$(MNGMAJ)
  81. ln -sf libmng.so.$(MNGMAJ) libmng.so
  82. libmng.so.$(MNGMAJ): libmng.so.$(MNGVER)
  83. ln -sf libmng.so.$(MNGVER) libmng.so.$(MNGMAJ)
  84. libmng.so.$(MNGVER): $(OBJSDLL)
  85. # $(CC) -shared -Wl,-soname,libmng.so.$(MNGMAJ) -o libmng.so.$(MNGVER) \
  86. # $(OBJSDLL) -L$(ZLIBLIB) -L$(JPEGLIB) -L$(LCMSLIB) -lz -lm -lc
  87. $(CC) -shared -Wl,-soname,libmng.so.$(MNGMAJ) -o libmng.so.$(MNGVER) \
  88. $(OBJSDLL) -L$(ZLIBLIB) -L$(JPEGLIB) -ljpeg -L$(LCMSLIB) -llcms \
  89. -lz -lm -lc
  90. install: libmng.a libmng.so.$(MNGVER)
  91. -@mkdir $(INCPATH) $(LIBPATH)
  92. cp libmng.h libmng_conf.h libmng_types.h $(INCPATH)
  93. chmod 644 $(INCPATH)/libmng.h $(INCPATH)/libmng_conf.h $(INCPATH)/libmng_types.h
  94. cp libmng.a libmng.so.$(MNGVER) $(LIBPATH)
  95. chmod 755 $(LIBPATH)/libmng.so.$(MNGVER)
  96. -@/bin/rm -f $(LIBPATH)/libmng.so.$(MNGMAJ) $(LIBPATH)/libmng.so
  97. (cd $(LIBPATH); ln -sf libmng.so.$(MNGVER) libmng.so.$(MNGMAJ); \
  98. ln -sf libmng.so.$(MNGMAJ) libmng.so)
  99. clean:
  100. /bin/rm -f *.o libmng.a libmng.so*
  101. # DO NOT DELETE THIS LINE -- make depend depends on it.
  102. libmng_hlapi.o libmng_hlapi.pic.o: libmng_hlapi.c libmng.h libmng_conf.h libmng_types.h \
  103. libmng_data.h libmng_objects.h libmng_object_prc.h \
  104. libmng_chunks.h libmng_memory.h libmng_error.h libmng_trace.h libmng_read.h \
  105. libmng_write.h libmng_display.h libmng_zlib.h libmng_cms.h libmng_zlib.h
  106. libmng_callback_xs.o libmng_callback_xs.pic.o: libmng_callback_xs.c libmng.h \
  107. libmng_conf.h libmng_types.h libmng_data.h libmng_error.h libmng_trace.h
  108. libmng_prop_xs.o libmng_prop_xs.pic.o: libmng_prop_xs.c libmng.h libmng_conf.h \
  109. libmng_types.h libmng_data.h libmng_error.h libmng_trace.h libmng_cms.h
  110. libmng_chunk_xs.o libmng_chunk_xs.pic.o: libmng_chunk_xs.c libmng.h libmng_conf.h \
  111. libmng_types.h libmng_data.h libmng_chunks.h libmng_chunk_prc.h \
  112. libmng_error.h libmng_trace.h
  113. libmng_read.o libmng_read.pic.o: libmng_read.c libmng.h libmng_conf.h libmng_types.h \
  114. libmng_data.h libmng_objects.h libmng_object_prc.h \
  115. libmng_chunks.h libmng_chunk_prc.h libmng_chunk_io.h libmng_memory.h \
  116. libmng_error.h libmng_trace.h libmng_read.h libmng_display.h
  117. libmng_write.o libmng_write.pic.o: libmng_write.c libmng.h libmng_conf.h libmng_types.h \
  118. libmng_data.h libmng_error.h libmng_trace.h libmng_write.h
  119. libmng_display.o libmng_display.pic.o: libmng_display.c libmng.h libmng_conf.h \
  120. libmng_types.h libmng_data.h libmng_objects.h libmng_object_prc.h libmng_memory.h \
  121. libmng_error.h libmng_trace.h libmng_zlib.h libmng_cms.h libmng_pixels.h \
  122. libmng_display.h
  123. libmng_object_prc.o libmng_object_prc.pic.o: libmng_object_prc.c libmng.h libmng_conf.h \
  124. libmng_types.h libmng_data.h libmng_objects.h libmng_object_prc.h libmng_memory.h \
  125. libmng_error.h libmng_trace.h libmng_display.h libmng_pixels.h
  126. libmng_chunk_descr.o libmng_chunk_descr.pic.o: libmng_chunk_descr.c libmng.h libmng_conf.h \
  127. libmng_types.h libmng_data.h libmng_chunks.h libmng_chunk_descr.h libmng_memory.h \
  128. libmng_chunk_prc.h libmng_error.h libmng_trace.h
  129. libmng_chunk_prc.o libmng_chunk_prc.pic.o: libmng_chunk_prc.c libmng.h libmng_conf.h \
  130. libmng_types.h libmng_data.h libmng_chunks.h libmng_chunk_prc.h libmng_memory.h \
  131. libmng_error.h libmng_trace.h
  132. libmng_chunk_io.o libmng_chunk_io.pic.o: libmng_chunk_io.c libmng.h libmng_conf.h \
  133. libmng_types.h libmng_data.h libmng_objects.h libmng_object_prc.h \
  134. libmng_chunks.h libmng_chunk_io.h libmng_chunk_prc.h libmng_memory.h libmng_error.h \
  135. libmng_trace.h libmng_display.h libmng_zlib.h libmng_pixels.h
  136. libmng_error.o libmng_error.pic.o: libmng_error.c libmng.h libmng_conf.h libmng_types.h \
  137. libmng_data.h libmng_error.h libmng_trace.h
  138. libmng_trace.o libmng_trace.pic.o: libmng_trace.c libmng.h libmng_conf.h libmng_types.h \
  139. libmng_data.h libmng_error.h libmng_trace.h
  140. libmng_pixels.o libmng_pixels.pic.o: libmng_pixels.c libmng.h libmng_conf.h libmng_types.h \
  141. libmng_data.h libmng_objects.h libmng_memory.h libmng_error.h libmng_trace.h \
  142. libmng_cms.h libmng_filter.h libmng_pixels.h
  143. libmng_filter.o libmng_filter.pic.o: libmng_filter.c libmng.h libmng_conf.h libmng_types.h \
  144. libmng_data.h libmng_error.h libmng_trace.h libmng_filter.h
  145. libmng_dither.o libmng_dither.pic.o: libmng_dither.c libmng.h libmng_conf.h libmng_types.h \
  146. libmng_data.h libmng_error.h libmng_trace.h libmng_dither.h
  147. libmng_zlib.o libmng_zlib.pic.o: libmng_zlib.c libmng.h libmng_conf.h libmng_types.h \
  148. libmng_data.h libmng_memory.h libmng_error.h libmng_trace.h libmng_pixels.h \
  149. libmng_filter.h libmng_zlib.h
  150. libmng_jpeg.o libmng_jpeg.pic.o: libmng_jpeg.c libmng.h libmng_conf.h libmng_types.h \
  151. libmng_data.h libmng_memory.h libmng_error.h libmng_trace.h libmng_pixels.h libmng_jpeg.h
  152. libmng_cms.o libmng_cms.pic.o: libmng_cms.c libmng.h libmng_conf.h libmng_types.h \
  153. libmng_data.h libmng_objects.h libmng_error.h libmng_trace.h libmng_cms.h