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

Changeset 750:d05fc504a3a0

Show
Ignore:
Timestamp:
11/03/08 06:25:25 (2 months ago)
Author:
Christian Kamm <kamm incasoftware de>
branch:
default
Message:

Improve CMake build file.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • CMakeLists.txt

    r749 r750  
    2424dmd/hdrgen.c 
    2525dmd/html.c 
    26 dmd/id.c 
    2726dmd/identifier.c 
    28 dmd/impcnvtab.c 
    2927dmd/import.c 
    3028dmd/inifile.c 
     
    8583ir/irsymbol.cpp 
    8684ir/irtype.cpp 
    87 ir/irvar.cpp) 
     85ir/irvar.cpp 
     86
    8887 
    89 add_executable (ldc ${LDC_SOURCE_FILES}) 
    90 set_source_files_properties (${LDC_SOURCE_FILES} PROPERTIES LANGUAGE CXX) 
     88set (LDC_GENERATED_SOURCE_FILES 
     89${CMAKE_CURRENT_BINARY_DIR}/impcnvtab.c 
     90${CMAKE_CURRENT_BINARY_DIR}/id.c 
     91
     92set (LDC_GENERATED_HEADER_FILES 
     93${CMAKE_CURRENT_BINARY_DIR}/id.h 
     94
    9195 
    92 execute_process (COMMAND llvm-config --cxxflags OUTPUT_VARIABLE LLVM_CXXFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) 
    93 #execute_process (COMMAND llvm-config --includedir OUTPUT_VARIABLE LLVM_INCLUDE_DIR) 
    94 #execute_process (COMMAND llvm-config --libs bitwriter linker ipo instrumentation backend OUTPUT_VARIABLE LLVM_LIBS OUTPUT_STRIP_TRAILING_WHITESPACE) 
    95 execute_process (COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/config.guess OUTPUT_VARIABLE DEFAULT_TRIPLE OUTPUT_STRIP_TRAILING_WHITESPACE) 
     96# some sources are generated 
     97set_source_files_properties ( 
     98  ${LDC_GENERATED_SOURCE_FILES}  
     99  ${LDC_GENERATED_HEADER_FILES}  
     100  PROPERTIES GENERATED 1 
     101
    96102 
     103# mark all source as c++ 
     104set_source_files_properties ( 
     105  ${LDC_SOURCE_FILES} ${LDC_GENERATED_SOURCE_FILES}  
     106  PROPERTIES LANGUAGE CXX 
     107) 
     108 
     109# build and run idgen and impcnvgen 
     110set_source_files_properties ( 
     111  dmd/impcnvgen.c 
     112  dmd/idgen.c 
     113  PROPERTIES LANGUAGE CXX 
     114) 
     115add_executable (impcnvgen dmd/impcnvgen.c) 
     116add_executable (idgen dmd/idgen.c) 
     117set_target_properties (impcnvgen idgen PROPERTIES LINKER_LANGUAGE CXX) 
     118get_target_property (IMPCNVGEN_EXE impcnvgen LOCATION) 
     119get_target_property (IDGEN_EXE idgen LOCATION) 
     120add_custom_command ( 
     121  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/impcnvtab.c 
     122  COMMAND ${IMPCNVGEN_EXE} 
     123  DEPENDS impcnvgen 
     124) 
     125add_custom_command ( 
     126  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/id.c ${CMAKE_CURRENT_BINARY_DIR}/id.h 
     127  COMMAND ${IDGEN_EXE} 
     128  DEPENDS idgen 
     129) 
     130 
     131# ldc itself 
     132add_executable (ldc ${LDC_SOURCE_FILES} ${LDC_GENERATED_SOURCE_FILES} ${LDC_GENERATED_HEADER_FILES}) 
     133 
     134 
     135# setup DEFAULT_TARGET_TRIPLE 
     136execute_process (COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/config.guess OUTPUT_VARIABLE DEFAULT_TARGET_TRIPLE_GUESS OUTPUT_STRIP_TRAILING_WHITESPACE) 
     137set (DEFAULT_TARGET_TRIPLE ${DEFAULT_TARGET_TRIPLE_GUESS} CACHE STRING "the default target triple LDC should compile for") 
     138 
     139# setup POSIX 
     140if (WIN32) 
     141  set (POSIX_GUESS 0) 
     142else (WIN32) 
     143  set (POSIX_GUESS 1) 
     144endif (WIN32) 
     145set (POSIX ${POSIX_GUESS} CACHE BOOL "is LDC build on POSIX?") 
     146 
     147# setup defines 
    97148set (LDC_DEFINES 
    98149-DIN_LLVM 
     
    101152-DUSE_BOEHM_GC=0 
    102153-DDMDV1 
    103 -DPOSIX=1 
    104 -DDEFAULT_TARGET_TRIPLE=\\"${DEFAULT_TRIPLE}\\" 
     154-DPOSIX=${POSIX} 
     155-DDEFAULT_TARGET_TRIPLE=\\"${DEFAULT_TARGET_TRIPLE}\\" 
    105156-DX86_REVERSE_PARAMS=1 
    106157-DX86_PASS_IN_EAX=1) 
    107  
     158execute_process (COMMAND llvm-config --cxxflags OUTPUT_VARIABLE LLVM_CXXFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) 
    108159# passing CXXFLAGS here is not good style 
    109160add_definitions (${LDC_DEFINES} ${LLVM_CXXFLAGS}) 
    110 include_directories (. dmd) 
     161 
     162include_directories (. dmd ${CMAKE_CURRENT_BINARY_DIR}) 
    111163 
    112164# this is hackish, but works 
    113165target_link_libraries (ldc "`llvm-config --ldflags` `llvm-config --libs bitwriter linker ipo instrumentation backend`") 
    114166 
    115 #TODO: POSIX detection, runtime build 
     167#TODO: runtime build 
Copyright © 2008, LDC Development Team.