Wiki Roadmap Timeline Tickets New Ticket Source Search Help / Guide About Trac Login

Changeset 791:3e0b643090f1

Show
Ignore:
Timestamp:
11/27/08 11:41:49 (1 month ago)
Author:
Christian Kamm <kamm incasoftware de>
branch:
default
Message:

Apply Elrood's CMake patch from #132.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • runtime/CMakeLists.txt

    r786 r791  
    22 
    33cmake_minimum_required(VERSION 2.6) 
    4  
    5 # not working, gcc has to be on the path before invoking make 
    6 #set(ENV{PATH} ENV{PATH} CMAKE_C_COMPILER:FILEPATH) 
    74 
    85find_program(GCC_EXE gcc DOC "path to gcc binary") 
     
    1613set(D_FLAGS -g -w -d CACHE STRING "runtime build flags, separated by ;") 
    1714 
    18 get_directory_property(PROJECT_PARENT_DIR DIRECTORY ${PROJECT_SOURCE_DIR} PARENT_DIRECTORY) 
    1915if(D_VERSION EQUAL 1) 
    2016    set(RUNTIME tango) 
    21     set(LDC_EXE ldc) 
    2217elseif(D_VERSION EQUAL 2) 
    2318    set(RUNTIME druntime) 
    24     set(LDC_EXE ldc2) 
    2519else(D_VERSION EQUAL 1) 
    2620    message(FATAL_ERROR "set d version to 1 or 2") 
    2721endif(D_VERSION EQUAL 1) 
     22get_directory_property(PROJECT_PARENT_DIR DIRECTORY ${PROJECT_SOURCE_DIR} PARENT_DIRECTORY) 
     23set(RUNTIME_DIR ${PROJECT_PARENT_DIR}/${RUNTIME} CACHE PATH "runtime source dir" FORCE) 
    2824 
    29 set(RUNTIME_DIR ${PROJECT_PARENT_DIR}/${RUNTIME} CACHE PATH "runtime source dir" FORCE) 
     25if(D_VERSION EQUAL 1) 
     26    # build tango for D1, druntime for D2 
     27    set(LDC_EXE ldc) 
     28    # copy imports to runtime dir 
     29    add_custom_command( 
     30        OUTPUT ldc-imports 
     31        COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/import/ldc ${RUNTIME_DIR}/ldc 
     32        COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/internal/ldc/bitmanip.d ${RUNTIME_DIR}/ldc 
     33        COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/internal/ldc/vararg.d ${RUNTIME_DIR}/ldc 
     34    ) 
     35    set(LDC_IMPORTS ldc-imports) 
     36    # library names 
     37    set(RUNTIME_CC tango-cc-tango) 
     38    set(RUNTIME_GC tango-gc-basic) 
     39    set(RUNTIME_DC ldc-runtime) 
     40    set(RUNTIME_AIO tango-ldc) 
     41    # set paths to source files, or fill lists directly 
     42    set(RUNTIME_DC_DIR ${PROJECT_SOURCE_DIR}/internal) 
     43    set(RUNTIME_GC_DIR ${RUNTIME_DIR}/lib/gc/basic) 
     44    file(GLOB CORE_D ${RUNTIME_DIR}/lib/common/tango/core/*.d) 
     45    file(GLOB CORE_C ${RUNTIME_DIR}/lib/common/tango/stdc/*.c) 
     46elseif(D_VERSION EQUAL 2) 
     47    set(LDC_EXE ldc2) 
     48    set(RUNTIME_CC druntime-core) 
     49    set(RUNTIME_GC druntime-gc-basic) 
     50    set(RUNTIME_DC druntime-rt-ldc) 
     51    set(RUNTIME_AIO druntime-ldc) 
     52    set(RUNTIME_DC_DIR ${RUNTIME_DIR}/src/compiler/ldc) 
     53    set(RUNTIME_GC_DIR ${RUNTIME_DIR}/src/gc/basic) 
     54    file(GLOB CORE_D ${RUNTIME_DIR}/src/common/core/*.d) 
     55    file(GLOB CORE_C ${RUNTIME_DIR}/src/common/core/stdc/*.c) 
     56else(D_VERSION EQUAL 1) 
     57    message(FATAL_ERROR "set d version to 1 or 2") 
     58endif(D_VERSION EQUAL 1) 
    3059 
    3160# should only be necessary if run independently from ldc cmake project 
     
    4473    endif(NOT LDC_LOC) 
    4574endif(NOT LDC_LOC) 
    46 # 
    4775 
    4876configure_file(${PROJECT_PARENT_DIR}/${LDC_EXE}.conf.in ${PROJECT_BINARY_DIR}/../bin/${LDC_EXE}.conf) 
     
    5886        WORKING_DIRECTORY ${RUNTIME_DIR} 
    5987    ) 
    60     add_custom_target(patch DEPENDS patch-runtime) 
     88    add_custom_command( 
     89        OUTPUT recache 
     90        COMMAND ${CMAKE_COMMAND} -H${PROJECT_PARENT_DIR} -B${PROJECT_BINARY_DIR}/.. 
     91    ) 
     92    add_custom_target(patch DEPENDS patch-runtime recache ${LDC_IMPORTS}) 
    6193endif(NOT PATCH_EXE) 
    62 # 
    63  
    64 # build tango for D1, druntime for D2 
    65 if(D_VERSION EQUAL 1) 
    66     # library names 
    67     set(RUNTIME_CC tango-cc-tango) 
    68     set(RUNTIME_GC tango-gc-basic) 
    69     set(RUNTIME_DC ldc-runtime) 
    70     set(RUNTIME_AIO tango-ldc) 
    71     # set paths to source files, or fill lists directly 
    72     set(RUNTIME_DC_DIR ${PROJECT_SOURCE_DIR}/internal) 
    73     set(RUNTIME_GC_DIR ${RUNTIME_DIR}/lib/gc/basic) 
    74     file(GLOB CORE_D ${RUNTIME_DIR}/lib/common/tango/core/*.d) 
    75     file(GLOB CORE_C ${RUNTIME_DIR}/lib/common/tango/stdc/*.c) 
    76     # copy imports to runtime dir 
    77     add_custom_command( 
    78         TARGET ldc-runtime 
    79         POST_BUILD 
    80         COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/import/ldc ${RUNTIME_DIR}/ldc 
    81         COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/internal/ldc/bitmanip.d ${RUNTIME_DIR}/ldc 
    82         COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/internal/ldc/vararg.d ${RUNTIME_DIR}/ldc 
    83     ) 
    84 elseif(D_VERSION EQUAL 2) 
    85     set(RUNTIME_CC druntime-core) 
    86     set(RUNTIME_GC druntime-gc-basic) 
    87     set(RUNTIME_DC druntime-rt-ldc) 
    88     set(RUNTIME_AIO druntime-ldc) 
    89     set(RUNTIME_DC_DIR ${RUNTIME_DIR}/src/compiler/ldc) 
    90     set(RUNTIME_GC_DIR ${RUNTIME_DIR}/src/gc/basic) 
    91     file(GLOB CORE_D ${RUNTIME_DIR}/src/common/core/*.d) 
    92     file(GLOB CORE_C ${RUNTIME_DIR}/src/common/core/stdc/*.c) 
    93 endif(D_VERSION EQUAL 1) 
    9494 
    9595file(GLOB GC_D ${RUNTIME_GC_DIR}/*.d) 
     
    113113endmacro(dc) 
    114114 
     115# dc_dir include for core and gc only necessary with druntime 
    115116foreach(f ${CORE_D}) 
    116     dc(${f} CORE_O CORE_BC core .
     117    dc(${f} CORE_O CORE_BC core ${RUNTIME_DC_DIR}
    117118endforeach(f) 
    118119 
    119120foreach(f ${GC_D}) 
    120     dc(${f} GC_O GC_BC gc ${RUNTIME_GC_DIR}
     121    dc(${f} GC_O GC_BC gc "${RUNTIME_GC_DIR} ${RUNTIME_DC_DIR}"
    121122endforeach(f) 
    122123 
Copyright © 2008, LDC Development Team.