blob: 6d2ebb16278bc34bb8bfdddbd4f370929cac40a2 [file] [log] [blame]
.PHONY: all check clean dist distclean doc install install-headers regressions uninstall
BUILD_DIR=/Volumes/dev/StitchMarker/ck
SRC_DIR=/Volumes/dev/StitchMarker/ck
CFLAGS=-D_XOPEN_SOURCE=600 -D_BSD_SOURCE -D_DEFAULT_SOURCE -std=gnu99 -pedantic -Wall -W -Wundef -Wendif-labels -Wshadow -Wpointer-arith -Wcast-align -Wcast-qual -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wdisabled-optimization -fstrict-aliasing -O2 -pipe -Wno-parentheses -fPIC
VERSION=1.0.0
VERSION_MAJOR=0
PREFIX=/usr/local
LIBRARY=/usr/local/lib
HEADERS=/usr/local/include
PKGCONFIG_DATA=/usr/local/lib/pkgconfig
LDNAME=libck.dylib
LDNAME_VERSION=libck.1.0.0.dylib
LDNAME_MAJOR=libck.0.dylib
all: doc
$(MAKE) -C src all || exit
@echo
@echo
@echo ---[ Concurrency Kit has built successfully. You may now \"make install\".
doc:
$(MAKE) -C doc all || exit
@echo ---[ Manual pages are ready for installation.
regressions:
$(MAKE) -C regressions all || exit
@echo ---[ Regressions have built successfully.
check: regressions
@echo ---[ Executing unit tests...
$(MAKE) -C regressions check
@echo ---[ Unit tests have completed successfully.
install-headers:
mkdir -p $(DESTDIR)/$(HEADERS) || exit
cp $(SRC_DIR)/include/*.h $(DESTDIR)/$(HEADERS) || exit
chmod 644 $(DESTDIR)/$(HEADERS)/ck_*.h || exit
mkdir -p $(DESTDIR)$(HEADERS)/gcc || exit
cp -r $(SRC_DIR)/include/gcc/* $(DESTDIR)/$(HEADERS)/gcc || exit
cp include/ck_md.h $(DESTDIR)/$(HEADERS)/ck_md.h || exit
chmod 755 $(DESTDIR)/$(HEADERS)/gcc
chmod 644 $(DESTDIR)/$(HEADERS)/gcc/ck_*.h $(DESTDIR)/$(HEADERS)/gcc/*/ck_*.h || exit
mkdir -p $(DESTDIR)$(HEADERS)/spinlock || exit
cp -r $(SRC_DIR)/include/spinlock/* $(DESTDIR)/$(HEADERS)/spinlock || exit
chmod 755 $(DESTDIR)/$(HEADERS)/spinlock
chmod 644 $(DESTDIR)/$(HEADERS)/spinlock/*.h || exit
install-so:
mkdir -p $(DESTDIR)/$(LIBRARY)
cp src/libck.so $(DESTDIR)/$(LIBRARY)/$(LDNAME_VERSION)
ln -sf $(LDNAME_VERSION) $(DESTDIR)/$(LIBRARY)/$(LDNAME)
ln -sf $(LDNAME_VERSION) $(DESTDIR)/$(LIBRARY)/$(LDNAME_MAJOR)
chmod 744 $(DESTDIR)/$(LIBRARY)/$(LDNAME_VERSION) \
$(DESTDIR)/$(LIBRARY)/$(LDNAME) \
$(DESTDIR)/$(LIBRARY)/$(LDNAME_MAJOR)
install-lib:
mkdir -p $(DESTDIR)/$(LIBRARY)
cp src/libck.a $(DESTDIR)/$(LIBRARY)/libck.a
chmod 644 $(DESTDIR)/$(LIBRARY)/libck.a
install: all install-headers install-so install-lib
$(MAKE) -C doc install
mkdir -p $(DESTDIR)/$(LIBRARY) || exit
mkdir -p $(DESTDIR)/$(PKGCONFIG_DATA) || exit
chmod 755 $(DESTDIR)/$(PKGCONFIG_DATA)
cp build/ck.pc $(DESTDIR)/$(PKGCONFIG_DATA)/ck.pc || exit
@echo
@echo
@echo ---[ Concurrency Kit has installed successfully.
uninstall:
$(MAKE) -C doc uninstall
rm -f $(DESTDIR)/$(LIBRARY)/$(LDNAME_VERSION) \
$(DESTDIR)/$(LIBRARY)/$(LDNAME) \
$(DESTDIR)/$(LIBRARY)/$(LDNAME_MAJOR)
rm -f $(DESTDIR)/$(LIBRARY)/libck.so*
rm -f $(DESTDIR)/$(LIBRARY)/libck.a
rm -f $(DESTDIR)/$(HEADERS)/ck_*.h
rm -f $(DESTDIR)/$(HEADERS)/spinlock/*.h
rm -f $(DESTDIR)/$(HEADERS)/gcc/ck_*.h
rm -f $(DESTDIR)/$(HEADERS)/gcc/*/ck_*.h
rm -f $(DESTDIR)/$(PKGCONFIG_DATA)/ck.pc
clean:
$(MAKE) -C doc clean
$(MAKE) -C src clean
$(MAKE) -C regressions clean
rm -f $(BUILD_DIR)/*~ $(BUILD_DIR)/*.o $(BUILD_DIR)/*.tar.gz
dist:
git archive --remote=$(SRC_DIR) --format=tar --prefix=ck-$(VERSION)/ HEAD \
| gzip > $(BUILD_DIR)/ck-$(VERSION).tar.gz
distclean: clean
rm -f $(BUILD_DIR)/include/ck_md.h
rm -f $(BUILD_DIR)/build/regressions.build
rm -f $(BUILD_DIR)/build/ck.build
rm -f $(BUILD_DIR)/build/ck.pc
rm -f $(BUILD_DIR)/Makefile
rm -f $(BUILD_DIR)/doc/Makefile