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