Skip to content
Snippets Groups Projects
Makefile 1.91 KiB
Newer Older
# Makefile for Rapid Binary Star Evolution program

# you will need to set the BINARY_C variable to point
# to the root binary_c directory
ifeq ($(BINARY_C),)
  $(error BINARY_C is not set)
endif

# TODO: Create the directories if they dont exist.


David Hendriks's avatar
David Hendriks committed
# Name of program
PROGRAM 			:= binary_c_python_api
David Hendriks's avatar
David Hendriks committed

# Some directories
SRC_DIR 			:= src
INC_DIR 			:= include
OBJ_DIR 			:= obj
TARGET_LIB_DIR 		:= lib
David Hendriks's avatar
David Hendriks committed
# some commands
CC      			:= gcc
LD      			:= gcc
MAKE    			:= /usr/bin/make
David Hendriks's avatar
David Hendriks committed

# Libraries
LIBS 				:= -lbinary_c $(shell $(BINARY_C)/binary_c-config --libs)
David Hendriks's avatar
David Hendriks committed

# Source files and cflags
C_SRC 				:= $(SRC_DIR)/binary_c_python_api.c
CFLAGS 				:= -fPIC $(shell $(BINARY_C)/binary_c-config --flags | sed s/-fvisibility=hidden// )
David Hendriks's avatar
David Hendriks committed

# Incdirs
INCDIRS 			:= -I$(BINARY_C)/src/ -I$(BINARY_C)/src/API -I$(INC_DIR)/
David Hendriks's avatar
David Hendriks committed

# Object files and flags
OBJECTS 			:= $(C_SRC:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o)
OBJ_FLAGS 			:= -c
David Hendriks's avatar
David Hendriks committed

# Shared lib files and flags
SO_NAME 			:= $(TARGET_LIB_DIR)/libbinary_c_python_api.so
SO_FLAGS 			:= -shared
all: create_directories create_objects create_library
David Hendriks's avatar
David Hendriks committed

debug: create_directories create_objects_debug create_library_debug

create_directories:
	${MKDIR_P} ${TARGET_LIB_DIR}
	${MKDIR_P} ${OBJ_DIR}

create_objects:
David Hendriks's avatar
David Hendriks committed
	$(CC) -DBINARY_C=$(BINARY_C) $(CFLAGS) $(INCDIRS) $(C_SRC) -o $(OBJECTS) $(OBJ_FLAGS) $(LIBS) 
	$(CC) -DBINARY_C=$(BINARY_C) -DBINARY_C_PYTHON_DEBUG $(CFLAGS) $(INCDIRS) $(C_SRC) -o $(OBJECTS) $(OBJ_FLAGS) $(LIBS) 

create_library:
	$(CC) -DBINARY_C=$(BINARY_C) $(SO_FLAGS) -o $(SO_NAME) $(OBJECTS)

create_library_debug:
	$(CC) -DBINARY_C=$(BINARY_C) -DBINARY_C_PYTHON_DEBUG $(SO_FLAGS) -o $(SO_NAME) $(OBJECTS)
	@echo OBJECTS: $(OBJECTS)
	@echo LIBS: $(LIBS)
David Hendriks's avatar
David Hendriks committed
	@echo C_SRC: $(C_SRC)
	@echo CFLAGS: $(CFLAGS)
	@echo INCDIRS: $(INCDIRS)
	@echo SO_NAME: $(SO_NAME)
	$(RM) $(OBJ_DIR)/*.o $(TARGET_LIB_DIR)/*.so
	$(RM) *.o
	$(RM) -r build/