Fix library handling on Cygwin

1. Shared lib extension is .dll
2. Shared libs are installed to $(prefix)/bin
3. Linker does not support -z flag
This commit is contained in:
Marko Durkovic 2014-12-09 12:22:12 +01:00
parent 936f68668c
commit 4872677ffa

View file

@ -2,9 +2,13 @@ libs-list :=
ifeq ($(OS), Darwin) ifeq ($(OS), Darwin)
SO_EXT = dylib SO_EXT = dylib
else
ifeq (CYGWIN,$(findstring CYGWIN,$(OS)))
SO_EXT = dll
else else
SO_EXT = so SO_EXT = so
endif endif
endif
# Build a library with symbolic name $(1). The library is defined by # Build a library with symbolic name $(1). The library is defined by
# various variables prefixed by $(1)_: # various variables prefixed by $(1)_:
@ -50,7 +54,11 @@ define build-library
$(1)_OBJS := $$(addsuffix .o, $$(basename $$(_srcs))) $(1)_OBJS := $$(addsuffix .o, $$(basename $$(_srcs)))
_libs := $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_PATH)) _libs := $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_PATH))
ifeq (CYGWIN,$(findstring CYGWIN,$(OS)))
$(1)_INSTALL_DIR ?= $$(bindir)
else
$(1)_INSTALL_DIR ?= $$(libdir) $(1)_INSTALL_DIR ?= $$(libdir)
endif
$(1)_LDFLAGS_USE := $(1)_LDFLAGS_USE :=
$(1)_LDFLAGS_USE_INSTALLED := $(1)_LDFLAGS_USE_INSTALLED :=
@ -65,9 +73,11 @@ define build-library
endif endif
else else
ifneq ($(OS), Darwin) ifneq ($(OS), Darwin)
ifneq (CYGWIN,$(findstring CYGWIN,$(OS)))
$(1)_LDFLAGS += -Wl,-z,defs $(1)_LDFLAGS += -Wl,-z,defs
endif endif
endif endif
endif
ifneq ($(OS), Darwin) ifneq ($(OS), Darwin)
$(1)_LDFLAGS += -Wl,-soname=$$($(1)_NAME).$(SO_EXT) $(1)_LDFLAGS += -Wl,-soname=$$($(1)_NAME).$(SO_EXT)