changeset 125:76e5e8597a83

fixes for ldc on windows
author eldar
date Fri, 05 Jun 2009 14:54:20 +0000
parents 138753025375
children 4e461c92ccad
files Makefile build/posix.makefile build/windows.makefile examples/layouts/dynamiclayouts/build-win generator/containergenerator.cpp qt/QGlobal.d qt/qtd/ArrayOpsPrimitive.d
diffstat 7 files changed, 42 insertions(+), 21 deletions(-) [+]
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
--- a/build/posix.makefile	Fri Jun 05 12:59:24 2009 +0000
+++ b/build/posix.makefile	Fri Jun 05 14:54:20 2009 +0000
@@ -15,7 +15,6 @@
 QTDIR_LIB = $(QTDIR)/lib
 endif
 endif
-LIB_EXT = a
 DYN_LIB_EXT = so
 D_OBJ_EXT = o
 LIB_NAME_PREFIX = lib
--- a/build/windows.makefile	Fri Jun 05 12:59:24 2009 +0000
+++ b/build/windows.makefile	Fri Jun 05 14:54:20 2009 +0000
@@ -1,15 +1,14 @@
 SYSTEM = windows
 ifndef QTDIR
-QTDIR = J:\Qt\2009.02\qt
+QTDIR = C:\eldar\Qt\qt
 endif
 IMPLIB = implib /system /PAGESIZE:32
-LIB_EXT = lib
 DYN_LIB_EXT = dll
 D_OBJ_EXT = obj
 LIB_NAME_PREFIX =
 LIB_LINK = mingw32 qtmain
 BIN_EXT = .exe
-GEN = release\generator$(BIN_EXT)
+GEN = release/generator$(BIN_EXT)
 MKDIR = build\mkdir.bat
 RM = build\rm.exe
 SL = \\
@@ -24,8 +23,4 @@
 QTDIR_LIB = $(QTDIR)\lib
 endif
 
-## Force CPP_SHARED on windows
-ifeq ($(SYSTEM), windows)
-CPP_SHARED = true
-endif
 QT_LIB_POSTFIX = 4
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/layouts/dynamiclayouts/build-win	Fri Jun 05 14:54:20 2009 +0000
@@ -0,0 +1,10 @@
+#! /bin/bash
+
+#ldmd main.d  -I../../../ -I../../../qt/d1 -c
+#ldmd dialog.d -I../../../ -I../../../qt/d1 -c
+
+#g++ 'dialog.o' 'main.o' '-o' 'main.exe' '-LC:/msys/1.0/home/Eldar/ldc/lib' '-LC:/eldar/Qt/qt/lib' '-lqtdgui' '-lqtdcore' '-ltango-user-ldc' '-ltango-base-ldc' '-lQtGui4' '-lQtCore4' '-m32'
+
+ldmd main.d dialog.d -I../../../ -I../../../qt/d1 -L-LC:/msys/1.0/home/Eldar/ldc/lib -L-LC:/eldar/Qt/qt/lib -L-lqtdgui -L-lqtdcore -L-lQtGui4 -L-lQtCore4 -L-lstdc++ -L-m32
+
+#'-Wl' '-Wl,-subsystem,windows' '-enable-stdcall-fixup' '-Wl,-enable-auto-import' '-Wl,-enable-runtime-pseudo-reloc' '-Wl,-s' '-mthreads'
\ No newline at end of file
--- a/generator/containergenerator.cpp	Fri Jun 05 12:59:24 2009 +0000
+++ b/generator/containergenerator.cpp	Fri Jun 05 14:54:20 2009 +0000
@@ -310,7 +310,7 @@
     if (num_funcs == 0)
         return;
 
-    s << "version (Windows) {" << endl
+    s << "version (cpp_shared) {" << endl
       << "    private extern (C) void qtd_" << cls->package().replace(".", "_") << "_ArrayOps_initCallBacks(void* callbacks);" << endl << endl
       << "    static this() {" << endl
       << "        void*[" << num_funcs << "] callbacks; " << endl << endl;
--- a/qt/QGlobal.d	Fri Jun 05 12:59:24 2009 +0000
+++ b/qt/QGlobal.d	Fri Jun 05 14:54:20 2009 +0000
@@ -28,12 +28,13 @@
 mixin QT_BEGIN_HEADER;
 mixin QT_BEGIN_NAMESPACE;
 
-version(Windows)
+extern(C) void __qtd_dummy() {}
+
+version(cpp_shared)
 {
-    export extern(C) void d_dummy() {}
     extern (C) void __qtd_qtd_core_initCallBacks(void* toUtf8, void* dummy);
     static this() {
-        __qtd_qtd_core_initCallBacks(&_d_toUtf8, &d_dummy);
+        __qtd_qtd_core_initCallBacks(&_d_toUtf8, &__qtd_dummy);
     }
 }
 
--- a/qt/qtd/ArrayOpsPrimitive.d	Fri Jun 05 12:59:24 2009 +0000
+++ b/qt/qtd/ArrayOpsPrimitive.d	Fri Jun 05 14:54:20 2009 +0000
@@ -88,7 +88,7 @@
     *elem = arr[pos];
 }
 
-version(Windows)
+version(cpp_shared)
 {
     extern (C) void qtd_core_ArrayOps_initCallBacks(void* callbacks);