RedisModule/Makefile

74 lines
1.7 KiB
Makefile
Raw Normal View History

2024-08-22 10:53:59 +08:00
ifndef RM_INCLUDE_DIR
RM_INCLUDE_DIR=include/
endif
ifndef RM_SOURCE_DIR
RM_SOURCE_DIR=rmutil/
endif
ifndef MODULE_SOURCE_DIR
MODULE_SOURCE_DIR=source/
endif
CFLAGS ?= -g -fPIC -O3 -std=gnu99 -Wall -Wno-unused-function
CFLAGS += -I$(RM_INCLUDE_DIR)
CC=gcc
BUILD_OBJ_DIR=build/objects/
BUILD_DIR=build/
_SRCS_RM=util.c strings.c sds.c vector.c alloc.c periodic.c
SRCS=$(addprefix $(RM_SOURCE_DIR),$(_SRCS_RM))
_OBJS=util.o strings.o sds.o vector.o alloc.o periodic.o
OBJS=$(addprefix $(BUILD_OBJ_DIR),$(_OBJS))
# $(warning $(OBJS))
# find the OS
uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
# Compile flags for linux / osx
ifeq ($(uname_S),Linux)
SHOBJ_CFLAGS ?= -fno-common -g -ggdb
SHOBJ_LDFLAGS ?= -shared -Bsymbolic
else
SHOBJ_CFLAGS ?= -dynamic -fno-common -g -ggdb
SHOBJ_LDFLAGS ?= -bundle -undefined dynamic_lookup
endif
$(shell mkdir -p build/objects)
all: rmutil $(BUILD_DIR)module.so
rmutil: $(BUILD_DIR)librmutil.a
clean:
rm -rf $(BUILD_DIR)
$(BUILD_DIR)librmutil.a: $(OBJS)
ar rcs $@ $^
$(BUILD_OBJ_DIR)util.o: $(RM_SOURCE_DIR)util.c
$(CC) $(CFLAGS) -c -o $@ $^
$(BUILD_OBJ_DIR)strings.o: $(RM_SOURCE_DIR)strings.c
$(CC) $(CFLAGS) -c -o $@ $^
$(BUILD_OBJ_DIR)sds.o: $(RM_SOURCE_DIR)sds.c
$(CC) $(CFLAGS) -c -o $@ $^
$(BUILD_OBJ_DIR)vector.o: $(RM_SOURCE_DIR)vector.c
$(CC) $(CFLAGS) -c -o $@ $^
$(BUILD_OBJ_DIR)alloc.o: $(RM_SOURCE_DIR)alloc.c
$(CC) $(CFLAGS) -c -o $@ $^
$(BUILD_OBJ_DIR)periodic.o: $(RM_SOURCE_DIR)periodic.c
$(CC) $(CFLAGS) -c -o $@ $^
$(BUILD_DIR)module.so: $(BUILD_DIR)librmutil.a $(BUILD_OBJ_DIR)module.o
$(LD) -o $@ $(BUILD_OBJ_DIR)module.o $(SHOBJ_LDFLAGS) $(LIBS) -L$(BUILD_DIR) -lrmutil -lc
$(BUILD_OBJ_DIR)module.o: $(MODULE_SOURCE_DIR)module.c
$(CC) $(CFLAGS) -c -o $@ $^