Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Base macros
- CC := gcc
- CXX := g++
- # DIRs
- SRC_DIR := ./src
- OBJ_DIR := ./obj
- INC_DIR := ./include
- SOL_DIR := ./soltrack-2.2
- TD_DIR := ./timedrift
- # Compile FLAGS
- CFLAGS += -pedantic -O3 -fPIC -m64 -lm -DPYTHON_ENABLE
- CXXFLAGS := $(CFLAGS) -std=c++17
- # TODO: are ALL of those Python CFLAGS actually needed...?
- PFLAGS := $(shell python3-config --cflags)
- # Linker FLAGS
- LDFLAGS += $(shell python3-config --ldflags) -lm
- # extra LIBS
- PLIBS := $(shell python3-config --libs)
- LIBS := $(PLIBS) -lboost_python3
- # Main files
- SRC := $(wildcard $(SRC_DIR)/*.cpp)
- HEADERS := $(wildcard $(INC_DIR)/*.h)
- OBJ := $(addprefix $(OBJ_DIR)/,$(notdir $(SRC:.cpp=.o)))
- SO_MODULE := timedrift.so
- # Display collected files
- $(info SRC="$(SRC)")
- $(info HEADERS="$(HEADERS)")
- $(info LIBS="$(LIBS)")
- $(info )
- # TARGETS
- all: build install clean
- build: $(OBJ) $(OBJ_DIR)/SolTrack.o $(OBJ_DIR)/SolTrack_RiseSet.o
- $(CXX) -Wl,--no-undefined $(CFLAGS) $(LDFLAGS) -shared $< $(LIBS) -lstdc++ \
- -Wl,-whole-archive,-export-dynamic -Wl,--no-whole-archive -ldl -o $(SO_MODULE)
- install: build
- @mkdir -p $(TD_DIR)
- mv $(SO_MODULE) $(TD_DIR)/
- clean:
- [ -d "$(OBJ_DIR)" ] && rm -r $(OBJ_DIR) || true
- # Main targets
- $(OBJ): $(SRC) $(HEADERS)
- @mkdir -p $(@D)
- $(CXX) -c $(CXXFLAGS) $(PFLAGS) -I$(INC_DIR) -o $@ $<
- # External libs
- $(OBJ_DIR)/SolTrack.o: $(SOL_DIR)/SolTrack.c $(SOL_DIR)/SolTrack.h
- @mkdir -p $(@D)
- $(CC) -c $(CFLAGS) $(PFLAGS) -I$(SOL_DIR) -o $@ $<
- $(OBJ_DIR)/SolTrack_RiseSet.o: $(SOL_DIR)/SolTrack_RiseSet.c $(SOL_DIR)/SolTrack.h
- @mkdir -p $(@D)
- $(CC) -c $(CFLAGS) $(PFLAGS) -I$(SOL_DIR) -o $@ $<
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement