NASM=nasm
NASMFLAGS=-f elf64 -g -F dwarf
AR=ar
ARFLAGS=rcs
CC=gcc
CFLAGS=-Wall -g
SRC_DIR=src
OBJ_DIR=obj
LIB_NAME=mylib
STATIC_LIB=lib$(LIB_NAME).a
SHARED_LIB=lib$(LIB_NAME).so

SRCS=$(SRC_DIR)/ft_strlen.asm \
     $(SRC_DIR)/ft_strcpy.asm \
		 $(SRC_DIR)/ft_strcmp.asm

OBJS=$(patsubst $(SRC_DIR)/%.asm,$(OBJ_DIR)/%.o,$(SRCS))
DEPS=$(OBJS:.o=.d)

.PHONY: all clean dirs static shared

all: dirs $(STATIC_LIB) $(SHARED_LIB)

dirs:
	@mkdir -p $(OBJ_DIR)

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.asm
	$(NASM) $(NASMFLAGS) $< -o $@

$(STATIC_LIB): $(OBJS)
	$(AR) $(ARFLAGS) $@ $^

$(SHARED_LIB): $(OBJS)
	$(CC) -shared -o $@ $^

static: $(STATIC_LIB)

shared: $(SHARED_LIB)

test: test.c $(STATIC_LIB)
	$(CC) $(CFLAGS) test.c -L. -l$(LIB_NAME) -o test -Wl,-rpath=.

clean:
	rm -rf $(OBJ_DIR) $(STATIC_LIB) $(SHARED_LIB) test

-include $(DEPS)
