forked from dibyendumajumdar/nanojit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
151 lines (131 loc) · 4.66 KB
/
CMakeLists.txt
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
cmake_minimum_required(VERSION 2.8)
project(nanojitextra)
enable_language(CXX)
enable_language(C)
message(STATUS "OS type is ${CMAKE_SYSTEM_NAME}")
message(STATUS "System processor is ${CMAKE_HOST_SYSTEM_PROCESSOR}")
message(STATUS "Build type is ${CMAKE_BUILD_TYPE}")
if(CMAKE_SYSTEM_NAME STREQUAL Linux)
add_definitions (
-DAVMPLUS_UNIX=1
-DAVMPLUS_LINUX=1
)
set(EXTRA_LIBS dl)
elseif(CMAKE_SYSTEM_NAME STREQUAL Darwin)
add_definitions (
-DAVMPLUS_UNIX=1
)
elseif(CMAKE_SYSTEM_NAME STREQUAL Windows)
add_definitions (
-DAVMPLUS_WIN32=1
)
else()
message(FATAL_ERROR "The build only supports Windows, Mac OSX and Linux currently")
endif()
string(TOUPPER ${CMAKE_HOST_SYSTEM_PROCESSOR} UPPERCASE_CMAKE_HOST_SYSTEM_PROCESSOR)
if(UPPERCASE_CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL X86_64 OR UPPERCASE_CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL AMD64)
add_definitions(
-DAVMPLUS_64BIT=1
-DAVMPLUS_AMD64=1
-DVMCFG_SSE2=1
)
set (NANOJIT_ARCH X64)
elseif(UPPERCASE_CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL I686)
add_definitions(
-DAVMPLUS_IA32
-DVMCFG_SSE2=1
)
set (NANOJIT_ARCH i386)
else()
message(FATAL_ERROR "The build only supports AMD64 and I386 currently")
endif()
add_definitions (
-DFEATURE_NANOJIT=1
)
if (CMAKE_BUILD_TYPE)
string(TOUPPER ${CMAKE_BUILD_TYPE} UPPERCASE_CMAKE_BUILD_TYPE)
if (UPPERCASE_CMAKE_BUILD_TYPE STREQUAL DEBUG)
add_definitions(
-D_DEBUG=1
-DDEBUG=1
-DAVMPLUS_VERBOSE=1
)
endif()
else()
message(FATAL_ERROR "Unknown build type! Set CMAKE_BUILD_TYPE to DEBUG, CHECKED, RELEASE, or RELWITHDEBINFO!")
endif()
if (MSVC)
set(LIBRARY_TYPE STATIC)
else()
set(LIBRARY_TYPE SHARED)
endif()
if (UNIX AND NOT APPLE)
# -fsanitize=bounds -fsanitize=alignment -fsanitize=object-size
# set(SANITIZER_FLAGS "-fsanitize=address")
set(CMAKE_C_FLAGS "${SANITIZER_FLAGS} -fno-omit-frame-pointer -std=c99 -O2 -g -Wall -Wno-comment ${CXX_OPTIONS}")
set(CMAKE_C_FLAGS_DEBUG "${SANITIZER_FLAGS} -fno-omit-frame-pointer -std=c99 -O0 -g3 -Wall -Wno-comment ${CXX_OPTIONS}")
set(CMAKE_C_FLAGS_RELEASE "-std=c99 -O3 -Wall -Wno-comment ${CXX_OPTIONS}")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${SANITIZER_FLAGS} -std=c99 -O1 -g3 -Wall ${CXX_OPTIONS}")
set(CMAKE_CXX_FLAGS "${SANITIZER_FLAGS} -fno-omit-frame-pointer -O0 -g3 -Wall -Wno-narrowing -Wno-sign-compare -std=c++11 -fno-exceptions ${CXX_OPTIONS}")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall -Wno-narrowing -Wno-sign-compare -std=c++11 -fno-exceptions ${CXX_OPTIONS}")
set(CMAKE_CXX_FLAGS_DEBUG "${SANITIZER_FLAGS} -fno-omit-frame-pointer -O0 -g3 -Wall -Wno-narrowing -Wno-sign-compare -std=c++11 -fno-exceptions ${CXX_OPTIONS}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${SANITIZER_FLAGS} -O1 -g3 -Wall -Wno-narrowing -Wno-sign-compare -std=c++11 -fno-exceptions ${CXX_OPTIONS}")
endif ()
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
utils/nanojit-lirasm/VMPI.nj
nanojit
nanojitextra
)
set (NATIVE_SRC
nanojit/Native${NANOJIT_ARCH}.cpp
)
set (LIB_SRCS
nanojit/Allocator.cpp
nanojit/Assembler.cpp
nanojit/CodeAlloc.cpp
nanojit/Containers.cpp
nanojit/Fragmento.cpp
nanojit/LIR.cpp
nanojit/njconfig.cpp
nanojit/RegAlloc.cpp
utils/nanojit-lirasm/VMPI.nj/VMPI.cpp
utils/nanojit-lirasm/VMPI.nj/avmplus.cpp
vprof/vprof.cpp
AVMPI/float4Support.cpp
)
set (LIB_HEADERS
nanojit/Allocator.h
nanojit/Assembler.h
nanojit/CodeAlloc.h
nanojit/Containers.h
nanojit/Fragmento.h
nanojit/LIR.h
nanojit/nanojit.h
nanojit/Native.h
nanojit/Native${NANOJIT_ARCH}.h
nanojit/njconfig.h
nanojit/RegAlloc.h
)
set (EXT_SRCS
nanojitextra/spi.cpp
nanojitextra/nanojitextra.cpp)
set (LIRASM_SRCS utils/nanojit-lirasm/lirasm/lirasm.cpp)
set (NANOJITEXTRA_HEADERS nanojitextra/nanojitextra.h)
add_library(nanojit ${LIBRARY_TYPE} ${LIB_SRCS} ${NATIVE_SRC} ${LIB_HEADERS})
target_link_libraries(nanojit ${EXTRA_LIBS})
if(APPLE)
set_target_properties(nanojit PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
endif()
add_library(nanojitextra ${LIBRARY_TYPE} ${LIB_SRCS} ${NATIVE_SRC} ${EXT_SRCS} ${NANOJITEXTRA_HEADERS} ${LIB_HEADERS})
target_link_libraries(nanojitextra ${EXTRA_LIBS})
add_executable(lirasm ${LIRASM_SRCS})
target_link_libraries(lirasm nanojit)
add_executable(example1 samples/example1.cpp)
target_link_libraries(example1 nanojitextra)
install(FILES ${NANOJITEXTRA_HEADERS}
DESTINATION include/nanojit)
install(TARGETS nanojitextra lirasm
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib)