/
CMakeLists.txt
71 lines (58 loc) · 2.09 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
cmake_minimum_required(VERSION 2.8)
cmake_policy(SET CMP0042 NEW)
cmake_policy(SET CMP0046 NEW)
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE)
project(malcheck C)
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
set(MALCHECK_VERSION_MAJOR 1)
set(MALCHECK_VERSION_MINOR 0)
set(MALCHECK_VERSION_PATCH 0)
set(MALCHECK_VERSION "${MALCHECK_VERSION_MAJOR}.${MALCHECK_VERSION_MINOR}.${MALCHECK_VERSION_PATCH}")
message("Configuring malcheck version ${MALCHECK_VERSION}")
find_package(unwind)
include_directories(${UNWIND_INCLUDE_DIR})
find_package(dw)
include_directories(${DW_INCLUDE_DIR})
set(MALCHECK_SOURCES
"${CMAKE_SOURCE_DIR}/src/malcheck.c"
)
set(LIBMALCHECK_SOURCES
"${CMAKE_SOURCE_DIR}/src/libmalcheck.c"
)
set(CONFIGURE_OUT_FILE "${CMAKE_BINARY_DIR}/config.h")
configure_file (
"${CMAKE_SOURCE_DIR}/src/config.h.in"
${CONFIGURE_OUT_FILE}
)
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wno-unused-variable -Wno-unused-but-set-variable")
set(EXE_CFLAGS "-std=c11 -Werror -Wall -Werror=strict-prototypes -Werror=old-style-definition -Werror=missing-prototypes")
set(LIB_CFLAGS "-std=c11 -Werror -Wall -Werror=strict-prototypes -Werror=old-style-definition")
set(TEST_CFLAGS "-std=c99 -Werror -Wall")
add_library(libmalcheck SHARED ${LIBMALCHECK_SOURCES})
set_target_properties(libmalcheck PROPERTIES
OUTPUT_NAME malcheck
SOVERSION ${MALCHECK_VERSION_MAJOR}
VERSION ${MALCHECK_VERSION}
COMPILE_FLAGS ${LIB_CFLAGS}
LINKER_LANGUAGE C
)
include_directories(
${CMAKE_SOURCE_DIR}
${CMAKE_BINARY_DIR}
)
target_link_libraries(libmalcheck LINK_PUBLIC
${UNWIND_LIBRARY}
${DW_LIBRARY}
dl
)
install(TARGETS libmalcheck DESTINATION lib)
add_executable(malcheck ${MALCHECK_SOURCES})
set_target_properties(malcheck PROPERTIES
LINKER_LANGUAGE C
COMPILE_FLAGS ${EXE_CFLAGS})
install(TARGETS malcheck DESTINATION bin)
add_executable(test_simple "test/simple.c")
set_target_properties(test_simple PROPERTIES
LINKER_LANGUAGE C
COMPILE_FLAGS ${TEST_CFLAGS})