Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 46 additions & 10 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,12 @@ vpath %.c src
vpath %.h include src

PREFIX ?= /usr/local
INSTALL_LIB_DIR = $(PREFIX)/lib
ifneq "$(findstring MINGW64,$(shell uname -s))" ""
INSTALL_LIB_DIR = $(PREFIX)/bin
else
INSTALL_LIB_DIR = $(PREFIX)/lib
endif
INSTALL_LINK_DIR = $(PREFIX)/lib
INSTALL_INC_DIR = $(PREFIX)/include
INSTALL_SHARE_DIR = $(PREFIX)/share/odpi

Expand All @@ -44,6 +49,7 @@ SAMPLES_DIR = samples
TESTS_DIR = test

CC ?= gcc
AR ?= ar
AWK ?= awk

MAJOR_VERSION := $(shell $(AWK) '/define.*DPI_MAJOR_VERSION/ {print $$3}' \
Expand All @@ -67,11 +73,25 @@ ifeq ($(shell uname -s), Darwin)
LIB_OUT_OPTS = -dynamiclib \
-install_name $(shell pwd)/$(LIB_DIR)/$(LIB_NAME) \
-o $(LIB_DIR)/$(FULL_LIB_NAME)
else
ifneq "$(findstring MINGW64,$(shell uname -s))" ""
LIB_NAME = libodpic.dll
LIB_OUT_OPTS = -o $(LIB_DIR)/$(FULL_LIB_NAME)
LIBS += -lmingw32
LDFLAGS += -Wl,-soname,$(LIB_NAME).$(MAJOR_VERSION) -Wl,--out-implib=$(LIB_DIR)/$(LIB_NAME).a -Wl,--export-all-symbols
else
LIB_NAME = libodpic.so
LIB_OUT_OPTS = -o $(LIB_DIR)/$(FULL_LIB_NAME)
LDFLAGS += -Wl,-soname,$(LIB_NAME).$(MAJOR_VERSION) -Wl,--out-implib=$(LIB_DIR)/$(LIB_NAME).a -Wl,--export-all-symbols
endif
endif

ifneq "$(findstring MINGW64,$(shell uname -s))" ""
LIB_SHARED = $(LIB_NAME).a
else
LIB_NAME = libodpic.so
LIB_OUT_OPTS = -o $(LIB_DIR)/$(FULL_LIB_NAME)
LDFLAGS += -Wl,-soname,$(LIB_NAME).$(MAJOR_VERSION)
LIB_SHARED = libodpic.a
endif
LIB_STATIC = libodpic_static.a

SRCS = dpiConn.c dpiContext.c dpiData.c dpiEnv.c dpiError.c dpiGen.c \
dpiGlobal.c dpiLob.c dpiObject.c dpiObjectAttr.c dpiObjectType.c \
Expand All @@ -95,8 +115,9 @@ TESTS_TARGETS := $(TESTS_FILES:%=$(INSTALL_SHARE_DIR)/%)
INSTALL_TESTS_SQL_DIR := $(INSTALL_SHARE_DIR)/$(TESTS_DIR)/sql

INSTALL_TARGETS = $(INSTALL_INC_DIR)/dpi.h \
$(INSTALL_LIB_DIR)/$(LIB_NAME) $(INSTALL_LIB_DIR)/$(FULL_LIB_NAME) \
$(INSTALL_LIB_DIR)/$(VERSION_LIB_NAME) $(INSTALL_SHARE_DIR)
$(INSTALL_LIB_DIR)/$(LIB_NAME) $(INSTALL_LIB_DIR)/$(FULL_LIB_NAME) \
$(INSTALL_LIB_DIR)/$(VERSION_LIB_NAME) $(INSTALL_SHARE_DIR) \
$(INSTALL_LINK_DIR)/$(LIB_SHARED) $(INSTALL_LINK_DIR)/$(LIB_STATIC)

all: $(LIB_DIR)/$(FULL_LIB_NAME) $(LIB_DIR)/$(VERSION_LIB_NAME) \
$(LIB_DIR)/$(LIB_NAME)
Expand All @@ -113,6 +134,9 @@ $(LIB_DIR):
$(BUILD_DIR)/%.o: %.c dpi.h dpiImpl.h dpiErrorMessages.h
$(CC) -c $(INCLUDES) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@

$(LIB_DIR)/$(LIB_STATIC):
$(AR) rs $(LIB_DIR)/$(LIB_STATIC) $(OBJS)

$(LIB_DIR)/$(FULL_LIB_NAME): $(BUILD_DIR) $(LIB_DIR) $(OBJS)
$(CC) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LIB_OUT_OPTS) $(OBJS) $(LIBS)

Expand All @@ -125,6 +149,12 @@ $(LIB_DIR)/$(LIB_NAME): $(LIB_DIR)/$(VERSION_LIB_NAME)
$(INSTALL_LIB_DIR):
mkdir -p $@

$(INSTALL_LINK_DIR):
mkdir -p $@

$(INSTALL_SHARE_DIR):
mkdir -p $@

$(INSTALL_INC_DIR):
mkdir -p $@

Expand All @@ -148,13 +178,19 @@ $(INSTALL_LIB_DIR)/$(VERSION_LIB_NAME): $(INSTALL_LIB_DIR)/$(FULL_LIB_NAME)
$(INSTALL_LIB_DIR)/$(LIB_NAME): $(INSTALL_LIB_DIR)/$(VERSION_LIB_NAME)
ln -sf $(VERSION_LIB_NAME) $@

$(INSTALL_LINK_DIR)/$(LIB_STATIC): $(LIB_DIR)/$(LIB_STATIC)
$(INSTALL) $< $@

$(INSTALL_LINK_DIR)/$(LIB_SHARED): $(LIB_DIR)/$(LIB_SHARED)
$(INSTALL) $< $@

$(INSTALL_SHARE_DIR)/%: %
$(INSTALL) $< $@

install: $(INSTALL_SAMPLES_SQL_DIR) $(INSTALL_TESTS_SQL_DIR) \
$(INSTALL_INC_DIR) $(INSTALL_LIB_DIR) $(INSTALL_TARGETS) \
$(INSTALL_SHARE_DIR)/README.md $(INSTALL_SHARE_DIR)/LICENSE.txt \
$(SAMPLES_TARGETS) $(TESTS_TARGETS)
install: $(INSTALL_INC_DIR) $(INSTALL_LIB_DIR) $(INSTALL_LINK_DIR) $(INSTALL_TARGETS) \
$(INSTALL_SHARE_DIR)/README.md $(INSTALL_SHARE_DIR)/LICENSE.txt

document: $(INSTALL_SAMPLES_SQL_DIR) $(INSTALL_TESTS_SQL_DIR) $(SAMPLES_TARGETS) $(TESTS_TARGETS)

uninstall:
rm -rf $(INSTALL_TARGETS)