cmake_minimum_required(VERSION 3.2)

set(asmjit_libs  "")
set(asmjit_flags "-O2 -w -DASMJIT_BUILD_X86")

if ("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
  set(asmjit_libs ${asmjit_libs} "rt")
endif()

# =============================================================================
# [AsmJit - Source]
# =============================================================================

set(asmjit_src_dir  "${CMAKE_CURRENT_SOURCE_DIR}/src/")
set(asmjit_base_dir "${asmjit_src_dir}/asmjit/base")
set(asmjit_x86_dir  "${asmjit_src_dir}/asmjit/x86")

set(asmjit_source_files
  "${asmjit_base_dir}/arch.cpp"
  "${asmjit_base_dir}/assembler.cpp"
  "${asmjit_base_dir}/codebuilder.cpp"
  "${asmjit_base_dir}/codecompiler.cpp"
  "${asmjit_base_dir}/codeemitter.cpp"
  "${asmjit_base_dir}/codeholder.cpp"
  "${asmjit_base_dir}/constpool.cpp"
  "${asmjit_base_dir}/cpuinfo.cpp"
  "${asmjit_base_dir}/func.cpp"
  "${asmjit_base_dir}/globals.cpp"
  "${asmjit_base_dir}/logging.cpp"
  "${asmjit_base_dir}/operand.cpp"
  "${asmjit_base_dir}/osutils.cpp"
  "${asmjit_base_dir}/regalloc.cpp"
  "${asmjit_base_dir}/runtime.cpp"
  "${asmjit_base_dir}/string.cpp"
  "${asmjit_base_dir}/utils.cpp"
  "${asmjit_base_dir}/vmem.cpp"
  "${asmjit_base_dir}/zone.cpp"
  "${asmjit_base_dir}/zonecontainers.cpp"
  "${asmjit_base_dir}/zoneheap.cpp")

set(asmjit_x86_source_files
  "${asmjit_x86_dir}/x86assembler.cpp"
  "${asmjit_x86_dir}/x86regalloc.cpp"
  "${asmjit_x86_dir}/x86internal.cpp"
  "${asmjit_x86_dir}/x86inst.cpp"
  "${asmjit_x86_dir}/x86logging.cpp"
  "${asmjit_x86_dir}/x86compiler.cpp"
  "${asmjit_x86_dir}/x86operand_regs.cpp"
  "${asmjit_x86_dir}/x86operand.cpp"
  "${asmjit_x86_dir}/x86ssetoavxpass.cpp"
  "${asmjit_x86_dir}/x86builder.cpp")

set(asmjit_source_files
  ${asmjit_x86_source_files}
  ${asmjit_source_files})
  
# =============================================================================
# [AsmJit - Targets]
# =============================================================================
set(CMAKE_CXX_FLAGS ${asmjit_flags})

add_library(asmjit ${asmjit_source_files})
target_link_libraries(asmjit ${asmjit_libs})
