r814 - trunk

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sun Mar 11 04:37:01 EDT 2007


Author: icculus
Date: 2007-03-11 04:37:01 -0400 (Sun, 11 Mar 2007)
New Revision: 814

Modified:
   trunk/CHANGELOG
   trunk/CMakeLists.txt
Log:
Can now build shared or static (or both) libraries.


Modified: trunk/CHANGELOG
===================================================================
--- trunk/CHANGELOG	2007-03-11 08:33:15 UTC (rev 813)
+++ trunk/CHANGELOG	2007-03-11 08:37:01 UTC (rev 814)
@@ -3,7 +3,8 @@
  */
 
 03112007 - Removed zlib_license_change.txt ... it's in Subversion and the 1.0
-           branch for history's sake.
+           branch for history's sake. Added shared and static build options
+           to CMakeLists.txt
 03082007 - Fixed a comment in physfs.h. Renamed win32.c to windows.c.
            Cleaned up whitespace/formatting in pocketpc.c. Updated PocketPC
            code to expect UTF-8 strings from the higher level. Changed

Modified: trunk/CMakeLists.txt
===================================================================
--- trunk/CMakeLists.txt	2007-03-11 08:33:15 UTC (rev 813)
+++ trunk/CMakeLists.txt	2007-03-11 08:37:01 UTC (rev 814)
@@ -231,11 +231,30 @@
     ENDIF(PHYSFS_INTERNAL_ZLIB)
 ENDIF(PHYSFS_NEED_ZLIB)
 
+OPTION(PHYSFS_BUILD_STATIC "Build static library" TRUE)
+IF(PHYSFS_BUILD_STATIC)
+    ADD_LIBRARY(physfs-static STATIC ${PHYSFS_SRCS})
+    SET_TARGET_PROPERTIES(physfs-static PROPERTIES OUTPUT_NAME "physfs")
+    SET(PHYSFS_LIB_TARGET physfs-static)
+ENDIF(PHYSFS_BUILD_STATIC)
 
+OPTION(PHYSFS_BUILD_SHARED "Build shared library" TRUE)
+IF(PHYSFS_BUILD_SHARED)
+    ADD_LIBRARY(physfs SHARED ${PHYSFS_SRCS})
+    TARGET_LINK_LIBRARIES(physfs ${OPTIONAL_LIBRARY_LIBS} ${OTHER_LDFLAGS})
+    SET(PHYSFS_LIB_TARGET physfs)
+ENDIF(PHYSFS_BUILD_SHARED)
 
-ADD_LIBRARY(physfs SHARED ${PHYSFS_SRCS})
-TARGET_LINK_LIBRARIES(physfs ${OPTIONAL_LIBRARY_LIBS} ${OTHER_LDFLAGS})
+IF(NOT PHYSFS_BUILD_SHARED AND NOT PHYSFS_BUILD_STATIC)
+    MESSAGE(FATAL "Both shared and static libraries are disabled!")
+ENDIF(NOT PHYSFS_BUILD_SHARED AND NOT PHYSFS_BUILD_STATIC)
 
+# CMake FAQ says I need this...
+IF(PHYSFS_BUILD_SHARED AND PHYSFS_BUILD_STATIC)
+    SET_TARGET_PROPERTIES(physfs PROPERTIES CLEAN_DIRECT_OUTPUT 1)
+    SET_TARGET_PROPERTIES(physfs-static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
+ENDIF(PHYSFS_BUILD_SHARED AND PHYSFS_BUILD_STATIC)
+
 OPTION(PHYSFS_BUILD_TEST "Build test program." TRUE)
 MARK_AS_ADVANCED(PHYSFS_BUILD_TEST)
 IF(PHYSFS_BUILD_TEST)
@@ -252,7 +271,7 @@
         ENDIF(HAVE_LIBREADLINE AND HAVE_LIBHISTORY)
     ENDIF(HAVE_READLINE_H AND HAVE_HISTORY_H)
     ADD_EXECUTABLE(test_physfs test/test_physfs.c)
-    TARGET_LINK_LIBRARIES(test_physfs physfs ${TEST_PHYSFS_LIBS} ${OTHER_LDFLAGS})
+    TARGET_LINK_LIBRARIES(test_physfs ${PHYSFS_LIB_TARGET} ${TEST_PHYSFS_LIBS} ${OTHER_LDFLAGS})
 ENDIF(PHYSFS_BUILD_TEST)
 
 FIND_PACKAGE(Doxygen)
@@ -282,6 +301,8 @@
 MESSAGE_BOOL_OPTION("CD-ROM drive support" PHYSFS_HAVE_CDROM_SUPPORT)
 MESSAGE_BOOL_OPTION("Thread safety" PHYSFS_HAVE_THREAD_SUPPORT)
 MESSAGE_BOOL_OPTION("Build own zlib" PHYSFS_INTERNAL_ZLIB)
+MESSAGE_BOOL_OPTION("Build static library" PHYSFS_BUILD_STATIC)
+MESSAGE_BOOL_OPTION("Build shared library" PHYSFS_BUILD_SHARED)
 MESSAGE_BOOL_OPTION("Build test program" PHYSFS_BUILD_TEST)
 IF(PHYSFS_BUILD_TEST)
     MESSAGE_BOOL_OPTION("  Use readline in test program" HAVE_SYSTEM_READLINE)




More information about the physfs-commits mailing list