summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'leptonica/src/makefile.static')
-rw-r--r--leptonica/src/makefile.static401
1 files changed, 401 insertions, 0 deletions
diff --git a/leptonica/src/makefile.static b/leptonica/src/makefile.static
new file mode 100644
index 00000000..e4e53af5
--- /dev/null
+++ b/leptonica/src/makefile.static
@@ -0,0 +1,401 @@
+#/*====================================================================*
+# - Copyright (C) 2001 Leptonica. All rights reserved.
+# -
+# - Redistribution and use in source and binary forms, with or without
+# - modification, are permitted provided that the following conditions
+# - are met:
+# - 1. Redistributions of source code must retain the above copyright
+# - notice, this list of conditions and the following disclaimer.
+# - 2. Redistributions in binary form must reproduce the above
+# - copyright notice, this list of conditions and the following
+# - disclaimer in the documentation and/or other materials
+# - provided with the distribution.
+# -
+# - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY
+# - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+# - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# *====================================================================*/
+
+# makefile (for linux)
+#
+# Hand-built -- editable -- simple -- makefile
+#
+# For a nodebug version: make
+# For a debug version: make DEBUG=yes debug
+# For a shared library version: make SHARED=yes shared
+# For all versions: make all
+# With nonstandard header directories
+# make EXTRAINCLUDES="-I<nonstandard-incl-dir>"
+#
+# To remove all writes to stderr: add -DNO_CONSOLE_IO to compiler line
+#
+# To remove object files in src: make clean
+# To remove object files and executables in prog: make clean
+#
+# Customization for I/O with external libraries:
+# jpeg, png, tiff, webp, jp2k, gif
+# Set flags in environ.h. The default is to have libjpeg, libpng,
+# libtiff and libz, but not libwebp, libopenjp or libgif.
+#
+# Customization for non-POSIX-compliant GNU functions
+# fmemopen() and open_memstream().
+# The default is not to use, because they only work on linux.
+# To use these, #define HAVE_FMEMOPEN to 1 in environ.h.
+#
+# Customization for POSIX-compliant function fstatat().
+# The default is not to use, because some systems do not support it.
+# To use this, #define HAVE_FSTATAT to 1 in environ.h.
+#
+# Customization for Cygwin:
+# (1) Use the appropriate $CC
+#
+# Compiling under Microsoft Visual Studio
+# (1) Download the vs2000 package.
+# (2) You can also substitute arrayaccess.h.vc for arrayaccess.h, to
+# use the inline macros rather than function calls which are slower.
+#
+# To generate function prototypes, you need a program called
+# xtractprotos. Build it with this command:
+# make xtractprotos
+# Then use it with 'make allheaders'
+
+# Tools used by the Makefile
+RM = rm -f
+TEST = test
+MKDIR = mkdir -p
+LIBRARIAN = ar cq
+RANLIB = ranlib
+SED = sed
+
+# Libraries are built into a binary tree determined by the environmental
+# variable BINARY_BASE_DIR
+ifndef BINARY_BASE_DIR
+BINARY_BASE_DIR = ..
+endif
+
+BASE_OBJ = $(BINARY_BASE_DIR)/obj
+OBJ_NODEBUG = $(BINARY_BASE_DIR)/obj/nodebug
+OBJ_DEBUG = $(BINARY_BASE_DIR)/obj/debug
+OBJ_SHARED = $(BINARY_BASE_DIR)/obj/shared
+
+BASE_LIB = $(BINARY_BASE_DIR)/lib
+LIB_NODEBUG = $(BINARY_BASE_DIR)/lib/nodebug
+LIB_DEBUG = $(BINARY_BASE_DIR)/lib/debug
+LIB_SHARED = $(BINARY_BASE_DIR)/lib/shared
+
+
+# Include files
+INCLUDES = -I./ $(EXTRAINCLUDES)
+PROTOTYPE_DIR = .
+
+# Which flags to use?
+# - std=c89 and std=c99 both define __STRICT_ANSI__, which causes
+# the omission of declarations of a number of functions, such
+# as mkstemp, fmemopen, open_memstream, fdopen, etc. So if you
+# use one of these, also use -U__STRICT_ANSI__. e.g.,
+# gcc -std=c89 -U__STRICT_ANSI__
+# - std=gnu89 and std=gnu99 do not define __STRICT_ANSI__, so
+# declaration of these other functions is included.
+# - On mingw, it is necessary to use -D__USE_MINGW_ANSI_STDIO.
+# This has no effect on non-mingw systems.
+# - use -Wunused to identify unused variables
+# - use -DNO_CONSOLE_IO to remove all L_INFO, L_WARNING, L_ERROR and
+# ERROR_* logging, and to remove all DEBUG information dependent
+# on whether or not NO_CONSOLE_IO has been defined.
+# - remove -fPIC for Cygwin
+CC = gcc -std=c99 -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO
+#CC = gcc -std=c89 -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO
+#CC = gcc -std=c99 -D_POSIX_C_SOURCE=200809L -D__USE_MINGW_ANSI_STDIO -D_BSD_SOURCE -DANSI -fPIC
+#CC = gcc -std=gnu89 -D__USE_MINGW_ANSI_STDIO
+#CC = gcc -std=gnu89 -D_BSD_SOURCE -DANSI -Werror -fPIC
+#CC = gcc -std=c99 -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO -DNO_CONSOLE_IO
+#CC = g++ -D_BSD_SOURCE -fPIC
+#CC = g++ -Werror -D_BSD_SOURCE -fPIC
+#CC = g++ -Wunused -D_BSD_SOURCE -fPIC
+
+# Test for processor endianness
+# This version (using the definition of __BYTE_ORDER in endian.h)
+# was provided by rofl0r. It has been modified to return L_LITTLE_ENDIAN
+# if the file endian.h does not exist, which is the situation on mingw.
+ENDIANNESS = $(shell echo __BYTE_ORDER | $(CC) -include endian.h -E - | grep -q 4321 && echo L_BIG_ENDIAN || echo L_LITTLE_ENDIAN)
+
+# Shared library linker options
+SONAME_OPTION = -Wl,-h,
+
+ifdef SHARED
+ OPTIMIZE = -O2 -fPIC
+else
+ ifdef DEBUG
+ OPTIMIZE = -g
+ else
+ OPTIMIZE = -O2
+ endif
+endif
+
+
+OPTIONS =
+CPPFLAGS = $(INCLUDES)
+CFLAGS = $(OPTIMIZE) $(OPTIONS)
+LIBRARIAN_SHARED = gcc -shared
+
+# Libraries differing only in their minor revision numbers
+# are required to have the same interface. By using
+# "-h" in the ld, the "soname" is <libname>.X, where X is
+# the major revision number.
+# Links are created among the files <libname>.X.Y,
+# <libname>.X, and <libname>, where Y is the minor revision number.
+MAJOR_REV = 1
+MINOR_REV = 81
+PATCH_REV = 0
+
+#########################################################
+
+# Libraries
+
+LEPTLIB = liblept.a
+LEPTLIB_SHARED = liblept.so
+
+#########################################################
+
+LEPTLIB_C = adaptmap.c affine.c \
+ affinecompose.c arrayaccess.c \
+ bardecode.c baseline.c bbuffer.c \
+ bilateral.c bilinear.c binarize.c \
+ binexpand.c binreduce.c \
+ blend.c bmf.c bmpio.c bmpiostub.c \
+ bootnumgen1.c bootnumgen2.c \
+ bootnumgen3.c bootnumgen4.c \
+ boxbasic.c boxfunc1.c boxfunc2.c \
+ boxfunc3.c boxfunc4.c boxfunc5.c \
+ bytearray.c ccbord.c ccthin.c \
+ checkerboard.c classapp.c \
+ colorcontent.c colorfill.c coloring.c \
+ colormap.c colormorph.c \
+ colorquant1.c colorquant2.c \
+ colorseg.c colorspace.c \
+ compare.c conncomp.c convertfiles.c \
+ convolve.c correlscore.c \
+ dewarp1.c dewarp2.c dewarp3.c dewarp4.c \
+ dnabasic.c dnafunc1.c dnahash.c \
+ dwacomb.2.c dwacomblow.2.c \
+ edge.c encoding.c enhance.c \
+ fhmtauto.c fhmtgen.1.c fhmtgenlow.1.c \
+ finditalic.c flipdetect.c \
+ fmorphauto.c fmorphgen.1.c fmorphgenlow.1.c \
+ fpix1.c fpix2.c \
+ gifio.c gifiostub.c gplot.c graphics.c \
+ graymorph.c grayquant.c heap.c jbclass.c \
+ jp2kheader.c jp2kheaderstub.c jp2kio.c jp2kiostub.c \
+ jpegio.c jpegiostub.c kernel.c \
+ libversions.c list.c map.c maze.c \
+ morph.c morphapp.c morphdwa.c morphseq.c \
+ numabasic.c numafunc1.c numafunc2.c \
+ pageseg.c paintcmap.c \
+ parseprotos.c partify.c partition.c \
+ pdfio1.c pdfio1stub.c pdfio2.c pdfio2stub.c \
+ pix1.c pix2.c pix3.c pix4.c pix5.c \
+ pixabasic.c pixacc.c \
+ pixafunc1.c pixafunc2.c \
+ pixalloc.c pixarith.c \
+ pixcomp.c pixconv.c pixlabel.c pixtiling.c \
+ pngio.c pngiostub.c \
+ pnmio.c pnmiostub.c \
+ projective.c \
+ psio1.c psio1stub.c psio2.c psio2stub.c \
+ ptabasic.c ptafunc1.c ptafunc2.c \
+ ptra.c quadtree.c queue.c rank.c rbtree.c \
+ readbarcode.c readfile.c \
+ recogbasic.c recogdid.c recogident.c recogtrain.c \
+ regutils.c rop.c roplow.c \
+ rotate.c rotateam.c rotateorth.c rotateshear.c \
+ runlength.c sarray1.c sarray2.c \
+ scale1.c scale2.c seedfill.c \
+ sel1.c sel2.c selgen.c \
+ shear.c skew.c spixio.c \
+ stack.c stringcode.c \
+ strokes.c sudoku.c \
+ textops.c tiffio.c tiffiostub.c \
+ utils1.c utils2.c warper.c watershed.c \
+ webpanimio.c webpanimiostub.c \
+ webpio.c webpiostub.c writefile.c \
+ zlibmem.c zlibmemstub.c
+
+LEPTLIB_H = allheaders.h alltypes.h \
+ array.h arrayaccess.h bbuffer.h \
+ bmf.h bmfdata.h bmp.h ccbord.h \
+ colorfill.h dewarp.h environ.h gplot.h \
+ heap.h imageio.h \
+ jbclass.h list.h morph.h \
+ pix.h ptra.h queue.h rbtree.h \
+ readbarcode.h recog.h regutils.h \
+ stack.h stringcode.h sudoku.h watershed.h
+
+##################################################################
+
+# Main targets
+
+nodebug: dirs $(LEPTLIB:%=$(LIB_NODEBUG)/%)
+
+all:
+ make -f makefile TARGET=$(TARGET) nodebug
+ make -f makefile TARGET=$(TARGET) DEBUG=true debug
+ make -f makefile TARGET=$(TARGET) SHARED=true shared
+
+DEBUG_LIBS = $(LEPTLIB:%=$(LIB_DEBUG)/%)
+SHARED_LIBS = $(LEPTLIB_SHARED:%=$(LIB_SHARED)/%)
+debug: dirs $(DEBUG_LIBS)
+shared: dirs $(SHARED_LIBS)
+
+##################################################################
+
+# Proto targets
+
+# Note that both of the targets below can be generated by xtractprotos
+# (a) without requiring the existence of leptprotos.h and (b) with
+# an empty allheaders.h. Both generate a new allheaders.h, and
+# 'make allprotos' additionally generates leptprotos.h
+#
+# In the past we generated leptprotos.h that held the function prototypes,
+# and included it in allheaders.h. We now insert the function prototypes
+# directly in allheaders.h, and do not generate a separate prototype
+# file leptprotos.h.
+allheaders: $(LEPTLIB_C)
+ @$(TEST) -f xtractprotos || echo "First run 'make xtractprotos'"
+ ./xtractprotos -protos=inline -prestring=LEPT_DLL $(LEPTLIB_C)
+
+
+# You can still generate the file leptprotos.h and have it #included
+# in allheaders.h. If you do this, be sure to add leptprotos.h to LEPTLIB_H.
+allprotos: leptprotos
+leptprotos: $(LEPTLIB_C)
+ @$(TEST) -f xtractprotos || echo "First run 'make xtractprotos'"
+ ./xtractprotos -protos=leptprotos.h -prestring=LEPT_DLL $(LEPTLIB_C)
+
+##################################################################
+
+# xtractprotos
+
+xtractprotos: dirs leptlib
+ cd ../prog; make xtractprotos; cp xtractprotos ../src
+
+xtractprotos.o: xtractprotos.c
+
+##################################################################
+
+# Rule to make optimized library
+
+$(LIB_NODEBUG)/%.a:
+ $(RM) $@
+ $(LIBRARIAN) $@ $<
+ $(RANLIB) $@
+
+# Rule to make debuggable library
+
+$(LIB_DEBUG)/%.a:
+ $(RM) $@
+ $(LIBRARIAN) $@ $<
+ $(RANLIB) $@
+
+# Rule to make shared library
+
+$(LIB_SHARED)/%.so:
+ $(RM) $@
+ $(LIBRARIAN_SHARED) $(SONAME_OPTION)$(notdir $@).$(MAJOR_REV) -o $@ $<
+ mv $@ $@.$(MAJOR_REV).$(MINOR_REV).$(PATCH_REV)
+ cd $(LIB_SHARED); rm $(notdir $@).$(MAJOR_REV); \
+ ln -s $(notdir $@).$(MAJOR_REV).$(MINOR_REV).$(PATCH_REV) $(notdir $@).$(MAJOR_REV)
+ cd $(LIB_SHARED); rm $(notdir $@); \
+ ln -s $(notdir $@).$(MAJOR_REV) $(notdir $@)
+
+##################################################################
+
+# No-debug library dependencies and rules
+
+leptlib: $(LIB_NODEBUG)/$(LEPTLIB)
+$(LIB_NODEBUG)/$(LEPTLIB): $(LEPTLIB_C:%.c=$(OBJ_NODEBUG)/%.o)
+ $(RM) $@
+ $(LIBRARIAN) $@ $(LEPTLIB_C:%.c=$(OBJ_NODEBUG)/%.o)
+ $(RANLIB) $@
+
+# Debug library dependencies and rules
+
+leptlibd: $(LIB_DEBUG)/$(LEPTLIB)
+$(LIB_DEBUG)/$(LEPTLIB): $(LEPTLIB_C:%.c=$(OBJ_DEBUG)/%.o)
+ $(RM) $@
+ $(LIBRARIAN) $@ $(LEPTLIB_C:%.c=$(OBJ_DEBUG)/%.o)
+ $(RANLIB) $@
+
+# Shared library dependencies, rules and links
+
+leptlibs: $(LIB_SHARED)/$(LEPTLIB_SHARED)
+$(LIB_SHARED)/$(LEPTLIB_SHARED): $(LEPTLIB_C:%.c=$(OBJ_SHARED)/%.o)
+ $(RM) $@
+ $(LIBRARIAN_SHARED) $(SONAME_OPTION)$(notdir $@).$(MAJOR_REV) -o $@ $(LEPTLIB_C:%.c=$(OBJ_SHARED)/%.o)
+ mv $@ $@.$(MAJOR_REV).$(MINOR_REV).$(PATCH_REV)
+ cd $(LIB_SHARED); rm $(notdir $@).$(MAJOR_REV); \
+ ln -s $(notdir $@).$(MAJOR_REV).$(MINOR_REV).$(PATCH_REV) $(notdir $@).$(MAJOR_REV)
+ cd $(LIB_SHARED); rm $(notdir $@); \
+ ln -s $(notdir $@).$(MAJOR_REV) $(notdir $@)
+
+#########################################################
+
+# Rules for compiling source
+
+endianness.h: endianness.h.in
+ $(SED) -e 's/@APPLE_UNIVERSAL_BUILD@/defined (__APPLE_CC__)/g' -e 's/@ENDIANNESS@/$(ENDIANNESS)/g' endianness.h.in > endianness.h
+
+$(OBJ_NODEBUG)/%.o: %.c $(LEPTLIB_H) endianness.h
+ @$(TEST) -d $(OBJ_NODEBUG) || $(MKDIR) $(OBJ_NODEBUG)
+ $(COMPILE.c) -o $@ $<
+
+$(OBJ_DEBUG)/%.o: %.c $(LEPTLIB_H) endianness.h
+ @$(TEST) -d $(OBJ_DEBUG) || $(MKDIR) $(OBJ_DEBUG)
+ $(COMPILE.c) -o $@ $<
+
+$(OBJ_SHARED)/%.o: %.c $(LEPTLIB_H) endianness.h
+ @$(TEST) -d $(OBJ_SHARED) || $(MKDIR) $(OBJ_SHARED)
+ $(COMPILE.c) -o $@ $<
+
+###########################################################
+
+# Prepare a local environment
+
+dirs:
+ @$(TEST) -d $(BASE_OBJ) || $(MKDIR) $(BASE_OBJ)
+ @$(TEST) -d $(OBJ_NODEBUG) || $(MKDIR) $(OBJ_NODEBUG)
+ @$(TEST) -d $(OBJ_DEBUG) || $(MKDIR) $(OBJ_DEBUG)
+ @$(TEST) -d $(OBJ_SHARED) || $(MKDIR) $(OBJ_SHARED)
+ @$(TEST) -d $(BASE_LIB) || $(MKDIR) $(BASE_LIB)
+ @$(TEST) -d $(LIB_NODEBUG) || $(MKDIR) $(LIB_NODEBUG)
+ @$(TEST) -d $(LIB_DEBUG) || $(MKDIR) $(LIB_DEBUG)
+ @$(TEST) -d $(LIB_SHARED) || $(MKDIR) $(LIB_SHARED)
+
+
+###########################################################
+
+clean:
+ $(RM) $(OBJ_NODEBUG)/*.o $(OBJ_DEBUG)/*.o \
+ $(OBJ_SHARED)/*.o \
+ $(LIB_NODEBUG)/*.a $(LIB_DEBUG)/*.a \
+ $(LIB_SHARED)/*.so $(LIB_SHARED)/*.so.? \
+ $(LIB_SHARED)/*.so.?.* \
+ xtractprotos.o xtractprotos \
+ endianness.h
+
+###########################################################
+
+depend:
+ /usr/bin/makedepend -DNO_PROTOS $(CPPFLAGS) $(LEPTLIB_C)
+
+###########################################################
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+
+