|  | @@ -0,0 +1,186 @@
 | 
	
		
			
				|  |  | +cmake_minimum_required(VERSION 3.9)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +set(PROJECT_NAME qlow)
 | 
	
		
			
				|  |  | +project(${PROJECT_NAME})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +include(CheckIPOSupported)
 | 
	
		
			
				|  |  | +check_ipo_supported(RESULT ipo_supported)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +set(CMAKE_CXX_STANDARD 17)
 | 
	
		
			
				|  |  | +set(CMAKE_CXX_STANDARD_REQUIRED ON)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +find_package(BISON)
 | 
	
		
			
				|  |  | +find_package(FLEX)
 | 
	
		
			
				|  |  | +find_package(LLVM REQUIRED CONFIG)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if( NOT LLVM_FOUND )
 | 
	
		
			
				|  |  | +  message(FATAL_ERROR "LLVM package can't be found. Set CMAKE_PREFIX_PATH variable to LLVM's installation prefix.")
 | 
	
		
			
				|  |  | +endif()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +BISON_TARGET(QlowParser ast/syntax.y ${CMAKE_CURRENT_BINARY_DIR}/syntax.cpp)
 | 
	
		
			
				|  |  | +FLEX_TARGET(QlowLexer ast/lexer.l ${CMAKE_CURRENT_BINARY_DIR}/lexer.cpp)
 | 
	
		
			
				|  |  | +ADD_FLEX_BISON_DEPENDENCY(QlowLexer QlowParser)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +FILE(GLOB CppSources *.cpp ast/*.cpp sem/*.cpp)
 | 
	
		
			
				|  |  | +include_directories(${CMAKE_CURRENT_BINARY_DIR})
 | 
	
		
			
				|  |  | +include_directories(ast sem .)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +add_executable(${PROJECT_NAME} ${BISON_QlowParser_OUTPUTS} ${FLEX_QlowLexer_OUTPUTS} ${CppSources})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +include_directories( ${LLVM_INCLUDE_DIRS} )
 | 
	
		
			
				|  |  | +link_directories( ${LLVM_LIBRARY_DIRS} )
 | 
	
		
			
				|  |  | +add_definitions(${LLVM_DEFINITIONS})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if(ipo_supported)
 | 
	
		
			
				|  |  | +    set_property(TARGET ${PROJECT_NAME} PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE)
 | 
	
		
			
				|  |  | +endif()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#explicit_llvm_config(${PROJECT_NAME} STATIC_LIBRARY)
 | 
	
		
			
				|  |  | +llvm_config(${PROJECT_NAME}
 | 
	
		
			
				|  |  | +    MIRParser
 | 
	
		
			
				|  |  | +    LTO
 | 
	
		
			
				|  |  | +    Passes
 | 
	
		
			
				|  |  | +    ObjCARCOpts
 | 
	
		
			
				|  |  | +    LibDriver
 | 
	
		
			
				|  |  | +    MCJIT
 | 
	
		
			
				|  |  | +    XCoreDisassembler
 | 
	
		
			
				|  |  | +    XCoreCodeGen
 | 
	
		
			
				|  |  | +    XCoreDesc
 | 
	
		
			
				|  |  | +    XCoreInfo
 | 
	
		
			
				|  |  | +    XCoreAsmPrinter
 | 
	
		
			
				|  |  | +    X86Disassembler
 | 
	
		
			
				|  |  | +    X86AsmParser
 | 
	
		
			
				|  |  | +    SystemZDisassembler
 | 
	
		
			
				|  |  | +    SystemZCodeGen
 | 
	
		
			
				|  |  | +    SystemZAsmParser
 | 
	
		
			
				|  |  | +    SystemZDesc
 | 
	
		
			
				|  |  | +    SystemZInfo
 | 
	
		
			
				|  |  | +    SystemZAsmPrinter
 | 
	
		
			
				|  |  | +    SparcDisassembler
 | 
	
		
			
				|  |  | +    SparcCodeGen
 | 
	
		
			
				|  |  | +    SparcAsmParser
 | 
	
		
			
				|  |  | +    SparcDesc
 | 
	
		
			
				|  |  | +    SparcInfo
 | 
	
		
			
				|  |  | +    SparcAsmPrinter
 | 
	
		
			
				|  |  | +    PowerPCDisassembler
 | 
	
		
			
				|  |  | +    PowerPCCodeGen
 | 
	
		
			
				|  |  | +    PowerPCAsmParser
 | 
	
		
			
				|  |  | +    PowerPCDesc
 | 
	
		
			
				|  |  | +    PowerPCInfo
 | 
	
		
			
				|  |  | +    PowerPCAsmPrinter
 | 
	
		
			
				|  |  | +    NVPTXCodeGen
 | 
	
		
			
				|  |  | +    NVPTXDesc
 | 
	
		
			
				|  |  | +    NVPTXInfo
 | 
	
		
			
				|  |  | +    NVPTXAsmPrinter
 | 
	
		
			
				|  |  | +    MSP430CodeGen
 | 
	
		
			
				|  |  | +    MSP430Desc
 | 
	
		
			
				|  |  | +    MSP430Info
 | 
	
		
			
				|  |  | +    MSP430AsmPrinter
 | 
	
		
			
				|  |  | +    MipsDisassembler
 | 
	
		
			
				|  |  | +    MipsCodeGen
 | 
	
		
			
				|  |  | +    MipsAsmParser
 | 
	
		
			
				|  |  | +    MipsDesc
 | 
	
		
			
				|  |  | +    MipsInfo
 | 
	
		
			
				|  |  | +    MipsAsmPrinter
 | 
	
		
			
				|  |  | +    LanaiDisassembler
 | 
	
		
			
				|  |  | +    LanaiCodeGen
 | 
	
		
			
				|  |  | +    LanaiAsmParser
 | 
	
		
			
				|  |  | +    LanaiDesc
 | 
	
		
			
				|  |  | +    LanaiAsmPrinter
 | 
	
		
			
				|  |  | +    LanaiInfo
 | 
	
		
			
				|  |  | +    HexagonDisassembler
 | 
	
		
			
				|  |  | +    HexagonCodeGen
 | 
	
		
			
				|  |  | +    HexagonAsmParser
 | 
	
		
			
				|  |  | +    HexagonDesc
 | 
	
		
			
				|  |  | +    HexagonInfo
 | 
	
		
			
				|  |  | +    BPFDisassembler
 | 
	
		
			
				|  |  | +    BPFCodeGen
 | 
	
		
			
				|  |  | +    BPFAsmParser
 | 
	
		
			
				|  |  | +    BPFDesc
 | 
	
		
			
				|  |  | +    BPFInfo
 | 
	
		
			
				|  |  | +    BPFAsmPrinter
 | 
	
		
			
				|  |  | +    ARMDisassembler
 | 
	
		
			
				|  |  | +    ARMCodeGen
 | 
	
		
			
				|  |  | +    ARMAsmParser
 | 
	
		
			
				|  |  | +    ARMDesc
 | 
	
		
			
				|  |  | +    ARMInfo
 | 
	
		
			
				|  |  | +    ARMAsmPrinter
 | 
	
		
			
				|  |  | +    ARMUtils
 | 
	
		
			
				|  |  | +    AMDGPUDisassembler
 | 
	
		
			
				|  |  | +    AMDGPUCodeGen
 | 
	
		
			
				|  |  | +    AMDGPUAsmParser
 | 
	
		
			
				|  |  | +    AMDGPUDesc
 | 
	
		
			
				|  |  | +    AMDGPUInfo
 | 
	
		
			
				|  |  | +    AMDGPUAsmPrinter
 | 
	
		
			
				|  |  | +    AMDGPUUtils
 | 
	
		
			
				|  |  | +    AArch64Disassembler
 | 
	
		
			
				|  |  | +    AArch64CodeGen
 | 
	
		
			
				|  |  | +    AArch64AsmParser
 | 
	
		
			
				|  |  | +    AArch64Desc
 | 
	
		
			
				|  |  | +    AArch64Info
 | 
	
		
			
				|  |  | +    AArch64AsmPrinter
 | 
	
		
			
				|  |  | +    AArch64Utils
 | 
	
		
			
				|  |  | +    Interpreter
 | 
	
		
			
				|  |  | +    WindowsManifest
 | 
	
		
			
				|  |  | +    Symbolize
 | 
	
		
			
				|  |  | +    DebugInfoPDB
 | 
	
		
			
				|  |  | +    DebugInfoDWARF
 | 
	
		
			
				|  |  | +    LineEditor
 | 
	
		
			
				|  |  | +    X86CodeGen
 | 
	
		
			
				|  |  | +    GlobalISel
 | 
	
		
			
				|  |  | +    X86Desc
 | 
	
		
			
				|  |  | +    X86Info
 | 
	
		
			
				|  |  | +    MCDisassembler
 | 
	
		
			
				|  |  | +    X86AsmPrinter
 | 
	
		
			
				|  |  | +    X86Utils
 | 
	
		
			
				|  |  | +    SelectionDAG
 | 
	
		
			
				|  |  | +    AsmPrinter
 | 
	
		
			
				|  |  | +    CodeGen
 | 
	
		
			
				|  |  | +    FuzzMutate
 | 
	
		
			
				|  |  | +    DlltoolDriver
 | 
	
		
			
				|  |  | +    Option
 | 
	
		
			
				|  |  | +    Coroutines
 | 
	
		
			
				|  |  | +    ipo
 | 
	
		
			
				|  |  | +    Instrumentation
 | 
	
		
			
				|  |  | +    Vectorize
 | 
	
		
			
				|  |  | +    ScalarOpts
 | 
	
		
			
				|  |  | +    Linker
 | 
	
		
			
				|  |  | +    IRReader
 | 
	
		
			
				|  |  | +    AsmParser
 | 
	
		
			
				|  |  | +    InstCombine
 | 
	
		
			
				|  |  | +    BitWriter
 | 
	
		
			
				|  |  | +    AggressiveInstCombine
 | 
	
		
			
				|  |  | +    Coverage
 | 
	
		
			
				|  |  | +    ObjectYAML
 | 
	
		
			
				|  |  | +    OrcJIT
 | 
	
		
			
				|  |  | +    TransformUtils
 | 
	
		
			
				|  |  | +    ExecutionEngine
 | 
	
		
			
				|  |  | +    Target
 | 
	
		
			
				|  |  | +    Analysis
 | 
	
		
			
				|  |  | +    ProfileData
 | 
	
		
			
				|  |  | +    RuntimeDyld
 | 
	
		
			
				|  |  | +    Object
 | 
	
		
			
				|  |  | +    MCParser
 | 
	
		
			
				|  |  | +    BitReader
 | 
	
		
			
				|  |  | +    MC
 | 
	
		
			
				|  |  | +    DebugInfoCodeView
 | 
	
		
			
				|  |  | +    DebugInfoMSF
 | 
	
		
			
				|  |  | +    Core
 | 
	
		
			
				|  |  | +    BinaryFormat
 | 
	
		
			
				|  |  | +    TableGen
 | 
	
		
			
				|  |  | +    Support
 | 
	
		
			
				|  |  | +    Demangle
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#list(REMOVE_ITEM LIBRARY_LIST LLVM [])
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#message(${LIBRARY_LIST})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#target_link_libraries(${PROJECT_NAME} ${LIBRARY_LIST})
 | 
	
		
			
				|  |  | +
 |