瀏覽代碼

Apply patch from spuschhof / issue #9: Fix for Makefile for MinGW32/MSYS

bel 11 年之前
父節點
當前提交
773866707e
共有 1 個文件被更改,包括 18 次插入5 次删除
  1. 18 5
      Makefile

+ 18 - 5
Makefile

@@ -1,4 +1,4 @@
-# 
+#
 # Copyright (c) 2013 No Face Press, LLC
 # License http://opensource.org/licenses/mit-license.php MIT License
 #
@@ -24,6 +24,8 @@ DOCDIR = $(DATAROOTDIR)/doc/$(CPROG)
 SYSCONFDIR = $(PREFIX)/etc
 HTMLDIR = $(DOCDIR)
 
+UNAME := $(shell uname)
+
 # desired configuration of the document root
 # never assume that the document_root actually
 # exists on the build machine.  When building
@@ -92,7 +94,7 @@ LIB_OBJECTS = $(filter-out $(MAIN_OBJECTS), $(BUILD_OBJECTS))
 
 LIBS = -lpthread -lm
 
-ifeq ($(TARGET_OS),LINUX) 
+ifeq ($(TARGET_OS),LINUX)
 	LIBS += -ldl
 endif
 
@@ -100,6 +102,13 @@ ifeq ($(TARGET_OS),LINUX)
 	CAN_INSTALL = 1
 endif
 
+ifneq (, $(findstring MINGW32, $(UNAME)))
+   LIBS += -lws2_32 -lcomdlg32
+   SHARED_LIB=dll
+else
+   SHARED_LIB=so
+endif
+
 all: build
 
 help:
@@ -174,7 +183,7 @@ endif
 
 lib: lib$(CPROG).a
 
-slib: lib$(CPROG).so
+slib: lib$(CPROG).$(SHARED_LIB)
 
 clean:
 	rm -rf $(BUILD_DIR)
@@ -182,16 +191,20 @@ clean:
 distclean: clean
 	@rm -rf VS2012/Debug VS2012/*/Debug  VS2012/*/*/Debug
 	@rm -rf VS2012/Release VS2012/*/Release  VS2012/*/*/Release
-	rm -f $(CPROG) lib$(CPROG).so lib$(CPROG).a *.dmg *.msi *.exe
+    rm -f $(CPROG) lib$(CPROG).so lib$(CPROG).a *.dmg *.msi *.exe lib$(CPROG).dll lib$(CPROG).dll.a
 
 lib$(CPROG).a: $(LIB_OBJECTS)
-	@rm -f $@ 
+	@rm -f $@
 	ar cq $@ $(LIB_OBJECTS)
 
 lib$(CPROG).so: CFLAGS += -fPIC
 lib$(CPROG).so: $(LIB_OBJECTS)
 	$(LCC) -shared -o $@ $(CFLAGS) $(LDFLAGS) $(LIB_OBJECTS)
 
+lib$(CPROG).dll: CFLAGS += -fPIC
+lib$(CPROG).dll: $(LIB_OBJECTS)
+    $(LCC) -shared -o $@ $(CFLAGS) $(LDFLAGS) $(LIB_OBJECTS) $(LIBS) -Wl,--out-implib,lib$(CPROG).dll.a
+
 $(CPROG): $(BUILD_OBJECTS)
 	$(LCC) -o $@ $(CFLAGS) $(LDFLAGS) $(BUILD_OBJECTS) $(LIBS)