summaryrefslogtreecommitdiff
path: root/libs/luajit-cmake/host/buildvm/CMakeLists.txt
blob: 2646ecacd6861c948938e73d3dd2e62502624476 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
cmake_minimum_required(VERSION 3.4)

project(buildvm C)

set(EXTRA_COMPILER_FLAGS_FILE ""
  CACHE PATH "Location of a file to specify extra compiler flags.")
set(EXTRA_COMPILER_FLAGS "")
if(EXISTS ${EXTRA_COMPILER_FLAGS_FILE})
  file(READ ${EXTRA_COMPILER_FLAGS_FILE} EXTRA_COMPILER_FLAGS)
else()
  set(EXTRA_COMPILER_FLAGS ${BUILDVM_COMPILER_FLAGS})
endif()

include(CheckTypeSize)
if("${EXTRA_COMPILER_FLAGS}" MATCHES "LUAJIT_ARCH_.*64")
  set(TARGET_SIZE_OF_P 8)
else()
  set(TARGET_SIZE_OF_P 4)
endif()

set(CXX_ARCH_FLAGS "")
if(NOT (CMAKE_SIZEOF_VOID_P EQUAL ${TARGET_SIZE_OF_P}))
    if(CMAKE_SIZEOF_VOID_P EQUAL 8)
      set(CXX_ARCH_FLAGS "-m32")
    else()
      set(CXX_ARCH_FLAGS "-m64")
    endif()
endif()

find_library(LIBM_LIBRARIES NAMES m)

add_executable(buildvm
  ${LUAJIT_DIR}/src/host/buildvm.c
  ${LUAJIT_DIR}/src/host/buildvm_asm.c
  ${LUAJIT_DIR}/src/host/buildvm_fold.c
  ${LUAJIT_DIR}/src/host/buildvm_lib.c
  ${LUAJIT_DIR}/src/host/buildvm_peobj.c)

target_compile_options(buildvm PRIVATE
  ${EXTRA_COMPILER_FLAGS} ${CXX_ARCH_FLAGS})
target_link_libraries(buildvm PRIVATE ${CXX_ARCH_FLAGS})
if(LIBM)
  target_link_libraries(buildvm PRIVATE ${LIBM_LIBRARIES})
endif()


target_include_directories(buildvm PRIVATE
  ${LUAJIT_DIR}/src
  ${LUAJIT_DIR}/src/host
  ${CMAKE_BINARY_DIR}
  ${CMAKE_CURRENT_BINARY_DIR}/..
  ${CMAKE_CURRENT_BINARY_DIR}/../..
  ${CMAKE_CURRENT_BINARY_DIR}/../../..
  ${CMAKE_CURRENT_BINARY_DIR}
)