CMakeLists.txt 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. cmake_minimum_required(VERSION 3.9)
  2. set(PROJECT_NAME qlow)
  3. project(${PROJECT_NAME})
  4. include(CheckIPOSupported)
  5. check_ipo_supported(RESULT ipo_supported)
  6. set(CMAKE_CXX_STANDARD 17)
  7. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  8. set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -Wextra -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -g -DDEBUGGING -std=gnu++17")
  9. find_package(BISON 3.0.0 REQUIRED)
  10. find_package(FLEX 2.4.0 REQUIRED)
  11. find_package(LLVM REQUIRED CONFIG)
  12. if( NOT LLVM_FOUND )
  13. message(FATAL_ERROR "LLVM package can't be found. Set CMAKE_PREFIX_PATH variable to LLVM's installation prefix.")
  14. endif()
  15. BISON_TARGET(QlowParser ast/syntax.y ${CMAKE_CURRENT_BINARY_DIR}/syntax.cpp)
  16. FLEX_TARGET(QlowLexer ast/lexer.l ${CMAKE_CURRENT_BINARY_DIR}/lexer.cpp)
  17. ADD_FLEX_BISON_DEPENDENCY(QlowLexer QlowParser)
  18. FILE(GLOB CppSources *.cpp ast/*.cpp sem/*.cpp)
  19. include_directories(${CMAKE_CURRENT_BINARY_DIR})
  20. include_directories(ast sem .)
  21. add_executable(${PROJECT_NAME} ${BISON_QlowParser_OUTPUTS} ${FLEX_QlowLexer_OUTPUTS} ${CppSources})
  22. include_directories( ${LLVM_INCLUDE_DIRS} )
  23. link_directories( ${LLVM_LIBRARY_DIRS} )
  24. add_definitions(${LLVM_DEFINITIONS})
  25. if(ipo_supported)
  26. set_property(TARGET ${PROJECT_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
  27. endif()
  28. #explicit_llvm_config(${PROJECT_NAME} STATIC_LIBRARY)
  29. llvm_config(${PROJECT_NAME})
  30. target_link_libraries(${PROJECT_NAME} LLVM)
  31. # MIRParser
  32. # LTO
  33. # Passes
  34. # ObjCARCOpts
  35. # LibDriver
  36. # MCJIT
  37. # XCoreDisassembler
  38. # XCoreCodeGen
  39. # XCoreDesc
  40. # XCoreInfo
  41. # XCoreAsmPrinter
  42. # X86Disassembler
  43. # X86AsmParser
  44. # SystemZDisassembler
  45. # SystemZCodeGen
  46. # SystemZAsmParser
  47. # SystemZDesc
  48. # SystemZInfo
  49. # SystemZAsmPrinter
  50. # SparcDisassembler
  51. # SparcCodeGen
  52. # SparcAsmParser
  53. # SparcDesc
  54. # SparcInfo
  55. # SparcAsmPrinter
  56. # PowerPCDisassembler
  57. # PowerPCCodeGen
  58. # PowerPCAsmParser
  59. # PowerPCDesc
  60. # PowerPCInfo
  61. # PowerPCAsmPrinter
  62. # NVPTXCodeGen
  63. # NVPTXDesc
  64. # NVPTXInfo
  65. # NVPTXAsmPrinter
  66. # MSP430CodeGen
  67. # MSP430Desc
  68. # MSP430Info
  69. # MSP430AsmPrinter
  70. # MipsDisassembler
  71. # MipsCodeGen
  72. # MipsAsmParser
  73. # MipsDesc
  74. # MipsInfo
  75. # MipsAsmPrinter
  76. # LanaiDisassembler
  77. # LanaiCodeGen
  78. # LanaiAsmParser
  79. # LanaiDesc
  80. # LanaiAsmPrinter
  81. # LanaiInfo
  82. # HexagonDisassembler
  83. # HexagonCodeGen
  84. # HexagonAsmParser
  85. # HexagonDesc
  86. # HexagonInfo
  87. # BPFDisassembler
  88. # BPFCodeGen
  89. # BPFAsmParser
  90. # BPFDesc
  91. # BPFInfo
  92. # BPFAsmPrinter
  93. # ARMDisassembler
  94. # ARMCodeGen
  95. # ARMAsmParser
  96. # ARMDesc
  97. # ARMInfo
  98. # ARMAsmPrinter
  99. # ARMUtils
  100. # AMDGPUDisassembler
  101. # AMDGPUCodeGen
  102. # AMDGPUAsmParser
  103. # AMDGPUDesc
  104. # AMDGPUInfo
  105. # AMDGPUAsmPrinter
  106. # AMDGPUUtils
  107. # AArch64Disassembler
  108. # AArch64CodeGen
  109. # AArch64AsmParser
  110. # AArch64Desc
  111. # AArch64Info
  112. # AArch64AsmPrinter
  113. # AArch64Utils
  114. # Interpreter
  115. # WindowsManifest
  116. # Symbolize
  117. # DebugInfoPDB
  118. # DebugInfoDWARF
  119. # LineEditor
  120. # X86CodeGen
  121. # GlobalISel
  122. # X86Desc
  123. # X86Info
  124. # MCDisassembler
  125. # X86AsmPrinter
  126. # X86Utils
  127. # SelectionDAG
  128. # AsmPrinter
  129. # CodeGen
  130. # FuzzMutate
  131. # DlltoolDriver
  132. # Option
  133. # Coroutines
  134. # ipo
  135. # Instrumentation
  136. # Vectorize
  137. # ScalarOpts
  138. # Linker
  139. # IRReader
  140. # AsmParser
  141. # InstCombine
  142. # BitWriter
  143. # AggressiveInstCombine
  144. # Coverage
  145. # ObjectYAML
  146. # OrcJIT
  147. # TransformUtils
  148. # ExecutionEngine
  149. # Target
  150. # Analysis
  151. # ProfileData
  152. # RuntimeDyld
  153. # Object
  154. # MCParser
  155. # BitReader
  156. # MC
  157. # DebugInfoCodeView
  158. # DebugInfoMSF
  159. # Core
  160. # BinaryFormat
  161. # TableGen
  162. # Support
  163. # Demangle
  164. #)
  165. #list(REMOVE_ITEM LIBRARY_LIST LLVM [])
  166. #message(${LIBRARY_LIST})
  167. #target_link_libraries(${PROJECT_NAME} ${LIBRARY_LIST})