You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
proxysql/deps/libscram/Makefile

61 lines
1.5 KiB

CC ?= gcc
CFLAGS_common = -Wall -Iinclude
CFLAGS_DEBUG = -g -O0
CFLAGS_RELEASE = -O3
SRC_DIR = src
OBJ_DIR_DEBUG = obj/debug
OBJ_DIR_RELEASE = obj/release
LIB_DIR = lib
TARGET_DEBUG = $(LIB_DIR)/libscram.a
TARGET_RELEASE = $(LIB_DIR)/libscram.a
# Library directory passed as a parameter
LIBUSUAL_DIR ?= /path/to/libusual
# OpenSSL dir
LIBOPENSSL_DIR ?= /path/to/openssl
# PostgreSQL dir
POSTGRESQL_DIR ?= /path/to/postgresql
POSTGRESQL_INCLUDE_DIR = $(POSTGRESQL_DIR)/src/include/
# List all source files
SRC_FILES := $(wildcard $(SRC_DIR)/*.c)
# Generate object file names
OBJ_FILES_DEBUG := $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR_DEBUG)/%.o,$(SRC_FILES))
OBJ_FILES_RELEASE := $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR_RELEASE)/%.o,$(SRC_FILES))
# Check if ASAN is enabled
ifdef ASAN
CFLAGS_DEBUG += -fsanitize=address
endif
# Define default target
all: $(TARGET_RELEASE)
DEBUG: $(TARGET_DEBUG)
RELEASE: $(TARGET_RELEASE)
$(OBJ_DIR_DEBUG)/%.o: $(SRC_DIR)/%.c
@mkdir -p $(@D)
$(CC) $(CFLAGS_common) $(CFLAGS_DEBUG) -I$(LIBUSUAL_DIR) -I$(LIBOPENSSL_DIR) -I$(POSTGRESQL_INCLUDE_DIR) -c $< -o $@
$(OBJ_DIR_RELEASE)/%.o: $(SRC_DIR)/%.c
@mkdir -p $(@D)
$(CC) $(CFLAGS_common) $(CFLAGS_RELEASE) -I$(LIBUSUAL_DIR) -I$(LIBOPENSSL_DIR) -I$(POSTGRESQL_INCLUDE_DIR) -c $< -o $@
$(TARGET_DEBUG): $(OBJ_FILES_DEBUG)
@mkdir -p $(@D)
ar rcs $@ $^
$(TARGET_RELEASE): $(OBJ_FILES_RELEASE)
@mkdir -p $(@D)
ar rcs $@ $^
clean:
rm -rf $(OBJ_DIR_DEBUG)/* $(OBJ_DIR_RELEASE)/* $(LIB_DIR)/*
.PHONY: all DEBUG RELEASE clean