@@ -33,61 +33,80 @@ endif()
33
33
34
34
# Mozart VM library
35
35
36
- include_directories ("${CMAKE_CURRENT_SOURCE_DIR} /../../vm/main"
37
- "${CMAKE_CURRENT_BINARY_DIR} /../../vm/main" )
36
+ get_property (GENERATED_SOURCES_DIR GLOBAL PROPERTY GENERATED_SOURCES_DIR)
37
+ include_directories ("${MOZART_SOURCE_DIR} /vm/vm/main" "${GENERATED_SOURCES_DIR} " )
38
+ link_directories ("${MOZART_BINARY_DIR} /vm/vm/main" )
38
39
39
- link_directories ("${CMAKE_CURRENT_BINARY_DIR} /../../vm/main" )
40
-
41
- include_directories (${CMAKE_CURRENT_BINARY_DIR} )
40
+ set (GENERATED_BOOSTSOURCES_CACHED_DIR ${CMAKE_CURRENT_SOURCE_DIR} /cached/)
41
+ set (GENERATED_BOOSTSOURCES_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR} /generated /)
42
42
43
43
# Generate sources
44
+ find_program (clang_bin clang++)
44
45
45
46
add_custom_command (
46
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR } /boostenv.gen
47
+ OUTPUT ${GENERATED_BOOSTSOURCES_BINARY_DIR } /boostenv.gen
47
48
48
49
# First pass: generate data types and interfaces
49
- COMMAND ${LLVM_BUILD_DIR} /bin/clang++ "${CXX_STD_OPT} "
50
- -Wno-invalid-noreturn -Wno-return-type
51
- -o ${CMAKE_CURRENT_BINARY_DIR} /boostenv.ast
50
+ COMMAND ${clang_bin}
51
+ -o ${GENERATED_BOOSTSOURCES_BINARY_DIR} /boostenv.ast
52
52
-I ${Boost_INCLUDE_DIRS}
53
53
-I ${CMAKE_CURRENT_SOURCE_DIR} /../../vm/main
54
54
-DMOZART_GENERATOR
55
55
${MOZART_GENERATOR_FLAGS}
56
56
${CMAKE_CURRENT_SOURCE_DIR} /boostenv.hh
57
57
COMMAND generator intfimpl
58
- ${CMAKE_CURRENT_BINARY_DIR } /boostenv.ast
59
- ${CMAKE_CURRENT_BINARY_DIR } /
58
+ ${GENERATED_BOOSTSOURCES_BINARY_DIR } /boostenv.ast
59
+ ${GENERATED_BOOSTSOURCES_BINARY_DIR } /
60
60
61
61
# Second pass: generate builtin information
62
- COMMAND ${LLVM_BUILD_DIR} /bin/clang++ "${CXX_STD_OPT} "
63
- -Wno-invalid-noreturn -Wno-return-type
64
- -o ${CMAKE_CURRENT_BINARY_DIR} /boostenvmodules.astbi
62
+ COMMAND ${clang_bin}
63
+ -o ${GENERATED_BOOSTSOURCES_BINARY_DIR} /boostenvmodules.astbi
65
64
-I ${Boost_INCLUDE_DIRS}
66
- -I ${CMAKE_CURRENT_BINARY_DIR }
65
+ -I ${GENERATED_BOOSTSOURCES_BINARY_DIR }
67
66
-I ${CMAKE_CURRENT_SOURCE_DIR} /../../vm/main
68
- -I ${CMAKE_CURRENT_BINARY_DIR } /../../vm/main
67
+ -I ${GENERATED_BOOSTSOURCES_BINARY_DIR } /../../vm/main
69
68
-DMOZART_BUILTIN_GENERATOR
70
69
${MOZART_GENERATOR_FLAGS}
71
70
${CMAKE_CURRENT_SOURCE_DIR} /boostenvmodules.hh
72
71
COMMAND generator builtins
73
- ${CMAKE_CURRENT_BINARY_DIR } /boostenvmodules.astbi
74
- ${CMAKE_CURRENT_BINARY_DIR } /
72
+ ${GENERATED_BOOSTSOURCES_BINARY_DIR } /boostenvmodules.astbi
73
+ ${GENERATED_BOOSTSOURCES_BINARY_DIR } /
75
74
boostenvbuiltins
76
75
77
76
# Tag
78
- COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR } /boostenv.gen
77
+ COMMAND ${CMAKE_COMMAND} -E touch ${GENERATED_BOOSTSOURCES_BINARY_DIR } /boostenv.gen
79
78
80
79
DEPENDS generator gensources
81
80
IMPLICIT_DEPENDS CXX "${CMAKE_CURRENT_SOURCE_DIR} /boostenvmodules.hh"
82
81
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
83
82
COMMENT "Generate sources for boostenv"
84
83
VERBATIM )
85
84
85
+
86
+ # Use the cached files if they exist.
87
+
88
+ if (EXISTS ${GENERATED_BOOSTSOURCES_CACHED_DIR} /boostenv.gen)
89
+ set (GENERATED_BOOSTSOURCES_DIR ${GENERATED_BOOSTSOURCES_CACHED_DIR} )
90
+ else ()
91
+ set (GENERATED_BOOSTSOURCES_DIR ${GENERATED_BOOSTSOURCES_BINARY_DIR} )
92
+ file (MAKE_DIRECTORY ${GENERATED_BOOSTSOURCES_BINARY_DIR} )
93
+ endif ()
94
+ set_property (GLOBAL PROPERTY GENERATED_BOOSTSOURCES_DIR "${GENERATED_BOOSTSOURCES_DIR} " )
95
+
86
96
add_custom_target (genboostsources
87
- DEPENDS boostenv.gen
97
+ DEPENDS ${GENERATED_BOOSTSOURCES_DIR} / boostenv.gen
88
98
VERBATIM )
89
99
100
+
101
+ # Include the generated files in the source archive.
102
+
103
+ set_property (GLOBAL APPEND PROPERTY SRCS_INSTALLED_DIRS
104
+ "${GENERATED_BOOSTSOURCES_DIR} " "/vm/boostenv/main/cached/" )
105
+
106
+ add_dependencies (dist genboostsources)
107
+
90
108
# Boost environment library
109
+ include_directories (${GENERATED_BOOSTSOURCES_DIR} )
91
110
92
111
add_library (mozartvmboost boostvm.cc boostenvmodules.cc)
93
112
add_dependencies (mozartvmboost genboostsources)
0 commit comments