misc/physfs/CMakeLists.txt
branchflibqtfrontend
changeset 8363 0b4ac686fc44
parent 8304 620560c89284
parent 8360 082ccf48bc06
equal deleted inserted replaced
8306:50fe80adbfcb 8363:0b4ac686fc44
     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     extras/physfsfgets.c
       
   128 )
   119 
   129 
   120 # Almost everything is "compiled" here, but things that don't apply to the
   130 # 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
   131 #  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
   132 #  another project or bring up a new build system: just compile all the source
   123 #  code and #define the things you want.
   133 #  code and #define the things you want.
   124 SET(PHYSFS_SRCS
   134 set(PHYSFS_SRCS
   125     src/physfs.c
   135     src/physfs.c
   126     src/physfs_byteorder.c
   136     src/physfs_byteorder.c
   127     src/physfs_unicode.c
   137     src/physfs_unicode.c
   128     src/platform_posix.c
   138     src/platform_posix.c
   129     src/platform_unix.c
   139     src/platform_unix.c
   137     src/archiver_mvl.c
   147     src/archiver_mvl.c
   138     src/archiver_qpak.c
   148     src/archiver_qpak.c
   139     src/archiver_wad.c
   149     src/archiver_wad.c
   140     src/archiver_zip.c
   150     src/archiver_zip.c
   141     src/archiver_iso9660.c
   151     src/archiver_iso9660.c
   142     #custom files from Hedgewars
       
   143     extras/physfsrwops.c
       
   144     extras/physfslualoader.c
       
   145     extras/hwpacksmounter.c
       
   146     extras/physfsfgets.c
       
   147     ${PHYSFS_BEOS_SRCS}
   152     ${PHYSFS_BEOS_SRCS}
       
   153     ${PHYSFS_HEDGE_SRCS} ##
   148 )
   154 )
   149 
   155 
   150 
   156 
   151 # platform layers ...
   157 # platform layers ...
   152 
   158 
   153 IF(UNIX)
   159 if(UNIX)
   154     IF(BEOS)
   160     if(BEOS)
   155         SET(PHYSFS_HAVE_CDROM_SUPPORT TRUE)
   161         set(PHYSFS_HAVE_CDROM_SUPPORT TRUE)
   156         SET(PHYSFS_HAVE_THREAD_SUPPORT TRUE)
   162         set(PHYSFS_HAVE_THREAD_SUPPORT TRUE)
   157         SET(HAVE_PTHREAD_H TRUE)
   163         set(HAVE_PTHREAD_H TRUE)
   158     ELSE(BEOS)
   164     else(BEOS)
   159         CHECK_INCLUDE_FILE(sys/ucred.h HAVE_UCRED_H)
   165         CHECK_INCLUDE_FILE(sys/ucred.h HAVE_UCRED_H)
   160         IF(HAVE_UCRED_H)
   166         if(HAVE_UCRED_H)
   161             ADD_DEFINITIONS(-DPHYSFS_HAVE_SYS_UCRED_H=1)
   167             add_definitions(-DPHYSFS_HAVE_SYS_UCRED_H=1)
   162             SET(PHYSFS_HAVE_CDROM_SUPPORT TRUE)
   168             set(PHYSFS_HAVE_CDROM_SUPPORT TRUE)
   163         ENDIF(HAVE_UCRED_H)
   169         endif(HAVE_UCRED_H)
   164 
   170 
   165         CHECK_INCLUDE_FILE(mntent.h HAVE_MNTENT_H)
   171         CHECK_INCLUDE_FILE(mntent.h HAVE_MNTENT_H)
   166         IF(HAVE_MNTENT_H)
   172         if(HAVE_MNTENT_H)
   167             ADD_DEFINITIONS(-DPHYSFS_HAVE_MNTENT_H=1)
   173             add_definitions(-DPHYSFS_HAVE_MNTENT_H=1)
   168             SET(PHYSFS_HAVE_CDROM_SUPPORT TRUE)
   174             set(PHYSFS_HAVE_CDROM_SUPPORT TRUE)
   169         ENDIF(HAVE_MNTENT_H)
   175         endif(HAVE_MNTENT_H)
   170 
   176 
   171         # !!! FIXME: Solaris fails this, because mnttab.h implicitly
   177         # !!! FIXME: Solaris fails this, because mnttab.h implicitly
   172         # !!! FIXME:  depends on other system headers.  :(
   178         # !!! FIXME:  depends on other system headers.  :(
   173         #CHECK_INCLUDE_FILE(sys/mnttab.h HAVE_SYS_MNTTAB_H)
   179         #CHECK_INCLUDE_FILE(sys/mnttab.h HAVE_SYS_MNTTAB_H)
   174         CHECK_C_SOURCE_COMPILES("
   180         CHECK_C_SOURCE_COMPILES("
   175             #include <stdio.h>
   181             #include <stdio.h>
   176             #include <sys/mnttab.h>
   182             #include <sys/mnttab.h>
   177             int main(int argc, char **argv) { return 0; }
   183             int main(int argc, char **argv) { return 0; }
   178         " HAVE_SYS_MNTTAB_H)
   184         " HAVE_SYS_MNTTAB_H)
   179 
   185 
   180         IF(HAVE_SYS_MNTTAB_H)
   186         if(HAVE_SYS_MNTTAB_H)
   181             ADD_DEFINITIONS(-DPHYSFS_HAVE_SYS_MNTTAB_H=1)
   187             add_definitions(-DPHYSFS_HAVE_SYS_MNTTAB_H=1)
   182             SET(PHYSFS_HAVE_CDROM_SUPPORT TRUE)
   188             set(PHYSFS_HAVE_CDROM_SUPPORT TRUE)
   183         ENDIF(HAVE_SYS_MNTTAB_H)
   189         endif(HAVE_SYS_MNTTAB_H)
   184 
   190 
   185         CHECK_INCLUDE_FILE(pthread.h HAVE_PTHREAD_H)
   191         CHECK_INCLUDE_FILE(pthread.h HAVE_PTHREAD_H)
   186         IF(HAVE_PTHREAD_H)
   192         if(HAVE_PTHREAD_H)
   187             SET(PHYSFS_HAVE_THREAD_SUPPORT TRUE)
   193             set(PHYSFS_HAVE_THREAD_SUPPORT TRUE)
   188         ENDIF(HAVE_PTHREAD_H)
   194         endif(HAVE_PTHREAD_H)
   189     ENDIF(BEOS)
   195     endif(BEOS)
   190 ENDIF(UNIX)
   196 endif(UNIX)
   191 
   197 
   192 IF(WINDOWS)
   198 if(WINDOWS)
   193     SET(PHYSFS_HAVE_CDROM_SUPPORT TRUE)
   199     set(PHYSFS_HAVE_CDROM_SUPPORT TRUE)
   194     SET(PHYSFS_HAVE_THREAD_SUPPORT TRUE)
   200     set(PHYSFS_HAVE_THREAD_SUPPORT TRUE)
   195 ENDIF(WINDOWS)
   201 endif(WINDOWS)
   196 
   202 
   197 IF(NOT PHYSFS_HAVE_CDROM_SUPPORT)
   203 if(NOT PHYSFS_HAVE_CDROM_SUPPORT)
   198     ADD_DEFINITIONS(-DPHYSFS_NO_CDROM_SUPPORT=1)
   204     add_definitions(-DPHYSFS_NO_CDROM_SUPPORT=1)
   199     MESSAGE(WARNING " ***")
   205     message(WARNING " ***")
   200     MESSAGE(WARNING " *** There is no CD-ROM support in this build!")
   206     message(WARNING " *** There is no CD-ROM support in this build!")
   201     MESSAGE(WARNING " *** PhysicsFS will just pretend there are no discs.")
   207     message(WARNING " *** PhysicsFS will just pretend there are no discs.")
   202     MESSAGE(WARNING " *** This may be fine, depending on how PhysicsFS is used,")
   208     message(WARNING " *** This may be fine, depending on how PhysicsFS is used,")
   203     MESSAGE(WARNING " ***   but is this what you REALLY wanted?")
   209     message(WARNING " ***   but is this what you REALLY wanted?")
   204     MESSAGE(WARNING " *** (Maybe fix CMakeLists.txt, or write a platform driver?)")
   210     message(WARNING " *** (Maybe fix CMakeLists.txt, or write a platform driver?)")
   205     MESSAGE(WARNING " ***")
   211     message(WARNING " ***")
   206 ENDIF(NOT PHYSFS_HAVE_CDROM_SUPPORT)
   212 endif(NOT PHYSFS_HAVE_CDROM_SUPPORT)
   207 
   213 
   208 IF(PHYSFS_HAVE_THREAD_SUPPORT)
   214 if(PHYSFS_HAVE_THREAD_SUPPORT)
   209     ADD_DEFINITIONS(-D_REENTRANT -D_THREAD_SAFE)
   215     add_definitions(-D_REENTRANT -D_THREAD_SAFE)
   210 ELSE(PHYSFS_HAVE_THREAD_SUPPORT)
   216 else(PHYSFS_HAVE_THREAD_SUPPORT)
   211     ADD_DEFINITIONS(-DPHYSFS_NO_THREAD_SUPPORT=1)
   217     add_definitions(-DPHYSFS_NO_THREAD_SUPPORT=1)
   212     MESSAGE(WARNING " ***")
   218     message(WARNING " ***")
   213     MESSAGE(WARNING " *** There is no thread support in this build!")
   219     message(WARNING " *** There is no thread support in this build!")
   214     MESSAGE(WARNING " *** PhysicsFS will NOT be reentrant!")
   220     message(WARNING " *** PhysicsFS will NOT be reentrant!")
   215     MESSAGE(WARNING " *** This may be fine, depending on how PhysicsFS is used,")
   221     message(WARNING " *** This may be fine, depending on how PhysicsFS is used,")
   216     MESSAGE(WARNING " ***   but is this what you REALLY wanted?")
   222     message(WARNING " ***   but is this what you REALLY wanted?")
   217     MESSAGE(WARNING " *** (Maybe fix CMakeLists.txt, or write a platform driver?)")
   223     message(WARNING " *** (Maybe fix CMakeLists.txt, or write a platform driver?)")
   218     MESSAGE(WARNING " ***")
   224     message(WARNING " ***")
   219 ENDIF(PHYSFS_HAVE_THREAD_SUPPORT)
   225 endif(PHYSFS_HAVE_THREAD_SUPPORT)
   220 
   226 
   221 
   227 
   222 # Archivers ...
   228 # Archivers ...
   223 
   229 
   224 OPTION(PHYSFS_ARCHIVE_ZIP "Enable ZIP support" TRUE)
   230 option(PHYSFS_ARCHIVE_ZIP "Enable ZIP support" TRUE)
   225 IF(PHYSFS_ARCHIVE_ZIP)
   231 if(PHYSFS_ARCHIVE_ZIP)
   226     ADD_DEFINITIONS(-DPHYSFS_SUPPORTS_ZIP=1)
   232     add_definitions(-DPHYSFS_SUPPORTS_ZIP=1)
   227 ENDIF(PHYSFS_ARCHIVE_ZIP)
   233     set(PHYSFS_FEATURES "ZIP")
   228 
   234 endif(PHYSFS_ARCHIVE_ZIP)
   229 OPTION(PHYSFS_ARCHIVE_7Z "Enable 7zip support" FALSE)
   235 
   230 IF(PHYSFS_ARCHIVE_7Z)
   236 option(PHYSFS_ARCHIVE_7Z "Enable 7zip support" FALSE)
   231     ADD_DEFINITIONS(-DPHYSFS_SUPPORTS_7Z=1)
   237 if(PHYSFS_ARCHIVE_7Z)
   232     # !!! FIXME: rename to 7z.c?
   238     add_definitions(-DPHYSFS_SUPPORTS_7Z=1)
   233     SET(PHYSFS_SRCS ${PHYSFS_SRCS} ${LZMA_SRCS})
   239     list(APPEND PHYSFS_SRCS ${LZMA_SRCS})
   234 ENDIF(PHYSFS_ARCHIVE_7Z)
   240     set(PHYSFS_FEATURES "${PHYSFS_FEATURES} 7zip")
   235 
   241 endif(PHYSFS_ARCHIVE_7Z)
   236 OPTION(PHYSFS_ARCHIVE_GRP "Enable Build Engine GRP support" TRUE)
   242 
   237 IF(PHYSFS_ARCHIVE_GRP)
   243 option(PHYSFS_ARCHIVE_GRP "Enable Build Engine GRP support" TRUE)
   238     ADD_DEFINITIONS(-DPHYSFS_SUPPORTS_GRP=1)
   244 if(PHYSFS_ARCHIVE_GRP)
   239 ENDIF(PHYSFS_ARCHIVE_GRP)
   245     add_definitions(-DPHYSFS_SUPPORTS_GRP=1)
   240 
   246     set(PHYSFS_FEATURES "${PHYSFS_FEATURES} GRP")
   241 OPTION(PHYSFS_ARCHIVE_WAD "Enable Doom WAD support" TRUE)
   247 endif(PHYSFS_ARCHIVE_GRP)
   242 IF(PHYSFS_ARCHIVE_WAD)
   248 
   243     ADD_DEFINITIONS(-DPHYSFS_SUPPORTS_WAD=1)
   249 option(PHYSFS_ARCHIVE_WAD "Enable Doom WAD support" TRUE)
   244 ENDIF(PHYSFS_ARCHIVE_WAD)
   250 if(PHYSFS_ARCHIVE_WAD)
   245 
   251     add_definitions(-DPHYSFS_SUPPORTS_WAD=1)
   246 OPTION(PHYSFS_ARCHIVE_HOG "Enable Descent I/II HOG support" TRUE)
   252     set(PHYSFS_FEATURES "${PHYSFS_FEATURES} WAD")
   247 IF(PHYSFS_ARCHIVE_HOG)
   253 endif(PHYSFS_ARCHIVE_WAD)
   248     ADD_DEFINITIONS(-DPHYSFS_SUPPORTS_HOG=1)
   254 
   249 ENDIF(PHYSFS_ARCHIVE_HOG)
   255 option(PHYSFS_ARCHIVE_HOG "Enable Descent I/II HOG support" TRUE)
   250 
   256 if(PHYSFS_ARCHIVE_HOG)
   251 OPTION(PHYSFS_ARCHIVE_MVL "Enable Descent I/II MVL support" TRUE)
   257     add_definitions(-DPHYSFS_SUPPORTS_HOG=1)
   252 IF(PHYSFS_ARCHIVE_MVL)
   258     set(PHYSFS_FEATURES "${PHYSFS_FEATURES} HOG")
   253     ADD_DEFINITIONS(-DPHYSFS_SUPPORTS_MVL=1)
   259 endif(PHYSFS_ARCHIVE_HOG)
   254 ENDIF(PHYSFS_ARCHIVE_MVL)
   260 
   255 
   261 option(PHYSFS_ARCHIVE_MVL "Enable Descent I/II MVL support" TRUE)
   256 OPTION(PHYSFS_ARCHIVE_QPAK "Enable Quake I/II QPAK support" TRUE)
   262 if(PHYSFS_ARCHIVE_MVL)
   257 IF(PHYSFS_ARCHIVE_QPAK)
   263     add_definitions(-DPHYSFS_SUPPORTS_MVL=1)
   258     ADD_DEFINITIONS(-DPHYSFS_SUPPORTS_QPAK=1)
   264     set(PHYSFS_FEATURES "${PHYSFS_FEATURES} MVL")
   259 ENDIF(PHYSFS_ARCHIVE_QPAK)
   265 endif(PHYSFS_ARCHIVE_MVL)
   260 
   266 
   261 OPTION(PHYSFS_ARCHIVE_ISO9660 "Enable ISO9660 support" TRUE)
   267 option(PHYSFS_ARCHIVE_QPAK "Enable Quake I/II QPAK support" TRUE)
   262 IF(PHYSFS_ARCHIVE_ISO9660)
   268 if(PHYSFS_ARCHIVE_QPAK)
   263     ADD_DEFINITIONS(-DPHYSFS_SUPPORTS_ISO9660=1)
   269     add_definitions(-DPHYSFS_SUPPORTS_QPAK=1)
   264 ENDIF(PHYSFS_ARCHIVE_ISO9660)
   270     set(PHYSFS_FEATURES "${PHYSFS_FEATURES} QPAK")
   265 
   271 endif(PHYSFS_ARCHIVE_QPAK)
   266 #as needed by Hedgewars configuration
   272 
   267 IF(WINDOWS)
   273 option(PHYSFS_ARCHIVE_ISO9660 "Enable ISO9660 support" TRUE)
   268     OPTION(PHYSFS_BUILD_STATIC "Build static library" FALSE)
   274 if(PHYSFS_ARCHIVE_ISO9660)
   269     OPTION(PHYSFS_BUILD_SHARED "Build shared library" TRUE)
   275     add_definitions(-DPHYSFS_SUPPORTS_ISO9660=1)
   270     SET(OTHER_LDFLAGS ${OTHER_LDFLAGS} ${SDL_LIBRARY})
   276     set(PHYSFS_FEATURES "${PHYSFS_FEATURES} CD-ROM")
   271 ELSE(WINDOWS)
   277 endif(PHYSFS_ARCHIVE_ISO9660)
   272     OPTION(PHYSFS_BUILD_STATIC "Build static library" TRUE)
   278 
   273     OPTION(PHYSFS_BUILD_SHARED "Build shared library" FALSE)
   279 ##as needed by Hedgewars configuration
   274 ENDIF(WINDOWS)
   280 if(WINDOWS)
   275 
   281     option(PHYSFS_BUILD_STATIC "Build static library" FALSE)
   276 IF(PHYSFS_BUILD_STATIC)
   282     option(PHYSFS_BUILD_SHARED "Build shared library" TRUE)
   277     ADD_LIBRARY(physfs STATIC ${PHYSFS_SRCS})
   283     list(APPEND OTHER_LDFLAGS ${SDL_LIBRARY})
   278     SET_TARGET_PROPERTIES(physfs PROPERTIES OUTPUT_NAME "physfs")
   284 else(WINDOWS)
   279     SET(PHYSFS_LIB_TARGET physfs)
   285     option(PHYSFS_BUILD_STATIC "Build static library" TRUE)
   280     SET(PHYSFS_INSTALL_TARGETS ${PHYSFS_INSTALL_TARGETS} ";physfs")
   286     option(PHYSFS_BUILD_SHARED "Build shared library" FALSE)
   281 ENDIF(PHYSFS_BUILD_STATIC)
   287 endif(WINDOWS)
   282 
   288 
   283 IF(PHYSFS_BUILD_SHARED)
   289 if(PHYSFS_BUILD_STATIC)
   284     ADD_LIBRARY(physfs SHARED ${PHYSFS_SRCS})
   290     add_library(physfs STATIC ${PHYSFS_SRCS})
   285     SET_TARGET_PROPERTIES(physfs PROPERTIES VERSION ${PHYSFS_VERSION})
   291     set_target_properties(physfs PROPERTIES OUTPUT_NAME "physfs")
   286     SET_TARGET_PROPERTIES(physfs PROPERTIES SOVERSION ${PHYSFS_SOVERSION})
   292 endif(PHYSFS_BUILD_STATIC)
   287     TARGET_LINK_LIBRARIES(physfs ${OPTIONAL_LIBRARY_LIBS} ${OTHER_LDFLAGS})
   293 
   288     SET(PHYSFS_LIB_TARGET physfs)
   294 if(PHYSFS_BUILD_SHARED)
   289     SET(PHYSFS_INSTALL_TARGETS ${PHYSFS_INSTALL_TARGETS} ";physfs")
   295     add_library(physfs SHARED ${PHYSFS_SRCS})
   290     INSTALL(TARGETS ${PHYSFS_INSTALL_TARGETS}
   296     set_target_properties(physfs PROPERTIES VERSION ${PHYSFS_VERSION})
   291             RUNTIME DESTINATION ${LIBRARY_OUTPUT_PATH})
   297     set_target_properties(physfs PROPERTIES SOVERSION ${PHYSFS_SOVERSION})
   292 ENDIF(PHYSFS_BUILD_SHARED)
   298     target_link_libraries(physfs ${optionAL_LIBRARY_LIBS} ${OTHER_LDFLAGS})
   293 
   299     install(TARGETS physfs RUNTIME DESTINATION ${target_library_install_dir}) ##
   294 IF(NOT PHYSFS_BUILD_SHARED AND NOT PHYSFS_BUILD_STATIC)
   300 endif(PHYSFS_BUILD_SHARED)
   295     MESSAGE(FATAL "Both shared and static libraries are disabled!")
   301 
   296 ENDIF(NOT PHYSFS_BUILD_SHARED AND NOT PHYSFS_BUILD_STATIC)
   302 if(NOT PHYSFS_BUILD_SHARED AND NOT PHYSFS_BUILD_STATIC)
       
   303     message(FATAL "Both shared and static libraries are disabled!")
       
   304 endif(NOT PHYSFS_BUILD_SHARED AND NOT PHYSFS_BUILD_STATIC)
   297 
   305 
   298 # CMake FAQ says I need this...
   306 # CMake FAQ says I need this...
   299 IF(PHYSFS_BUILD_SHARED AND PHYSFS_BUILD_STATIC)
   307 if(PHYSFS_BUILD_SHARED AND PHYSFS_BUILD_STATIC)
   300     SET_TARGET_PROPERTIES(physfs PROPERTIES CLEAN_DIRECT_OUTPUT 1)
   308     set_target_properties(physfs PROPERTIES CLEAN_DIRECT_OUTPUT 1)
   301 ENDIF(PHYSFS_BUILD_SHARED AND PHYSFS_BUILD_STATIC)
   309 endif(PHYSFS_BUILD_SHARED AND PHYSFS_BUILD_STATIC)
   302 
   310 
   303 OPTION(PHYSFS_BUILD_TEST "Build stdio test program." FALSE)
   311 
   304 MARK_AS_ADVANCED(PHYSFS_BUILD_TEST)
   312 ## removed install, language bindings and test program
   305 IF(PHYSFS_BUILD_TEST)
   313 ## simplified configuration output
   306     FIND_PATH(READLINE_H readline/readline.h)
   314 
   307     FIND_PATH(HISTORY_H readline/history.h)
   315 message(STATUS "PhysicsFS will build with ${PHYSFS_FEATURES} support")
   308     IF(READLINE_H AND HISTORY_H)
   316 
   309         FIND_LIBRARY(CURSES_LIBRARY NAMES curses ncurses)
       
   310         SET(CMAKE_REQUIRED_LIBRARIES ${CURSES_LIBRARY})
       
   311         FIND_LIBRARY(READLINE_LIBRARY readline)
       
   312         IF(READLINE_LIBRARY)
       
   313             SET(HAVE_SYSTEM_READLINE TRUE)
       
   314             SET(TEST_PHYSFS_LIBS ${TEST_PHYSFS_LIBS} ${READLINE_LIBRARY} ${CURSES_LIBRARY})
       
   315             INCLUDE_DIRECTORIES(${READLINE_H} ${HISTORY_H})
       
   316             ADD_DEFINITIONS(-DPHYSFS_HAVE_READLINE=1)
       
   317         ENDIF(READLINE_LIBRARY)
       
   318     ENDIF(READLINE_H AND HISTORY_H)
       
   319     ADD_EXECUTABLE(test_physfs test/test_physfs.c)
       
   320     TARGET_LINK_LIBRARIES(test_physfs ${PHYSFS_LIB_TARGET} ${TEST_PHYSFS_LIBS} ${OTHER_LDFLAGS})
       
   321     SET(PHYSFS_INSTALL_TARGETS ${PHYSFS_INSTALL_TARGETS} ";test_physfs")
       
   322 ENDIF(PHYSFS_BUILD_TEST)
       
   323 
       
   324 
       
   325 # Scripting language bindings...
       
   326 
       
   327 #CMake's SWIG support is basically useless.
       
   328 #FIND_PACKAGE(SWIG)
       
   329 
       
   330 OPTION(PHYSFS_BUILD_SWIG "Build ${_LANG} bindings." FALSE)
       
   331 MARK_AS_ADVANCED(PHYSFS_BUILD_SWIG)
       
   332 
       
   333 FIND_PROGRAM(SWIG swig DOC "Path to swig command line app: http://swig.org/")
       
   334 IF(NOT SWIG)
       
   335     MESSAGE(STATUS "SWIG not found. You won't be able to build scripting language bindings.")
       
   336 ELSE(NOT SWIG)
       
   337     MARK_AS_ADVANCED(SWIG)
       
   338     IF(DEFINED CMAKE_BUILD_TYPE)
       
   339         IF((NOT CMAKE_BUILD_TYPE STREQUAL "") AND (NOT CMAKE_BUILD_TYPE STREQUAL "Debug"))
       
   340             IF(CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
       
   341                 SET(SWIG_OPT_CFLAGS "-small")
       
   342             ELSE(CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
       
   343                 SET(SWIG_OPT_CFLAGS "-O")
       
   344             ENDIF(CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
       
   345         ENDIF((NOT CMAKE_BUILD_TYPE STREQUAL "") AND (NOT CMAKE_BUILD_TYPE STREQUAL "Debug"))
       
   346     ENDIF(DEFINED CMAKE_BUILD_TYPE)
       
   347 
       
   348     SET(SWIG_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/physfs-swig-bindings")
       
   349 
       
   350     MACRO(CONFIGURE_SWIG_BINDING _LANG _INSTALLPATH _EXTRAOUTPUTS _EXTRACFLAGS _EXTRALDFLAGS)
       
   351         STRING(TOUPPER "${_LANG}" _UPPERLANG)
       
   352         STRING(TOLOWER "${_LANG}" _LOWERLANG)
       
   353         SET(_TARGET "physfs-${_LOWERLANG}")
       
   354         SET(_TARGETDIR "${SWIG_OUTPUT_DIR}/${_LOWERLANG}")
       
   355 
       
   356         IF(NOT EXISTS "${_TARGETDIR}")
       
   357             FILE(MAKE_DIRECTORY "${_TARGETDIR}")
       
   358         ENDIF(NOT EXISTS "${_TARGETDIR}")
       
   359 
       
   360         IF(PHYSFS_BUILD_${_UPPERLANG})
       
   361             ADD_CUSTOM_COMMAND(
       
   362                 OUTPUT "${_TARGETDIR}/${_TARGET}.c" ${_EXTRAOUTPUTS}
       
   363                 MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/extras/physfs-swig.i"
       
   364                 COMMAND "${SWIG}"
       
   365                 ARGS ${SWIG_OPT_CFLAGS} -${_LOWERLANG} -outdir "${_TARGETDIR}" -o "${_TARGETDIR}/${_TARGET}.c" "${CMAKE_CURRENT_SOURCE_DIR}/extras/physfs-swig.i"
       
   366                 COMMENT "Generating ${_LANG} bindings..."
       
   367             )
       
   368 
       
   369             ADD_LIBRARY(${_TARGET} SHARED "${_TARGETDIR}/${_TARGET}.c")
       
   370             TARGET_LINK_LIBRARIES(${_TARGET} ${PHYSFS_LIB_TARGET})
       
   371             SET_TARGET_PROPERTIES(${_TARGET} PROPERTIES
       
   372                 COMPILE_FLAGS "${_EXTRACFLAGS}"
       
   373                 LINK_FLAGS "${_EXTRALDFLAGS}"
       
   374                 LIBRARY_OUTPUT_NAME "physfs"
       
   375                 LIBRARY_OUTPUT_DIRECTORY "${_TARGETDIR}"
       
   376                 CLEAN_DIRECT_OUTPUT 1
       
   377             )
       
   378             INSTALL(TARGETS ${_TARGET} LIBRARY DESTINATION "${_INSTALLPATH}")
       
   379             MESSAGE(STATUS "${_LANG} bindings configured!")
       
   380         ELSE(PHYSFS_BUILD_${_UPPERLANG})
       
   381             MESSAGE(STATUS "Couldn't figure out ${_LANG} configuration. Skipping ${_LANG} bindings.")
       
   382         ENDIF(PHYSFS_BUILD_${_UPPERLANG})
       
   383     ENDMACRO(CONFIGURE_SWIG_BINDING)
       
   384 
       
   385     MACRO(ADD_SCRIPT_BINDING_OPTION _VAR _LANG _DEFVAL)
       
   386         SET(BUILDSWIGVAL ${_DEFVAL})
       
   387         IF(NOT PHYSFS_BUILD_SWIG)
       
   388             SET(BUILDSWIGVAL FALSE)
       
   389         ENDIF(NOT PHYSFS_BUILD_SWIG)
       
   390         OPTION(${_VAR} "Build ${_LANG} bindings." ${BUILDSWIGVAL})
       
   391         MARK_AS_ADVANCED(${_VAR})
       
   392     ENDMACRO(ADD_SCRIPT_BINDING_OPTION)
       
   393 
       
   394     ADD_SCRIPT_BINDING_OPTION(PHYSFS_BUILD_PERL "Perl" TRUE)
       
   395     ADD_SCRIPT_BINDING_OPTION(PHYSFS_BUILD_RUBY "Ruby" TRUE)
       
   396 ENDIF(NOT SWIG)
       
   397 
       
   398 IF(PHYSFS_BUILD_PERL)
       
   399     MESSAGE(STATUS "Configuring Perl bindings...")
       
   400     FIND_PROGRAM(PERL perl DOC "Path to perl command line app: http://perl.org/")
       
   401     IF(NOT PERL)
       
   402         MESSAGE(STATUS "Perl not found. You won't be able to build perl bindings.")
       
   403         SET(PHYSFS_BUILD_PERL FALSE)
       
   404     ENDIF(NOT PERL)
       
   405     MARK_AS_ADVANCED(PERL)
       
   406 
       
   407     MACRO(GET_PERL_CONFIG _KEY _VALUE)
       
   408         IF(PHYSFS_BUILD_PERL)
       
   409             MESSAGE(STATUS "Figuring out perl config value '${_KEY}' ...")
       
   410             EXECUTE_PROCESS(
       
   411                 COMMAND ${PERL} -w -e "use Config; print \$Config{${_KEY}};"
       
   412                 RESULT_VARIABLE GET_PERL_CONFIG_RC
       
   413                 OUTPUT_VARIABLE ${_VALUE}
       
   414             )
       
   415             IF(NOT GET_PERL_CONFIG_RC EQUAL 0)
       
   416                 MESSAGE(STATUS "Perl executable ('${PERL}') reported failure: ${GET_PERL_CONFIG_RC}")
       
   417                 SET(PHYSFS_BUILD_PERL FALSE)
       
   418             ENDIF(NOT GET_PERL_CONFIG_RC EQUAL 0)
       
   419             IF(NOT ${_VALUE})
       
   420                 MESSAGE(STATUS "Perl executable ('${PERL}') didn't have a value for '${_KEY}'")
       
   421                 SET(PHYSFS_BUILD_PERL FALSE)
       
   422             ENDIF(NOT ${_VALUE})
       
   423 
       
   424             IF(PHYSFS_BUILD_PERL)
       
   425                 MESSAGE(STATUS "Perl says: '${${_VALUE}}'.")
       
   426             ENDIF(PHYSFS_BUILD_PERL)
       
   427         ENDIF(PHYSFS_BUILD_PERL)
       
   428     ENDMACRO(GET_PERL_CONFIG)
       
   429 
       
   430     # !!! FIXME: installsitearch might be the wrong location.
       
   431     GET_PERL_CONFIG("archlibexp" PERL_INCLUDE_PATH)
       
   432     GET_PERL_CONFIG("ccflags" PERL_CCFLAGS)
       
   433     GET_PERL_CONFIG("ldflags" PERL_LDFLAGS)
       
   434     GET_PERL_CONFIG("installsitearch" PERL_INSTALL_PATH)
       
   435 
       
   436     # !!! FIXME: this test for Mac OS X is wrong.
       
   437     IF(MACOSX)
       
   438         GET_PERL_CONFIG("libperl" PERL_LIBPERL)
       
   439         SET(TMPLIBPERL "${PERL_LIBPERL}")
       
   440         STRING(REGEX REPLACE "^lib" "" TMPLIBPERL "${TMPLIBPERL}")
       
   441         STRING(REGEX REPLACE "\\.so$" "" TMPLIBPERL "${TMPLIBPERL}")
       
   442         STRING(REGEX REPLACE "\\.dylib$" "" TMPLIBPERL "${TMPLIBPERL}")
       
   443         STRING(REGEX REPLACE "\\.dll$" "" TMPLIBPERL "${TMPLIBPERL}")
       
   444         IF(NOT "${TMPLIBPERL}" STREQUAL "${PERL_LIBPERL}")
       
   445             MESSAGE(STATUS "Stripped '${PERL_LIBPERL}' down to '${TMPLIBPERL}'.")
       
   446             SET(PERL_LIBPERL "${TMPLIBPERL}")
       
   447         ENDIF(NOT "${TMPLIBPERL}" STREQUAL "${PERL_LIBPERL}")
       
   448         SET(PERL_LIBPERL "-l${PERL_LIBPERL}")
       
   449     ENDIF(MACOSX)
       
   450 
       
   451     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}")
       
   452     INSTALL(FILES "${SWIG_OUTPUT_DIR}/perl/physfs.pm" DESTINATION "${PERL_INSTALL_PATH}")
       
   453     INSTALL(
       
   454         FILES test/test_physfs.pl
       
   455         DESTINATION bin
       
   456         PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
       
   457                     GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
       
   458     )
       
   459 ENDIF(PHYSFS_BUILD_PERL)
       
   460 
       
   461 # !!! FIXME: lots of cut-and-paste from perl bindings.
       
   462 IF(PHYSFS_BUILD_RUBY)
       
   463     MESSAGE(STATUS "Configuring Ruby bindings...")
       
   464     FIND_PROGRAM(RUBY ruby DOC "Path to ruby command line app: http://ruby-lang.org/")
       
   465     IF(NOT RUBY)
       
   466         MESSAGE(STATUS "Ruby not found. You won't be able to build ruby bindings.")
       
   467         SET(PHYSFS_BUILD_RUBY FALSE)
       
   468     ENDIF(NOT RUBY)
       
   469     MARK_AS_ADVANCED(RUBY)
       
   470 
       
   471     MACRO(GET_RUBY_CONFIG _KEY _VALUE)
       
   472         IF(PHYSFS_BUILD_RUBY)
       
   473             MESSAGE(STATUS "Figuring out ruby config value '${_KEY}' ...")
       
   474             EXECUTE_PROCESS(
       
   475                 COMMAND ${RUBY} -e "require 'rbconfig'; puts RbConfig::CONFIG['${_KEY}'];"
       
   476                 RESULT_VARIABLE GET_RUBY_CONFIG_RC
       
   477                 OUTPUT_VARIABLE ${_VALUE}
       
   478                 OUTPUT_STRIP_TRAILING_WHITESPACE
       
   479             )
       
   480             IF(NOT GET_RUBY_CONFIG_RC EQUAL 0)
       
   481                 MESSAGE(STATUS "Ruby executable ('${RUBY}') reported failure: ${GET_RUBY_CONFIG_RC}")
       
   482                 SET(PHYSFS_BUILD_RUBY FALSE)
       
   483             ENDIF(NOT GET_RUBY_CONFIG_RC EQUAL 0)
       
   484             IF(NOT ${_VALUE})
       
   485                 MESSAGE(STATUS "Ruby executable ('${RUBY}') didn't have a value for '${_KEY}'")
       
   486                 SET(PHYSFS_BUILD_RUBY FALSE)
       
   487             ENDIF(NOT ${_VALUE})
       
   488 
       
   489             IF(PHYSFS_BUILD_RUBY)
       
   490                 MESSAGE(STATUS "Ruby says: '${${_VALUE}}'.")
       
   491             ENDIF(PHYSFS_BUILD_RUBY)
       
   492         ENDIF(PHYSFS_BUILD_RUBY)
       
   493     ENDMACRO(GET_RUBY_CONFIG)
       
   494 
       
   495     GET_RUBY_CONFIG("archdir" RUBY_INCLUDE_PATH)
       
   496     GET_RUBY_CONFIG("CFLAGS" RUBY_CCFLAGS)
       
   497     GET_RUBY_CONFIG("LDFLAGS" RUBY_LDFLAGS)
       
   498     GET_RUBY_CONFIG("sitearchdir" RUBY_INSTALL_PATH)
       
   499     GET_RUBY_CONFIG("LIBRUBYARG_SHARED" RUBY_LIBRUBY)
       
   500     GET_RUBY_CONFIG("libdir" RUBY_LIBDIR)
       
   501 
       
   502     CONFIGURE_SWIG_BINDING(Ruby "${RUBY_INSTALL_PATH}" "" "\"-I${RUBY_INCLUDE_PATH}\" ${RUBY_CCFLAGS} -w" "\"-L${RUBY_LIBDIR}\" ${RUBY_LIBRUBY} ${RUBY_LDFLAGS}")
       
   503     SET_TARGET_PROPERTIES(physfs-ruby PROPERTIES PREFIX "")
       
   504     INSTALL(
       
   505         FILES test/test_physfs.rb
       
   506         DESTINATION bin
       
   507         PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
       
   508                     GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
       
   509     )
       
   510 ENDIF(PHYSFS_BUILD_RUBY)
       
   511 
       
   512 
       
   513 #INSTALL(TARGETS ${PHYSFS_INSTALL_TARGETS}
       
   514 #        RUNTIME DESTINATION bin
       
   515 #        LIBRARY DESTINATION lib${LIB_SUFFIX}
       
   516 #        ARCHIVE DESTINATION lib${LIB_SUFFIX})
       
   517 #INSTALL(FILES src/physfs.h DESTINATION include)
       
   518 
       
   519 IF(UNIX)
       
   520     SET(PHYSFS_TARBALL "${CMAKE_CURRENT_SOURCE_DIR}/../physfs-${PHYSFS_VERSION}.tar.gz")
       
   521     ADD_CUSTOM_TARGET(
       
   522         dist
       
   523         hg archive -t tgz "${PHYSFS_TARBALL}"
       
   524         WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
       
   525         COMMENT "Building source tarball '${PHYSFS_TARBALL}'..."
       
   526     )
       
   527 #    ADD_CUSTOM_TARGET(
       
   528 #        uninstall
       
   529 #        "${CMAKE_CURRENT_SOURCE_DIR}/extras/uninstall.sh"
       
   530 #        WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
       
   531 #        COMMENT "Uninstall the project..."
       
   532 #    )
       
   533 ENDIF(UNIX)
       
   534 
       
   535 MACRO(MESSAGE_BOOL_OPTION _NAME _VALUE)
       
   536     IF(${_VALUE})
       
   537         MESSAGE(STATUS "  ${_NAME}: enabled")
       
   538     ELSE(${_VALUE})
       
   539         MESSAGE(STATUS "  ${_NAME}: disabled")
       
   540     ENDIF(${_VALUE})
       
   541 ENDMACRO(MESSAGE_BOOL_OPTION)
       
   542 
       
   543 MESSAGE(STATUS "PhysicsFS will build with the following options:")
       
   544 MESSAGE_BOOL_OPTION("ZIP support" PHYSFS_ARCHIVE_ZIP)
       
   545 MESSAGE_BOOL_OPTION("7zip support" PHYSFS_ARCHIVE_7Z)
       
   546 MESSAGE_BOOL_OPTION("GRP support" PHYSFS_ARCHIVE_GRP)
       
   547 MESSAGE_BOOL_OPTION("WAD support" PHYSFS_ARCHIVE_WAD)
       
   548 MESSAGE_BOOL_OPTION("HOG support" PHYSFS_ARCHIVE_HOG)
       
   549 MESSAGE_BOOL_OPTION("MVL support" PHYSFS_ARCHIVE_MVL)
       
   550 MESSAGE_BOOL_OPTION("QPAK support" PHYSFS_ARCHIVE_QPAK)
       
   551 MESSAGE_BOOL_OPTION("CD-ROM drive support" PHYSFS_HAVE_CDROM_SUPPORT)
       
   552 MESSAGE_BOOL_OPTION("Thread safety" PHYSFS_HAVE_THREAD_SUPPORT)
       
   553 MESSAGE_BOOL_OPTION("Build static library" PHYSFS_BUILD_STATIC)
       
   554 MESSAGE_BOOL_OPTION("Build shared library" PHYSFS_BUILD_SHARED)
       
   555 MESSAGE_BOOL_OPTION("Build Perl bindings" PHYSFS_BUILD_PERL)
       
   556 MESSAGE_BOOL_OPTION("Build Ruby bindings" PHYSFS_BUILD_RUBY)
       
   557 MESSAGE_BOOL_OPTION("Build stdio test program" PHYSFS_BUILD_TEST)
       
   558 IF(PHYSFS_BUILD_TEST)
       
   559     MESSAGE_BOOL_OPTION("  Use readline in test program" HAVE_SYSTEM_READLINE)
       
   560 ENDIF(PHYSFS_BUILD_TEST)
       
   561 
       
   562 # end of CMakeLists.txt ...
       
   563