# Copyright (C) 2025 Intel Corporation. All rights reserved. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception # Set default build options with the ability to override from the command line if(NOT WAMR_BUILD_INTERP) set(WAMR_BUILD_INTERP 1) endif() set(WAMR_BUILD_WAMR_COMPILER 1) set(WAMR_BUILD_AOT 1) set(WAMR_BUILD_INTERP 1) set(WAMR_BUILD_JIT 0) include(${SHARED_DIR}/platform/${WAMR_BUILD_PLATFORM}/shared_platform.cmake) include(${SHARED_DIR}/mem-alloc/mem_alloc.cmake) include(${SHARED_DIR}/utils/shared_utils.cmake) include(${SHARED_DIR}/utils/uncommon/shared_uncommon.cmake) include(${IWASM_DIR}/compilation/iwasm_compl.cmake) include(${IWASM_DIR}/libraries/thread-mgr/thread_mgr.cmake) include(${IWASM_DIR}/common/iwasm_common.cmake) include(${IWASM_DIR}/common/gc/iwasm_gc.cmake) include(${IWASM_DIR}/interpreter/iwasm_interp.cmake) include(${IWASM_DIR}/aot/iwasm_aot.cmake) include(${IWASM_DIR}/compilation/iwasm_compl.cmake) include(${REPO_ROOT_DIR}/build-scripts/version.cmake) add_library(aotclib ${PLATFORM_SHARED_SOURCE} ${MEM_ALLOC_SHARED_SOURCE} ${UTILS_SHARED_SOURCE} ${UNCOMMON_SHARED_SOURCE} ${THREAD_MGR_SOURCE} ${IWASM_COMMON_SOURCE} ${IWASM_INTERP_SOURCE} ${IWASM_AOT_SOURCE} ${IWASM_GC_SOURCE} ${IWASM_COMPL_SOURCE} ) target_compile_definitions(aotclib PUBLIC -DWASM_ENABLE_WAMR_COMPILER=1 -DWASM_ENABLE_FAST_INTERP=0 -DWASM_ENABLE_INTERP=1 -DWASM_ENABLE_BULK_MEMORY=1 -DWASM_ENABLE_SHARED_MEMORY=1 -DWASM_ENABLE_TAIL_CALL=1 -DWASM_ENABLE_SIMD=1 -DWASM_ENABLE_REF_TYPES=1 -DWASM_ENABLE_MEMORY64=1 -DWASM_ENABLE_GC=1 -DWASM_ENABLE_CUSTOM_NAME_SECTION=1 -DWASM_ENABLE_AOT_STACK_FRAME=1 -DWASM_ENABLE_DUMP_CALL_STACK=1 -DWASM_ENABLE_PERF_PROFILING=1 -DWASM_ENABLE_LOAD_CUSTOM_SECTION=1 -DWASM_ENABLE_THREAD_MGR=1 ${LLVM_DEFINITIONS} ) target_include_directories(aotclib PUBLIC ${IWASM_DIR}/include ${SHARED_DIR}/include ) target_link_directories(aotclib PUBLIC ${LLVM_LIBRARY_DIR}) target_link_libraries(aotclib PUBLIC LLVMDemangle LLVMSupport LLVMTableGen LLVMTableGenGlobalISel LLVMCore LLVMFuzzerCLI LLVMFuzzMutate LLVMFileCheck LLVMInterfaceStub LLVMIRReader LLVMCodeGen LLVMSelectionDAG LLVMAsmPrinter LLVMMIRParser LLVMGlobalISel LLVMBinaryFormat LLVMBitReader LLVMBitWriter LLVMBitstreamReader LLVMDWARFLinker LLVMExtensions LLVMFrontendOpenACC LLVMFrontendOpenMP LLVMTransformUtils LLVMInstrumentation LLVMAggressiveInstCombine LLVMInstCombine LLVMScalarOpts LLVMipo LLVMVectorize LLVMObjCARCOpts LLVMCoroutines LLVMCFGuard LLVMLinker LLVMAnalysis LLVMLTO LLVMMC LLVMMCParser LLVMMCDisassembler LLVMMCA LLVMObjCopy LLVMObject LLVMObjectYAML LLVMOption LLVMRemarks LLVMDebuginfod LLVMDebugInfoDWARF LLVMDebugInfoGSYM LLVMDebugInfoMSF LLVMDebugInfoCodeView LLVMDebugInfoPDB LLVMSymbolize LLVMDWP LLVMExecutionEngine LLVMInterpreter LLVMJITLink LLVMMCJIT LLVMOrcJIT LLVMOrcShared LLVMOrcTargetProcess LLVMRuntimeDyld LLVMTarget LLVMX86CodeGen LLVMX86AsmParser LLVMX86Disassembler LLVMX86TargetMCA LLVMX86Desc LLVMX86Info LLVMAsmParser LLVMLineEditor LLVMProfileData LLVMCoverage LLVMPasses LLVMTextAPI LLVMDlltoolDriver LLVMLibDriver LLVMXRay LLVMWindowsDriver LLVMWindowsManifest ) if(NOT IN_OSS_FUZZ) message(STATUS "Enable ASan and UBSan in non-oss-fuzz environment") target_compile_options(aotclib PUBLIC -fprofile-instr-generate -fcoverage-mapping -fno-sanitize-recover=all -fsanitize=address,undefined -fsanitize=float-divide-by-zero,unsigned-integer-overflow,local-bounds,nullability -fno-sanitize=alignment ) target_link_options(aotclib PUBLIC -fsanitize=address,undefined -fprofile-instr-generate) endif() add_executable(aot_compiler_fuzz aot_compiler_fuzz.cc) target_link_libraries(aot_compiler_fuzz PRIVATE stdc++ aotclib)