Skip to content

Latest commit

 

History

History
298 lines (256 loc) · 10 KB

CMakeLists.txt

File metadata and controls

298 lines (256 loc) · 10 KB
 
Mar 10, 2007
Mar 10, 2007
1
2
# PhysicsFS; a portable, flexible file i/o abstraction.
#
Mar 11, 2007
Mar 11, 2007
3
# Please see the file LICENSE.txt in the source's root directory.
Mar 10, 2007
Mar 10, 2007
4
Jul 12, 2017
Jul 12, 2017
5
6
7
8
9
10
11
# The CMake project file is meant to get this compiling on all sorts of
# platforms quickly, and serve as the way Unix platforms and Linux distros
# package up official builds, but you don't _need_ to use this; we have
# built PhysicsFS to (hopefully) be able to drop into your project and
# compile, using preprocessor checks for platform-specific bits instead of
# testing in here.
Oct 23, 2012
Oct 23, 2012
12
cmake_minimum_required(VERSION 2.8.4)
Mar 11, 2007
Mar 11, 2007
13
Oct 23, 2012
Oct 23, 2012
14
15
project(PhysicsFS)
set(PHYSFS_VERSION 2.1.0)
Mar 23, 2009
Mar 23, 2009
16
17
# Increment this if/when we break backwards compatibility.
Oct 23, 2012
Oct 23, 2012
18
set(PHYSFS_SOVERSION 1)
Mar 10, 2007
Mar 10, 2007
19
20
# I hate that they define "WIN32" ... we're about to move to Win64...I hope!
Oct 23, 2012
Oct 23, 2012
21
22
23
if(WIN32 AND NOT WINDOWS)
set(WINDOWS TRUE)
endif()
Mar 10, 2007
Mar 10, 2007
24
Oct 23, 2012
Oct 23, 2012
25
include_directories(./src)
Mar 10, 2007
Mar 10, 2007
26
Jul 12, 2017
Jul 12, 2017
27
if(APPLE)
Jul 12, 2017
Jul 12, 2017
28
set(OTHER_LDFLAGS ${OTHER_LDFLAGS} "-framework CoreFoundation -framework IOKit")
Oct 23, 2012
Oct 23, 2012
29
endif()
Mar 10, 2007
Mar 10, 2007
30
Oct 23, 2012
Oct 23, 2012
31
if(CMAKE_COMPILER_IS_GNUCC)
Feb 3, 2010
Feb 3, 2010
32
# Don't use -rpath.
Oct 23, 2012
Oct 23, 2012
33
34
set(CMAKE_SKIP_RPATH ON CACHE BOOL "Skip RPATH" FORCE)
endif()
Mar 10, 2007
Mar 10, 2007
35
Oct 23, 2012
Oct 23, 2012
36
37
38
39
if(CMAKE_C_COMPILER_ID STREQUAL "SunPro")
add_definitions(-erroff=E_EMPTY_TRANSLATION_UNIT)
add_definitions(-xldscope=hidden)
endif()
Apr 13, 2009
Apr 13, 2009
40
Mar 10, 2007
Mar 10, 2007
41
42
43
# Basic chunks of source code ...
Oct 23, 2012
Oct 23, 2012
44
set(LZMA_SRCS
Mar 27, 2009
Mar 27, 2009
45
46
47
48
49
50
51
52
53
54
55
src/lzma/C/7zCrc.c
src/lzma/C/Archive/7z/7zBuffer.c
src/lzma/C/Archive/7z/7zDecode.c
src/lzma/C/Archive/7z/7zExtract.c
src/lzma/C/Archive/7z/7zHeader.c
src/lzma/C/Archive/7z/7zIn.c
src/lzma/C/Archive/7z/7zItem.c
src/lzma/C/Archive/7z/7zMethodID.c
src/lzma/C/Compress/Branch/BranchX86.c
src/lzma/C/Compress/Branch/BranchX86_2.c
src/lzma/C/Compress/Lzma/LzmaDecode.c
Mar 10, 2007
Mar 10, 2007
56
57
)
Jul 12, 2017
Jul 12, 2017
58
if(HAIKU)
Mar 11, 2007
Mar 11, 2007
59
# We add this explicitly, since we don't want CMake to think this
Jul 12, 2017
Jul 12, 2017
60
61
# is a C++ project unless we're on Haiku.
set(PHYSFS_HAIKU_SRCS src/platform_beos.cpp)
Oct 23, 2012
Oct 23, 2012
62
63
64
65
find_library(BE_LIBRARY be)
find_library(ROOT_LIBRARY root)
set(OPTIONAL_LIBRARY_LIBS ${OPTIONAL_LIBRARY_LIBS} ${BE_LIBRARY} ${ROOT_LIBRARY})
endif()
Mar 11, 2007
Mar 11, 2007
66
Jul 12, 2017
Jul 12, 2017
67
68
69
70
71
72
73
if(UNIX AND NOT WINDOWS AND NOT APPLE) # (MingW and such might be UNIX _and_ WINDOWS!)
find_library(PTHREAD_LIBRARY pthread)
if(PTHREAD_LIBRARY)
set(OPTIONAL_LIBRARY_LIBS ${OPTIONAL_LIBRARY_LIBS} ${PTHREAD_LIBRARY})
endif()
endif()
Mar 11, 2007
Mar 11, 2007
74
75
76
77
# Almost everything is "compiled" here, but things that don't apply to the
# build are #ifdef'd out. This is to make it easy to embed PhysicsFS into
# another project or bring up a new build system: just compile all the source
# code and #define the things you want.
Oct 23, 2012
Oct 23, 2012
78
set(PHYSFS_SRCS
Mar 27, 2009
Mar 27, 2009
79
80
81
82
83
84
85
86
src/physfs.c
src/physfs_byteorder.c
src/physfs_unicode.c
src/platform_posix.c
src/platform_unix.c
src/platform_macosx.c
src/platform_windows.c
src/archiver_dir.c
Sep 6, 2010
Sep 6, 2010
87
src/archiver_unpacked.c
Mar 27, 2009
Mar 27, 2009
88
89
90
91
92
93
94
src/archiver_grp.c
src/archiver_hog.c
src/archiver_lzma.c
src/archiver_mvl.c
src/archiver_qpak.c
src/archiver_wad.c
src/archiver_zip.c
Nov 12, 2012
Nov 12, 2012
95
src/archiver_slb.c
Mar 17, 2010
Mar 17, 2010
96
src/archiver_iso9660.c
Jun 20, 2017
Jun 20, 2017
97
src/archiver_vdf.c
Jul 12, 2017
Jul 12, 2017
98
${PHYSFS_HAIKU_SRCS}
Mar 10, 2007
Mar 10, 2007
99
100
101
102
)
# Archivers ...
Jul 11, 2017
Jul 11, 2017
103
104
# These are (mostly) on by default now, so these options are only useful for
# disabling them.
Mar 10, 2007
Mar 10, 2007
105
Oct 23, 2012
Oct 23, 2012
106
option(PHYSFS_ARCHIVE_ZIP "Enable ZIP support" TRUE)
Jul 11, 2017
Jul 11, 2017
107
108
if(NOT PHYSFS_ARCHIVE_ZIP)
add_definitions(-DPHYSFS_SUPPORTS_ZIP=0)
Oct 23, 2012
Oct 23, 2012
109
endif()
Mar 10, 2007
Mar 10, 2007
110
Oct 23, 2012
Oct 23, 2012
111
option(PHYSFS_ARCHIVE_7Z "Enable 7zip support" TRUE)
Jul 13, 2017
Jul 13, 2017
112
if(PHYSFS_ARCHIVE_7Z) # !!! FIXME: this is DISABLED by default in the source because it needs LZMA SDK; clean that up and enable this by default.
Jul 11, 2017
Jul 11, 2017
113
add_definitions(-DPHYSFS_SUPPORTS_7Z=0)
Mar 10, 2007
Mar 10, 2007
114
# !!! FIXME: rename to 7z.c?
Oct 23, 2012
Oct 23, 2012
115
116
117
118
set(PHYSFS_SRCS ${PHYSFS_SRCS} ${LZMA_SRCS})
endif()
option(PHYSFS_ARCHIVE_GRP "Enable Build Engine GRP support" TRUE)
Jul 11, 2017
Jul 11, 2017
119
120
if(NOT PHYSFS_ARCHIVE_GRP)
add_definitions(-DPHYSFS_SUPPORTS_GRP=0)
Oct 23, 2012
Oct 23, 2012
121
122
123
endif()
option(PHYSFS_ARCHIVE_WAD "Enable Doom WAD support" TRUE)
Jul 11, 2017
Jul 11, 2017
124
125
if(NOT PHYSFS_ARCHIVE_WAD)
add_definitions(-DPHYSFS_SUPPORTS_WAD=0)
Oct 23, 2012
Oct 23, 2012
126
127
128
endif()
option(PHYSFS_ARCHIVE_HOG "Enable Descent I/II HOG support" TRUE)
Jul 11, 2017
Jul 11, 2017
129
130
if(NOT PHYSFS_ARCHIVE_HOG)
add_definitions(-DPHYSFS_SUPPORTS_HOG=0)
Oct 23, 2012
Oct 23, 2012
131
132
133
endif()
option(PHYSFS_ARCHIVE_MVL "Enable Descent I/II MVL support" TRUE)
Jul 11, 2017
Jul 11, 2017
134
135
if(NOT PHYSFS_ARCHIVE_MVL)
add_definitions(-DPHYSFS_SUPPORTS_MVL=0)
Oct 23, 2012
Oct 23, 2012
136
137
138
endif()
option(PHYSFS_ARCHIVE_QPAK "Enable Quake I/II QPAK support" TRUE)
Jul 11, 2017
Jul 11, 2017
139
140
if(NOT PHYSFS_ARCHIVE_QPAK)
add_definitions(-DPHYSFS_SUPPORTS_QPAK=0)
Oct 23, 2012
Oct 23, 2012
141
142
endif()
Nov 12, 2012
Nov 12, 2012
143
option(PHYSFS_ARCHIVE_SLB "Enable I-War / Independence War SLB support" TRUE)
Jul 11, 2017
Jul 11, 2017
144
145
if(NOT PHYSFS_ARCHIVE_SLB)
add_definitions(-DPHYSFS_SUPPORTS_SLB=0)
Nov 12, 2012
Nov 12, 2012
146
147
endif()
Oct 23, 2012
Oct 23, 2012
148
option(PHYSFS_ARCHIVE_ISO9660 "Enable ISO9660 support" TRUE)
Jul 11, 2017
Jul 11, 2017
149
150
if(NOT PHYSFS_ARCHIVE_ISO9660)
add_definitions(-DPHYSFS_SUPPORTS_ISO9660=0)
Oct 23, 2012
Oct 23, 2012
151
152
endif()
Jun 20, 2017
Jun 20, 2017
153
option(PHYSFS_ARCHIVE_VDF "Enable Gothic I/II VDF archive support" TRUE)
Jul 11, 2017
Jul 11, 2017
154
155
if(NOT PHYSFS_ARCHIVE_VDF)
add_definitions(-DPHYSFS_SUPPORTS_VDF=0)
Jun 20, 2017
Jun 20, 2017
156
157
endif()
Oct 23, 2012
Oct 23, 2012
158
159
160
161
option(PHYSFS_BUILD_STATIC "Build static library" TRUE)
if(PHYSFS_BUILD_STATIC)
add_library(physfs-static STATIC ${PHYSFS_SRCS})
Jul 11, 2017
Jul 11, 2017
162
163
164
165
166
167
168
# Don't rename this on Windows, since DLLs will also produce an import
# library named "physfs.lib" which would conflict; Unix tend to like the
# same library name with a different extension for static libs, but
# Windows can just have a separate name.
if(NOT WINDOWS)
set_target_properties(physfs-static PROPERTIES OUTPUT_NAME "physfs")
endif()
Oct 23, 2012
Oct 23, 2012
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
set(PHYSFS_LIB_TARGET physfs-static)
set(PHYSFS_INSTALL_TARGETS ${PHYSFS_INSTALL_TARGETS} ";physfs-static")
endif()
option(PHYSFS_BUILD_SHARED "Build shared library" TRUE)
if(PHYSFS_BUILD_SHARED)
add_library(physfs SHARED ${PHYSFS_SRCS})
set_target_properties(physfs PROPERTIES VERSION ${PHYSFS_VERSION})
set_target_properties(physfs PROPERTIES SOVERSION ${PHYSFS_SOVERSION})
target_link_libraries(physfs ${OPTIONAL_LIBRARY_LIBS} ${OTHER_LDFLAGS})
set(PHYSFS_LIB_TARGET physfs)
set(PHYSFS_INSTALL_TARGETS ${PHYSFS_INSTALL_TARGETS} ";physfs")
endif()
if(NOT PHYSFS_BUILD_SHARED AND NOT PHYSFS_BUILD_STATIC)
message(FATAL "Both shared and static libraries are disabled!")
endif()
Mar 11, 2007
Mar 11, 2007
186
187
# CMake FAQ says I need this...
Jul 11, 2017
Jul 11, 2017
188
if(PHYSFS_BUILD_SHARED AND PHYSFS_BUILD_STATIC AND NOT WINDOWS)
Oct 23, 2012
Oct 23, 2012
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
set_target_properties(physfs PROPERTIES CLEAN_DIRECT_OUTPUT 1)
set_target_properties(physfs-static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
endif()
option(PHYSFS_BUILD_TEST "Build stdio test program." TRUE)
mark_as_advanced(PHYSFS_BUILD_TEST)
if(PHYSFS_BUILD_TEST)
find_path(READLINE_H readline/readline.h)
find_path(HISTORY_H readline/history.h)
if(READLINE_H AND HISTORY_H)
find_library(CURSES_LIBRARY NAMES curses ncurses)
set(CMAKE_REQUIRED_LIBRARIES ${CURSES_LIBRARY})
find_library(READLINE_LIBRARY readline)
if(READLINE_LIBRARY)
set(HAVE_SYSTEM_READLINE TRUE)
set(TEST_PHYSFS_LIBS ${TEST_PHYSFS_LIBS} ${READLINE_LIBRARY} ${CURSES_LIBRARY})
include_directories(${READLINE_H} ${HISTORY_H})
add_definitions(-DPHYSFS_HAVE_READLINE=1)
endif()
endif()
add_executable(test_physfs test/test_physfs.c)
target_link_libraries(test_physfs ${PHYSFS_LIB_TARGET} ${TEST_PHYSFS_LIBS} ${OTHER_LDFLAGS})
set(PHYSFS_INSTALL_TARGETS ${PHYSFS_INSTALL_TARGETS} ";test_physfs")
endif()
Mar 10, 2007
Mar 10, 2007
213
Oct 23, 2012
Oct 23, 2012
214
install(TARGETS ${PHYSFS_INSTALL_TARGETS}
Mar 11, 2007
Mar 11, 2007
215
RUNTIME DESTINATION bin
Feb 17, 2011
Feb 17, 2011
216
217
LIBRARY DESTINATION lib${LIB_SUFFIX}
ARCHIVE DESTINATION lib${LIB_SUFFIX})
Oct 23, 2012
Oct 23, 2012
218
install(FILES src/physfs.h DESTINATION include)
Mar 11, 2007
Mar 11, 2007
219
Oct 23, 2012
Oct 23, 2012
220
221
222
223
find_package(Doxygen)
if(DOXYGEN_FOUND)
set(PHYSFS_OUTPUT_DOXYFILE "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile")
configure_file(
Feb 22, 2011
Feb 22, 2011
224
"${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile"
Feb 22, 2011
Feb 22, 2011
225
226
227
"${PHYSFS_OUTPUT_DOXYFILE}"
COPYONLY
)
Oct 23, 2012
Oct 23, 2012
228
229
230
231
file(APPEND "${PHYSFS_OUTPUT_DOXYFILE}" "\n\n# Below auto-generated by cmake...\n\n")
file(APPEND "${PHYSFS_OUTPUT_DOXYFILE}" "PROJECT_NUMBER = \"${PHYSFS_VERSION}\"\n")
file(APPEND "${PHYSFS_OUTPUT_DOXYFILE}" "OUTPUT_DIRECTORY = \"${CMAKE_CURRENT_BINARY_DIR}/docs\"\n")
file(APPEND "${PHYSFS_OUTPUT_DOXYFILE}" "\n# End auto-generated section.\n\n")
Feb 22, 2011
Feb 22, 2011
232
Oct 23, 2012
Oct 23, 2012
233
add_custom_target(
Feb 22, 2011
Feb 22, 2011
234
235
236
237
238
docs
${DOXYGEN_EXECUTABLE} "${PHYSFS_OUTPUT_DOXYFILE}"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMENT "Building documentation in 'docs' directory..."
)
Oct 23, 2012
Oct 23, 2012
239
240
241
else()
message(STATUS "Doxygen not found. You won't be able to build documentation.")
endif()
Mar 10, 2007
Mar 10, 2007
242
Oct 23, 2012
Oct 23, 2012
243
if(UNIX)
Oct 23, 2012
Oct 23, 2012
244
set(PHYSFS_TARBALL "${CMAKE_CURRENT_SOURCE_DIR}/../physfs-${PHYSFS_VERSION}.tar.bz2")
Oct 23, 2012
Oct 23, 2012
245
add_custom_target(
Feb 3, 2010
Feb 3, 2010
246
dist
Oct 23, 2012
Oct 23, 2012
247
hg archive -t tbz2 "${PHYSFS_TARBALL}"
Feb 3, 2010
Feb 3, 2010
248
249
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMENT "Building source tarball '${PHYSFS_TARBALL}'..."
Feb 3, 2010
Feb 3, 2010
250
)
Oct 23, 2012
Oct 23, 2012
251
add_custom_target(
Feb 3, 2010
Feb 3, 2010
252
253
254
255
256
uninstall
"${CMAKE_CURRENT_SOURCE_DIR}/extras/uninstall.sh"
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
COMMENT "Uninstall the project..."
)
Oct 23, 2012
Oct 23, 2012
257
258
endif()
Nov 13, 2013
Nov 13, 2013
259
260
261
262
263
264
265
266
267
268
269
270
if(UNIX AND NOT APPLE)
configure_file(
"extras/physfs.pc.in"
"extras/physfs.pc"
@ONLY
)
install(
FILES "${CMAKE_CURRENT_BINARY_DIR}/extras/physfs.pc"
DESTINATION "lib/pkgconfig"
)
endif()
Oct 23, 2012
Oct 23, 2012
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
macro(message_bool_option _NAME _VALUE)
if(${_VALUE})
message(STATUS " ${_NAME}: enabled")
else()
message(STATUS " ${_NAME}: disabled")
endif()
endmacro()
message(STATUS "PhysicsFS will build with the following options:")
message_bool_option("ZIP support" PHYSFS_ARCHIVE_ZIP)
message_bool_option("7zip support" PHYSFS_ARCHIVE_7Z)
message_bool_option("GRP support" PHYSFS_ARCHIVE_GRP)
message_bool_option("WAD support" PHYSFS_ARCHIVE_WAD)
message_bool_option("HOG support" PHYSFS_ARCHIVE_HOG)
message_bool_option("MVL support" PHYSFS_ARCHIVE_MVL)
message_bool_option("QPAK support" PHYSFS_ARCHIVE_QPAK)
Nov 12, 2012
Nov 12, 2012
287
message_bool_option("SLB support" PHYSFS_ARCHIVE_SLB)
Jul 11, 2017
Jul 11, 2017
288
289
message_bool_option("VDF support" PHYSFS_ARCHIVE_VDF)
message_bool_option("ISO9660 support" PHYSFS_ARCHIVE_ISO9660)
Oct 23, 2012
Oct 23, 2012
290
291
292
293
294
295
message_bool_option("Build static library" PHYSFS_BUILD_STATIC)
message_bool_option("Build shared library" PHYSFS_BUILD_SHARED)
message_bool_option("Build stdio test program" PHYSFS_BUILD_TEST)
if(PHYSFS_BUILD_TEST)
message_bool_option(" Use readline in test program" HAVE_SYSTEM_READLINE)
endif()
Mar 10, 2007
Mar 10, 2007
296
297
# end of CMakeLists.txt ...