From fe7bf932064d16ed3c1967350c2cf2d039e2b973 Mon Sep 17 00:00:00 2001 From: selman Date: Tue, 20 Mar 2007 12:27:50 +0000 Subject: [PATCH] DMD works on GNU/Linux, samples updated --- cmaked/CMakeDInformation.cmake | 29 ++++++++++++++++++++--------- samples/Hello/Demo/demo.d | 13 +++---------- samples/Hello/Hello/hello.d | 16 ++++------------ samples/minwin_gtk/CMakeLists.txt | 8 ++++++-- 4 files changed, 33 insertions(+), 33 deletions(-) diff --git a/cmaked/CMakeDInformation.cmake b/cmaked/CMakeDInformation.cmake index dad3573..6ad83a6 100644 --- a/cmaked/CMakeDInformation.cmake +++ b/cmaked/CMakeDInformation.cmake @@ -107,16 +107,11 @@ IF(CMAKE_COMPILER_IS_GDC) SET(CMAKE_SHARED_LIBRARY_CREATE_D_FLAGS "-shared") ELSE(CMAKE_COMPILER_IS_GDC) SET(CMAKE_OUTPUT_D_FLAG "-of") - IF(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - # not a good way but works because dmd using gcc - # for linker on Linux - SET(CMAKE_LINK_LIBRARY_FLAG "-L-l") - SET(CMAKE_LIBRARY_PATH_FLAG "-L-L") - ELSE(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - # dmd part doesn't work for now + IF(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") SET(CMAKE_LINK_LIBRARY_FLAG "-L+") SET(CMAKE_LIBRARY_PATH_FLAG "-I") - ENDIF(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + FIND_PROGRAM(DMD_LIBRARIAN "lib.exe") + ENDIF(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") ENDIF(CMAKE_COMPILER_IS_GDC) @@ -133,9 +128,20 @@ ENDIF(NOT CMAKE_D_CREATE_SHARED_MODULE) # create a D static library IF(NOT CMAKE_D_CREATE_STATIC_LIBRARY) - SET(CMAKE_D_CREATE_STATIC_LIBRARY + IF(CMAKE_COMPILER_IS_GDC) + SET(CMAKE_D_CREATE_STATIC_LIBRARY " cr " " ") + ELSE(CMAKE_COMPILER_IS_GDC) + IF(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + SET(CMAKE_D_CREATE_STATIC_LIBRARY + " cr " + " ") + ELSE(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + SET(CMAKE_D_CREATE_STATIC_LIBRARY + "${DMD_LIBRARIAN} -c -p256 ") + ENDIF(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + ENDIF(CMAKE_COMPILER_IS_GDC) ENDIF(NOT CMAKE_D_CREATE_STATIC_LIBRARY) # compile a D file into an object file @@ -145,8 +151,13 @@ IF(NOT CMAKE_D_COMPILE_OBJECT) ENDIF(NOT CMAKE_D_COMPILE_OBJECT) IF(NOT CMAKE_D_LINK_EXECUTABLE) + IF(CMAKE_COMPILER_IS_GDC) SET(CMAKE_D_LINK_EXECUTABLE " ${CMAKE_OUTPUT_D_FLAG} ") + ELSE(CMAKE_COMPILER_IS_GDC) + SET(CMAKE_D_LINK_EXECUTABLE + "gcc -o -lphobos -lpthread -lm") + ENDIF(CMAKE_COMPILER_IS_GDC) ENDIF(NOT CMAKE_D_LINK_EXECUTABLE) MARK_AS_ADVANCED( diff --git a/samples/Hello/Demo/demo.d b/samples/Hello/Demo/demo.d index 6651d65..ebf988e 100644 --- a/samples/Hello/Demo/demo.d +++ b/samples/Hello/Demo/demo.d @@ -3,15 +3,8 @@ import Hello.hello; int main() { - version (GNU) - { - Hail hello = new Hail(); - hello.Print(); - } - else - { - Print(); - } - + Hail hello = new Hail(); + hello.Print(); + return 0; } diff --git a/samples/Hello/Hello/hello.d b/samples/Hello/Hello/hello.d index d28e53b..ee86fed 100644 --- a/samples/Hello/Hello/hello.d +++ b/samples/Hello/Hello/hello.d @@ -2,21 +2,13 @@ module Hello.hello; import std.stdio; -version (GNU) -{ - class Hail - { - public: - void Print() - { - writefln ("Hello, World!"); - } - } -} -else +class Hail { +public: void Print() { writefln ("Hello, World!"); } } + + diff --git a/samples/minwin_gtk/CMakeLists.txt b/samples/minwin_gtk/CMakeLists.txt index c16dfd5..28e7e2f 100644 --- a/samples/minwin_gtk/CMakeLists.txt +++ b/samples/minwin_gtk/CMakeLists.txt @@ -20,8 +20,12 @@ IF (GTK2_FOUND) minwin/dialog.d minwin/image.d minwin/paint.d minwin/event.d minwin/label.d minwin/peer.d ) - ADD_DEFINITIONS (-fversion=GTK ${GTK2_DEFINITIONS}) - + IF(CMAKE_COMPILER_IS_GDC) + ADD_DEFINITIONS (-fversion=GTK ${GTK2_DEFINITIONS}) + ELSE(CMAKE_COMPILER_IS_DMD) + ADD_DEFINITIONS (-version=GTK ${GTK2_DEFINITIONS}) + ENDIF(CMAKE_COMPILER_IS_GDC) + ADD_LIBRARY (minwin_gtk ${SRCS}) TARGET_LINK_LIBRARIES (minwin_gtk ${GTK2_LIBRARIES})