]> FriiDump Source - friidump.git/blob - CMakeLists.txt
FriiDump 0.5.3.15: close XGD1 geometry and lead-in capture
[friidump.git] / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.8)
2
3 # The name of our project is "HELLO".  CMakeLists files in this project can
4 # refer to the root source directory of the project as ${HELLO_SOURCE_DIR} and
5 # to the root binary directory of the project as ${HELLO_BINARY_DIR}.
6 project (FriiDump)
7
8 if (MSVC)
9     # msvc2005 deprecated warnings
10     add_definitions (-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
11 else (MSVC)
12     if (NOT WIN32)
13       add_definitions (-fPIC)
14     endif (NOT WIN32)
15 endif (MSVC)
16
17
18 include (TestBigEndian)
19
20 test_big_endian (CMAKE_WORDS_BIGENDIAN)
21
22
23 include (CheckIncludeFiles)
24
25 check_include_files (stdbool.h HAVE_STDBOOL_H)
26
27
28 include (CheckFunctionExists)
29
30 check_function_exists (fseeko HAVE_FSEEKO)
31 check_function_exists (ftello HAVE_FTELLO)
32 check_function_exists (fseek64 HAVE_FSEEK64)
33 check_function_exists (ftell64 HAVE_FTELL64)
34
35
36 include(CheckTypeSize)
37
38 set (CMAKE_REQUIRED_DEFINITIONS -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64)
39
40 set (CMAKE_EXTRA_INCLUDE_FILES sys/types.h)
41 check_type_size ("off_t" OFF_T)
42 set (CMAKE_EXTRA_INCLUDE_FILES)
43
44 set (CMAKE_EXTRA_INCLUDE_FILES stdio.h)
45 check_type_size ("fpos_t" FPOS_T)
46 set (CMAKE_EXTRA_INCLUDE_FILES)
47
48 set (CMAKE_REQUIRED_DEFINITIONS)
49
50
51 option (
52         DEBUG
53         "Enable debugging messages"
54         OFF
55 )
56
57
58 option (
59         BUILD_STATIC_BINARY
60         "Build a static binary (has precedence over ALL_LIBS_SHARED)"
61         OFF
62 )
63
64 option (
65         BUILD_ALL_LIBS_SHARED
66         "Build all libraries as shared"
67         OFF
68 )
69
70 if (BUILD_STATIC_BINARY)
71         set (libmultihash_type STATIC)
72         set (libfriidump_type STATIC)
73 elseif (BUILD_ALL_LIBS_SHARED)
74         set (libmultihash_type SHARED)
75         set (libfriidump_type SHARED)
76 else (BUILD_STATIC_BINARY)
77         # This is how we build libraries by default
78         set (libmultihash_type STATIC)
79         set (libfriidump_type SHARED)
80 endif (BUILD_STATIC_BINARY)
81
82
83 # set (CMAKE_BUILD_TYPE superoptimized)
84 set (CMAKE_C_FLAGS_SUPEROPTIMIZED "-march=athlon-xp -m3dnow -O3 -funroll-all-loops")
85
86 set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall")
87
88 # set (CMAKE_BUILD_TYPE release)
89
90 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
91 add_definitions(-DHAVE_CONFIG_H)
92 include_directories (
93         ${FriiDump_BINARY_DIR}
94 )
95
96 # Recurse into the "Hello" and "Demo" subdirectories.  This does not actually
97 # cause another cmake executable to run.  The same process will walk through
98 # the project's entire directory structure.
99 add_subdirectory (libmultihash)
100 add_subdirectory (libfriidump)
101 add_subdirectory (src)
102
103
104 if (WIN32)
105         install (FILES AUTHORS DESTINATION / RENAME Authors.txt)
106         #install (CODE "exec_program (${CMAKE_CURRENT_SOURCE_DIR}/utils/unix2dos.exe ${CMAKE_OUTPUT_BINARY_DIR} ARGS Authors.txt)")
107         install (FILES ChangeLog DESTINATION / RENAME ChangeLog.txt)
108         install (FILES COPYING DESTINATION / RENAME Copying.txt)
109         install (FILES README DESTINATION / RENAME ReadMe.txt)
110         install (FILES TODO DESTINATION / RENAME ToDo.txt)
111 endif (WIN32)
112
113
114 # CPack stuff
115 include (InstallRequiredSystemLibraries)
116
117 set (CPACK_PACKAGE_NAME "friidump")
118 set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Dump Nintendo GameCube/Wii discs")
119 set (CPACK_PACKAGE_VENDOR "Arep")
120 set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
121 set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
122 set (CPACK_PACKAGE_VERSION_MAJOR "0")
123 set (CPACK_PACKAGE_VERSION_MINOR "3")
124 set (CPACK_PACKAGE_VERSION_PATCH "0")
125 set (CPACK_PACKAGE_INSTALL_DIRECTORY "FriiDump ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
126 set (CPACK_PACKAGE_EXECUTABLES "friidump" "FriiDump")
127
128 set (CPACK_SOURCE_GENERATOR "TBZ2;ZIP")
129 set (CPACK_SOURCE_IGNORE_FILES
130         "/CVS/"
131         "/\\\\.svn/"
132         "~$"
133         "tags"
134         "\\\\.kdevses$"
135         "\\\\.kdevelop\\\\.pcs$"
136         "/BUILD.*/"
137         "/RELEASES/"
138         "/utils/"
139         "/doc.*/"
140 )
141 set (CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
142
143 if(WIN32 AND NOT UNIX)
144         set (CPACK_GENERATOR "NSIS;ZIP")
145         # There is a bug in NSI that does not handle full unix paths properly. Make
146         # sure there is at least one set of four (4) backlasshes.
147 #       set (CPACK_PACKAGE_ICON "${CMake_SOURCE_DIR}/Utilities/Release\\\\InstallIcon.bmp")
148 #       set (CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\MyExecutable.exe")
149         set (CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} installer")
150         set (CPACK_NSIS_HELP_LINK "http:\\\\\\\\wii.console-tribe.com")
151         set (CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\www.my-personal-home-page.com")
152         set (CPACK_NSIS_CONTACT "arep@no.net")
153         set (CPACK_NSIS_MODIFY_PATH ON)
154
155         set (CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}-Win32")
156 else(WIN32 AND NOT UNIX)
157         set (CPACK_GENERATOR "TBZ2")
158         set (CPACK_STRIP_FILES "bin/friidump;lib/libfriidump.so.1.0.0")
159 #   set (CPACK_SOURCE_STRIP_FILES "")
160         set (CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}-LinuxBin")
161 endif(WIN32 AND NOT UNIX)
162
163 include (CPack)