forked from madsen/vbindiff
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
91 lines (75 loc) · 2.81 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
cmake_minimum_required(VERSION 3.7)
project(vbindiff)
SET(PACKAGE_VERSION 3.0_beta6)
SET(WINDOWS_PACKAGE_VERSION "3,0,200,6")
set(CMAKE_CXX_STANDARD 14)
configure_file(
"${PROJECT_SOURCE_DIR}/config.h.cmake-in"
"${PROJECT_BINARY_DIR}/config.h"
)
include_directories(${PROJECT_BINARY_DIR})
set(SOURCE_FILES
vbindiff.cpp
tables.h
GetOpt/GetOpt.cpp
GetOpt/GetOpt.hpp)
if (WIN32)
set(SOURCE_FILES ${SOURCE_FILES}
win32/ConWin.cpp
win32/ConWin.hpp
win32/FileIO.hpp)
include_directories(BEFORE win32)
configure_file(
"${PROJECT_SOURCE_DIR}/win32/version.h.cmake-in"
"${PROJECT_BINARY_DIR}/version.h"
)
if (CMAKE_COMPILER_IS_GNUCC)
set (CMAKE_RC_COMPILER_INIT windres)
enable_language(RC)
set (CMAKE_RC_COMPILE_OBJECT
"<CMAKE_RC_COMPILER> -O coff -I${PROJECT_BINARY_DIR} -I${PROJECT_SOURCE_DIR}/win32/mingw <FLAGS> <DEFINES> <SOURCE> <OBJECT>")
endif ()
set (SOURCE_FILES ${SOURCE_FILES} "${PROJECT_SOURCE_DIR}/win32/vbindiff.rc")
else ()
find_package(Curses REQUIRED)
include_directories(${CURSES_INCLUDE_DIR})
find_library(CURSES_PANEL_LIBRARY NAMES panel DOC "The curses panel library")
if (NOT CURSES_PANEL_LIBRARY)
message(FATAL_ERROR "A required curses' panel library not found.")
endif ()
# Add panels to the library path
set (CURSES_LIBRARIES ${CURSES_LIBRARIES} ${CURSES_PANEL_LIBRARY})
set(SOURCE_FILES ${SOURCE_FILES}
curses/ConWin.cpp
curses/ConWin.hpp
curses/FileIO.hpp)
include_directories(BEFORE curses)
set(PROJECT_FLAGS "-Wall -Wno-narrowing -D_FILE_OFFSET_BITS=64")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PROJECT_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${PROJECT_FLAGS}")
endif ()
set(LINK_LIBS ${CURSES_LIBRARIES})
if (MINGW)
find_library(libssp NAMES libssp.a)
set(LINK_LIBS ${LINK_LIBS} ${libssp})
endif()
add_executable(vbindiff ${SOURCE_FILES})
target_link_libraries(vbindiff ${LINK_LIBS})
if (NOT WIN32)
include(GNUInstallDirs)
install(TARGETS vbindiff RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
add_custom_command(
OUTPUT ${PROJECT_BINARY_DIR}/vbindiff.1
COMMAND ${PROJECT_SOURCE_DIR}/tools/genfile.pl
ARGS ${PROJECT_SOURCE_DIR}/tools/vbindiff.pod.tt --output=${PROJECT_BINARY_DIR}/vbindiff.1
DEPENDS tools/vbindiff.pod.tt
)
add_custom_target(man ALL SOURCES ${PROJECT_BINARY_DIR}/vbindiff.1)
if (CMAKE_INSTALL_MANDIR)
set(INSTALL_MANDIR ${CMAKE_INSTALL_MANDIR})
else()
# CMake does not seem to define CMAKE_INSTALL_MANDIR on some platforms
set(INSTALL_MANDIR share/man)
endif()
install(FILES vbindiff.1 DESTINATION ${INSTALL_MANDIR}/man1)
endif ()