# HG changeset patch # User eldar # Date 1244213660 0 # Node ID 76e5e8597a837e0f3d147971924f16ae32aa520f # Parent 138753025375531e1d01b5d9a99593fcfd69adb2 fixes for ldc on windows diff -r 138753025375 -r 76e5e8597a83 Makefile --- 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 diff -r 138753025375 -r 76e5e8597a83 build/posix.makefile --- 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 diff -r 138753025375 -r 76e5e8597a83 build/windows.makefile --- 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 diff -r 138753025375 -r 76e5e8597a83 examples/layouts/dynamiclayouts/build-win --- /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 diff -r 138753025375 -r 76e5e8597a83 generator/containergenerator.cpp --- 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; diff -r 138753025375 -r 76e5e8597a83 qt/QGlobal.d --- 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); } } diff -r 138753025375 -r 76e5e8597a83 qt/qtd/ArrayOpsPrimitive.d --- 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);