mirror of
https://github.com/fadden/nulib2.git
synced 2025-01-15 07:34:38 +00:00
ea89644bfa
When building in parallel, Make can start building the samples before it’s finished building the library, which causes the build to fail. Adding an explicit dependency ensures that the library is built before the samples. Signed-off-by: Stephen Kitt <steve@sk2.org>
142 lines
4.3 KiB
Makefile
142 lines
4.3 KiB
Makefile
#
|
|
# NuFX archive manipulation library
|
|
# Copyright (C) 2000-2007 by Andy McFadden, All Rights Reserved.
|
|
# This is free software; you can redistribute it and/or modify it under the
|
|
# terms of the BSD License, see the file COPYING-LIB.
|
|
#
|
|
# Makefile for nufxlib (should work with non-GNU "make").
|
|
#
|
|
# You can use:
|
|
# make (builds library and sample applications)
|
|
# make shared (builds shared library if you're using GNU ld or similar)
|
|
#
|
|
# The shared library support currently leaves much to be desired.
|
|
#
|
|
# If you build with -DDEBUG_MSGS, nulib2 will be able to use the hidden
|
|
# 'g' command, which generates a verbose archive dump for debugging.
|
|
#
|
|
|
|
# NufxLib install location.
|
|
prefix = @prefix@
|
|
exec_prefix = @exec_prefix@
|
|
includedir = @includedir@
|
|
libdir = @libdir@
|
|
srcdir = @srcdir@
|
|
|
|
SHELL = @SHELL@
|
|
INSTALL = @INSTALL@
|
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
INSTALL_DATA = @INSTALL_DATA@
|
|
CC = @CC@
|
|
AR = ar rcv
|
|
#OPT = @CFLAGS@ -DNDEBUG
|
|
OPT = @CFLAGS@
|
|
#OPT = @CFLAGS@ -DDEBUG_MSGS
|
|
#OPT = @CFLAGS@ -DDEBUG_VERBOSE
|
|
GCC_FLAGS = -Wall -Wwrite-strings -Wstrict-prototypes -Wpointer-arith -Wshadow
|
|
CFLAGS = @BUILD_FLAGS@ -I. @DEFS@ -fPIC -DOPTFLAGSTR="\"$(OPT)\""
|
|
|
|
SRCS = Archive.c ArchiveIO.c Bzip2.c Charset.c Compress.c Crc16.c \
|
|
Debug.c Deferred.c Deflate.c Entry.c Expand.c FileIO.c Funnel.c \
|
|
Lzc.c Lzw.c MiscStuff.c MiscUtils.c Record.c SourceSink.c \
|
|
Squeeze.c Thread.c Value.c Version.c
|
|
OBJS = Archive.o ArchiveIO.o Bzip2.o Charset.o Compress.o Crc16.o \
|
|
Debug.o Deferred.o Deflate.o Entry.o Expand.o FileIO.o Funnel.o \
|
|
Lzc.o Lzw.o MiscStuff.o MiscUtils.o Record.o SourceSink.o \
|
|
Squeeze.o Thread.o Value.o Version.o
|
|
|
|
STATIC_PRODUCT = libnufx.a
|
|
SHARED_PRODUCT = libnufx.so
|
|
PRODUCT = $(STATIC_PRODUCT)
|
|
|
|
|
|
#
|
|
# Build stuff
|
|
#
|
|
|
|
all: $(PRODUCT) samples
|
|
@true
|
|
|
|
install: $(STATIC_PRODUCT)
|
|
$(srcdir)/mkinstalldirs $(libdir)
|
|
$(INSTALL_DATA) $(STATIC_PRODUCT) $(libdir)
|
|
$(srcdir)/mkinstalldirs $(includedir)
|
|
$(INSTALL_DATA) NufxLib.h $(includedir)
|
|
|
|
install-shared: $(SHARED_PRODUCT)
|
|
$(srcdir)/mkinstalldirs $(libdir)
|
|
$(INSTALL_DATA) $(SHARED_PRODUCT) $(libdir)
|
|
$(srcdir)/mkinstalldirs $(includedir)
|
|
$(INSTALL_DATA) NufxLib.h $(includedir)
|
|
|
|
samples:: $(STATIC_PRODUCT)
|
|
@echo "Building samples..."
|
|
@(cd samples; set +e; unset CFLAGS OBJS; set -e; \
|
|
@SET_MAKE@ LIB_PRODUCT="../$(PRODUCT)" $(MAKE))
|
|
|
|
shared::
|
|
PRODUCT="$(SHARED_PRODUCT)" $(MAKE) -e
|
|
|
|
$(STATIC_PRODUCT): $(OBJS)
|
|
-rm -f $(STATIC_PRODUCT) $(SHARED_PRODUCT)
|
|
$(AR) $@ $(OBJS)
|
|
@RANLIB@ $@
|
|
|
|
# BUG: we need -fPIC, maybe -D_REENTRANT when compiling for this.
|
|
# BUG: for Linux we may want -Wl,-soname,libnufx.so.1 on the link line.
|
|
$(SHARED_PRODUCT): $(OBJS)
|
|
-rm -f $(STATIC_PRODUCT) $(SHARED_PRODUCT)
|
|
$(CC) @SHARE_FLAGS@ -o $@ $(OBJS) @LIBS@
|
|
|
|
clean:
|
|
(cd samples; make clean)
|
|
-rm -f *.o core
|
|
-rm -f $(SHARED_PRODUCT) $(STATIC_PRODUCT)
|
|
|
|
# build tags; assumes fancy GNU tag generation
|
|
tags::
|
|
@ctags -R --totals *
|
|
@#ctags *.[ch]
|
|
|
|
distclean: clean
|
|
(cd samples; make distclean)
|
|
-rm -f Makefile Makefile.bak
|
|
-rm -f config.log config.cache config.status config.h
|
|
-rm -f tags
|
|
|
|
# Make a tarfile with a backup of the essential files. We include "Makefile"
|
|
# so that we can do a "make distclean" during packaging.
|
|
baktar:
|
|
@tar cvf nufxlib.tar *.txt COPYING-LIB INSTALL configure *.in Makefile \
|
|
Makefile.msc Makefile.dll install-sh config.guess config.sub \
|
|
mkinstalldirs *.[ch] samples/*.txt samples/Makefile* samples/*.[ch]
|
|
@gzip -9 nufxlib.tar
|
|
@mv -i nufxlib.tar.gz /home/fadden/BAK/
|
|
|
|
# dependency info
|
|
COMMON_HDRS = NufxLibPriv.h NufxLib.h MiscStuff.h SysDefs.h
|
|
Archive.o: Archive.c $(COMMON_HDRS)
|
|
ArchiveIO.o: ArchiveIO.c $(COMMON_HDRS)
|
|
Bzip2.o: Bzip2.c $(COMMON_HDRS)
|
|
Charset.o: Charset.c $(COMMON_HDRS)
|
|
Compress.o: Compress.c $(COMMON_HDRS)
|
|
Crc16.o: Crc16.c $(COMMON_HDRS)
|
|
Debug.o: Debug.c $(COMMON_HDRS)
|
|
Deferred.o: Deferred.c $(COMMON_HDRS)
|
|
Deflate.o: Deflate.c $(COMMON_HDRS)
|
|
Entry.o: Entry.c $(COMMON_HDRS)
|
|
Expand.o: Expand.c $(COMMON_HDRS)
|
|
FileIO.o: FileIO.c $(COMMON_HDRS)
|
|
Funnel.o: Funnel.c $(COMMON_HDRS)
|
|
Lzc.o: Lzc.c $(COMMON_HDRS)
|
|
Lzw.o: Lzw.c $(COMMON_HDRS)
|
|
MiscStuff.o: MiscStuff.c $(COMMON_HDRS)
|
|
MiscUtils.o: MiscUtils.c $(COMMON_HDRS)
|
|
Record.o: Record.c $(COMMON_HDRS)
|
|
SourceSink.o: SourceSink.c $(COMMON_HDRS)
|
|
Squeeze.o: Squeeze.c $(COMMON_HDRS)
|
|
Thread.o: Thread.c $(COMMON_HDRS)
|
|
Value.o: Value.c $(COMMON_HDRS)
|
|
Version.o: Version.c $(COMMON_HDRS) Makefile
|
|
|