116 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Makefile
		
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Makefile
		
	
	
	
#
 | 
						|
# Makefile
 | 
						|
# Ilja Kartašov, 2019-07-13 14:51
 | 
						|
#
 | 
						|
 | 
						|
 | 
						|
.POSIX:
 | 
						|
 | 
						|
CC ?= gcc
 | 
						|
AR ?= ar
 | 
						|
PKG_CONFIG ?= pkg-config
 | 
						|
 | 
						|
PREFIX ?= /usr/local
 | 
						|
DESTDIR ?=
 | 
						|
LIB_DIR ?= lib
 | 
						|
 | 
						|
TARGET_NAME = aisl
 | 
						|
OUT_DIR ?= ../build
 | 
						|
SRC_DIR ?= .
 | 
						|
 | 
						|
# Version
 | 
						|
 | 
						|
VERSION_MAJOR = 1
 | 
						|
VERSION_MINOR = 0
 | 
						|
VERSION_TWEAK = 5
 | 
						|
VERSION_LABEL = 0
 | 
						|
 | 
						|
# Source files
 | 
						|
 | 
						|
SOURCE_FILES := \
 | 
						|
  $(SRC_DIR)/instance.c \
 | 
						|
  $(SRC_DIR)/server.c \
 | 
						|
  $(SRC_DIR)/client.c \
 | 
						|
  $(SRC_DIR)/stream.c \
 | 
						|
  $(SRC_DIR)/http.c \
 | 
						|
  $(SRC_DIR)/ssl.c \
 | 
						|
  $(SRC_DIR)/list.c \
 | 
						|
  $(SRC_DIR)/str-utils.c \
 | 
						|
  $(SRC_DIR)/buffer.c \
 | 
						|
  $(SRC_DIR)/types.c \
 | 
						|
 | 
						|
# compilation macro options:
 | 
						|
 | 
						|
AISL_WITH_DEBUG ?= 0            # disable debug output
 | 
						|
AISL_WITH_SSL   ?= 1            # enable SSL support
 | 
						|
AISL_WITH_STRINGIFIERS ?= 1     # enable *_to_string functions
 | 
						|
 | 
						|
 | 
						|
CFLAGS := \
 | 
						|
  -std=c99 \
 | 
						|
  -pedantic \
 | 
						|
  -Wall \
 | 
						|
  -Wmissing-prototypes \
 | 
						|
  -Wstrict-prototypes \
 | 
						|
  -Wold-style-definition \
 | 
						|
  -O2 \
 | 
						|
  -s \
 | 
						|
  -fvisibility=hidden \
 | 
						|
  \
 | 
						|
  -I../ \
 | 
						|
  -I../include \
 | 
						|
  \
 | 
						|
  -D_POSIX_C_SOURCE=200809L \
 | 
						|
  -DAISL_WITH_DEBUG=$(AISL_WITH_DEBUG) \
 | 
						|
  -DAISL_WITH_SSL=$(AISL_WITH_SSL) \
 | 
						|
  -DAISL_WITH_STRINGIFIERS=$(AISL_WITH_STRINGIFIERS) \
 | 
						|
  \
 | 
						|
  `$(PKG_CONFIG) --cflags openssl` \
 | 
						|
  $(CFLAGS) \
 | 
						|
 | 
						|
LDFLAGS := \
 | 
						|
  `$(PKG_CONFIG) --libs openssl` \
 | 
						|
 | 
						|
# flags
 | 
						|
 | 
						|
SOURCE_LIST := $(wildcard $(SOURCE_FILES))
 | 
						|
SHARED_OBJS := $(addsuffix .o, $(addprefix $(OUT_DIR)/shared/, ${SOURCE_LIST}))
 | 
						|
STATIC_OBJS := $(addsuffix .o, $(addprefix $(OUT_DIR)/static/, ${SOURCE_LIST}))
 | 
						|
 | 
						|
all: lib$(TARGET_NAME).so lib$(TARGET_NAME).a
 | 
						|
	$(info AISL_WITH_DEBUG=$(AISL_WITH_DEBUG))
 | 
						|
	$(info AISL_WITH_SSL=$(AISL_WITH_SSL))
 | 
						|
	$(info AISL_WITH_STRINGIFIERS=$(AISL_WITH_STRINGIFIERS))
 | 
						|
 | 
						|
lib$(TARGET_NAME).so: $(SHARED_OBJS)
 | 
						|
	$(info building target: $@)
 | 
						|
	@$(CC) -shared -o $(OUT_DIR)/$@ $(SHARED_OBJS) $(LDFLAGS)
 | 
						|
	$(info done: $@)
 | 
						|
 | 
						|
lib$(TARGET_NAME).a: $(STATIC_OBJS)
 | 
						|
	$(info building target: $@)
 | 
						|
	@$(AR) rcs $(OUT_DIR)/$@ $(STATIC_OBJS)
 | 
						|
	$(info done: $@)
 | 
						|
 | 
						|
$(OUT_DIR)/shared/%.o: %
 | 
						|
	$(info compiling file: $<)
 | 
						|
	@mkdir -p $(dir $@)
 | 
						|
	@$(CC) $(CFLAGS) -fpic -c $< -o $@
 | 
						|
 | 
						|
$(OUT_DIR)/static/%.o: %
 | 
						|
	$(info compiling file: $<)
 | 
						|
	@mkdir -p $(dir $@)
 | 
						|
	@$(CC) $(CFLAGS) -c $< -o $@
 | 
						|
 | 
						|
install:lib$(TARGET_NAME).so lib$(TARGET_NAME).a
 | 
						|
	$(info installing files)
 | 
						|
	@mkdir -p $(DESTDIR)$(PREFIX)/$(LIB_DIR)
 | 
						|
	@mkdir -p $(DESTDIR)$(PREFIX)/include
 | 
						|
	@cp $(OUT_DIR)/lib$(LIBRARY_NAME).so $(DESTDIR)$(PREFIX)/$(LIB_DIR)
 | 
						|
	@cp $(OUT_DIR)/lib$(LIBRARY_NAME).a $(DESTDIR)$(PREFIX)/$(LIB_DIR)
 | 
						|
	@cp -R include/aisl $(DESTDIR)$(PREFIX)/include
 | 
						|
 | 
						|
 | 
						|
# vim:ft=make
 | 
						|
#
 |