# HG changeset patch # User Christian Kamm # Date 1227547078 -3600 # Node ID ac39e5449ca5d19804c39f90dcddb7c04d55c5d8 # Parent a45179dfaa437bf01f4e1a94b82085c4c22e9708 Apply Elrood's CMake changes from #124. Thanks a lot! diff -r a45179dfaa43 -r ac39e5449ca5 CMakeLists.txt --- a/CMakeLists.txt Sun Nov 23 21:57:11 2008 +0100 +++ b/CMakeLists.txt Mon Nov 24 18:17:58 2008 +0100 @@ -9,12 +9,14 @@ message(FATAL_ERROR "perl not found") endif(NOT PERL) -set(LLVM_INSTDIR CACHE PATH "LLVM installation directory") +find_program(LLVM_CONFIG llvm-config ${LLVM_INSTDIR}/bin DOC "path to llvm-config tool") +# get llvm's install dir. a little hackish, we could do something like llvm-config --prefix, but this does as well +string(REPLACE "/bin/llvm-config" "" LLVM_DIR ${LLVM_CONFIG}) -find_program(LLVM_CONFIG llvm-config ${LLVM_INSTDIR}/bin DOC "path to llvm-config tool") -if(NOT LLVM_CONFIG) - message(FATAL_ERROR "llvm-config not found") -endif(NOT LLVM_CONFIG) +set(LLVM_INSTDIR ${LLVM_DIR} CACHE PATH "LLVM installation directory" FORCE) +if(NOT LLVM_INSTDIR) + message(FATAL_ERROR "llvm not found") +endif(NOT LLVM_INSTDIR) execute_process( COMMAND ${PERL_EXECUTABLE} ${LLVM_CONFIG} --host-target @@ -36,10 +38,10 @@ OUTPUT_VARIABLE LLVM_LIBS OUTPUT_STRIP_TRAILING_WHITESPACE ) -# get llvm's install dir. a little hackish, we could do something like llvm-config --prefix, but this does as well -string(REPLACE "/bin/llvm-config" "" LLVM_INSTDIR ${LLVM_CONFIG}) set(D_VERSION 1 CACHE STRING "D language version") +option(USE_BOEHM_GC "use the Boehm garbage collector internally") + if(D_VERSION EQUAL 1) set(DMDFE_PATH dmd) set(LDC_EXE ldc) @@ -69,6 +71,7 @@ set_target_properties( idgen impcnvgen PROPERTIES LINKER_LANGUAGE CXX + RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${DMDFE_PATH} ) get_target_property(IDGEN_LOC idgen LOCATION) get_target_property(IMPCNVGEN_LOC impcnvgen LOCATION) @@ -127,17 +130,21 @@ -DIN_LLVM -D_DH -DOPAQUE_VTBLS - -DUSE_BOEHM_GC=0 -DX86_REVERSE_PARAMS -DX86_PASS_IN_EAX ) if(UNIX) add_definitions(-DPOSIX) - #set(CONF_SUFFIX conf) endif(UNIX) +if(USE_BOEHM_GC) + add_definitions(-DUSE_BOEHM_GC) +endif(USE_BOEHM_GC) + if(CMAKE_MINOR_VERSION LESS 6) + set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin CACHE PATH "output dir for built executables") + set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib CACHE PATH "output dir for built libraries") add_definitions(-DDEFAULT_TARGET_TRIPLE=\\"${DEFAULT_TARGET}\\") else(CMAKE_MINOR_VERSION LESS 6) add_definitions(-DDEFAULT_TARGET_TRIPLE="${DEFAULT_TARGET}") @@ -155,27 +162,15 @@ target_link_libraries(${LDC_EXE} "${LLVM_LDFLAGS} ${LLVM_LIBS}") if(WIN32) target_link_libraries(${LDC_EXE} psapi) - #set(CONF_SUFFIX ini) endif(WIN32) -# cmake pre 2.6 doesn't support the RUNTIME_OUTPUT_DIRECTORY target property -if(CMAKE_MINOR_VERSION LESS 6) - get_target_property(LDC_LOC ${LDC_EXE} LOCATION) - add_custom_command( - TARGET ${LDC_EXE} - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${LDC_LOC} ${PROJECT_BINARY_DIR}/bin/ - COMMAND ${CMAKE_COMMAND} -E remove ${LDC_LOC} - ) -endif(CMAKE_MINOR_VERSION LESS 6) +if(USE_BOEHM_GC) + target_link_libraries(${LDC_EXE} gc) +endif(USE_BOEHM_GC) -#configure_file(${PROJECT_SOURCE_DIR}/ldc.conf.in ${PROJECT_BINARY_DIR}/bin/ldc.${CONF_SUFFIX}) - -# TODO: runtime build -# possible problems: -# with an oos-build, how to set up a working environment, with conf/ini and tango in place? -# patch tango? how to determine if that's already been done? -# std but compatible runtime build, or shared, which doesn't yet work on every platform -# +get_target_property(LDC_LOC ${LDC_EXE} LOCATION) + # TODO: install target # TODO: testrun + +add_subdirectory(runtime EXCLUDE_FROM_ALL) diff -r a45179dfaa43 -r ac39e5449ca5 bin/ldc.ini --- a/bin/ldc.ini Sun Nov 23 21:57:11 2008 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2 +0,0 @@ -[Environment] -DFLAGS=-I%@P%/../tango -I%@P%/../tango/lib/common -L-L%@P%/../lib diff -r a45179dfaa43 -r ac39e5449ca5 dmd/mars.c --- a/dmd/mars.c Sun Nov 23 21:57:11 2008 +0100 +++ b/dmd/mars.c Mon Nov 24 18:17:58 2008 +0100 @@ -345,13 +345,13 @@ //VersionCondition::addPredefinedGlobalIdent("D_Bits"); VersionCondition::addPredefinedGlobalIdent("all"); -#if _WIN32 - inifile(global.params.argv0, "ldc.ini"); -#elif POSIX +//#if _WIN32 +// inifile(global.params.argv0, "ldc.ini"); +//#elif POSIX inifile(global.params.argv0, "ldc.conf"); -#else -#error -#endif +//#else +//#error +//#endif getenv_setargv("DFLAGS", &argc, &argv); #if 0 diff -r a45179dfaa43 -r ac39e5449ca5 ldc.conf.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ldc.conf.in Mon Nov 24 18:17:58 2008 +0100 @@ -0,0 +1,2 @@ +[Environment] +DFLAGS=-I@RUNTIME_DIR@ -I@RUNTIME_DIR@/lib/common -L-L%@P%/../lib -version=Tango -defaultlib=tango-ldc -debuglib=tango-ldc diff -r a45179dfaa43 -r ac39e5449ca5 ldc2.conf.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ldc2.conf.in Mon Nov 24 18:17:58 2008 +0100 @@ -0,0 +1,4 @@ + +[Environment] + +DFLAGS=-I@RUNTIME_DIR@/import -L-L@RUNTIME_DIR@/lib