forked from maksbotan/whdd
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CMakeLists.txt
130 lines (109 loc) · 3.77 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
cmake_minimum_required(VERSION 2.8.4)
include(ExternalProject)
project(whdd)
option(STATIC "Build static binaries" OFF)
option(CLI "Build whdd-cli" OFF)
set(CMAKE_C_FLAGS "-std=gnu99 -pthread -Wall -Wextra -Wno-missing-field-initializers ${CFLAGS}")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS}")
set(CMAKE_C_FLAGS_DEBUG "-O0 -g -ggdb ${CMAKE_C_FLAGS}")
set(CLI_SRCS
cli/main.c
ui_mutual.c
)
set(CUI_SRCS
cui/main.c
cui/ncurses_convenience.c
cui/vis.c
ui_mutual.c
cui/sliding_window_renderer.c
cui/whole_space_renderer.c
)
set(LIBDEVCHECK_SRCS
libdevcheck/procedure.c
libdevcheck/libdevcheck.c
libdevcheck/read_test.c
libdevcheck/utils.c
libdevcheck/posix_write_zeros.c
libdevcheck/log.c
libdevcheck/ata.c
libdevcheck/scsi.c
libdevcheck/copy.c
libdevcheck/copy_read_strategies.c
libdevcheck/render.c
libdevcheck/hpa_set.c
libdevcheck/smart_show.c
)
include_directories(
cli
cui
libdevcheck
.
)
include(CheckSymbolExists)
check_symbol_exists(CLOCK_MONOTONIC_RAW "time.h" HAVE_CLOCK_MONOTONIC_RAW)
configure_file(libdevcheck/config.h.in ${CMAKE_SOURCE_DIR}/config.h)
set_source_files_properties(version.h PROPERTIES GENERATED true HEADER_FILE_ONLY TRUE)
add_custom_target(version ALL)
add_custom_command(TARGET version COMMAND ${CMAKE_SOURCE_DIR}/version.sh ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/version.h)
if (${CLI})
add_executable(whdd-cli
${CLI_SRCS}
${LIBDEVCHECK_SRCS}
)
add_dependencies(whdd-cli version)
target_link_libraries(whdd-cli rt pthread)
install(TARGETS whdd-cli DESTINATION sbin)
endif(${CLI})
add_executable(whdd
${CUI_SRCS}
${LIBDEVCHECK_SRCS}
)
add_dependencies(whdd version)
target_link_libraries(whdd rt pthread)
if (${STATIC})
# Set vars containing to deps builds
set(NCURSES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/external/ncurses/install/")
set(DIALOG_DIR "${CMAKE_CURRENT_SOURCE_DIR}/external/dialog/dialog-prefix/src/dialog/")
# Set include paths
include_directories(BEFORE SYSTEM
${NCURSES_DIR}/include/ncursesw
${DIALOG_DIR}
)
add_subdirectory(external/dialog)
add_dependencies(whdd dialog)
add_library(ncurses_lib STATIC IMPORTED)
set_property(TARGET ncurses_lib PROPERTY IMPORTED_LOCATION "${NCURSES_DIR}/lib/libncursesw.a")
add_library(menu_lib STATIC IMPORTED)
set_property(TARGET menu_lib PROPERTY IMPORTED_LOCATION "${NCURSES_DIR}/lib/libmenuw.a")
add_library(dialog_lib STATIC IMPORTED)
set_property(TARGET dialog_lib PROPERTY IMPORTED_LOCATION "${DIALOG_DIR}/libdialog.a")
target_link_libraries(whdd dialog_lib)
target_link_libraries(whdd menu_lib)
target_link_libraries(whdd ncurses_lib)
target_link_libraries(whdd dl)
target_link_libraries(whdd m)
else (${STATIC})
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")
include_directories(${DIALOG_INCLUDE_DIRS})
find_package(DIALOG REQUIRED)
find_library(MENUW_LIBRARY menuw)
find_library(NCURSESW_LIBRARY ncursesw)
if(DIALOG_FOUND AND MENUW_LIBRARY AND NCURSESW_LIBRARY)
target_link_libraries(whdd
${DIALOG_LIBRARIES} ${MENUW_LIBRARY} ${NCURSESW_LIBRARY} rt pthread)
else()
message(FATAL_ERROR "Dialog or menuw library not found!")
endif(DIALOG_FOUND AND MENUW_LIBRARY AND NCURSESW_LIBRARY)
install(TARGETS whdd DESTINATION sbin)
# Packaging stuff
# 'make package_source' to make tarball
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "WHDD is a diagnostic and recovery tool for block devices.")
set(CPACK_PACKAGE_VENDOR "Andrey 'Krieger' Utkin <[email protected]>")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
set(CPACK_PACKAGE_VERSION ${WHDD_VERSION})
#set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
set(CPACK_SOURCE_PACKAGE_FILE_NAME
"${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION}")
set(CPACK_SOURCE_GENERATOR TBZ2)
include(CPack)
endif (${STATIC})