Navigation Menu

Skip to content

Commit

Permalink
Remove SWIG stuff from build.
Browse files Browse the repository at this point in the history
This is never going to work well everywhere. I'll leave the SWIG stuff
elsewhere, though, for those that want to build their own bindings.
  • Loading branch information
icculus committed Oct 23, 2012
1 parent 1c48a28 commit de59afc
Showing 1 changed file with 0 additions and 191 deletions.
191 changes: 0 additions & 191 deletions CMakeLists.txt
Expand Up @@ -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}
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit de59afc

Please sign in to comment.