Hooked up Perl bindings, via SWIG.
This commit is contained in:
parent
5720b168ca
commit
392193ea0c
|
@ -358,6 +358,94 @@ IF(PHYSFS_BUILD_WX_TEST)
|
||||||
ENDIF(wxWidgets_FOUND)
|
ENDIF(wxWidgets_FOUND)
|
||||||
ENDIF(PHYSFS_BUILD_WX_TEST)
|
ENDIF(PHYSFS_BUILD_WX_TEST)
|
||||||
|
|
||||||
|
|
||||||
|
# Scripting language bindings...
|
||||||
|
|
||||||
|
#CMake's SWIG support is basically useless.
|
||||||
|
#FIND_PACKAGE(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(NOT SWIG)
|
||||||
|
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(CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
|
||||||
|
SET(SWIG_OPT_CFLAGS "-O")
|
||||||
|
ENDIF(CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
|
||||||
|
ENDIF((NOT CMAKE_BUILD_TYPE STREQUAL "") AND (NOT CMAKE_BUILD_TYPE STREQUAL "Debug"))
|
||||||
|
ENDIF(DEFINED CMAKE_BUILD_TYPE)
|
||||||
|
MACRO(ADD_SCRIPT_BINDING_OPTION _VAR _LANG _DEFVAL)
|
||||||
|
OPTION(${_VAR} "Build ${_LANG} bindings." ${_DEFVAL})
|
||||||
|
MARK_AS_ADVANCED(${_VAR})
|
||||||
|
ENDMACRO(ADD_SCRIPT_BINDING_OPTION)
|
||||||
|
ADD_SCRIPT_BINDING_OPTION(PHYSFS_BUILD_PERL "Perl" TRUE)
|
||||||
|
ENDIF(NOT SWIG)
|
||||||
|
|
||||||
|
IF(PHYSFS_BUILD_PERL)
|
||||||
|
MESSAGE(STATUS "Configuring Perl bindings...")
|
||||||
|
INCLUDE(FindPerl)
|
||||||
|
IF(NOT PERL_FOUND)
|
||||||
|
MESSAGE(STATUS "Perl not found. You won't be able to build perl bindings.")
|
||||||
|
SET(PHYSFS_BUILD_PERL FALSE)
|
||||||
|
ENDIF(NOT PERL_FOUND)
|
||||||
|
|
||||||
|
MACRO(GET_PERL_CONFIG _KEY _VALUE)
|
||||||
|
IF(PHYSFS_BUILD_PERL)
|
||||||
|
MESSAGE(STATUS "Figuring out perl config value '${_KEY}' ...")
|
||||||
|
EXECUTE_PROCESS(
|
||||||
|
COMMAND ${PERL_EXECUTABLE} -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_EXECUTABLE}') reported failure: ${GET_PERL_CONFIG_RC}")
|
||||||
|
SET(PHYSFS_BUILD_PERL FALSE)
|
||||||
|
ENDIF(NOT GET_PERL_CONFIG_RC EQUAL 0)
|
||||||
|
IF(NOT ${_VALUE})
|
||||||
|
MESSAGE(STATUS "Perl executable ('${PERL_EXECUTABLE}') didn't have a value for '${_KEY}'")
|
||||||
|
SET(PHYSFS_BUILD_PERL FALSE)
|
||||||
|
ENDIF(NOT ${_VALUE})
|
||||||
|
|
||||||
|
IF(PHYSFS_BUILD_PERL)
|
||||||
|
MESSAGE(STATUS "Perl says: '${${_VALUE}}'.")
|
||||||
|
ENDIF(PHYSFS_BUILD_PERL)
|
||||||
|
ENDIF(PHYSFS_BUILD_PERL)
|
||||||
|
ENDMACRO(GET_PERL_CONFIG)
|
||||||
|
|
||||||
|
# !!! FIXME: installsitearch might be the wrong location.
|
||||||
|
GET_PERL_CONFIG("installarchlib" PERL_INCLUDE_PATH)
|
||||||
|
GET_PERL_CONFIG("ccflags" PERL_CCFLAGS)
|
||||||
|
GET_PERL_CONFIG("installsitearch" PERL_INSTALL_PATH)
|
||||||
|
|
||||||
|
IF(PHYSFS_BUILD_PERL)
|
||||||
|
ADD_CUSTOM_COMMAND(
|
||||||
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/physfs-perl.c" "${CMAKE_CURRENT_BINARY_DIR}/physfs.pm"
|
||||||
|
MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/extras/physfs-swig.i"
|
||||||
|
COMMAND "${SWIG}"
|
||||||
|
ARGS -w451 ${SWIG_OPT_CFLAGS} -perl -outdir "${CMAKE_CURRENT_BINARY_DIR}" -o "${CMAKE_CURRENT_BINARY_DIR}/physfs-perl.c" "${CMAKE_CURRENT_SOURCE_DIR}/extras/physfs-swig.i"
|
||||||
|
COMMENT "Generating Perl bindings..."
|
||||||
|
)
|
||||||
|
|
||||||
|
ADD_LIBRARY(physfs-perl SHARED "${CMAKE_CURRENT_BINARY_DIR}/physfs-perl.c")
|
||||||
|
SET_TARGET_PROPERTIES(physfs PROPERTIES VERSION ${PHYSFS_VERSION})
|
||||||
|
SET_TARGET_PROPERTIES(physfs PROPERTIES SOVERSION ${PHYSFS_SOVERSION})
|
||||||
|
TARGET_LINK_LIBRARIES(physfs-perl ${PHYSFS_LIB_TARGET})
|
||||||
|
SET_TARGET_PROPERTIES(physfs-perl PROPERTIES
|
||||||
|
COMPILE_FLAGS "\"-I${PERL_INCLUDE_PATH}/CORE\" ${PERL_CCFLAGS} -w"
|
||||||
|
OUTPUT_NAME "physfs"
|
||||||
|
)
|
||||||
|
INSTALL(TARGETS physfs-perl LIBRARY DESTINATION "${PERL_INSTALL_PATH}")
|
||||||
|
INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/physfs.pm" DESTINATION "${PERL_INSTALL_PATH}")
|
||||||
|
MESSAGE(STATUS "Perl bindings configured!")
|
||||||
|
ELSE(PHYSFS_BUILD_PERL)
|
||||||
|
MESSAGE(STATUS "Couldn't figure out perl configuration. Skipping perl bindings.")
|
||||||
|
ENDIF(PHYSFS_BUILD_PERL)
|
||||||
|
ENDIF(PHYSFS_BUILD_PERL)
|
||||||
|
|
||||||
INSTALL(TARGETS ${PHYSFS_INSTALL_TARGETS}
|
INSTALL(TARGETS ${PHYSFS_INSTALL_TARGETS}
|
||||||
RUNTIME DESTINATION bin
|
RUNTIME DESTINATION bin
|
||||||
LIBRARY DESTINATION lib
|
LIBRARY DESTINATION lib
|
||||||
|
@ -396,6 +484,7 @@ MESSAGE_BOOL_OPTION("Thread safety" PHYSFS_HAVE_THREAD_SUPPORT)
|
||||||
MESSAGE_BOOL_OPTION("Build own zlib" PHYSFS_INTERNAL_ZLIB)
|
MESSAGE_BOOL_OPTION("Build own zlib" PHYSFS_INTERNAL_ZLIB)
|
||||||
MESSAGE_BOOL_OPTION("Build static library" PHYSFS_BUILD_STATIC)
|
MESSAGE_BOOL_OPTION("Build static library" PHYSFS_BUILD_STATIC)
|
||||||
MESSAGE_BOOL_OPTION("Build shared library" PHYSFS_BUILD_SHARED)
|
MESSAGE_BOOL_OPTION("Build shared library" PHYSFS_BUILD_SHARED)
|
||||||
|
MESSAGE_BOOL_OPTION("Build Perl bindings" PHYSFS_BUILD_PERL)
|
||||||
MESSAGE_BOOL_OPTION("Build wxWidgets test program" PHYSFS_BUILD_WX_TEST)
|
MESSAGE_BOOL_OPTION("Build wxWidgets test program" PHYSFS_BUILD_WX_TEST)
|
||||||
MESSAGE_BOOL_OPTION("Build stdio test program" PHYSFS_BUILD_TEST)
|
MESSAGE_BOOL_OPTION("Build stdio test program" PHYSFS_BUILD_TEST)
|
||||||
IF(PHYSFS_BUILD_TEST)
|
IF(PHYSFS_BUILD_TEST)
|
||||||
|
|
|
@ -0,0 +1,86 @@
|
||||||
|
/* Metadata to generate the scripting language bindings. Please ignore. */
|
||||||
|
%module physfs
|
||||||
|
|
||||||
|
%{
|
||||||
|
#include "physfs.h"
|
||||||
|
%}
|
||||||
|
|
||||||
|
%ignore _INCLUDE_PHYSFS_H_; /* ignore the include-once blocker. */
|
||||||
|
%ignore PHYSFS_DECL; /* ignore the export define. */
|
||||||
|
%ignore PHYSFS_CALL; /* ignore the calling conventions define. */
|
||||||
|
%ignore PHYSFS_file; /* legacy type define. */
|
||||||
|
|
||||||
|
#ifdef SWIGPERL
|
||||||
|
/* The Perl bindings put everything in a namespace, so we don't need PHYSFS_ */
|
||||||
|
%rename(File) PHYSFS_File;
|
||||||
|
%rename(Version) PHYSFS_Version;
|
||||||
|
%rename(ArchiveInfo) PHYSFS_ArchiveInfo;
|
||||||
|
%rename(getLinkedVersion) PHYSFS_getLinkedVersion;
|
||||||
|
%rename(init) PHYSFS_init;
|
||||||
|
%rename(deinit) PHYSFS_deinit;
|
||||||
|
%rename(supportedArchiveTypes) PHYSFS_supportedArchiveTypes;
|
||||||
|
%rename(freeList) PHYSFS_freeList;
|
||||||
|
%rename(getLastError) PHYSFS_getLastError;
|
||||||
|
%rename(getDirSeparator) PHYSFS_getDirSeparator;
|
||||||
|
%rename(permitSymbolicLinks) PHYSFS_permitSymbolicLinks;
|
||||||
|
%rename(getCdRomDirs) PHYSFS_getCdRomDirs;
|
||||||
|
%rename(getBaseDir) PHYSFS_getBaseDir;
|
||||||
|
%rename(getUserDir) PHYSFS_getUserDir;
|
||||||
|
%rename(getWriteDir) PHYSFS_getWriteDir;
|
||||||
|
%rename(setWriteDir) PHYSFS_setWriteDir;
|
||||||
|
%rename(addToSearchPath) PHYSFS_addToSearchPath;
|
||||||
|
%rename(removeFromSearchPath) PHYSFS_removeFromSearchPath;
|
||||||
|
%rename(getSearchPath) PHYSFS_getSearchPath;
|
||||||
|
%rename(setSaneConfig) PHYSFS_setSaneConfig;
|
||||||
|
%rename(mkdir) PHYSFS_mkdir;
|
||||||
|
%rename(delete) PHYSFS_delete;
|
||||||
|
%rename(getRealDir) PHYSFS_getRealDir;
|
||||||
|
%rename(enumerateFiles) PHYSFS_enumerateFiles;
|
||||||
|
%rename(exists) PHYSFS_exists;
|
||||||
|
%rename(isDirectory) PHYSFS_isDirectory;
|
||||||
|
%rename(isSymbolicLink) PHYSFS_isSymbolicLink;
|
||||||
|
%rename(getLastModTime) PHYSFS_getLastModTime;
|
||||||
|
%rename(openWrite) PHYSFS_openWrite;
|
||||||
|
%rename(openAppend) PHYSFS_openAppend;
|
||||||
|
%rename(openRead) PHYSFS_openRead;
|
||||||
|
%rename(close) PHYSFS_close;
|
||||||
|
%rename(read) PHYSFS_read;
|
||||||
|
%rename(write) PHYSFS_write;
|
||||||
|
%rename(eof) PHYSFS_eof;
|
||||||
|
%rename(tell) PHYSFS_tell;
|
||||||
|
%rename(seek) PHYSFS_seek;
|
||||||
|
%rename(fileLength) PHYSFS_fileLength;
|
||||||
|
%rename(setBuffer) PHYSFS_setBuffer;
|
||||||
|
%rename(flush) PHYSFS_flush;
|
||||||
|
%rename(readSLE16) PHYSFS_readSLE16;
|
||||||
|
%rename(readULE16) PHYSFS_readULE16;
|
||||||
|
%rename(readSBE16) PHYSFS_readSBE16;
|
||||||
|
%rename(readUBE16) PHYSFS_readUBE16;
|
||||||
|
%rename(readSLE32) PHYSFS_readSLE32;
|
||||||
|
%rename(readULE32) PHYSFS_readULE32;
|
||||||
|
%rename(readSBE32) PHYSFS_readSBE32;
|
||||||
|
%rename(readUBE32) PHYSFS_readUBE32;
|
||||||
|
%rename(readSLE64) PHYSFS_readSLE64;
|
||||||
|
%rename(readULE64) PHYSFS_readULE64;
|
||||||
|
%rename(readSBE64) PHYSFS_readSBE64;
|
||||||
|
%rename(readUBE64) PHYSFS_readUBE64;
|
||||||
|
%rename(writeSLE16) PHYSFS_writeSLE16;
|
||||||
|
%rename(writeULE16) PHYSFS_writeULE16;
|
||||||
|
%rename(writeSBE16) PHYSFS_writeSBE16;
|
||||||
|
%rename(writeUBE16) PHYSFS_writeUBE16;
|
||||||
|
%rename(writeSLE32) PHYSFS_writeSLE32;
|
||||||
|
%rename(writeULE32) PHYSFS_writeULE32;
|
||||||
|
%rename(writeSBE32) PHYSFS_writeSBE32;
|
||||||
|
%rename(writeUBE32) PHYSFS_writeUBE32;
|
||||||
|
%rename(writeSLE64) PHYSFS_writeSLE64;
|
||||||
|
%rename(writeULE64) PHYSFS_writeULE64;
|
||||||
|
%rename(writeSBE64) PHYSFS_writeSBE64;
|
||||||
|
%rename(writeUBE64) PHYSFS_writeUBE64;
|
||||||
|
%rename(isInit) PHYSFS_isInit;
|
||||||
|
%rename(symbolicLinksPermitted) PHYSFS_symbolicLinksPermitted;
|
||||||
|
%rename(mount) PHYSFS_mount;
|
||||||
|
%rename(getMountPoint) PHYSFS_getMountPoint;
|
||||||
|
#endif /* SWIGPERL */
|
||||||
|
|
||||||
|
%include "../src/physfs.h"
|
||||||
|
|
|
@ -212,13 +212,6 @@
|
||||||
#ifndef _INCLUDE_PHYSFS_H_
|
#ifndef _INCLUDE_PHYSFS_H_
|
||||||
#define _INCLUDE_PHYSFS_H_
|
#define _INCLUDE_PHYSFS_H_
|
||||||
|
|
||||||
#ifdef SWIG
|
|
||||||
%module physfs
|
|
||||||
%{
|
|
||||||
#include "physfs.h"
|
|
||||||
%}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue