-print:
- @echo $(basename $(notdir $(SRCS)))
- @echo $(notdir $(SRCS))
- @echo $(DEPDIR)/%d
- @echo $(wildcard $(patsubst %,$(DEPDIR)/%.d,$(basename $(SRCS))))
- @echo $(OBJS) $(LIBOBJS)
- @echo $(SRCS) $(LIBSRCS)
- @echo $(POSTCOMPILE)
+ifeq ($(findstring CYGWIN_NT,$(UNAME)),CYGWIN_NT)
+CYGWIN_DLIBRARY_NAME := $(subst lib,cyg,$(LIBRARY_NAME))
+GOLD_SUPPORT = no
+# Cygwin ncurses do not contain tinfo
+LDLIBS := $(filter-out -ltinfo,$(LDLIBS))
+BINARY_SUFFIX := .exe
+DLIB_SUFFIX := .dll
+# do not archive external libraries
+CYGWIN_LDLIBS_NOARCHIVE := $(filter-out -l$(BINARY_NAME),$(LDLIBS))
+CYGWIN_LIBLDFLAGS := -Wl,--out-implib=$(LIBRARY_PATH)/$(DLIB_PREFIX)$(LIBRARY_NAME)$(DLIB_SUFFIX).a \
+ -Wl,--export-all-symbols \
+ -Wl,--enable-auto-import
+endif
+
+ifeq ($(UNAME),Darwin)
+SHLIBLDFLAG=-dynamiclib
+LDLIBS := $(filter-out -ltinfo,$(LDLIBS))
+DLIB_SUFFIX=.dylib
+LTO_SUPPORT=no
+GOLD_SUPPORT=no
+endif
+
+ifeq ($(LTO_SUPPORT),yes)
+CFLAGS_LTO = -flto -ffat-lto-objects
+LDFLAGS_LTO = -fuse-linker-plugin -flto
+endif
+
+ifeq ($(GOLD_SUPPORT),yes)
+LDFLAGS_GOLD = -fuse-ld=gold
+endif
+
+# Putting header files in the source directory is not the purpose of this INCLUDES_PATH variable
+INCLUDES_PATH := $(INCLUDES_PATH) -I$(LIBRARY_PATH)
+CFLAGS := $(CFLAGS) $(CFLAGS_LTO) $(WARN_FLAGS) $(STD_FLAG) $(OPTI_FLAG) $(DEBUG_FLAG) $(INCLUDES_PATH)
+LIBCFLAGS := -fPIC $(CFLAGS)
+LDFLAGS := $(LDFLAGS) $(LDFLAGS_LTO) $(LDFLAGS_GOLD) $(STRIP_FLAG)
+LIBLDFLAGS := $(SHLIBLDFLAG) $(LDFLAGS)
+STATICLIBLDFLAGS := -static $(LDFLAGS)
+LDLIBS := $(LDLIBS) -L$(LIBRARY_PATH)
+
+# Mac OS X do not support static linking
+ifeq ($(UNAME),Darwin)
+all: $(BINARY_NAME)$(BINARY_SUFFIX) $(BINARY_NAME).dynamic$(BINARY_SUFFIX)
+else
+all: $(BINARY_NAME)$(BINARY_SUFFIX) $(BINARY_NAME).dynamic$(BINARY_SUFFIX) $(BINARY_NAME).static$(BINARY_SUFFIX)
+endif