Add initial make infrastructure

This commit is contained in:
Alejandro Gallo 2021-08-30 16:49:20 +02:00
parent 9cab35b159
commit dae1ad10f9
7 changed files with 67 additions and 2 deletions

View File

@ -1,3 +1,8 @@
ATRIP_ROOT := $(PWD)
CONFIG ?= gcc
include etc/config/$(CONFIG).mk
include ./bench/config.mk
EMACS = emacs -q --batch EMACS = emacs -q --batch
define tangle define tangle
$(EMACS) $(1) --eval "(require 'org)" --eval '(org-babel-tangle)' $(EMACS) $(1) --eval "(require 'org)" --eval '(org-babel-tangle)'
@ -12,6 +17,17 @@ $(SOURCES): $(MAIN)
tangle: $(SOURCES) tangle: $(SOURCES)
clean: clean:
rm -r $(SOURCES) -rm -v $(SOURCES)
clean-all: bench-clean clean
bench: $(BENCH_TARGETS)
.PHONY: clean tangle bench
%: %.o
$(CXX) $< $(CXXFLAGS) $(LDFLAGS) -o $@
%.o: %.cxx
$(CXX) -c $< $(CXXFLAGS) -o $@
.PHONY: clean tangle

5
bench/config.mk Normal file
View File

@ -0,0 +1,5 @@
BENCH_SOURCES = $(wildcard $(ATRIP_ROOT)/bench/test*.cxx)
BENCH_TARGETS = $(patsubst %.cxx,%,$(BENCH_SOURCES))
bench-clean:
-rm -v $(BENCH_TARGETS)

6
bench/test_main.cxx Normal file
View File

@ -0,0 +1,6 @@
#include <iostream>
int main() {
std::cout << "Hello world" << std::endl;
return 0;
}

6
etc/config/gcc.mk Normal file
View File

@ -0,0 +1,6 @@
include etc/ctf.mk
CXX = mpic++
CXXFLAGS += -I$(CTF_INCLUDE_PATH)
LDFLAGS += -L$(CTF_BUILD_PATH) -lctf

2
etc/ctf.mk Normal file
View File

@ -0,0 +1,2 @@
include ./etc/ctf_vars.mk
include ./etc/ctf_rules.mk

20
etc/ctf_rules.mk Normal file
View File

@ -0,0 +1,20 @@
$(CTF_SRC_PATH)/configure:
mkdir -p $(@D)
git clone $(CTF_REPOSITORY) $(@D)
cd $(@D) && git checkout $(CTF_COMMIT)
$(CTF_BUILD_PATH)/Makefile: $(CTF_SRC_PATH)/configure
mkdir -p $(CTF_BUILD_PATH)
cd $(CTF_BUILD_PATH) && $(CTF_SRC_PATH)/configure $(CTF_CONFIG_FLAGS)
$(CTF_STATIC_LIB): $(CTF_BUILD_PATH)/Makefile
$(info Compiling $@)
cd $(CTF_BUILD_PATH) && $(MAKE)
.PHONY: ctf ctf-clean
ctf: $(CTF_STATIC_LIB)
ctf-clean:
rm -rf $(CTF_BUILD_PATH)
IN_PROJECT_DEPENDENCIES += ctf

10
etc/ctf_vars.mk Normal file
View File

@ -0,0 +1,10 @@
CTF_REPOSITORY = https://github.com/cyclops-community/ctf
CTF_COMMIT ?= v1.5.0
CTF_SRC_PATH = $(ATRIP_ROOT)/lib/src/ctf/$(CTF_COMMIT)
CTF_BUILD_PATH = $(ATRIP_ROOT)/lib/build/ctf/$(CTF_COMMIT)
CTF_CONFIG_FLAGS =
CTF_STATIC_LIB = $(CTF_BUILD_PATH)/lib/libctf.a
CTF_INCLUDE_PATH = $(CTF_BUILD_PATH)/include