summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile473
1 files changed, 473 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..dbabab8
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,473 @@
+# Author: Erwin Waterlander
+#
+# Copyright (C) 2009-2012 Erwin Waterlander
+# 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 in the documentation and/or other materials provided with
+# the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 THE AUTHOR 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.
+#
+# Description
+#
+# This is a GNU Makefile that uses GNU compilers, linkers and cpp. The
+# platform specific issues are determined by the various OS teets that
+# rely on the uname(1) command and directory locations.
+#
+# Set additional flags for the build with variables CFLAGS_USER,
+# DEFS_USER and LDFLAGS_USER.
+
+include version.mk
+
+CC = gcc
+CPP = cpp
+CPP_FLAGS_POD = ALL
+STRIP = strip
+
+PACKAGE = dos2unix
+UNIX2DOS = unix2dos
+MAC2UNIX = mac2unix
+UNIX2MAC = unix2mac
+
+# Native Language Support (NLS)
+ENABLE_NLS = 1
+# Large File Support (LFS)
+LFS = 1
+DEBUG = 0
+UCS = 1
+
+EXE=
+
+BIN = $(PACKAGE)$(EXE)
+UNIX2DOS_BIN = $(UNIX2DOS)$(EXE)
+MAC2UNIX_BIN = $(MAC2UNIX)$(EXE)
+UNIX2MAC_BIN = $(UNIX2MAC)$(EXE)
+
+# DJGPP support linking of .EXEs via 'stubify'.
+# See djgpp.mak and http://www.delorie.com/djgpp/v2faq/faq22_5.html
+
+LINK = ln -sf
+LINK_MAN = $(LINK)
+
+prefix = /usr
+exec_prefix = $(prefix)
+bindir = $(exec_prefix)/bin
+datarootdir = $(prefix)/share
+datadir = $(datarootdir)
+
+docsubdir = $(PACKAGE)-$(DOS2UNIX_VERSION)
+docdir = $(datarootdir)/doc/$(docsubdir)
+localedir = $(datarootdir)/locale
+mandir = $(datarootdir)/man
+man1dir = $(mandir)/man1
+manext = .1
+man1ext = .1
+
+ifdef ENABLE_NLS
+ POT = po/$(PACKAGE).pot
+ POFILES = $(wildcard po/??.po)
+ MOFILES = $(patsubst %.po,%.mo,$(POFILES))
+ EOX_POFILES = po/eo-x.po
+ NLSSUFFIX = -nls
+endif
+
+HTMLEXT = htm
+DOCFILES = $(PACKAGE).txt $(PACKAGE).$(HTMLEXT)
+INSTALL_OBJS_DOC = README.txt NEWS.txt ChangeLog.txt COPYING.txt TODO.txt BUGS.txt $(DOCFILES)
+
+#PODFILES = man/man1/dos2unix.pod $(wildcard man/*/man1/dos2unix.pod)
+PODFILES = $(wildcard man/*/man1/dos2unix.pod)
+MANFILES = $(patsubst %.pod,%.1,$(PODFILES))
+
+# On some systems (e.g. FreeBSD 4.10) GNU install is installed as `ginstall'.
+INSTALL = install
+
+# On some systems (e.g. GNU Win32) GNU mkdir is installed as `gmkdir'.
+MKDIR = mkdir
+
+ifdef ENABLE_NLS
+ DOS2UNIX_NLSDEFS = -DENABLE_NLS -DLOCALEDIR=\"$(localedir)\" -DPACKAGE=\"$(PACKAGE)\"
+endif
+
+VERSIONSUFFIX = -bin
+
+# ......................................................... OS flags ...
+
+OS =
+
+ifndef OS
+ifneq (, $(wildcard /boot/vmlinuz*))
+ OS = linux
+endif
+endif
+
+ifndef OS
+ifeq ($(findstring CYGWIN,$(shell uname)),CYGWIN)
+ OS = cygwin
+endif
+endif
+
+ifeq (cygwin,$(OS))
+ifdef ENABLE_NLS
+ LDFLAGS_EXTRA = -lintl -liconv -Wl,--enable-auto-import
+endif
+ EXE = .exe
+ # allow non-cygwin clients which do not understand cygwin
+ # symbolic links to launch applications...
+ LINK = ln -f
+ # but use symbolic links for man pages, since man client
+ # IS a cygwin app and DOES understand symlinks.
+ LINK_MAN = ln -fs
+ # Cygwin packaging standard avoids version numbers on
+ # documentation directories.
+ docsubdir = $(PACKAGE)
+ VERSIONSUFFIX = -cygwin
+endif
+
+ifndef OS
+ifeq ($(findstring MSYS,$(shell uname)),MSYS)
+ OS = msys
+ EXE = .exe
+ VERSIONSUFFIX = -msys
+ EO_XNOTATION=1
+ UCS =
+ifdef ENABLE_NLS
+ LDFLAGS_EXTRA = -lintl -liconv
+endif
+endif
+endif
+
+ifndef OS
+ifeq ($(findstring MINGW32,$(shell uname)),MINGW32)
+ OS = mingw32
+ prefix=c:/usr/local
+ EXE = .exe
+ VERSIONSUFFIX = -win32
+ LINK = cp -f
+ EO_XNOTATION=1
+ifdef ENABLE_NLS
+ LDFLAGS_EXTRA = -lintl -liconv
+ ZIPOBJ_EXTRA = bin/libintl-8.dll bin/libiconv-2.dll
+endif
+endif
+endif
+
+ifndef OS
+ifeq ($(shell uname),MS-DOS)
+ OS = msdos
+ prefix=c:/djgpp
+ EXE = .exe
+ VERSIONSUFFIX = -dos32
+ LINK_MAN = cp -f
+ docsubdir = dos2unix
+ EO_XNOTATION=1
+ UCS =
+ ZIPOBJ_EXTRA = bin/cwsdpmi.exe
+ifdef ENABLE_NLS
+ LDFLAGS_EXTRA = -lintl -liconv
+endif
+endif
+endif
+
+ifndef OS
+ifeq (FreeBSD, $(shell uname -s))
+ OS = freebsd
+ifdef ENABLE_NLS
+ CFLAGS_OS = -I/usr/local/include
+ LDFLAGS_EXTRA = -lintl -L/usr/local/lib
+endif
+endif
+endif
+
+ifeq (Darwin, $(shell uname -s))
+ OS = Darwin
+ifdef ENABLE_NLS
+ CFLAGS_OS = -I/usr/local/include
+ LDFLAGS_EXTRA = -lintl -L/usr/local/lib
+endif
+endif
+
+
+ifndef OS
+ifneq (, $(wildcard /opt/csw))
+ OS = sun
+endif
+endif
+
+ifeq (sun,$(OS))
+ # Running under SunOS/Solaris
+ LDFLAGS_EXTRA = -lintl
+endif
+
+ifndef OS
+ifeq (HP-UX, $(shell uname -s))
+ OS = hpux
+endif
+endif
+
+ifeq (hpux,$(OS))
+ # Running under HP-UX
+ EXTRA_DEFS += -Dhpux -D_HPUX_SOURCE
+endif
+
+ifndef OS
+ OS = unknown
+endif
+
+# ............................................................ flags ...
+
+# For systems that don't support Unicode or Latin-3, select
+# Esperanto in X-notation format: EO_XNOTATION=1
+
+ifdef EO_XNOTATION
+EO_NOTATION = -x
+endif
+
+CFLAGS_USER =
+CFLAGS = -O2 -Wall $(RPM_OPT_FLAGS) $(CPPFLAGS) $(CFLAGS_USER)
+
+EXTRA_CFLAGS = -DVER_REVISION=\"$(DOS2UNIX_VERSION)\" \
+ -DVER_DATE=\"$(DOS2UNIX_DATE)\" \
+ -DVER_AUTHOR=\"$(DOS2UNIX_AUTHOR)\" \
+ -DDEBUG=$(DEBUG) \
+ $(CFLAGS_OS)
+
+ifeq ($(DEBUG), 1)
+ EXTRA_CFLAGS += -g
+endif
+
+ifdef STATIC
+ EXTRA_CFLAGS += -static
+endif
+
+ifdef UCS
+ EXTRA_CFLAGS += -DD2U_UNICODE
+endif
+
+ifdef LFS
+ EXTRA_CFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+endif
+
+LDFLAGS_USER =
+LDFLAGS = $(RPM_OPT_FLAGS) $(LDFLAGS_EXTRA) $(LDFLAGS_USER)
+
+DEFS_USER =
+DEFS = $(EXTRA_DEFS) $(DEFS_USER)
+
+# .......................................................... targets ...
+
+all: $(BIN) $(MAC2UNIX_BIN) $(UNIX2DOS_BIN) $(UNIX2MAC_BIN) $(DOCFILES) $(MOFILES) $(EOX_POFILES) $(MANFILES) man/man1/dos2unix.1
+
+common.o : common.c common.h
+ $(CC) $(DEFS) $(EXTRA_CFLAGS) $(DOS2UNIX_NLSDEFS) $(CFLAGS) -c $< -o $@
+
+querycp.o : querycp.c querycp.h
+ $(CC) $(DEFS) $(EXTRA_CFLAGS) $(DOS2UNIX_NLSDEFS) $(CFLAGS) -c $< -o $@
+
+dos2unix.o : dos2unix.c dos2unix.h querycp.h common.h
+ $(CC) $(DEFS) $(EXTRA_CFLAGS) $(DOS2UNIX_NLSDEFS) $(CFLAGS) -c $< -o $@
+
+unix2dos.o : unix2dos.c unix2dos.h querycp.h common.h
+ $(CC) $(DEFS) $(EXTRA_CFLAGS) $(DOS2UNIX_NLSDEFS) $(CFLAGS) -c $< -o $@
+
+$(BIN): dos2unix.o querycp.o common.o
+ $(CC) $+ $(LDFLAGS) -o $@
+
+$(UNIX2DOS_BIN): unix2dos.o querycp.o common.o
+ $(CC) $+ $(LDFLAGS) -o $@
+
+$(MAC2UNIX_BIN) : $(BIN)
+ $(LINK) $< $@
+
+%.1 : %.pod
+ $(MAKE) -C man/man1
+
+$(UNIX2MAC_BIN) : $(UNIX2DOS_BIN)
+ $(LINK) $< $@
+
+mofiles: $(MOFILES)
+
+html: $(PACKAGE).$(HTMLEXT)
+
+txt: $(PACKAGE).txt
+
+ps: $(PACKAGE).ps
+
+pdf: $(PACKAGE).pdf
+
+doc: $(DOCFILES) $(MANFILES) man/man1/dos2unix.1
+
+tags: $(POT)
+
+merge: $(POFILES) $(EOX_POFILES)
+
+po/%.po : $(POT)
+ msgmerge -U $@ $(POT) --backup=numbered
+ # change timestamp in case .po file was not updated.
+ touch $@
+
+%.mo : %.po
+ msgfmt -c $< -o $@
+
+po/eo.mo : po/eo$(EO_NOTATION).po
+ msgfmt -c $< -o $@
+
+$(POT) : dos2unix.c unix2dos.c common.c
+ xgettext -C --keyword=_ $+ -o $(POT)
+
+%.txt : man/man1/%.pod
+ LC_CTYPE=C pod2text $< > $@
+
+%.ps : man/man1/%.1
+ groff -man $< -T ps > $@
+
+%.pdf: %.ps
+ ps2pdf $< $@
+
+%.$(HTMLEXT) : man/man1/%.pod
+ pod2html --title="$(PACKAGE) $(DOS2UNIX_VERSION) - DOS/MAC to UNIX and vice versa text file format converter" $< > $@
+
+install: all
+ $(MKDIR) -p -m 755 $(DESTDIR)$(bindir)
+ $(INSTALL) -m 755 $(BIN) $(DESTDIR)$(bindir)
+ $(INSTALL) -m 755 $(UNIX2DOS_BIN) $(DESTDIR)$(bindir)
+ifeq ($(LINK),cp -f)
+ $(INSTALL) -m 755 $(MAC2UNIX_BIN) $(DESTDIR)$(bindir)
+ $(INSTALL) -m 755 $(UNIX2MAC_BIN) $(DESTDIR)$(bindir)
+else
+ cd $(DESTDIR)$(bindir); $(LINK) $(BIN) $(MAC2UNIX_BIN)
+ cd $(DESTDIR)$(bindir); $(LINK) $(UNIX2DOS_BIN) $(UNIX2MAC_BIN)
+endif
+ $(MKDIR) -p -m 755 $(DESTDIR)$(man1dir)
+ $(INSTALL) -m 644 man/man1/$(PACKAGE).1 $(DESTDIR)$(man1dir)
+ifeq ($(LINK_MAN),cp -f)
+ $(INSTALL) -m 644 man/man1/$(PACKAGE).1 $(DESTDIR)$(man1dir)/$(MAC2UNIX).1
+ $(INSTALL) -m 644 man/man1/$(PACKAGE).1 $(DESTDIR)$(man1dir)/$(UNIX2DOS).1
+ $(INSTALL) -m 644 man/man1/$(PACKAGE).1 $(DESTDIR)$(man1dir)/$(UNIX2MAC).1
+else
+ cd $(DESTDIR)$(man1dir); $(LINK_MAN) $(PACKAGE).1 $(MAC2UNIX).1
+ cd $(DESTDIR)$(man1dir); $(LINK_MAN) $(PACKAGE).1 $(UNIX2DOS).1
+ cd $(DESTDIR)$(man1dir); $(LINK_MAN) $(PACKAGE).1 $(UNIX2MAC).1
+endif
+ $(foreach manfile, $(MANFILES), $(MKDIR) -p -m 755 $(DESTDIR)$(datarootdir)/$(dir $(manfile)) ;)
+ $(foreach manfile, $(MANFILES), $(INSTALL) -m 644 $(manfile) $(DESTDIR)$(datarootdir)/$(dir $(manfile)) ;)
+ $(foreach manfile, $(MANFILES), cd $(DESTDIR)$(datarootdir)/$(dir $(manfile)) ; $(LINK_MAN) $(PACKAGE).1 $(MAC2UNIX).1 ;)
+ $(foreach manfile, $(MANFILES), cd $(DESTDIR)$(datarootdir)/$(dir $(manfile)) ; $(LINK_MAN) $(PACKAGE).1 $(UNIX2DOS).1 ;)
+ $(foreach manfile, $(MANFILES), cd $(DESTDIR)$(datarootdir)/$(dir $(manfile)) ; $(LINK_MAN) $(PACKAGE).1 $(UNIX2MAC).1 ;)
+ifdef ENABLE_NLS
+ @echo "-- install-mo"
+ $(foreach mofile, $(MOFILES), $(MKDIR) -p -m 755 $(DESTDIR)$(localedir)/$(basename $(notdir $(mofile)))/LC_MESSAGES ;)
+ $(foreach mofile, $(MOFILES), $(INSTALL) -m 644 $(mofile) $(DESTDIR)$(localedir)/$(basename $(notdir $(mofile)))/LC_MESSAGES/$(PACKAGE).mo ;)
+endif
+ @echo "-- install-doc"
+ $(MKDIR) -p -m 755 $(DESTDIR)$(docdir)
+ $(INSTALL) -m 644 $(INSTALL_OBJS_DOC) $(wildcard $(PACKAGE).ps) $(wildcard $(PACKAGE).pdf) $(DESTDIR)$(docdir)
+
+uninstall:
+ @echo "-- target: uninstall"
+ -rm -f $(DESTDIR)$(bindir)/$(BIN)
+ -rm -f $(DESTDIR)$(bindir)/$(MAC2UNIX_BIN)
+ -rm -f $(DESTDIR)$(bindir)/$(UNIX2DOS_BIN)
+ -rm -f $(DESTDIR)$(bindir)/$(UNIX2MAC_BIN)
+ifdef ENABLE_NLS
+ $(foreach mofile, $(MOFILES), rm -f $(DESTDIR)$(localedir)/$(basename $(notdir $(mofile)))/LC_MESSAGES/$(PACKAGE).mo ;)
+endif
+ -rm -f $(DESTDIR)$(mandir)/man1/$(PACKAGE).1
+ -rm -f $(DESTDIR)$(mandir)/man1/$(MAC2UNIX).1
+ -rm -f $(DESTDIR)$(mandir)/man1/$(UNIX2DOS).1
+ -rm -f $(DESTDIR)$(mandir)/man1/$(UNIX2MAC).1
+ $(foreach manfile, $(MANFILES), rm -f $(DESTDIR)$(datarootdir)/$(manfile) ;)
+ -rm -rf $(DESTDIR)$(docdir)
+
+mostlyclean:
+ rm -f *.o
+ rm -f $(BIN) $(UNIX2DOS_BIN) $(MAC2UNIX_BIN) $(UNIX2MAC_BIN)
+ rm -f *.bak *~
+ rm -f *.tmp
+ rm -f man/man1/*.bak man/man1/*~
+ rm -f man/*/man1/*.bak man/*/man1/*~
+ rm -f po/*.bak po/*~
+ rm -f po/*.mo
+
+clean: mostlyclean
+ rm -f $(DOCFILES) $(PACKAGE).ps $(PACKAGE).pdf
+ rm -f man/man1/*.1
+ rm -f man/*/man1/*.1
+
+distclean: clean
+
+maintainer-clean: distclean
+
+realclean: maintainer-clean
+
+
+ZIPOBJ = bin/$(BIN) \
+ bin/$(MAC2UNIX_BIN) \
+ bin/$(UNIX2DOS_BIN) \
+ bin/$(UNIX2MAC_BIN) \
+ share/man/man1/$(PACKAGE).1 \
+ share/man/man1/$(MAC2UNIX).1 \
+ share/man/man1/$(UNIX2DOS).1 \
+ share/man/man1/$(UNIX2MAC).1 \
+ share/man/*/man1/$(PACKAGE).1 \
+ share/man/*/man1/$(MAC2UNIX).1 \
+ share/man/*/man1/$(UNIX2DOS).1 \
+ share/man/*/man1/$(UNIX2MAC).1 \
+ share/doc/$(docsubdir) \
+ $(ZIPOBJ_EXTRA)
+
+ifdef ENABLE_NLS
+ZIPOBJ += share/locale/*/LC_MESSAGES/$(PACKAGE).mo
+endif
+
+ZIPFILE = $(PACKAGE)-$(DOS2UNIX_VERSION)$(VERSIONSUFFIX)$(NLSSUFFIX).zip
+TGZFILE = $(PACKAGE)-$(DOS2UNIX_VERSION)$(VERSIONSUFFIX)$(NLSSUFFIX).tar.gz
+TBZFILE = $(PACKAGE)-$(DOS2UNIX_VERSION)$(VERSIONSUFFIX)$(NLSSUFFIX).tar.bz2
+
+dist-zip:
+ rm -f $(prefix)/$(ZIPFILE)
+ cd $(prefix) ; unix2dos share/doc/$(docsubdir)/*.txt share/man/man1/$(PACKAGE).1 share/man/man1/$(MAC2UNIX).1 share/man/man1/$(UNIX2DOS).1 share/man/man1/$(UNIX2MAC).1
+ cd $(prefix) ; unix2dos share/doc/$(docsubdir)/*.$(HTMLEXT)
+ cd $(prefix) ; unix2dos share/man/*/man1/$(PACKAGE).1 share/man/*/man1/$(MAC2UNIX).1 share/man/*/man1/$(UNIX2DOS).1 share/man/*/man1/$(UNIX2MAC).1
+ cd $(prefix) ; zip -r $(ZIPFILE) $(ZIPOBJ)
+ mv -f $(prefix)/$(ZIPFILE) ..
+
+dist-tgz:
+ cd $(prefix) ; dos2unix share/doc/$(docsubdir)/*.txt share/man/man1/$(PACKAGE).1 share/man/man1/$(MAC2UNIX).1 share/man/man1/$(UNIX2DOS).1 share/man/man1/$(UNIX2MAC).1
+ cd $(prefix) ; dos2unix share/man/*/man1/$(PACKAGE).1 share/man/*/man1/$(MAC2UNIX).1 share/man/*/man1/$(UNIX2DOS).1 share/man/*/man1/$(UNIX2MAC).1
+ cd $(prefix) ; tar cvzf $(TGZFILE) $(ZIPOBJ)
+ mv $(prefix)/$(TGZFILE) ..
+
+dist-tbz:
+ cd $(prefix) ; dos2unix share/doc/$(docsubdir)/*.txt share/man/man1/$(PACKAGE).1 share/man/man1/$(MAC2UNIX).1 share/man/man1/$(UNIX2DOS).1 share/man/man1/$(UNIX2MAC).1
+ cd $(prefix) ; dos2unix share/man/*/man1/$(PACKAGE).1 share/man/*/man1/$(MAC2UNIX).1 share/man/*/man1/$(UNIX2DOS).1 share/man/*/man1/$(UNIX2MAC).1
+ cd $(prefix) ; tar cvjf $(TBZFILE) $(ZIPOBJ)
+ mv $(prefix)/$(TBZFILE) ..
+
+dist: dist-tgz
+
+strip:
+ $(STRIP) $(BIN)
+ $(STRIP) $(UNIX2DOS_BIN)
+ifeq ($(LINK),cp -f)
+ $(STRIP) $(MAC2UNIX_BIN)
+ $(STRIP) $(UNIX2MAC_BIN)
+endif
+
+# End of file