Changeset f922c1f in OpenModelica
- Timestamp:
- 2020-10-21T14:04:16+02:00 (4 years ago)
- Children:
- 662060f4
- Parents:
- a4d5b72
- git-author:
- Mahder Gebremedhin <mahder.gebremedhin@…> (09/04/20 13:25:17)
- git-committer:
- Mahder Gebremedhin <mahder.gebremedhin@…> (10/21/20 14:04:16)
- Location:
- OMCompiler/Compiler
- Files:
-
- 2 added
- 3 deleted
- 1 edited
- 8 moved
Legend:
- Unmodified
- Added
- Removed
-
OMCompiler/Compiler/CMakeLists.txt
r049bdea9 rf922c1f 1 1 2 2 omc_add_subdirectory(runtime) 3 omc_add_subdirectory(boot) 3 4 5 set(OMC_EXE ${PROJECT_SOURCE_DIR}/../build/bin/omc) 6 7 # list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/.cmake") 8 # enable_language(MODELICA) 9 10 macro(add_interface_checker_script mo_source_file) 11 12 get_filename_component(file_name_no_ext ${mo_source_file} NAME_WLE) 13 get_filename_component(source_dir ${mo_source_file} DIRECTORY) 14 15 set(MM_PACKAGE_NAME ${file_name_no_ext}) 16 set(MM_INPUT_SOURCE_DIR ${source_dir}) 17 set(MM_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}) 18 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/.cmake/mm_check_interface.in.mos ${CMAKE_CURRENT_BINARY_DIR}/${file_name_no_ext}.check_interface.mos) 19 endmacro(add_interface_checker_script) 20 21 macro(add_compile_script mo_source_file) 22 get_filename_component(file_name_no_ext ${mo_source_file} NAME_WLE) 23 get_filename_component(source_dir ${mo_source_file} DIRECTORY) 24 25 set(MM_PACKAGE_NAME ${file_name_no_ext}) 26 set(MM_INPUT_SOURCE_DIR ${source_dir}) 27 set(MM_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}) 28 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/.cmake/mm_compile.in.mos ${CMAKE_CURRENT_BINARY_DIR}/${file_name_no_ext}.compile.mos) 29 endmacro(add_compile_script) 30 31 32 add_executable(dep_scanner ${CMAKE_CURRENT_SOURCE_DIR}/.cmake/dep_scanner.cpp) 33 target_compile_features(dep_scanner PRIVATE cxx_std_11) 34 35 36 37 38 39 40 macro(add_interface_check_step mo_source_file) 41 add_interface_checker_script(${mo_source_file}) 42 43 get_filename_component(file_name_no_ext ${mo_source_file} NAME_WLE) 44 get_filename_component(source_dir ${mo_source_file} DIRECTORY) 45 46 add_custom_command( 47 DEPENDS ${mo_source_file} 48 ${CMAKE_CURRENT_BINARY_DIR}/${file_name_no_ext}.check_interface.mos 49 50 COMMAND ${OMC_EXE} -g=MetaModelica -n=1 --locale=en ${CMAKE_CURRENT_BINARY_DIR}/${file_name_no_ext}.check_interface.mos 51 52 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${file_name_no_ext}.interface.mo.tmp 53 BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/${file_name_no_ext}.interface.mo 54 COMMENT "Checking interface for ${mo_source_file}" 55 ) 56 57 set(OMC_MM_SOURCE_FILES ${OMC_MM_SOURCE_FILES} ${mo_source_file}) 58 59 set(OMC_MM_INTERFACE_FILES ${OMC_MM_INTERFACE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${file_name_no_ext}.interface.mo) 60 set(OMC_MM_STAMP_FILES ${OMC_MM_STAMP_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${file_name_no_ext}.interface.mo.tmp) 61 62 63 add_custom_command( 64 DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${file_name_no_ext}.interface.mo 65 COMMAND ${CMAKE_COMMAND} -E cat ${CMAKE_CURRENT_BINARY_DIR}/${file_name_no_ext}.rev_depends 66 COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/${file_name_no_ext}.rev_deps.stamp 67 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${file_name_no_ext}.rev_deps.stamp 68 COMMENT "Touched dependents of ${mo_source_file}" 69 ) 70 set(OMC_REV_DEP_STAMP_FILES ${OMC_REV_DEP_STAMP_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${file_name_no_ext}.rev_deps.stamp) 71 72 endmacro(add_interface_check_step) 73 74 75 76 77 macro(add_compile_step mo_source_file) 78 79 add_compile_script(${mo_source_file}) 80 81 get_filename_component(file_name_no_ext ${mo_source_file} NAME_WLE) 82 get_filename_component(source_dir ${mo_source_file} DIRECTORY) 83 84 add_custom_command( 85 DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${file_name_no_ext}.interface.mo.tmp 86 ${CMAKE_CURRENT_BINARY_DIR}/${file_name_no_ext}.compile.mos 87 88 COMMAND ${OMC_EXE} -g=MetaModelica -n=1 --locale=en ${CMAKE_CURRENT_BINARY_DIR}/${file_name_no_ext}.compile.mos 89 90 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/c_files/${file_name_no_ext}.c 91 ${CMAKE_CURRENT_BINARY_DIR}/c_files/${file_name_no_ext}_records.c 92 ${CMAKE_CURRENT_BINARY_DIR}/c_files/${file_name_no_ext}.h 93 ${CMAKE_CURRENT_BINARY_DIR}/c_files/${file_name_no_ext}_includes.h 94 95 BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/c_files/${file_name_no_ext}.deps 96 97 COMMENT "Translating ${mo_source_file}" 98 ) 99 100 set(OMC_C_SOURCE_FILES ${OMC_C_SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/c_files/${file_name_no_ext}.c 101 ${CMAKE_CURRENT_BINARY_DIR}/c_files/${file_name_no_ext}_records.c) 102 endmacro(add_compile_step) 103 104 105 106 107 108 109 include(${CMAKE_CURRENT_SOURCE_DIR}/.cmake/template_compilation.cmake) 110 include(${CMAKE_CURRENT_SOURCE_DIR}/.cmake/meta_modelica_source_list.cmake) 111 112 foreach(OMC_MM_SOURCE ${OMC_MM_ALWAYS_SOURCES}) 113 add_interface_check_step(${OMC_MM_SOURCE}) 114 add_compile_step(${OMC_MM_SOURCE}) 115 endforeach() 116 117 foreach(OMC_MM_SOURCE ${OMC_MM_BACKEND_SOURCES}) 118 add_interface_check_step(${OMC_MM_SOURCE}) 119 add_compile_step(${OMC_MM_SOURCE}) 120 endforeach() 121 122 123 add_custom_target(INTERFACE_CHECK 124 DEPENDS ${OMC_MM_STAMP_FILES} 125 COMMENT "Checked interfaces of modified MetaModelica sources.") 126 127 add_custom_command( 128 DEPENDS ${OMC_MM_INTERFACE_FILES} 129 COMMAND $<TARGET_FILE:dep_scanner> ${CMAKE_CURRENT_SOURCE_DIR}/.cmake/package_list.txt ${CMAKE_CURRENT_BINARY_DIR} 130 COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/dep_scan.stamp 131 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/dep_scan.stamp 132 COMMENT "Scanning reverse dependencies for MetaModelica sources.") 133 add_custom_target(DEPENDENCY_SCAN 134 DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/dep_scan.stamp 135 COMMENT "Scanned reverse dependencies for MetaModelica sources.") 136 137 138 add_custom_target(DEPENDENCY_UPDATE 139 DEPENDS ${OMC_REV_DEP_STAMP_FILES} 140 COMMENT "Updated dependencies for MetaModelica sources.") 141 142 143 add_dependencies(DEPENDENCY_SCAN INTERFACE_CHECK) 144 add_dependencies(DEPENDENCY_UPDATE DEPENDENCY_SCAN) 145 146 add_library(OpenModelicaCompiler SHARED ${OMC_C_SOURCE_FILES}) 147 target_compile_definitions(OpenModelicaCompiler PRIVATE ADD_METARECORD_DEFINITIONS=) 148 149 add_dependencies(OpenModelicaCompiler DEPENDENCY_UPDATE) 150 151 include_regular_expression("^$") 152 # There is a lonely omc_file.h in Util/. It belongs in runtime/. Remove this when it is moved. 153 target_include_directories(OpenModelicaCompiler PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/Util) 154 155 # include_regular_expression("^.*$" "^$") 156 157 158 target_link_libraries(OpenModelicaCompiler PUBLIC omc::parser) 159 target_link_libraries(OpenModelicaCompiler PUBLIC omc::compiler::runtime) 160 target_link_libraries(OpenModelicaCompiler PUBLIC omc::compiler::backendruntime) 161 target_link_libraries(OpenModelicaCompiler PUBLIC omc::compiler::graphstream) 162 target_link_libraries(OpenModelicaCompiler PUBLIC OpenModelicaRuntimeC) 163 target_link_libraries(OpenModelicaCompiler PUBLIC omc::3rd::modelica_external_c) 164 target_link_libraries(OpenModelicaCompiler PUBLIC omc::3rd::modelica_io)
Note: See TracChangeset
for help on using the changeset viewer.