From 94496e33027a952591808c5aaecaaee20c2dec4a Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 11 Mar 2007 08:37:01 +0000 Subject: [PATCH] Can now build shared or static (or both) libraries. --- CHANGELOG | 3 ++- CMakeLists.txt | 31 ++++++++++++++++++++++++++----- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 69e38225..bf9f01c1 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -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 diff --git a/CMakeLists.txt b/CMakeLists.txt index 5422eb1a..4f8f358e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -231,10 +231,29 @@ IF(PHYSFS_NEED_ZLIB) ENDIF(PHYSFS_INTERNAL_ZLIB) ENDIF(PHYSFS_NEED_ZLIB) - - -ADD_LIBRARY(physfs SHARED ${PHYSFS_SRCS}) -TARGET_LINK_LIBRARIES(physfs ${OPTIONAL_LIBRARY_LIBS} ${OTHER_LDFLAGS}) +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) + +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) @@ -252,7 +271,7 @@ IF(PHYSFS_BUILD_TEST) 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("QPAK support" PHYSFS_ARCHIVE_QPAK) 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)