#=----------------------------------------------------------------------------=# # Makefile # # # # Copyright © 2021 The Gem-graph Project # # # # This file is part of gem-graph. # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU Affero General Public License as # # published by the Free Software Foundation, either version 3 of the # # License, or (at your option) any later version. # # # # This program is distributed in the hope that it will be useful, # # but WITHOUT ANY WARRANTY; without even the implied warranty of # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # # GNU Affero General Public License for more details. # # # # You should have received a copy of the GNU Affero General Public License # # along with this program. If not, see . # #=----------------------------------------------------------------------------=# CCOPTS=-pthread -fPIC -fwrapv -Wall -fno-strict-aliasing CCFLAGS=-I /usr/include/python3.9 LDFLAGS=-lpython3.9 -lpthread -lm -lutil -ldl BINDIR=bin SRCDIR=src DYNLIBS= $(BINDIR)/scheduler.so $(BINDIR)/server.so $(BINDIR)/localthread.so .DEFAULT_GOAL:= all .PHONY: all clean .PRECIOUS: $(SRCDIR)/%.c # ---- General recipes ------------------------------------------------------- # $(BINDIR)/%.so: $(SRCDIR)/%.c @echo "Building dynamic library $@" @$(CC) --shared $(CCOPTS) $(CCFLAGS) -o $@ $< $(SRCDIR)/%.c: $(SRCDIR)/%.py @echo "Cythonizing $< to $@" @cython3 -3 $< -o $@ # ---- Main recipe ----------------------------------------------------------- # $(BINDIR)/gem-graph-server: $(SRCDIR)/main.c @echo "Building program to $@" @$(CC) $(CCOPTS) -no-pie $(CCFLAGS) -o $@ $< $(LDFLAGS) @echo "Success!" $(SRCDIR)/main.c: $(SRCDIR)/main.py @echo "Cythonizing main file to $@" @cython3 -3 $< -o $@ --embed # ---- Misc recipes ---------------------------------------------------------- # clean: rm -rf $(SRCDIR)/*.c $(BINDIR)/* all: $(DYNLIBS) $(BINDIR)/gem-graph-server