misc/physfs/CMakeLists.txt
branchphysfslayer
changeset 8520 1dedcc37bfe8
parent 8360 082ccf48bc06
child 8363 0b4ac686fc44
child 8444 75db7bb8dce8
equal deleted inserted replaced
8056:d5d5e1698554 8520:1dedcc37bfe8
     1 # PhysicsFS; a portable, flexible file i/o abstraction.
     1 # PhysicsFS; a portable, flexible file i/o abstraction.
     2 # Copyright (C) 2007  Ryan C. Gordon.
     2 # Copyright (C) 2007  Ryan C. Gordon.
     3 #
     3 #
     4 # Please see the file LICENSE.txt in the source's root directory.
     4 # Please see the file LICENSE.txt in the source's root directory.
     5 
     5 
     6 CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
     6 ## lines starting with '##' are lines overridden/modified/added by Hedgewars configuration
     7 
     7 ##CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
     8 PROJECT(PhysicsFS)
     8 ##PROJECT(PhysicsFS)
     9 SET(PHYSFS_VERSION 2.1.0)
     9 set(PHYSFS_VERSION 2.1.0)
    10 
    10 
    11 # Increment this if/when we break backwards compatibility.
    11 # Increment this if/when we break backwards compatibility.
    12 SET(PHYSFS_SOVERSION 1)
    12 set(PHYSFS_SOVERSION 1)
    13 
    13 
    14 # I hate that they define "WIN32" ... we're about to move to Win64...I hope!
    14 # I hate that they define "WIN32" ... we're about to move to Win64...I hope!
    15 IF(WIN32 AND NOT WINDOWS)
    15 if(WIN32 AND NOT WINDOWS)
    16     SET(WINDOWS TRUE)
    16     set(WINDOWS TRUE)
    17 ENDIF(WIN32 AND NOT WINDOWS)
    17 endif(WIN32 AND NOT WINDOWS)
    18 
    18 
    19 # Bleh, let's do it for "APPLE" too.
    19 # Bleh, let's do it for "APPLE" too.
    20 IF(APPLE AND NOT MACOSX)
    20 if(APPLE AND NOT MACOSX)
    21     SET(MACOSX TRUE)
    21     set(MACOSX TRUE)
    22 ENDIF(APPLE AND NOT MACOSX)
    22 endif(APPLE AND NOT MACOSX)
    23 
    23 
    24 # For now, Haiku and BeOS are the same, as far as the build system cares.
    24 # For now, Haiku and BeOS are the same, as far as the build system cares.
    25 IF(HAIKU AND NOT BEOS)
    25 if(HAIKU AND NOT BEOS)
    26     SET(BEOS TRUE)
    26     set(BEOS TRUE)
    27 ENDIF(HAIKU AND NOT BEOS)
    27 endif(HAIKU AND NOT BEOS)
    28 
    28 
    29 IF(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
    29 if(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
    30     SET(SOLARIS TRUE)
    30     set(SOLARIS TRUE)
    31 ENDIF(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
    31 endif(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
    32 
    32 
    33 INCLUDE(CheckIncludeFile)
    33 include(CheckIncludeFile)
    34 INCLUDE(CheckLibraryExists)
    34 include(CheckLibraryExists)
    35 INCLUDE(CheckCSourceCompiles)
    35 include(CheckCSourceCompiles)
    36 
    36 
    37 INCLUDE_DIRECTORIES(./src)
    37 ## SDL is needed by extra
    38 
    38 find_package(SDL REQUIRED)
    39 IF(MACOSX)
    39 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src) ##
       
    40 include_directories(${SDL_INCLUDE_DIR}) ##
       
    41 include_directories(${LUA_INCLUDE_DIR}) ##
       
    42 
       
    43 if(MACOSX)
    40     # Fallback to older OS X on PowerPC to support wider range of systems...
    44     # Fallback to older OS X on PowerPC to support wider range of systems...
    41     IF(CMAKE_OSX_ARCHITECTURES MATCHES ppc)
    45     if(CMAKE_OSX_ARCHITECTURES MATCHES ppc)
    42         ADD_DEFINITIONS(-DMAC_OS_X_VERSION_MIN_REQUIRED=1020)
    46         add_definitions(-DMAC_OS_X_VERSION_MIN_REQUIRED=1020)
    43         SET(OTHER_LDFLAGS ${OTHER_LDFLAGS} " -mmacosx-version-min=10.2")
    47         set(OTHER_LDFLAGS ${OTHER_LDFLAGS} " -mmacosx-version-min=10.2")
    44     ENDIF(CMAKE_OSX_ARCHITECTURES MATCHES ppc)
    48     endif(CMAKE_OSX_ARCHITECTURES MATCHES ppc)
    45 
    49 
    46     # Need these everywhere...
    50     # Need these everywhere...
    47     ADD_DEFINITIONS(-fno-common)
    51     add_definitions(-fno-common)
    48     SET(OTHER_LDFLAGS ${OTHER_LDFLAGS} "-framework Carbon -framework IOKit")
    52     find_library(iokit_framework NAMES IOKit)
    49 ENDIF(MACOSX)
    53     list(APPEND OTHER_LDFLAGS ${iokit_framework})
       
    54 endif(MACOSX)
    50 
    55 
    51 # Add some gcc-specific command lines.
    56 # Add some gcc-specific command lines.
    52 IF(CMAKE_COMPILER_IS_GNUCC)
    57 if(CMAKE_COMPILER_IS_GNUCC)
    53     # Always build with debug symbols...you can strip it later.
    58     # Always build with debug symbols...you can strip it later.
    54     ADD_DEFINITIONS(-g -pipe -Werror -fsigned-char)
    59     add_definitions(-g -pipe -Werror -fsigned-char)
    55 
    60 
    56     # Stupid BeOS generates warnings in the system headers.
    61     # Stupid BeOS generates warnings in the system headers.
    57     IF(NOT BEOS)
    62     if(NOT BEOS)
    58         ADD_DEFINITIONS(-Wall)
    63         add_definitions(-Wall)
    59     ENDIF(NOT BEOS)
    64     endif(NOT BEOS)
    60 
    65 
    61     CHECK_C_SOURCE_COMPILES("
    66     CHECK_C_SOURCE_COMPILES("
    62         #if ((defined(__GNUC__)) && (__GNUC__ >= 4))
    67         #if ((defined(__GNUC__)) && (__GNUC__ >= 4))
    63         int main(int argc, char **argv) { int is_gcc4 = 1; return 0; }
    68         int main(int argc, char **argv) { int is_gcc4 = 1; return 0; }
    64         #else
    69         #else
    65         #error This is not gcc4.
    70         #error This is not gcc4.
    66         #endif
    71         #endif
    67     " PHYSFS_IS_GCC4)
    72     " PHYSFS_IS_GCC4)
    68 
    73 
    69     IF(PHYSFS_IS_GCC4)
    74     if(PHYSFS_IS_GCC4)
    70         # Not supported on several operating systems at this time.
    75         # Not supported on several operating systems at this time.
    71         IF(NOT SOLARIS AND NOT WINDOWS)
    76         if(NOT SOLARIS AND NOT WINDOWS)
    72             ADD_DEFINITIONS(-fvisibility=hidden)
    77             add_definitions(-fvisibility=hidden)
    73         ENDIF(NOT SOLARIS AND NOT WINDOWS)
    78         endif(NOT SOLARIS AND NOT WINDOWS)
    74     ENDIF(PHYSFS_IS_GCC4)
    79     endif(PHYSFS_IS_GCC4)
    75 
    80 
    76     # Don't use -rpath.
    81     # Don't use -rpath.
    77     SET(CMAKE_SKIP_RPATH ON CACHE BOOL "Skip RPATH" FORCE)
    82     set(CMAKE_SKIP_RPATH ON CACHE BOOL "Skip RPATH" FORCE)
    78 ENDIF(CMAKE_COMPILER_IS_GNUCC)
    83 endif(CMAKE_COMPILER_IS_GNUCC)
    79 
    84 
    80 IF(CMAKE_C_COMPILER_ID STREQUAL "SunPro")
    85 if(CMAKE_C_COMPILER_ID STREQUAL "SunPro")
    81     ADD_DEFINITIONS(-erroff=E_EMPTY_TRANSLATION_UNIT)
    86     add_definitions(-erroff=E_EMPTY_TRANSLATION_UNIT)
    82     ADD_DEFINITIONS(-xldscope=hidden)
    87     add_definitions(-xldscope=hidden)
    83 ENDIF(CMAKE_C_COMPILER_ID STREQUAL "SunPro")
    88 endif(CMAKE_C_COMPILER_ID STREQUAL "SunPro")
    84 
    89 
    85 IF(MSVC)
    90 if(MSVC)
    86     # VS.NET 8.0 got really really anal about strcpy, etc, which even if we
    91     # VS.NET 8.0 got really really anal about strcpy, etc, which even if we
    87     #  cleaned up our code, zlib, etc still use...so disable the warning.
    92     #  cleaned up our code, zlib, etc still use...so disable the warning.
    88     ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS=1)
    93     add_definitions(-D_CRT_SECURE_NO_WARNINGS=1)
    89 ENDIF(MSVC)
    94 endif(MSVC)
       
    95 
    90 
    96 
    91 # Basic chunks of source code ...
    97 # Basic chunks of source code ...
    92 
    98 set(LZMA_SRCS
    93 SET(LZMA_SRCS
       
    94     src/lzma/C/7zCrc.c
    99     src/lzma/C/7zCrc.c
    95     src/lzma/C/Archive/7z/7zBuffer.c
   100     src/lzma/C/Archive/7z/7zBuffer.c
    96     src/lzma/C/Archive/7z/7zDecode.c
   101     src/lzma/C/Archive/7z/7zDecode.c
    97     src/lzma/C/Archive/7z/7zExtract.c
   102     src/lzma/C/Archive/7z/7zExtract.c
    98     src/lzma/C/Archive/7z/7zHeader.c
   103     src/lzma/C/Archive/7z/7zHeader.c
   102     src/lzma/C/Compress/Branch/BranchX86.c
   107     src/lzma/C/Compress/Branch/BranchX86.c
   103     src/lzma/C/Compress/Branch/BranchX86_2.c
   108     src/lzma/C/Compress/Branch/BranchX86_2.c
   104     src/lzma/C/Compress/Lzma/LzmaDecode.c
   109     src/lzma/C/Compress/Lzma/LzmaDecode.c
   105 )
   110 )
   106 
   111 
   107 IF(BEOS)
   112 if(BEOS)
   108     # We add this explicitly, since we don't want CMake to think this
   113     # We add this explicitly, since we don't want CMake to think this
   109     #  is a C++ project unless we're on BeOS.
   114     #  is a C++ project unless we're on BeOS.
   110     SET(PHYSFS_BEOS_SRCS src/platform_beos.cpp)
   115     set(PHYSFS_BEOS_SRCS src/platform_beos.cpp)
   111     FIND_LIBRARY(BE_LIBRARY be)
   116     find_library(BE_LIBRARY be)
   112     FIND_LIBRARY(ROOT_LIBRARY root)
   117     find_library(ROOT_LIBRARY root)
   113     SET(OPTIONAL_LIBRARY_LIBS ${OPTIONAL_LIBRARY_LIBS} ${BE_LIBRARY} ${ROOT_LIBRARY})
   118     set(optionAL_LIBRARY_LIBS ${optionAL_LIBRARY_LIBS} ${BE_LIBRARY} ${ROOT_LIBRARY})
   114 ENDIF(BEOS)
   119 endif(BEOS)
       
   120 
       
   121 ## extra functions needed by Hedgewars
       
   122 ## TODO: maybe it's better to have them in a separate library?
       
   123 set(PHYSFS_HEDGE_SRCS
       
   124     extras/physfsrwops.c
       
   125     extras/physfslualoader.c
       
   126     extras/hwpacksmounter.c
       
   127 )
   115 
   128 
   116 # Almost everything is "compiled" here, but things that don't apply to the
   129 # Almost everything is "compiled" here, but things that don't apply to the
   117 #  build are #ifdef'd out. This is to make it easy to embed PhysicsFS into
   130 #  build are #ifdef'd out. This is to make it easy to embed PhysicsFS into
   118 #  another project or bring up a new build system: just compile all the source
   131 #  another project or bring up a new build system: just compile all the source
   119 #  code and #define the things you want.
   132 #  code and #define the things you want.
   120 SET(PHYSFS_SRCS
   133 set(PHYSFS_SRCS
   121     src/physfs.c
   134     src/physfs.c
   122     src/physfs_byteorder.c
   135     src/physfs_byteorder.c
   123     src/physfs_unicode.c
   136     src/physfs_unicode.c
   124     src/platform_posix.c
   137     src/platform_posix.c
   125     src/platform_unix.c
   138     src/platform_unix.c
   134     src/archiver_qpak.c
   147     src/archiver_qpak.c
   135     src/archiver_wad.c
   148     src/archiver_wad.c
   136     src/archiver_zip.c
   149     src/archiver_zip.c
   137     src/archiver_iso9660.c
   150     src/archiver_iso9660.c
   138     ${PHYSFS_BEOS_SRCS}
   151     ${PHYSFS_BEOS_SRCS}
       
   152     ${PHYSFS_HEDGE_SRCS} ##
   139 )
   153 )
   140 
   154 
   141 
   155 
   142 # platform layers ...
   156 # platform layers ...
   143 
   157 
   144 IF(UNIX)
   158 if(UNIX)
   145     IF(BEOS)
   159     if(BEOS)
   146         SET(PHYSFS_HAVE_CDROM_SUPPORT TRUE)
   160         set(PHYSFS_HAVE_CDROM_SUPPORT TRUE)
   147         SET(PHYSFS_HAVE_THREAD_SUPPORT TRUE)
   161         set(PHYSFS_HAVE_THREAD_SUPPORT TRUE)
   148         SET(HAVE_PTHREAD_H TRUE)
   162         set(HAVE_PTHREAD_H TRUE)
   149     ELSE(BEOS)
   163     else(BEOS)
   150         CHECK_INCLUDE_FILE(sys/ucred.h HAVE_UCRED_H)
   164         CHECK_INCLUDE_FILE(sys/ucred.h HAVE_UCRED_H)
   151         IF(HAVE_UCRED_H)
   165         if(HAVE_UCRED_H)
   152             ADD_DEFINITIONS(-DPHYSFS_HAVE_SYS_UCRED_H=1)
   166             add_definitions(-DPHYSFS_HAVE_SYS_UCRED_H=1)
   153             SET(PHYSFS_HAVE_CDROM_SUPPORT TRUE)
   167             set(PHYSFS_HAVE_CDROM_SUPPORT TRUE)
   154         ENDIF(HAVE_UCRED_H)
   168         endif(HAVE_UCRED_H)
   155 
   169 
   156         CHECK_INCLUDE_FILE(mntent.h HAVE_MNTENT_H)
   170         CHECK_INCLUDE_FILE(mntent.h HAVE_MNTENT_H)
   157         IF(HAVE_MNTENT_H)
   171         if(HAVE_MNTENT_H)
   158             ADD_DEFINITIONS(-DPHYSFS_HAVE_MNTENT_H=1)
   172             add_definitions(-DPHYSFS_HAVE_MNTENT_H=1)
   159             SET(PHYSFS_HAVE_CDROM_SUPPORT TRUE)
   173             set(PHYSFS_HAVE_CDROM_SUPPORT TRUE)
   160         ENDIF(HAVE_MNTENT_H)
   174         endif(HAVE_MNTENT_H)
   161 
   175 
   162         # !!! FIXME: Solaris fails this, because mnttab.h implicitly
   176         # !!! FIXME: Solaris fails this, because mnttab.h implicitly
   163         # !!! FIXME:  depends on other system headers.  :(
   177         # !!! FIXME:  depends on other system headers.  :(
   164         #CHECK_INCLUDE_FILE(sys/mnttab.h HAVE_SYS_MNTTAB_H)
   178         #CHECK_INCLUDE_FILE(sys/mnttab.h HAVE_SYS_MNTTAB_H)
   165         CHECK_C_SOURCE_COMPILES("
   179         CHECK_C_SOURCE_COMPILES("
   166             #include <stdio.h>
   180             #include <stdio.h>
   167             #include <sys/mnttab.h>
   181             #include <sys/mnttab.h>
   168             int main(int argc, char **argv) { return 0; }
   182             int main(int argc, char **argv) { return 0; }
   169         " HAVE_SYS_MNTTAB_H)
   183         " HAVE_SYS_MNTTAB_H)
   170 
   184 
   171         IF(HAVE_SYS_MNTTAB_H)
   185         if(HAVE_SYS_MNTTAB_H)
   172             ADD_DEFINITIONS(-DPHYSFS_HAVE_SYS_MNTTAB_H=1)
   186             add_definitions(-DPHYSFS_HAVE_SYS_MNTTAB_H=1)
   173             SET(PHYSFS_HAVE_CDROM_SUPPORT TRUE)
   187             set(PHYSFS_HAVE_CDROM_SUPPORT TRUE)
   174         ENDIF(HAVE_SYS_MNTTAB_H)
   188         endif(HAVE_SYS_MNTTAB_H)
   175 
   189 
   176         CHECK_INCLUDE_FILE(pthread.h HAVE_PTHREAD_H)
   190         CHECK_INCLUDE_FILE(pthread.h HAVE_PTHREAD_H)
   177         IF(HAVE_PTHREAD_H)
   191         if(HAVE_PTHREAD_H)
   178             SET(PHYSFS_HAVE_THREAD_SUPPORT TRUE)
   192             set(PHYSFS_HAVE_THREAD_SUPPORT TRUE)
   179         ENDIF(HAVE_PTHREAD_H)
   193         endif(HAVE_PTHREAD_H)
   180     ENDIF(BEOS)
   194     endif(BEOS)
   181 ENDIF(UNIX)
   195 endif(UNIX)
   182 
   196 
   183 IF(WINDOWS)
   197 if(WINDOWS)
   184     SET(PHYSFS_HAVE_CDROM_SUPPORT TRUE)
   198     set(PHYSFS_HAVE_CDROM_SUPPORT TRUE)
   185     SET(PHYSFS_HAVE_THREAD_SUPPORT TRUE)
   199     set(PHYSFS_HAVE_THREAD_SUPPORT TRUE)
   186 ENDIF(WINDOWS)
   200 endif(WINDOWS)
   187 
   201 
   188 IF(NOT PHYSFS_HAVE_CDROM_SUPPORT)
   202 if(NOT PHYSFS_HAVE_CDROM_SUPPORT)
   189     ADD_DEFINITIONS(-DPHYSFS_NO_CDROM_SUPPORT=1)
   203     add_definitions(-DPHYSFS_NO_CDROM_SUPPORT=1)
   190     MESSAGE(WARNING " ***")
   204     message(WARNING " ***")
   191     MESSAGE(WARNING " *** There is no CD-ROM support in this build!")
   205     message(WARNING " *** There is no CD-ROM support in this build!")
   192     MESSAGE(WARNING " *** PhysicsFS will just pretend there are no discs.")
   206     message(WARNING " *** PhysicsFS will just pretend there are no discs.")
   193     MESSAGE(WARNING " *** This may be fine, depending on how PhysicsFS is used,")
   207     message(WARNING " *** This may be fine, depending on how PhysicsFS is used,")
   194     MESSAGE(WARNING " ***   but is this what you REALLY wanted?")
   208     message(WARNING " ***   but is this what you REALLY wanted?")
   195     MESSAGE(WARNING " *** (Maybe fix CMakeLists.txt, or write a platform driver?)")
   209     message(WARNING " *** (Maybe fix CMakeLists.txt, or write a platform driver?)")
   196     MESSAGE(WARNING " ***")
   210     message(WARNING " ***")
   197 ENDIF(NOT PHYSFS_HAVE_CDROM_SUPPORT)
   211 endif(NOT PHYSFS_HAVE_CDROM_SUPPORT)
   198 
   212 
   199 IF(PHYSFS_HAVE_THREAD_SUPPORT)
   213 if(PHYSFS_HAVE_THREAD_SUPPORT)
   200     ADD_DEFINITIONS(-D_REENTRANT -D_THREAD_SAFE)
   214     add_definitions(-D_REENTRANT -D_THREAD_SAFE)
   201 ELSE(PHYSFS_HAVE_THREAD_SUPPORT)
   215 else(PHYSFS_HAVE_THREAD_SUPPORT)
   202     ADD_DEFINITIONS(-DPHYSFS_NO_THREAD_SUPPORT=1)
   216     add_definitions(-DPHYSFS_NO_THREAD_SUPPORT=1)
   203     MESSAGE(WARNING " ***")
   217     message(WARNING " ***")
   204     MESSAGE(WARNING " *** There is no thread support in this build!")
   218     message(WARNING " *** There is no thread support in this build!")
   205     MESSAGE(WARNING " *** PhysicsFS will NOT be reentrant!")
   219     message(WARNING " *** PhysicsFS will NOT be reentrant!")
   206     MESSAGE(WARNING " *** This may be fine, depending on how PhysicsFS is used,")
   220     message(WARNING " *** This may be fine, depending on how PhysicsFS is used,")
   207     MESSAGE(WARNING " ***   but is this what you REALLY wanted?")
   221     message(WARNING " ***   but is this what you REALLY wanted?")
   208     MESSAGE(WARNING " *** (Maybe fix CMakeLists.txt, or write a platform driver?)")
   222     message(WARNING " *** (Maybe fix CMakeLists.txt, or write a platform driver?)")
   209     MESSAGE(WARNING " ***")
   223     message(WARNING " ***")
   210 ENDIF(PHYSFS_HAVE_THREAD_SUPPORT)
   224 endif(PHYSFS_HAVE_THREAD_SUPPORT)
   211 
   225 
   212 
   226 
   213 # Archivers ...
   227 # Archivers ...
   214 
   228 
   215 OPTION(PHYSFS_ARCHIVE_ZIP "Enable ZIP support" TRUE)
   229 option(PHYSFS_ARCHIVE_ZIP "Enable ZIP support" TRUE)
   216 IF(PHYSFS_ARCHIVE_ZIP)
   230 if(PHYSFS_ARCHIVE_ZIP)
   217     ADD_DEFINITIONS(-DPHYSFS_SUPPORTS_ZIP=1)
   231     add_definitions(-DPHYSFS_SUPPORTS_ZIP=1)
   218 ENDIF(PHYSFS_ARCHIVE_ZIP)
   232     set(PHYSFS_FEATURES "ZIP")
   219 
   233 endif(PHYSFS_ARCHIVE_ZIP)
   220 OPTION(PHYSFS_ARCHIVE_7Z "Enable 7zip support" FALSE)
   234 
   221 IF(PHYSFS_ARCHIVE_7Z)
   235 option(PHYSFS_ARCHIVE_7Z "Enable 7zip support" FALSE)
   222     ADD_DEFINITIONS(-DPHYSFS_SUPPORTS_7Z=1)
   236 if(PHYSFS_ARCHIVE_7Z)
   223     # !!! FIXME: rename to 7z.c?
   237     add_definitions(-DPHYSFS_SUPPORTS_7Z=1)
   224     SET(PHYSFS_SRCS ${PHYSFS_SRCS} ${LZMA_SRCS})
   238     list(APPEND PHYSFS_SRCS ${LZMA_SRCS})
   225 ENDIF(PHYSFS_ARCHIVE_7Z)
   239     set(PHYSFS_FEATURES "${PHYSFS_FEATURES} 7zip")
   226 
   240 endif(PHYSFS_ARCHIVE_7Z)
   227 OPTION(PHYSFS_ARCHIVE_GRP "Enable Build Engine GRP support" TRUE)
   241 
   228 IF(PHYSFS_ARCHIVE_GRP)
   242 option(PHYSFS_ARCHIVE_GRP "Enable Build Engine GRP support" TRUE)
   229     ADD_DEFINITIONS(-DPHYSFS_SUPPORTS_GRP=1)
   243 if(PHYSFS_ARCHIVE_GRP)
   230 ENDIF(PHYSFS_ARCHIVE_GRP)
   244     add_definitions(-DPHYSFS_SUPPORTS_GRP=1)
   231 
   245     set(PHYSFS_FEATURES "${PHYSFS_FEATURES} GRP")
   232 OPTION(PHYSFS_ARCHIVE_WAD "Enable Doom WAD support" TRUE)
   246 endif(PHYSFS_ARCHIVE_GRP)
   233 IF(PHYSFS_ARCHIVE_WAD)
   247 
   234     ADD_DEFINITIONS(-DPHYSFS_SUPPORTS_WAD=1)
   248 option(PHYSFS_ARCHIVE_WAD "Enable Doom WAD support" TRUE)
   235 ENDIF(PHYSFS_ARCHIVE_WAD)
   249 if(PHYSFS_ARCHIVE_WAD)
   236 
   250     add_definitions(-DPHYSFS_SUPPORTS_WAD=1)
   237 OPTION(PHYSFS_ARCHIVE_HOG "Enable Descent I/II HOG support" TRUE)
   251     set(PHYSFS_FEATURES "${PHYSFS_FEATURES} WAD")
   238 IF(PHYSFS_ARCHIVE_HOG)
   252 endif(PHYSFS_ARCHIVE_WAD)
   239     ADD_DEFINITIONS(-DPHYSFS_SUPPORTS_HOG=1)
   253 
   240 ENDIF(PHYSFS_ARCHIVE_HOG)
   254 option(PHYSFS_ARCHIVE_HOG "Enable Descent I/II HOG support" TRUE)
   241 
   255 if(PHYSFS_ARCHIVE_HOG)
   242 OPTION(PHYSFS_ARCHIVE_MVL "Enable Descent I/II MVL support" TRUE)
   256     add_definitions(-DPHYSFS_SUPPORTS_HOG=1)
   243 IF(PHYSFS_ARCHIVE_MVL)
   257     set(PHYSFS_FEATURES "${PHYSFS_FEATURES} HOG")
   244     ADD_DEFINITIONS(-DPHYSFS_SUPPORTS_MVL=1)
   258 endif(PHYSFS_ARCHIVE_HOG)
   245 ENDIF(PHYSFS_ARCHIVE_MVL)
   259 
   246 
   260 option(PHYSFS_ARCHIVE_MVL "Enable Descent I/II MVL support" TRUE)
   247 OPTION(PHYSFS_ARCHIVE_QPAK "Enable Quake I/II QPAK support" TRUE)
   261 if(PHYSFS_ARCHIVE_MVL)
   248 IF(PHYSFS_ARCHIVE_QPAK)
   262     add_definitions(-DPHYSFS_SUPPORTS_MVL=1)
   249     ADD_DEFINITIONS(-DPHYSFS_SUPPORTS_QPAK=1)
   263     set(PHYSFS_FEATURES "${PHYSFS_FEATURES} MVL")
   250 ENDIF(PHYSFS_ARCHIVE_QPAK)
   264 endif(PHYSFS_ARCHIVE_MVL)
   251 
   265 
   252 OPTION(PHYSFS_ARCHIVE_ISO9660 "Enable ISO9660 support" TRUE)
   266 option(PHYSFS_ARCHIVE_QPAK "Enable Quake I/II QPAK support" TRUE)
   253 IF(PHYSFS_ARCHIVE_ISO9660)
   267 if(PHYSFS_ARCHIVE_QPAK)
   254     ADD_DEFINITIONS(-DPHYSFS_SUPPORTS_ISO9660=1)
   268     add_definitions(-DPHYSFS_SUPPORTS_QPAK=1)
   255 ENDIF(PHYSFS_ARCHIVE_ISO9660)
   269     set(PHYSFS_FEATURES "${PHYSFS_FEATURES} QPAK")
   256 
   270 endif(PHYSFS_ARCHIVE_QPAK)
   257 
   271 
   258 OPTION(PHYSFS_BUILD_STATIC "Build static library" TRUE)
   272 option(PHYSFS_ARCHIVE_ISO9660 "Enable ISO9660 support" TRUE)
   259 IF(PHYSFS_BUILD_STATIC)
   273 if(PHYSFS_ARCHIVE_ISO9660)
   260     ADD_LIBRARY(physfs STATIC ${PHYSFS_SRCS})
   274     add_definitions(-DPHYSFS_SUPPORTS_ISO9660=1)
   261     SET_TARGET_PROPERTIES(physfs PROPERTIES OUTPUT_NAME "physfs")
   275     set(PHYSFS_FEATURES "${PHYSFS_FEATURES} CD-ROM")
   262     SET(PHYSFS_LIB_TARGET physfs)
   276 endif(PHYSFS_ARCHIVE_ISO9660)
   263     SET(PHYSFS_INSTALL_TARGETS ${PHYSFS_INSTALL_TARGETS} ";physfs")
   277 
   264 ENDIF(PHYSFS_BUILD_STATIC)
   278 ##as needed by Hedgewars configuration
   265 
   279 if(WINDOWS)
   266 #OPTION(PHYSFS_BUILD_SHARED "Build shared library" FALSE)
   280     option(PHYSFS_BUILD_STATIC "Build static library" FALSE)
   267 #IF(PHYSFS_BUILD_SHARED)
   281     option(PHYSFS_BUILD_SHARED "Build shared library" TRUE)
   268 #    ADD_LIBRARY(physfs SHARED ${PHYSFS_SRCS})
   282     list(APPEND OTHER_LDFLAGS ${SDL_LIBRARY})
   269 #    SET_TARGET_PROPERTIES(physfs PROPERTIES VERSION ${PHYSFS_VERSION})
   283 else(WINDOWS)
   270 #    SET_TARGET_PROPERTIES(physfs PROPERTIES SOVERSION ${PHYSFS_SOVERSION})
   284     option(PHYSFS_BUILD_STATIC "Build static library" TRUE)
   271 #    TARGET_LINK_LIBRARIES(physfs ${OPTIONAL_LIBRARY_LIBS} ${OTHER_LDFLAGS})
   285     option(PHYSFS_BUILD_SHARED "Build shared library" FALSE)
   272 #    SET(PHYSFS_LIB_TARGET physfs)
   286 endif(WINDOWS)
   273 #    SET(PHYSFS_INSTALL_TARGETS ${PHYSFS_INSTALL_TARGETS} ";physfs")
   287 
   274 #ENDIF(PHYSFS_BUILD_SHARED)
   288 if(PHYSFS_BUILD_STATIC)
   275 
   289     add_library(physfs STATIC ${PHYSFS_SRCS})
   276 IF(NOT PHYSFS_BUILD_SHARED AND NOT PHYSFS_BUILD_STATIC)
   290     set_target_properties(physfs PROPERTIES OUTPUT_NAME "physfs")
   277     MESSAGE(FATAL "Both shared and static libraries are disabled!")
   291 endif(PHYSFS_BUILD_STATIC)
   278 ENDIF(NOT PHYSFS_BUILD_SHARED AND NOT PHYSFS_BUILD_STATIC)
   292 
       
   293 if(PHYSFS_BUILD_SHARED)
       
   294     add_library(physfs SHARED ${PHYSFS_SRCS})
       
   295     set_target_properties(physfs PROPERTIES VERSION ${PHYSFS_VERSION})
       
   296     set_target_properties(physfs PROPERTIES SOVERSION ${PHYSFS_SOVERSION})
       
   297     target_link_libraries(physfs ${optionAL_LIBRARY_LIBS} ${OTHER_LDFLAGS})
       
   298     install(TARGETS physfs RUNTIME DESTINATION ${target_library_install_dir}) ##
       
   299 endif(PHYSFS_BUILD_SHARED)
       
   300 
       
   301 if(NOT PHYSFS_BUILD_SHARED AND NOT PHYSFS_BUILD_STATIC)
       
   302     message(FATAL "Both shared and static libraries are disabled!")
       
   303 endif(NOT PHYSFS_BUILD_SHARED AND NOT PHYSFS_BUILD_STATIC)
   279 
   304 
   280 # CMake FAQ says I need this...
   305 # CMake FAQ says I need this...
   281 IF(PHYSFS_BUILD_SHARED AND PHYSFS_BUILD_STATIC)
   306 if(PHYSFS_BUILD_SHARED AND PHYSFS_BUILD_STATIC)
   282     SET_TARGET_PROPERTIES(physfs PROPERTIES CLEAN_DIRECT_OUTPUT 1)
   307     set_target_properties(physfs PROPERTIES CLEAN_DIRECT_OUTPUT 1)
   283     SET_TARGET_PROPERTIES(physfs-static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
   308 endif(PHYSFS_BUILD_SHARED AND PHYSFS_BUILD_STATIC)
   284 ENDIF(PHYSFS_BUILD_SHARED AND PHYSFS_BUILD_STATIC)
   309 
   285 
   310 
   286 OPTION(PHYSFS_BUILD_TEST "Build stdio test program." FALSE)
   311 ## removed install, language bindings and test program
   287 MARK_AS_ADVANCED(PHYSFS_BUILD_TEST)
   312 ## simplified configuration output
   288 IF(PHYSFS_BUILD_TEST)
   313 
   289     FIND_PATH(READLINE_H readline/readline.h)
   314 message(STATUS "PhysicsFS will build with ${PHYSFS_FEATURES} support")
   290     FIND_PATH(HISTORY_H readline/history.h)
   315 
   291     IF(READLINE_H AND HISTORY_H)
       
   292         FIND_LIBRARY(CURSES_LIBRARY NAMES curses ncurses)
       
   293         SET(CMAKE_REQUIRED_LIBRARIES ${CURSES_LIBRARY})
       
   294         FIND_LIBRARY(READLINE_LIBRARY readline)
       
   295         IF(READLINE_LIBRARY)
       
   296             SET(HAVE_SYSTEM_READLINE TRUE)
       
   297             SET(TEST_PHYSFS_LIBS ${TEST_PHYSFS_LIBS} ${READLINE_LIBRARY} ${CURSES_LIBRARY})
       
   298             INCLUDE_DIRECTORIES(${READLINE_H} ${HISTORY_H})
       
   299             ADD_DEFINITIONS(-DPHYSFS_HAVE_READLINE=1)
       
   300         ENDIF(READLINE_LIBRARY)
       
   301     ENDIF(READLINE_H AND HISTORY_H)
       
   302     ADD_EXECUTABLE(test_physfs test/test_physfs.c)
       
   303     TARGET_LINK_LIBRARIES(test_physfs ${PHYSFS_LIB_TARGET} ${TEST_PHYSFS_LIBS} ${OTHER_LDFLAGS})
       
   304     SET(PHYSFS_INSTALL_TARGETS ${PHYSFS_INSTALL_TARGETS} ";test_physfs")
       
   305 ENDIF(PHYSFS_BUILD_TEST)
       
   306 
       
   307 
       
   308 # Scripting language bindings...
       
   309 
       
   310 #CMake's SWIG support is basically useless.
       
   311 #FIND_PACKAGE(SWIG)
       
   312 
       
   313 OPTION(PHYSFS_BUILD_SWIG "Build ${_LANG} bindings." FALSE)
       
   314 MARK_AS_ADVANCED(PHYSFS_BUILD_SWIG)
       
   315 
       
   316 FIND_PROGRAM(SWIG swig DOC "Path to swig command line app: http://swig.org/")
       
   317 IF(NOT SWIG)
       
   318     MESSAGE(STATUS "SWIG not found. You won't be able to build scripting language bindings.")
       
   319 ELSE(NOT SWIG)
       
   320     MARK_AS_ADVANCED(SWIG)
       
   321     IF(DEFINED CMAKE_BUILD_TYPE)
       
   322         IF((NOT CMAKE_BUILD_TYPE STREQUAL "") AND (NOT CMAKE_BUILD_TYPE STREQUAL "Debug"))
       
   323             IF(CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
       
   324                 SET(SWIG_OPT_CFLAGS "-small")
       
   325             ELSE(CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
       
   326                 SET(SWIG_OPT_CFLAGS "-O")
       
   327             ENDIF(CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
       
   328         ENDIF((NOT CMAKE_BUILD_TYPE STREQUAL "") AND (NOT CMAKE_BUILD_TYPE STREQUAL "Debug"))
       
   329     ENDIF(DEFINED CMAKE_BUILD_TYPE)
       
   330 
       
   331     SET(SWIG_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/physfs-swig-bindings")
       
   332 
       
   333     MACRO(CONFIGURE_SWIG_BINDING _LANG _INSTALLPATH _EXTRAOUTPUTS _EXTRACFLAGS _EXTRALDFLAGS)
       
   334         STRING(TOUPPER "${_LANG}" _UPPERLANG)
       
   335         STRING(TOLOWER "${_LANG}" _LOWERLANG)
       
   336         SET(_TARGET "physfs-${_LOWERLANG}")
       
   337         SET(_TARGETDIR "${SWIG_OUTPUT_DIR}/${_LOWERLANG}")
       
   338 
       
   339         IF(NOT EXISTS "${_TARGETDIR}")
       
   340             FILE(MAKE_DIRECTORY "${_TARGETDIR}")
       
   341         ENDIF(NOT EXISTS "${_TARGETDIR}")
       
   342 
       
   343         IF(PHYSFS_BUILD_${_UPPERLANG})
       
   344             ADD_CUSTOM_COMMAND(
       
   345                 OUTPUT "${_TARGETDIR}/${_TARGET}.c" ${_EXTRAOUTPUTS}
       
   346                 MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/extras/physfs-swig.i"
       
   347                 COMMAND "${SWIG}"
       
   348                 ARGS ${SWIG_OPT_CFLAGS} -${_LOWERLANG} -outdir "${_TARGETDIR}" -o "${_TARGETDIR}/${_TARGET}.c" "${CMAKE_CURRENT_SOURCE_DIR}/extras/physfs-swig.i"
       
   349                 COMMENT "Generating ${_LANG} bindings..."
       
   350             )
       
   351 
       
   352             ADD_LIBRARY(${_TARGET} SHARED "${_TARGETDIR}/${_TARGET}.c")
       
   353             TARGET_LINK_LIBRARIES(${_TARGET} ${PHYSFS_LIB_TARGET})
       
   354             SET_TARGET_PROPERTIES(${_TARGET} PROPERTIES
       
   355                 COMPILE_FLAGS "${_EXTRACFLAGS}"
       
   356                 LINK_FLAGS "${_EXTRALDFLAGS}"
       
   357                 LIBRARY_OUTPUT_NAME "physfs"
       
   358                 LIBRARY_OUTPUT_DIRECTORY "${_TARGETDIR}"
       
   359                 CLEAN_DIRECT_OUTPUT 1
       
   360             )
       
   361             INSTALL(TARGETS ${_TARGET} LIBRARY DESTINATION "${_INSTALLPATH}")
       
   362             MESSAGE(STATUS "${_LANG} bindings configured!")
       
   363         ELSE(PHYSFS_BUILD_${_UPPERLANG})
       
   364             MESSAGE(STATUS "Couldn't figure out ${_LANG} configuration. Skipping ${_LANG} bindings.")
       
   365         ENDIF(PHYSFS_BUILD_${_UPPERLANG})
       
   366     ENDMACRO(CONFIGURE_SWIG_BINDING)
       
   367 
       
   368     MACRO(ADD_SCRIPT_BINDING_OPTION _VAR _LANG _DEFVAL)
       
   369         SET(BUILDSWIGVAL ${_DEFVAL})
       
   370         IF(NOT PHYSFS_BUILD_SWIG)
       
   371             SET(BUILDSWIGVAL FALSE)
       
   372         ENDIF(NOT PHYSFS_BUILD_SWIG)
       
   373         OPTION(${_VAR} "Build ${_LANG} bindings." ${BUILDSWIGVAL})
       
   374         MARK_AS_ADVANCED(${_VAR})
       
   375     ENDMACRO(ADD_SCRIPT_BINDING_OPTION)
       
   376 
       
   377     ADD_SCRIPT_BINDING_OPTION(PHYSFS_BUILD_PERL "Perl" TRUE)
       
   378     ADD_SCRIPT_BINDING_OPTION(PHYSFS_BUILD_RUBY "Ruby" TRUE)
       
   379 ENDIF(NOT SWIG)
       
   380 
       
   381 IF(PHYSFS_BUILD_PERL)
       
   382     MESSAGE(STATUS "Configuring Perl bindings...")
       
   383     FIND_PROGRAM(PERL perl DOC "Path to perl command line app: http://perl.org/")
       
   384     IF(NOT PERL)
       
   385         MESSAGE(STATUS "Perl not found. You won't be able to build perl bindings.")
       
   386         SET(PHYSFS_BUILD_PERL FALSE)
       
   387     ENDIF(NOT PERL)
       
   388     MARK_AS_ADVANCED(PERL)
       
   389 
       
   390     MACRO(GET_PERL_CONFIG _KEY _VALUE)
       
   391         IF(PHYSFS_BUILD_PERL)
       
   392             MESSAGE(STATUS "Figuring out perl config value '${_KEY}' ...")
       
   393             EXECUTE_PROCESS(
       
   394                 COMMAND ${PERL} -w -e "use Config; print \$Config{${_KEY}};"
       
   395                 RESULT_VARIABLE GET_PERL_CONFIG_RC
       
   396                 OUTPUT_VARIABLE ${_VALUE}
       
   397             )
       
   398             IF(NOT GET_PERL_CONFIG_RC EQUAL 0)
       
   399                 MESSAGE(STATUS "Perl executable ('${PERL}') reported failure: ${GET_PERL_CONFIG_RC}")
       
   400                 SET(PHYSFS_BUILD_PERL FALSE)
       
   401             ENDIF(NOT GET_PERL_CONFIG_RC EQUAL 0)
       
   402             IF(NOT ${_VALUE})
       
   403                 MESSAGE(STATUS "Perl executable ('${PERL}') didn't have a value for '${_KEY}'")
       
   404                 SET(PHYSFS_BUILD_PERL FALSE)
       
   405             ENDIF(NOT ${_VALUE})
       
   406 
       
   407             IF(PHYSFS_BUILD_PERL)
       
   408                 MESSAGE(STATUS "Perl says: '${${_VALUE}}'.")
       
   409             ENDIF(PHYSFS_BUILD_PERL)
       
   410         ENDIF(PHYSFS_BUILD_PERL)
       
   411     ENDMACRO(GET_PERL_CONFIG)
       
   412 
       
   413     # !!! FIXME: installsitearch might be the wrong location.
       
   414     GET_PERL_CONFIG("archlibexp" PERL_INCLUDE_PATH)
       
   415     GET_PERL_CONFIG("ccflags" PERL_CCFLAGS)
       
   416     GET_PERL_CONFIG("ldflags" PERL_LDFLAGS)
       
   417     GET_PERL_CONFIG("installsitearch" PERL_INSTALL_PATH)
       
   418 
       
   419     # !!! FIXME: this test for Mac OS X is wrong.
       
   420     IF(MACOSX)
       
   421         GET_PERL_CONFIG("libperl" PERL_LIBPERL)
       
   422         SET(TMPLIBPERL "${PERL_LIBPERL}")
       
   423         STRING(REGEX REPLACE "^lib" "" TMPLIBPERL "${TMPLIBPERL}")
       
   424         STRING(REGEX REPLACE "\\.so$" "" TMPLIBPERL "${TMPLIBPERL}")
       
   425         STRING(REGEX REPLACE "\\.dylib$" "" TMPLIBPERL "${TMPLIBPERL}")
       
   426         STRING(REGEX REPLACE "\\.dll$" "" TMPLIBPERL "${TMPLIBPERL}")
       
   427         IF(NOT "${TMPLIBPERL}" STREQUAL "${PERL_LIBPERL}")
       
   428             MESSAGE(STATUS "Stripped '${PERL_LIBPERL}' down to '${TMPLIBPERL}'.")
       
   429             SET(PERL_LIBPERL "${TMPLIBPERL}")
       
   430         ENDIF(NOT "${TMPLIBPERL}" STREQUAL "${PERL_LIBPERL}")
       
   431         SET(PERL_LIBPERL "-l${PERL_LIBPERL}")
       
   432     ENDIF(MACOSX)
       
   433 
       
   434     CONFIGURE_SWIG_BINDING(Perl "${PERL_INSTALL_PATH}" "${SWIG_OUTPUT_DIR}/perl/physfs.pm" "\"-I${PERL_INCLUDE_PATH}/CORE\" ${PERL_CCFLAGS} -w" "\"-L${PERL_INCLUDE_PATH}/CORE\" ${PERL_LIBPERL} ${PERL_LDFLAGS}")
       
   435     INSTALL(FILES "${SWIG_OUTPUT_DIR}/perl/physfs.pm" DESTINATION "${PERL_INSTALL_PATH}")
       
   436     INSTALL(
       
   437         FILES test/test_physfs.pl
       
   438         DESTINATION bin
       
   439         PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
       
   440                     GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
       
   441     )
       
   442 ENDIF(PHYSFS_BUILD_PERL)
       
   443 
       
   444 # !!! FIXME: lots of cut-and-paste from perl bindings.
       
   445 IF(PHYSFS_BUILD_RUBY)
       
   446     MESSAGE(STATUS "Configuring Ruby bindings...")
       
   447     FIND_PROGRAM(RUBY ruby DOC "Path to ruby command line app: http://ruby-lang.org/")
       
   448     IF(NOT RUBY)
       
   449         MESSAGE(STATUS "Ruby not found. You won't be able to build ruby bindings.")
       
   450         SET(PHYSFS_BUILD_RUBY FALSE)
       
   451     ENDIF(NOT RUBY)
       
   452     MARK_AS_ADVANCED(RUBY)
       
   453 
       
   454     MACRO(GET_RUBY_CONFIG _KEY _VALUE)
       
   455         IF(PHYSFS_BUILD_RUBY)
       
   456             MESSAGE(STATUS "Figuring out ruby config value '${_KEY}' ...")
       
   457             EXECUTE_PROCESS(
       
   458                 COMMAND ${RUBY} -e "require 'rbconfig'; puts RbConfig::CONFIG['${_KEY}'];"
       
   459                 RESULT_VARIABLE GET_RUBY_CONFIG_RC
       
   460                 OUTPUT_VARIABLE ${_VALUE}
       
   461                 OUTPUT_STRIP_TRAILING_WHITESPACE
       
   462             )
       
   463             IF(NOT GET_RUBY_CONFIG_RC EQUAL 0)
       
   464                 MESSAGE(STATUS "Ruby executable ('${RUBY}') reported failure: ${GET_RUBY_CONFIG_RC}")
       
   465                 SET(PHYSFS_BUILD_RUBY FALSE)
       
   466             ENDIF(NOT GET_RUBY_CONFIG_RC EQUAL 0)
       
   467             IF(NOT ${_VALUE})
       
   468                 MESSAGE(STATUS "Ruby executable ('${RUBY}') didn't have a value for '${_KEY}'")
       
   469                 SET(PHYSFS_BUILD_RUBY FALSE)
       
   470             ENDIF(NOT ${_VALUE})
       
   471 
       
   472             IF(PHYSFS_BUILD_RUBY)
       
   473                 MESSAGE(STATUS "Ruby says: '${${_VALUE}}'.")
       
   474             ENDIF(PHYSFS_BUILD_RUBY)
       
   475         ENDIF(PHYSFS_BUILD_RUBY)
       
   476     ENDMACRO(GET_RUBY_CONFIG)
       
   477 
       
   478     GET_RUBY_CONFIG("archdir" RUBY_INCLUDE_PATH)
       
   479     GET_RUBY_CONFIG("CFLAGS" RUBY_CCFLAGS)
       
   480     GET_RUBY_CONFIG("LDFLAGS" RUBY_LDFLAGS)
       
   481     GET_RUBY_CONFIG("sitearchdir" RUBY_INSTALL_PATH)
       
   482     GET_RUBY_CONFIG("LIBRUBYARG_SHARED" RUBY_LIBRUBY)
       
   483     GET_RUBY_CONFIG("libdir" RUBY_LIBDIR)
       
   484 
       
   485     CONFIGURE_SWIG_BINDING(Ruby "${RUBY_INSTALL_PATH}" "" "\"-I${RUBY_INCLUDE_PATH}\" ${RUBY_CCFLAGS} -w" "\"-L${RUBY_LIBDIR}\" ${RUBY_LIBRUBY} ${RUBY_LDFLAGS}")
       
   486     SET_TARGET_PROPERTIES(physfs-ruby PROPERTIES PREFIX "")
       
   487     INSTALL(
       
   488         FILES test/test_physfs.rb
       
   489         DESTINATION bin
       
   490         PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
       
   491                     GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
       
   492     )
       
   493 ENDIF(PHYSFS_BUILD_RUBY)
       
   494 
       
   495 
       
   496 INSTALL(TARGETS ${PHYSFS_INSTALL_TARGETS}
       
   497         RUNTIME DESTINATION bin
       
   498         LIBRARY DESTINATION lib${LIB_SUFFIX}
       
   499         ARCHIVE DESTINATION lib${LIB_SUFFIX})
       
   500 INSTALL(FILES src/physfs.h DESTINATION include)
       
   501 
       
   502 IF(UNIX)
       
   503     SET(PHYSFS_TARBALL "${CMAKE_CURRENT_SOURCE_DIR}/../physfs-${PHYSFS_VERSION}.tar.gz")
       
   504     ADD_CUSTOM_TARGET(
       
   505         dist
       
   506         hg archive -t tgz "${PHYSFS_TARBALL}"
       
   507         WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
       
   508         COMMENT "Building source tarball '${PHYSFS_TARBALL}'..."
       
   509     )
       
   510 #    ADD_CUSTOM_TARGET(
       
   511 #        uninstall
       
   512 #        "${CMAKE_CURRENT_SOURCE_DIR}/extras/uninstall.sh"
       
   513 #        WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
       
   514 #        COMMENT "Uninstall the project..."
       
   515 #    )
       
   516 ENDIF(UNIX)
       
   517 
       
   518 MACRO(MESSAGE_BOOL_OPTION _NAME _VALUE)
       
   519     IF(${_VALUE})
       
   520         MESSAGE(STATUS "  ${_NAME}: enabled")
       
   521     ELSE(${_VALUE})
       
   522         MESSAGE(STATUS "  ${_NAME}: disabled")
       
   523     ENDIF(${_VALUE})
       
   524 ENDMACRO(MESSAGE_BOOL_OPTION)
       
   525 
       
   526 MESSAGE(STATUS "PhysicsFS will build with the following options:")
       
   527 MESSAGE_BOOL_OPTION("ZIP support" PHYSFS_ARCHIVE_ZIP)
       
   528 MESSAGE_BOOL_OPTION("7zip support" PHYSFS_ARCHIVE_7Z)
       
   529 MESSAGE_BOOL_OPTION("GRP support" PHYSFS_ARCHIVE_GRP)
       
   530 MESSAGE_BOOL_OPTION("WAD support" PHYSFS_ARCHIVE_WAD)
       
   531 MESSAGE_BOOL_OPTION("HOG support" PHYSFS_ARCHIVE_HOG)
       
   532 MESSAGE_BOOL_OPTION("MVL support" PHYSFS_ARCHIVE_MVL)
       
   533 MESSAGE_BOOL_OPTION("QPAK support" PHYSFS_ARCHIVE_QPAK)
       
   534 MESSAGE_BOOL_OPTION("CD-ROM drive support" PHYSFS_HAVE_CDROM_SUPPORT)
       
   535 MESSAGE_BOOL_OPTION("Thread safety" PHYSFS_HAVE_THREAD_SUPPORT)
       
   536 MESSAGE_BOOL_OPTION("Build static library" PHYSFS_BUILD_STATIC)
       
   537 MESSAGE_BOOL_OPTION("Build shared library" PHYSFS_BUILD_SHARED)
       
   538 MESSAGE_BOOL_OPTION("Build Perl bindings" PHYSFS_BUILD_PERL)
       
   539 MESSAGE_BOOL_OPTION("Build Ruby bindings" PHYSFS_BUILD_RUBY)
       
   540 MESSAGE_BOOL_OPTION("Build stdio test program" PHYSFS_BUILD_TEST)
       
   541 IF(PHYSFS_BUILD_TEST)
       
   542     MESSAGE_BOOL_OPTION("  Use readline in test program" HAVE_SYSTEM_READLINE)
       
   543 ENDIF(PHYSFS_BUILD_TEST)
       
   544 
       
   545 # end of CMakeLists.txt ...
       
   546