Welcome to mirror list, hosted at ThFree Co, Russian Federation.

CMakeLists.txt « inc « coreclr « src - github.com/dotnet/runtime.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 535be85af85db3f362f1eec12eb6f8d0b08f814e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
set( CORGUIDS_IDL_SOURCES
  cordebug.idl
  xcordebug.idl
  clrdata.idl
  clrinternal.idl
  xclrdata.idl
  corprof.idl
  corpub.idl
  mscorsvc.idl
  clrprivbinding.idl
  corsym.idl
  sospriv.idl
)

if(CLR_CMAKE_HOST_WIN32)
    #Build for corguids is done in two steps:
    #1. compile .idl to *_i.c : This is done using custom midl command
    #2. compile *_i.c to .lib

    # Get the current list of definitions to pass to midl
    get_compile_definitions(MIDL_DEFINITIONS)
    get_include_directories(MIDL_INCLUDE_DIRECTORIES)


    # Run custom midl command over each idl file
    FIND_PROGRAM( MIDL midl.exe )
    foreach(GENERATE_IDL IN LISTS CORGUIDS_IDL_SOURCES)
        get_filename_component(IDLNAME ${GENERATE_IDL} NAME_WE)
        set(OUT_NAME ${CMAKE_CURRENT_BINARY_DIR}/idls_out/${IDLNAME}_i.c)
        list(APPEND CORGUIDS_SOURCES ${OUT_NAME})
        add_custom_command(OUTPUT ${OUT_NAME}
                      COMMAND ${MIDL} ${MIDL_INCLUDE_DIRECTORIES} /no_stamp /h ${CMAKE_CURRENT_BINARY_DIR}/idls_out/${IDLNAME}.h ${MIDL_DEFINITIONS} /out ${CMAKE_CURRENT_BINARY_DIR}/idls_out ${CMAKE_CURRENT_SOURCE_DIR}/${GENERATE_IDL}
                      DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${GENERATE_IDL}
                      COMMENT "Compiling ${GENERATE_IDL}")
    endforeach(GENERATE_IDL)

    set_source_files_properties(${CORGUIDS_SOURCES}
                            PROPERTIES GENERATED TRUE)

    # Compile *_i.c as C files
    add_compile_options(/TC)

else(CLR_CMAKE_HOST_WIN32)

    #The MIDL tool exists for Windows only, so for other systems, we have the prebuilt xxx_i.cpp files checked in

    add_compile_options(-D_MIDL_USE_GUIDDEF_)
    foreach(IDL_SOURCE IN LISTS CORGUIDS_IDL_SOURCES)
        get_filename_component(IDLNAME ${IDL_SOURCE} NAME_WE)
        set(C_SOURCE ../pal/prebuilt/idl/${IDLNAME}_i.cpp)
        list(APPEND CORGUIDS_SOURCES ${C_SOURCE})
    endforeach(IDL_SOURCE)

endif(CLR_CMAKE_HOST_WIN32)

if(FEATURE_JIT_PITCHING)
   add_definitions(-DFEATURE_JIT_PITCHING)
endif(FEATURE_JIT_PITCHING)

# Compile *_i.cpp to lib
add_library_clr(corguids_obj OBJECT ${CORGUIDS_SOURCES})
add_library(corguids INTERFACE)
target_sources(corguids INTERFACE $<TARGET_OBJECTS:corguids_obj>)

# Binplace the inc files for packaging later.

install (FILES cfi.h
               cor.h
               cordebuginfo.h
               coredistools.h
               corhdr.h
               corinfo.h
               corjit.h
               corjithost.h
               opcode.def
               openum.h
               gcinfoencoder.h
               gcinfotypes.h
               DESTINATION inc)