Mercurial > sci
view GNUmakefile @ 83:28fd8b5247f0
scid: make sure index page list most recents first
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 28 Feb 2023 16:31:34 +0100 |
parents | 377ea81b4ecf |
children |
line wrap: on
line source
# # GNUmakefile -- GNU Makefile for sci # # Copyright (c) 2021-2023 David Demelier <markand@malikania.fr> # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # PREFIX := /usr/local BINDIR := $(PREFIX)/bin MANDIR := $(PREFIX)/share/man SHAREDIR := $(PREFIX)/share VARDIR := $(PREFIX)/var WITH_SCID := yes WITH_SCICTL := yes WITH_SCIWORKERD := yes WITH_DEBUG := no LIBCURL_INCS := $(shell pkg-config --cflags libcurl) LIBCURL_LIBS := $(shell pkg-config --libs libcurl) JANSSON_INCS= $(shell pkg-config --cflags jansson) JANSSON_LIBS= $(shell pkg-config --libs jansson) ifeq ($(WITH_SCID),yes) KCGI_INCS= $(shell pkg-config --cflags kcgi) KCGI_LIBS= $(shell pkg-config --libs kcgi) endif -include config.mk VERSION := 0.1.0 MAN7 := sci.7 MAN8 := scictl.8 scid.8 sciworkerd.8 INCS := -Iextern/libsqlite \ -Iextern/libutlist \ -Iextern/libgreatest \ -Iextern/libmustache4c \ -Iextern/libduktape \ -Ilibsci \ -I. DEFS := -DVARDIR=\"$(VARDIR)\" \ -DVERSION=\"$(VERSION)\" \ -DSHAREDIR=\"$(SHAREDIR)\" \ -DSQLITE_THREADSAFE=0 \ -DSQLITE_OMIT_LOAD_EXTENSION=0 \ -DSQLITE_OMIT_DEPRECATED=0 \ -DSQLITE_DEFAULT_FOREIGN_KEY=1 SUBST := -e "s,@VERSION@,$(VERSION),g" ifeq ($(WITH_DEBUG),yes) OPTS := -g -O0 else OPTS := -DNDEBUG -O3 endif .SUFFIXES: .SUFFIXES: .c .o .sql .h all: %.o: %.c $(CC) $(INCS) $(DEFS) $(OPTS) $(CFLAGS) -MMD -c $< -o $@ %: %.c $(CC) $(INCS) $(DEFS) $(OPTS) $(CFLAGS) -o $@ $< $(OBJS) $(LIBS) $(LDFLAGS) %.h: %.sql ./extern/bcc/bcc -sc0 $< $< > $@ # {{{ libsci LIBSCI := libsci/libsci.a LIBSCI_SRCS := libsci/apic.c \ libsci/log.c \ libsci/strlcpy.c \ libsci/strtonum.c \ libsci/util.c LIBSCI_OBJS := $(LIBSCI_SRCS:.c=.o) LIBSCI_DEPS := $(LIBSCI_SRCS:.c=.d) SQL_SRCS := sql/init.sql \ sql/job-add.sql \ sql/job-list.sql \ sql/job-todo.sql \ sql/jobresult-add.sql \ sql/jobresult-list-by-job-group.sql \ sql/jobresult-list-by-job.sql \ sql/jobresult-list-by-worker.sql \ sql/project-find.sql \ sql/project-list.sql \ sql/project-save.sql \ sql/property-get.sql \ sql/property-set.sql \ sql/worker-find.sql \ sql/worker-list.sql \ sql/worker-save.sql SQL_OBJS := $(SQL_SRCS:.sql=.h) -include $(LIBSCI_DEPS) $(SQL_OBJS): extern/bcc/bcc $(LIBSCI_OBJS): $(SQL_OBJS) $(LIBSCI): $(LIBSCI_OBJS) $(AR) -rc $@ $(LIBSCI_OBJS) # }}} # {{{ scictl SCICTL := scictl/scictl ifeq ($(WITH_SCICTL),yes) $(SCICTL): $(LIBSCI) $(SCICTL): private LIBS += $(LIBSCI) $(JANSSON_LIBS) $(LIBCURL_LIBS) all: $(SCICTL) endif # }}} # {{{ scid SCID := scid/scid SCID_SRCS := extern/libduktape/duktape.c \ extern/libmustache4c/mustache.c \ extern/libsqlite/sqlite3.c \ scid/crud.c \ scid/db.c \ scid/http.c \ scid/main.c \ scid/page-api-jobresults.c \ scid/page-api-jobs.c \ scid/page-api-projects.c \ scid/page-api-todo.c \ scid/page-api-workers.c \ scid/page-index.c \ scid/page-jobresults.c \ scid/page-projects.c \ scid/page-static.c \ scid/page-workers.c \ scid/pageutil.c \ scid/theme.c SCID_OBJS := $(SCID_SRCS:.c=.o) SCID_DEPS := $(SCID_SRCS:.c=.d) ifeq ($(WITH_SCID),yes) -include $(SCID_DEPS) $(SCID): $(SCID_OBJS) $(LIBSCI) $(SCID): private OBJS += $(SCID_OBJS) $(SCID): private INCS += $(KCGI_INCS) $(SCID): private LIBS += $(LIBSCI) $(KCGI_LIBS) $(JANSSON_LIBS) all: $(SCID) endif # }}} # {{{ sciworkerd SCIWORKERD := sciworkerd/sciworkerd SCIWORKERD_SRCS := sciworkerd/main.c \ sciworkerd/task.c SCIWORKERD_OBJS := $(SCIWORKERD_SRCS:.c=.o) SCIWORKERD_DEPS := $(SCIWORKERD_SRCS:.c=.d) ifeq ($(WITH_SCIWORKERD),yes) -include $(SCIWORKERD_DEPS) $(SCIWORKERD): $(SCIWORKERD_OBJS) $(LIBSCI) $(SCIWORKERD): private OBJS += $(SCIWORKERD_OBJS) $(SCIWORKERD): private LIBS += $(LIBSCI) $(LIBCURL_LIBS) $(JANSSON_LIBS) all: $(SCIWORKERD) endif # }}} install: mkdir -p $(DESTDIR)$(BINDIR) ifeq ($(WITH_SCID),yes) cp scid/scid $(DESTDIR)$(BINDIR) endif ifeq ($(WITH_SCICTL),yes) cp scictl/scictl $(DESTDIR)$(BINDIR) endif ifeq ($(WITH_SCIWORKERD),yes) cp sciworkerd/sciworkerd $(DESTDIR)$(BINDIR) endif mkdir -p $(DESTDIR)$(MANDIR)/man7 for m in $(MAN7); do \ sed $(SUBST) < man/$$m > $(DESTDIR)$(MANDIR)/man7/$$m; \ done mkdir -p $(DESTDIR)$(MANDIR)/man8 for m in $(MAN8); do \ sed $(SUBST) < man/$$m > $(DESTDIR)$(MANDIR)/man8/$$m; \ done mkdir -p $(DESTDIR)$(SHAREDIR)/sci cp -R themes $(DESTDIR)$(SHAREDIR)/sci clean: rm -f extern/bcc/bcc tags cscope.out $(MAN7) $(MAN8) $(SQL_OBJS) rm -f $(LIBSCI) $(LIBSCI_OBJS) $(LIBSCI_DEPS) rm -f $(SCICTL) $(SCICTL_OBJS) $(SCICTL_DEPS) rm -f $(SCID) $(SCID_OBJS) $(SCID_DEPS) rm -f $(SCIWORKERD) $(SCIWORKERD_OBJS) $(SCIWORKERD_DEPS) doxygen: sed $(SUBST) < doc/Doxyfile | doxygen - .PHONY: all clean doxygen install