diff Makefile @ 125:76e5e8597a83

fixes for ldc on windows
author eldar
date Fri, 05 Jun 2009 14:54:20 +0000
parents a5cba313c924
children 7ae9bc9d6935
line wrap: on
line diff
--- a/Makefile	Fri Jun 05 12:59:24 2009 +0000
+++ b/Makefile	Fri Jun 05 14:54:20 2009 +0000
@@ -10,11 +10,14 @@
 ## End. Read variable from shell.
 
 ## Try identify system.
-ifeq ($(MAKE), mingw32-make) # TODO: add another system.
-SYSTEM = windows
-endif
-ifndef SYSTEM
-SYSTEM = posix
+ifeq ($(strip $(shell uname)),Linux)
+	SYSTEM=posix
+else
+	ifeq ($(strip $(shell uname)),Darwin)
+		SYSTEM=posix
+	else
+		SYSTEM=windows
+	endif
 endif
 ## End, Try identify system.
 
@@ -24,7 +27,7 @@
 ## Main settings.
 ## D compiler.
 ifndef $(DC)
-DC = dmd
+DC = ldmd
 endif
 ## C++ compiler.
 ifndef $(CC)
@@ -107,11 +110,24 @@
 NOT_SEPARATE_D_OBJ = true
 endif
 
+ifeq ($(SYSTEM), windows)
+	ifeq ($(DC), dmd)
+		DMD_WIN = true
+	endif
+endif
+
+ifeq ($(DMD_WIN), true)
+	CPP_SHARED = true
+	LIB_EXT = lib
+else
+	LIB_EXT = a
+endif
 
 ## CPP_SHARED options.
 ifeq ($(CPP_SHARED), true)
 CC_CFLAGS += -DCPP_SHARED
 GEN_OPT   += --cpp_shared
+D_CFLAGS += -version=cpp_shared
 endif
 ## End. CPP_SHARED options.
 
@@ -166,7 +182,7 @@
     ## DMD compile template bug fix
     $(1)_D_RULE =$(TMP_PATH)/$(1)_dobj.$(D_OBJ_EXT)
     $$($(1)_D_RULE):
-	    $(DC) $(D_CFLAGS) $(D_INCLUDE) -c $$($(1)_d_files) -of$$($(1)_D_RULE)
+	    $(DC) $(D_CFLAGS) $(D_INCLUDE) -c $$($(1)_d_files) -singleobj -of$$($(1)_D_RULE)
     else
     $(1)_D_RULE = $$($(1)_d_files:qt/%.d=$(TMP_PATH)/%_d.o)
     endif
@@ -194,7 +210,7 @@
     DELETE_FILES += $$($(1)_D_RULE) $$($(1)_CPP_RULE) $(OUTPUT_PATH)/$(LIB_PREFIX)$$(qt_$(1)_name)D.$(LIB_EXT)
     ## Implib link.
     $(1)_LIB = $(OUTPUT_PATH)$(SL)$(LIB_PREFIX)$(NAME_PREFIX)$(1)$(LIB_POSTFIX).$(LIB_EXT)
-    ifeq ($(SYSTEM), windows)
+    ifeq ($(DMD_WIN), true)
     $$($(1)_LIB): $$($(1)_D_RULE) $$($(1)_CPP_RULE)
 	    $(DC) $$($(1)_D_RULE) $$($(1)_CPP_RULE) $(D_LIB_PATH:%=-L-L%) $$($(1)_link_d:%=-L-l%) -lib -of$$($(1)_LIB)
     else