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