|
|
@@ -303,195 +303,6 @@ if(PHYSFS_BUILD_TEST)
|
|
|
set(PHYSFS_INSTALL_TARGETS ${PHYSFS_INSTALL_TARGETS} ";test_physfs")
|
|
|
endif()
|
|
|
|
|
|
-
|
|
|
-# Scripting language bindings...
|
|
|
-
|
|
|
-#CMake's SWIG support is basically useless.
|
|
|
-#find_package(SWIG)
|
|
|
-
|
|
|
-option(PHYSFS_BUILD_SWIG "Build ${_LANG} bindings." TRUE)
|
|
|
-mark_as_advanced(PHYSFS_BUILD_SWIG)
|
|
|
-
|
|
|
-find_program(SWIG swig DOC "Path to swig command line app: http://swig.org/")
|
|
|
-if(NOT SWIG)
|
|
|
- message(STATUS "SWIG not found. You won't be able to build scripting language bindings.")
|
|
|
-else()
|
|
|
- mark_as_advanced(SWIG)
|
|
|
- if(DEFINED CMAKE_BUILD_TYPE)
|
|
|
- if((NOT CMAKE_BUILD_TYPE STREQUAL "") AND (NOT CMAKE_BUILD_TYPE STREQUAL "Debug"))
|
|
|
- if(CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
|
|
|
- set(SWIG_OPT_CFLAGS "-small")
|
|
|
- else()
|
|
|
- set(SWIG_OPT_CFLAGS "-O")
|
|
|
- endif()
|
|
|
- endif()
|
|
|
- endif()
|
|
|
-
|
|
|
- set(SWIG_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/physfs-swig-bindings")
|
|
|
-
|
|
|
- macro(configure_swig_binding _LANG _INSTALLPATH _EXTRAOUTPUTS _EXTRACFLAGS _EXTRALDFLAGS)
|
|
|
- string(TOUPPER "${_LANG}" _UPPERLANG)
|
|
|
- string(TOLOWER "${_LANG}" _LOWERLANG)
|
|
|
- set(_TARGET "physfs-${_LOWERLANG}")
|
|
|
- set(_TARGETDIR "${SWIG_OUTPUT_DIR}/${_LOWERLANG}")
|
|
|
-
|
|
|
- if(NOT EXISTS "${_TARGETDIR}")
|
|
|
- FILE(MAKE_DIRECTORY "${_TARGETDIR}")
|
|
|
- endif()
|
|
|
-
|
|
|
- if(PHYSFS_BUILD_${_UPPERLANG})
|
|
|
- add_custom_command(
|
|
|
- OUTPUT "${_TARGETDIR}/${_TARGET}.c" ${_EXTRAOUTPUTS}
|
|
|
- MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/extras/physfs-swig.i"
|
|
|
- COMMAND "${SWIG}"
|
|
|
- ARGS ${SWIG_OPT_CFLAGS} -${_LOWERLANG} -outdir "${_TARGETDIR}" -o "${_TARGETDIR}/${_TARGET}.c" "${CMAKE_CURRENT_SOURCE_DIR}/extras/physfs-swig.i"
|
|
|
- COMMENT "Generating ${_LANG} bindings..."
|
|
|
- )
|
|
|
-
|
|
|
- add_library(${_TARGET} SHARED "${_TARGETDIR}/${_TARGET}.c")
|
|
|
- target_link_libraries(${_TARGET} ${PHYSFS_LIB_TARGET})
|
|
|
- set_target_properties(${_TARGET} PROPERTIES
|
|
|
- COMPILE_FLAGS "${_EXTRACFLAGS}"
|
|
|
- LINK_FLAGS "${_EXTRALDFLAGS}"
|
|
|
- LIBRARY_OUTPUT_NAME "physfs"
|
|
|
- LIBRARY_OUTPUT_DIRECTORY "${_TARGETDIR}"
|
|
|
- CLEAN_DIRECT_OUTPUT 1
|
|
|
- )
|
|
|
- install(TARGETS ${_TARGET} LIBRARY DESTINATION "${_INSTALLPATH}")
|
|
|
- message(STATUS "${_LANG} bindings configured!")
|
|
|
- else()
|
|
|
- message(STATUS "Couldn't figure out ${_LANG} configuration. Skipping ${_LANG} bindings.")
|
|
|
- endif()
|
|
|
- endmacro()
|
|
|
-
|
|
|
- macro(add_script_binding_option _VAR _LANG _DEFVAL)
|
|
|
- set(BUILDSWIGVAL ${_DEFVAL})
|
|
|
- if(NOT PHYSFS_BUILD_SWIG)
|
|
|
- set(BUILDSWIGVAL FALSE)
|
|
|
- endif()
|
|
|
- option(${_VAR} "Build ${_LANG} bindings." ${BUILDSWIGVAL})
|
|
|
- mark_as_advanced(${_VAR})
|
|
|
- endmacro()
|
|
|
-
|
|
|
- add_script_binding_option(PHYSFS_BUILD_PERL "Perl" TRUE)
|
|
|
- add_script_binding_option(PHYSFS_BUILD_RUBY "Ruby" TRUE)
|
|
|
-endif()
|
|
|
-
|
|
|
-if(PHYSFS_BUILD_PERL)
|
|
|
- message(STATUS "Configuring Perl bindings...")
|
|
|
- find_program(PERL perl DOC "Path to perl command line app: http://perl.org/")
|
|
|
- if(NOT PERL)
|
|
|
- message(STATUS "Perl not found. You won't be able to build perl bindings.")
|
|
|
- set(PHYSFS_BUILD_PERL FALSE)
|
|
|
- endif()
|
|
|
- mark_as_advanced(PERL)
|
|
|
-
|
|
|
- macro(get_perl_config _KEY _VALUE)
|
|
|
- if(PHYSFS_BUILD_PERL)
|
|
|
- message(STATUS "Figuring out perl config value '${_KEY}' ...")
|
|
|
- execute_process(
|
|
|
- COMMAND ${PERL} -w -e "use Config; print \$Config{${_KEY}};"
|
|
|
- RESULT_VARIABLE GET_PERL_CONFIG_RC
|
|
|
- OUTPUT_VARIABLE ${_VALUE}
|
|
|
- )
|
|
|
- if(NOT GET_PERL_CONFIG_RC EQUAL 0)
|
|
|
- message(STATUS "Perl executable ('${PERL}') reported failure: ${GET_PERL_CONFIG_RC}")
|
|
|
- set(PHYSFS_BUILD_PERL FALSE)
|
|
|
- endif()
|
|
|
- if(NOT ${_VALUE})
|
|
|
- message(STATUS "Perl executable ('${PERL}') didn't have a value for '${_KEY}'")
|
|
|
- set(PHYSFS_BUILD_PERL FALSE)
|
|
|
- endif()
|
|
|
-
|
|
|
- if(PHYSFS_BUILD_PERL)
|
|
|
- message(STATUS "Perl says: '${${_VALUE}}'.")
|
|
|
- endif()
|
|
|
- endif()
|
|
|
- endmacro()
|
|
|
-
|
|
|
- # !!! FIXME: installsitearch might be the wrong location.
|
|
|
- get_perl_config("archlibexp" PERL_INCLUDE_PATH)
|
|
|
- get_perl_config("ccflags" PERL_CCFLAGS)
|
|
|
- get_perl_config("ldflags" PERL_LDFLAGS)
|
|
|
- get_perl_config("installsitearch" PERL_INSTALL_PATH)
|
|
|
-
|
|
|
- # !!! FIXME: this test for Mac OS X is wrong.
|
|
|
- if(MACOSX)
|
|
|
- get_perl_config("libperl" PERL_LIBPERL)
|
|
|
- set(TMPLIBPERL "${PERL_LIBPERL}")
|
|
|
- string(REGEX REPLACE "^lib" "" TMPLIBPERL "${TMPLIBPERL}")
|
|
|
- string(REGEX REPLACE "\\.so$" "" TMPLIBPERL "${TMPLIBPERL}")
|
|
|
- string(REGEX REPLACE "\\.dylib$" "" TMPLIBPERL "${TMPLIBPERL}")
|
|
|
- string(REGEX REPLACE "\\.dll$" "" TMPLIBPERL "${TMPLIBPERL}")
|
|
|
- if(NOT "${TMPLIBPERL}" STREQUAL "${PERL_LIBPERL}")
|
|
|
- message(STATUS "Stripped '${PERL_LIBPERL}' down to '${TMPLIBPERL}'.")
|
|
|
- set(PERL_LIBPERL "${TMPLIBPERL}")
|
|
|
- endif()
|
|
|
- set(PERL_LIBPERL "-l${PERL_LIBPERL}")
|
|
|
- endif()
|
|
|
-
|
|
|
- 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}")
|
|
|
- install(FILES "${SWIG_OUTPUT_DIR}/perl/physfs.pm" DESTINATION "${PERL_INSTALL_PATH}")
|
|
|
- install(
|
|
|
- FILES test/test_physfs.pl
|
|
|
- DESTINATION bin
|
|
|
- PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
|
|
|
- GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
|
|
- )
|
|
|
-endif()
|
|
|
-
|
|
|
-# !!! FIXME: lots of cut-and-paste from perl bindings.
|
|
|
-if(PHYSFS_BUILD_RUBY)
|
|
|
- message(STATUS "Configuring Ruby bindings...")
|
|
|
- find_program(RUBY ruby DOC "Path to ruby command line app: http://ruby-lang.org/")
|
|
|
- if(NOT RUBY)
|
|
|
- message(STATUS "Ruby not found. You won't be able to build ruby bindings.")
|
|
|
- set(PHYSFS_BUILD_RUBY FALSE)
|
|
|
- endif()
|
|
|
- mark_as_advanced(RUBY)
|
|
|
-
|
|
|
- macro(get_ruby_config _KEY _VALUE)
|
|
|
- if(PHYSFS_BUILD_RUBY)
|
|
|
- message(STATUS "Figuring out ruby config value '${_KEY}' ...")
|
|
|
- execute_process(
|
|
|
- COMMAND ${RUBY} -e "require 'rbconfig'; puts RbConfig::CONFIG['${_KEY}'];"
|
|
|
- RESULT_VARIABLE GET_RUBY_CONFIG_RC
|
|
|
- OUTPUT_VARIABLE ${_VALUE}
|
|
|
- OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
|
- )
|
|
|
- if(NOT GET_RUBY_CONFIG_RC EQUAL 0)
|
|
|
- message(STATUS "Ruby executable ('${RUBY}') reported failure: ${GET_RUBY_CONFIG_RC}")
|
|
|
- set(PHYSFS_BUILD_RUBY FALSE)
|
|
|
- endif()
|
|
|
- if(NOT ${_VALUE})
|
|
|
- message(STATUS "Ruby executable ('${RUBY}') didn't have a value for '${_KEY}'")
|
|
|
- set(PHYSFS_BUILD_RUBY FALSE)
|
|
|
- endif()
|
|
|
-
|
|
|
- if(PHYSFS_BUILD_RUBY)
|
|
|
- message(STATUS "Ruby says: '${${_VALUE}}'.")
|
|
|
- endif()
|
|
|
- endif()
|
|
|
- endmacro()
|
|
|
-
|
|
|
- get_ruby_config("archdir" RUBY_INCLUDE_PATH)
|
|
|
- get_ruby_config("CFLAGS" RUBY_CCFLAGS)
|
|
|
- get_ruby_config("LDFLAGS" RUBY_LDFLAGS)
|
|
|
- get_ruby_config("sitearchdir" RUBY_INSTALL_PATH)
|
|
|
- get_ruby_config("LIBRUBYARG_SHARED" RUBY_LIBRUBY)
|
|
|
- get_ruby_config("libdir" RUBY_LIBDIR)
|
|
|
-
|
|
|
- configure_swig_binding(Ruby "${RUBY_INSTALL_PATH}" "" "\"-I${RUBY_INCLUDE_PATH}\" ${RUBY_CCFLAGS} -w" "\"-L${RUBY_LIBDIR}\" ${RUBY_LIBRUBY} ${RUBY_LDFLAGS}")
|
|
|
- set_target_properties(physfs-ruby PROPERTIES PREFIX "")
|
|
|
- install(
|
|
|
- FILES test/test_physfs.rb
|
|
|
- DESTINATION bin
|
|
|
- PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
|
|
|
- GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
|
|
- )
|
|
|
-endif()
|
|
|
-
|
|
|
-
|
|
|
install(TARGETS ${PHYSFS_INSTALL_TARGETS}
|
|
|
RUNTIME DESTINATION bin
|
|
|
LIBRARY DESTINATION lib${LIB_SUFFIX}
|
|
|
@@ -557,8 +368,6 @@ message_bool_option("CD-ROM drive support" PHYSFS_HAVE_CDROM_SUPPORT)
|
|
|
message_bool_option("Thread safety" PHYSFS_HAVE_THREAD_SUPPORT)
|
|
|
message_bool_option("Build static library" PHYSFS_BUILD_STATIC)
|
|
|
message_bool_option("Build shared library" PHYSFS_BUILD_SHARED)
|
|
|
-message_bool_option("Build Perl bindings" PHYSFS_BUILD_PERL)
|
|
|
-message_bool_option("Build Ruby bindings" PHYSFS_BUILD_RUBY)
|
|
|
message_bool_option("Build stdio test program" PHYSFS_BUILD_TEST)
|
|
|
if(PHYSFS_BUILD_TEST)
|
|
|
message_bool_option(" Use readline in test program" HAVE_SYSTEM_READLINE)
|