Mercurial > projects > pwm
diff Makefile @ 0:a7e41e1a79c8
Initial revision
author | Guido Berhoerster <guido+pwm@berhoerster.name> |
---|---|
date | Thu, 19 Jan 2017 22:39:51 +0100 |
parents | |
children | 55281f14dc9b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile Thu Jan 19 22:39:51 2017 +0100 @@ -0,0 +1,167 @@ +# +# Copyright (C) 2016 Guido Berhoerster <guido+pwm@berhoerster.name> +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# + +PACKAGE = pwm +VERSION = 1 +DISTNAME := $(PACKAGE)-$(VERSION) + +# gcc, clang, icc, Sun/Solaris Studio +CC := $(CC) -std=c99 +COMPILE.c = $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(XCPPFLAGS) $(TARGET_ARCH) -c +# gcc, clang, icc +MAKEDEPEND.c = $(CC) -MM $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(XCPPFLAGS) +# Sun/Solaris Studio +#MAKEDEPEND.c = $(CC) -xM1 $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(XCPPFLAGS) +# X makedepend +#MAKEDEPEND.c = makedepend -f- -Y -- $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(XCPPFLAGS) -- +LINK.c = $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(XCPPFLAGS) $(LDFLAGS) $(XLDFLAGS) $(TARGET_ARCH) +LINK.o = $(CC) $(LDFLAGS) $(XLDFLAGS) $(TARGET_ARCH) +CP := cp +INSTALL := install +INSTALL.exec := $(INSTALL) -D -m 0755 +INSTALL.data := $(INSTALL) -D -m 0644 +INSTALL.link := $(CP) -f -P +PAX := pax +GZIP := gzip +SED := sed + +DESTDIR ?= +prefix ?= /usr/local +bindir ?= $(prefix)/bin + +OS_NAME := $(shell uname -s) +OS_RELEASE := $(shell uname -r) + +ifeq ($(OS_NAME),Linux) + HAVE_ASPRINTF ?= 1 + HAVE_ERR_H ?= 1 + HAVE_READPASSPHRASE_H ?= 0 + HAVE_SETPROGNAME ?= 0 + HAVE_SYS_TREE_H ?= 0 +else ifneq ($(findstring $(OS_NAME),FreeBSD DragonFly),) + HAVE_ASPRINTF ?= 1 + HAVE_ERR_H ?= 1 + HAVE_READPASSPHRASE_H ?= 1 + HAVE_SETPROGNAME ?= 1 + HAVE_SYS_TREE_H ?= 1 +else ifeq ($(OS_NAME),NetBSD) + HAVE_ASPRINTF ?= 1 + HAVE_ERR_H ?= 1 + HAVE_READPASSPHRASE_H ?= 0 + HAVE_SYS_TREE_H ?= 1 + HAVE_SETPROGNAME ?= 1 +else ifeq ($(OS_NAME),OpenBSD) + HAVE_ASPRINTF ?= 1 + HAVE_ERR_H ?= 1 + HAVE_READPASSPHRASE_H ?= 1 + HAVE_SYS_TREE_H ?= 1 + HAVE_SETPROGNAME ?= 1 +else ifeq ($(OS_NAME),SunOS) + ifeq ($(OS_RELEASE),5.10) + HAVE_ASPRINTF ?= 0 + HAVE_ERR_H ?= 0 + else + HAVE_ASPRINTF ?= 1 + HAVE_ERR_H ?= 1 + endif + HAVE_READPASSPHRASE_H ?= 0 + HAVE_SYS_TREE_H ?= 0 + HAVE_SETPROGNAME ?= 0 +else + HAVE_ASPRINTF ?= 0 + HAVE_ERR_H ?= 0 + HAVE_READPASSPHRASE_H ?= 0 + HAVE_SETPROGNAME ?= 0 + HAVE_SYS_TREE_H ?= 0 +endif + +OBJS = cmd.o \ + pwfile.o \ + pwm.o \ + tok.o \ + util.o + +.DEFAULT_TARGET = all + +.PHONY: all clean clobber dist install + +all: $(PACKAGE) + +XCPPFLAGS = -DPACKAGE=\"$(PACKAGE)\" \ + -DVERSION=\"$(VERSION)\" +LDLIBS = -lpws -lnettle +ifeq ($(HAVE_ERR_H),1) + XCPPFLAGS += -DHAVE_ERR_H +else + OBJS += compat/err.o +endif +ifeq ($(HAVE_READPASSPHRASE_H),1) + XCPPFLAGS += -DHAVE_READPASSPHRASE_H +else + OBJS += compat/readpassphrase.o +endif +ifeq ($(HAVE_SETPROGNAME),1) + XCPPFLAGS += -DHAVE_SETPROGNAME +else + OBJS += compat/setprogname.o +endif +ifeq ($(HAVE_SYS_TREE_H),1) + XCPPFLAGS += -DHAVE_SYS_TREE_H +endif +ifneq ($(findstring $(OS_NAME),FreeBSD DragonFly OpenBSD),) + XCPPFLAGS += -I/usr/local/include + XLDFLAGS += -L/usr/local/lib +else ifeq ($(OS_NAME),NetBSD) + XCPPFLAGS += -I/usr/pkg/include + XLDFLAGS += -L/usr/pkg/lib +endif +ifeq ($(findstring $(OS_NAME),FreeBSD DragonFly NetBSD OpenBSD),) + XCPPFLAGS += -D_XOPEN_SOURCE=600 +endif +ifeq ($(OS_NAME),SunOS) + XCPPFLAGS += -I/usr/xpg4/include -D__EXTENSIONS__ + XLDFLAGS += -L/usr/xpg4/lib -R/usr/xpg4/lib +endif + +$(PACKAGE): $(OBJS) + $(LINK.o) $^ $(LDLIBS) -o $@ + +%.o: %.c + $(MAKEDEPEND.c) $< | $(SED) -f deps.sed >$*.d + $(COMPILE.c) -o $@ $< + +install: + $(INSTALL.exec) $(PACKAGE) "$(DESTDIR)$(bindir)/$(PACKAGE)" + +clean: + rm -f $(PACKAGE) $(OBJS) + +clobber: clean + rm -f $(patsubst %.o,%.d,$(OBJS)) + +dist: clobber + $(PAX) -w -x ustar -s ',.*/\..*,,' -s ',./[^/]*\.tar\.gz,,' \ + -s ',^\.$$,,' -s ',\./,$(DISTNAME)/,' . | \ + $(GZIP) > $(DISTNAME).tar.gz + +-include $(patsubst %.o,%.d,$(OBJS))