Misc fixes

This commit is contained in:
Michel Zou 2021-02-22 09:24:15 +01:00
commit 3d049f6b2a
3 changed files with 90 additions and 95 deletions

View file

@ -6,6 +6,10 @@ endif ()
project (swig) project (swig)
if (POLICY CMP0074)
cmake_policy (SET CMP0074 NEW)
endif()
file (STRINGS configure.ac line LIMIT_COUNT 1 REGEX "AC_INIT\\(.*\\)" ) file (STRINGS configure.ac line LIMIT_COUNT 1 REGEX "AC_INIT\\(.*\\)" )
if (line MATCHES "AC_INIT\\(\\[(.*)\\],[ \t]*\\[(.*)\\],[ \t]*\\[(.*)\\]\\)" ) if (line MATCHES "AC_INIT\\(\\[(.*)\\],[ \t]*\\[(.*)\\],[ \t]*\\[(.*)\\]\\)" )
set (SWIG_VERSION ${CMAKE_MATCH_2}) set (SWIG_VERSION ${CMAKE_MATCH_2})
@ -14,65 +18,67 @@ else ()
message (SEND_ERROR "Could not parse version from configure.ac") message (SEND_ERROR "Could not parse version from configure.ac")
endif () endif ()
set(SWIG_ROOT ${PROJECT_SOURCE_DIR}) set (SWIG_ROOT ${PROJECT_SOURCE_DIR})
set (SWIG_LIB share/swig/${SWIG_VERSION}) set (SWIG_LIB share/swig/${SWIG_VERSION})
# Project wide configuration variables # Project wide configuration variables
# ------------------------------------ # ------------------------------------
set(SWIG_SOURCE_DIR ${SWIG_ROOT}/Source CACHE INTERNAL "Path of swig sources" FORCE) set (SWIG_SOURCE_DIR ${SWIG_ROOT}/Source CACHE INTERNAL "Path of swig sources" FORCE)
set ( PACKAGE_NAME swig )
set ( PACKAGE_VERSION ${SWIG_VERSION} )
# Options
# -------
# TODO...
set (PACKAGE_NAME swig)
set (PACKAGE_VERSION ${SWIG_VERSION})
# Configure # Configure
# --------- # ---------
list (APPEND CMAKE_MODULE_PATH ${SWIG_ROOT}/Tools/cmake) list (APPEND CMAKE_MODULE_PATH ${SWIG_ROOT}/Tools/cmake)
include(CheckIncludeFiles) include (CheckIncludeFiles)
include(CheckIncludeFile) include (CheckIncludeFile)
include(CheckTypeSize) include (CheckIncludeFileCXX)
include(CheckSymbolExists) include (CheckTypeSize)
include(CheckLibraryExists) include (CheckSymbolExists)
include(CheckCSourceCompiles) include (CheckFunctionExists)
include (CheckLibraryExists)
include (CheckCSourceCompiles)
# HACK: didn't get the bool check working for Visual Studio 2008 # HACK: didn't get the bool check working for Visual Studio 2008
if(MSVC) if (MSVC)
set(HAVE_BOOL 1) set(HAVE_BOOL 1)
else() else()
set(CMAKE_EXTRA_INCLUDE_FILES stdbool.h) set (CMAKE_EXTRA_INCLUDE_FILES stdbool.h)
check_type_size("bool" HAVE_BOOL) check_type_size ("bool" HAVE_BOOL)
set(CMAKE_EXTRA_INCLUDE_FILES) set (CMAKE_EXTRA_INCLUDE_FILES)
endif() endif()
check_include_file("inttypes.h" HAVE_INTTYPES_H) check_include_file ("inttypes.h" HAVE_INTTYPES_H)
check_include_file("memory.h" HAVE_MEMORY_H) check_include_file ("stddef.h" HAVE_STDDEF_H)
check_include_file("stddef.h" HAVE_STDDEF_H) check_include_file ("stdint.h" HAVE_STDINT_H)
check_include_file("stdint.h" HAVE_STDINT_H) check_include_file ("stdio.h" HAVE_STDIO_H)
check_include_file("stdlib.h" HAVE_STDLIB_H) check_include_file ("stdlib.h" HAVE_STDLIB_H)
check_include_file("string.h" HAVE_STRING_H) check_include_file ("string.h" HAVE_STRING_H)
check_include_file("strings.h" HAVE_STRINGS_H) check_include_file ("strings.h" HAVE_STRINGS_H)
check_include_file("sys/stat.h" HAVE_SYS_STAT_H) check_include_file ("sys/stat.h" HAVE_SYS_STAT_H)
check_include_file("sys/types.h" HAVE_SYS_TYPES_H) check_include_file ("sys/types.h" HAVE_SYS_TYPES_H)
check_include_file("unistd.h" HAVE_UNISTD_H) check_include_file ("unistd.h" HAVE_UNISTD_H)
check_include_files( "stdlib.h;stdarg.h;string.h;float.h" HAVE_STDC_HEADERS ) check_include_files ("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS)
check_library_exists(dl dlopen "" HAVE_LIBDL) check_include_file_cxx ("boost/shared_ptr.hpp" HAVE_BOOST)
check_library_exists (dl dlopen "" HAVE_LIBDL)
check_function_exists (popen HAVE_POPEN)
find_package (PCRE REQUIRED) set (PCRE_REQUIRED_ARG "REQUIRED" CACHE STRING "required arg")
find_package (PCRE ${PCRE_REQUIRED_ARG})
if (PCRE_FOUND) if (PCRE_FOUND)
add_definitions (-DHAVE_PCRE) set (HAVE_PCRE 1)
include_directories (${PCRE_INCLUDE_DIRS}) include_directories (${PCRE_INCLUDE_DIRS})
endif() endif()
if (WIN32)
file (TO_NATIVE_PATH ${CMAKE_INSTALL_PREFIX}/${SWIG_LIB} SWIG_LIB_WIN_UNIX)
endif ()
configure_file (${SWIG_ROOT}/Tools/cmake/swigconfig.h.in configure_file (${SWIG_ROOT}/Tools/cmake/swigconfig.h.in
${CMAKE_CURRENT_BINARY_DIR}/Source/Include/swigconfig.h) ${CMAKE_CURRENT_BINARY_DIR}/Source/Include/swigconfig.h)
@ -82,7 +88,7 @@ find_package (BISON REQUIRED)
# Compiler flags # Compiler flags
# -------------- # --------------
include_directories( include_directories (
${SWIG_SOURCE_DIR}/CParse ${SWIG_SOURCE_DIR}/CParse
${SWIG_SOURCE_DIR}/Include ${SWIG_SOURCE_DIR}/Include
${SWIG_SOURCE_DIR}/DOH ${SWIG_SOURCE_DIR}/DOH
@ -95,71 +101,60 @@ include_directories(
) )
# generate the parser source code (depends on bison) # generate the parser source code (depends on bison)
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/Source/CParse) file (MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/Source/CParse)
BISON_TARGET(swig_parser BISON_TARGET (swig_parser
${SWIG_SOURCE_DIR}/CParse/parser.y ${SWIG_SOURCE_DIR}/CParse/parser.y
${PROJECT_BINARY_DIR}/Source/CParse/parser.c ${PROJECT_BINARY_DIR}/Source/CParse/parser.c
) )
# generate swigwarn.swg # generate swigwarn.swg
file(READ ${SWIG_SOURCE_DIR}/Include/swigwarn.h SWIG_WARN_H) file (READ ${SWIG_SOURCE_DIR}/Include/swigwarn.h SWIG_WARN_H)
string(REGEX REPLACE "#define WARN([^ \\t]*)[ \\t]*([0-9]+)" "%define SWIGWARN\\1 \\2 %enddef" SWIG_WARN_SWG ${SWIG_WARN_H}) string (REGEX REPLACE "#define WARN([^ \\t]*)[ \\t]*([0-9]+)" "%define SWIGWARN\\1 \\2 %enddef" SWIG_WARN_SWG ${SWIG_WARN_H})
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/swigwarn.swg ${SWIG_WARN_SWG}) file (WRITE ${CMAKE_CURRENT_BINARY_DIR}/swigwarn.swg ${SWIG_WARN_SWG})
set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/swigwarn.swg PROPERTY GENERATED 1) set_property (SOURCE ${CMAKE_CURRENT_BINARY_DIR}/swigwarn.swg PROPERTY GENERATED 1)
# install lib # install lib
install (DIRECTORY ${SWIG_ROOT}/Lib/ DESTINATION ${SWIG_LIB}) install (DIRECTORY ${SWIG_ROOT}/Lib/ DESTINATION ${SWIG_LIB})
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/swigwarn.swg DESTINATION ${SWIG_LIB}) install (FILES ${CMAKE_CURRENT_BINARY_DIR}/swigwarn.swg DESTINATION ${SWIG_LIB})
# Libraries # sources
# --------- # ---------
file (GLOB CPARSE_SOURCES ${SWIG_SOURCE_DIR}/CParse/*.c)
add_library (cparse ${CPARSE_SOURCES}
${PROJECT_BINARY_DIR}/Source/CParse/parser.c
${PROJECT_BINARY_DIR}/Source/CParse/parser.h
)
file (GLOB PREPROCESSOR_SOURCES ${SWIG_SOURCE_DIR}/Preprocessor/*.c)
add_library (preprocessor ${PREPROCESSOR_SOURCES})
file (GLOB DOH_SOURCES ${SWIG_SOURCE_DIR}/DOH/*.c) file (GLOB DOH_SOURCES ${SWIG_SOURCE_DIR}/DOH/*.c)
add_library (doh ${DOH_SOURCES}) file (GLOB CPARSE_SOURCES ${SWIG_SOURCE_DIR}/CParse/*.c)
list (APPEND CPARSE_SOURCES)
file (GLOB DOXYGEN_SOURCES ${SWIG_SOURCE_DIR}/Doxygen/*.cxx) file (GLOB PREPROCESSOR_SOURCES ${SWIG_SOURCE_DIR}/Preprocessor/*.c)
add_library (doxygen ${DOXYGEN_SOURCES})
file (GLOB CORE_SOURCES ${SWIG_SOURCE_DIR}/Swig/*.c) file (GLOB CORE_SOURCES ${SWIG_SOURCE_DIR}/Swig/*.c)
add_library (core ${CORE_SOURCES}) file (GLOB DOXYGEN_SOURCES ${SWIG_SOURCE_DIR}/Doxygen/*.cxx)
if (PCRE_FOUND)
target_link_libraries (core ${PCRE_LIBRARIES})
endif ()
file (GLOB MODULES_SOURCES ${SWIG_SOURCE_DIR}/Modules/*.cxx) file (GLOB MODULES_SOURCES ${SWIG_SOURCE_DIR}/Modules/*.cxx)
add_library (modules ${MODULES_SOURCES}
${PROJECT_BINARY_DIR}/Source/Include/swigconfig.h
${SWIG_SOURCE_DIR}/Include/swigwarn.h
)
target_link_libraries(modules doxygen)
add_executable(swig add_executable (swig
${SWIG_SOURCE_DIR}/Modules/main.cxx ${CPARSE_SOURCES}
${SWIG_SOURCE_DIR}/Modules/swigmain.cxx ${DOH_SOURCES}
${DOXYGEN_SOURCES}
${MODULES_SOURCES}
${CORE_SOURCES}
${PREPROCESSOR_SOURCES}
${PROJECT_BINARY_DIR}/Source/Include/swigconfig.h
${SWIG_SOURCE_DIR}/Include/swigwarn.h
${PROJECT_BINARY_DIR}/Source/CParse/parser.c
${PROJECT_BINARY_DIR}/Source/CParse/parser.h
) )
if (PCRE_FOUND)
target_link_libraries (swig cparse preprocessor doh core modules) target_link_libraries (swig ${PCRE_LIBRARIES})
endif ()
install (TARGETS swig DESTINATION bin) install (TARGETS swig DESTINATION bin)
# 'make package-source' creates tarballs # 'make package-source' creates tarballs
set ( CPACK_PACKAGE_NAME ${PACKAGE_NAME} ) set (CPACK_PACKAGE_NAME ${PACKAGE_NAME})
set ( CPACK_SOURCE_GENERATOR "TGZ;TBZ2" ) set (CPACK_SOURCE_GENERATOR "TGZ;TBZ2")
set ( CPACK_SOURCE_IGNORE_FILES "/.git;/build;.*~;${CPACK_SOURCE_IGNORE_FILES}" ) set (CPACK_SOURCE_IGNORE_FILES "/.git;/build;.*~;${CPACK_SOURCE_IGNORE_FILES}")
set ( CPACK_SOURCE_PACKAGE_FILE_NAME ${PACKAGE_NAME}-${PACKAGE_VERSION} ) set (CPACK_SOURCE_PACKAGE_FILE_NAME ${PACKAGE_NAME}-${PACKAGE_VERSION})
include ( CPack ) include (CPack)
enable_testing() # few tests
enable_testing ()
add_test (NAME cmd_version COMMAND swig -version) add_test (NAME cmd_version COMMAND swig -version)
add_test (NAME cmd_external_runtime COMMAND swig -external-runtime ext_rt.h) add_test (NAME cmd_external_runtime COMMAND swig -external-runtime ext_rt.h)
set_tests_properties(cmd_external_runtime PROPERTIES ENVIRONMENT "SWIG_LIB=${PROJECT_SOURCE_DIR}/Lib") set_tests_properties(cmd_external_runtime PROPERTIES ENVIRONMENT "SWIG_LIB=${PROJECT_SOURCE_DIR}/Lib")

View file

@ -1,7 +1,7 @@
/* Tools/cmake/swigconfig.h.in Generated by cmake. */ /* swigconfig.h. Generated by cmake from Tools/cmake/swigconfig.h.in */
/* define if the Boost library is available */ /* define if the Boost library is available */
#cmakedefine HAVE_BOOST #cmakedefine HAVE_BOOST 1
/* Define to 1 if you have the <inttypes.h> header file. */ /* Define to 1 if you have the <inttypes.h> header file. */
#cmakedefine HAVE_INTTYPES_H 1 #cmakedefine HAVE_INTTYPES_H 1
@ -12,10 +12,7 @@
/* Define to 1 if you have the `dld' library (-ldld). */ /* Define to 1 if you have the `dld' library (-ldld). */
#cmakedefine HAVE_LIBDLD 1 #cmakedefine HAVE_LIBDLD 1
/* Define to 1 if you have the <memory.h> header file. */ /* Define if you have PCRE library */
#cmakedefine HAVE_MEMORY_H 1
/* Define if pcre is available */
#cmakedefine HAVE_PCRE 1 #cmakedefine HAVE_PCRE 1
/* Define if popen is available */ /* Define if popen is available */
@ -24,6 +21,9 @@
/* Define to 1 if you have the <stdint.h> header file. */ /* Define to 1 if you have the <stdint.h> header file. */
#cmakedefine HAVE_STDINT_H 1 #cmakedefine HAVE_STDINT_H 1
/* Define to 1 if you have the <stdio.h> header file. */
#cmakedefine HAVE_STDIO_H 1
/* Define to 1 if you have the <stdlib.h> header file. */ /* Define to 1 if you have the <stdlib.h> header file. */
#cmakedefine HAVE_STDLIB_H 1 #cmakedefine HAVE_STDLIB_H 1
@ -58,35 +58,35 @@
#define PACKAGE_TARNAME "swig" #define PACKAGE_TARNAME "swig"
/* Define to the home page for this package. */ /* Define to the home page for this package. */
#define PACKAGE_URL "http://www.swig.org" #define PACKAGE_URL ""
/* Define to the version of this package. */ /* Define to the version of this package. */
#define PACKAGE_VERSION "@SWIG_VERSION@" #define PACKAGE_VERSION "@SWIG_VERSION@"
/* The size of `void *', as computed by sizeof. */ /* The size of `void *', as computed by sizeof. */
#define SIZEOF_VOID_P @CMAKE_SIZEOF_VOID_P@ /* #undef SIZEOF_VOID_P */
/* Define to 1 if you have the ANSI C header files. */ /* Define to 1 if all of the C90 standard headers exist (not just the ones
required in a freestanding environment). This macro is provided for
backward compatibility; new code need not use it. */
#cmakedefine STDC_HEADERS 1 #cmakedefine STDC_HEADERS 1
/* Compiler that built SWIG */ /* Compiler that built SWIG */
#define SWIG_CXX "@SWIG_CXX@" #define SWIG_CXX "@CMAKE_CXX_COMPILER@"
/* Directory for SWIG system-independent libraries */ /* Directory for SWIG system-independent libraries */
#define SWIG_LIB "@CMAKE_INSTALL_PREFIX@/@SWIG_LIB@" #define SWIG_LIB "@CMAKE_INSTALL_PREFIX@/@SWIG_LIB@"
/* Directory for SWIG system-independent libraries (Unix install on native /* Directory for SWIG system-independent libraries (Unix install on native
Windows) */ Windows) */
#define SWIG_LIB_WIN_UNIX "C:/cygwin/usr/local/@SWIG_LIB@" #define SWIG_LIB_WIN_UNIX "@SWIG_LIB_WIN_UNIX@"
/* Platform that SWIG is built for */ /* Platform that SWIG is built for */
#define SWIG_PLATFORM "i686-pc-cygwin" #define SWIG_PLATFORM "@CMAKE_SYSTEM_NAME@"
/* Version number of package */ /* Version number of package */
#define VERSION "@SWIG_VERSION@" #define VERSION "@SWIG_VERSION@"
/* Default language */
#define SWIG_LANG "-tcl"
/* Deal with attempt by Microsoft to deprecate C standard runtime functions */ /* Deal with attempt by Microsoft to deprecate C standard runtime functions */
#if defined(_MSC_VER) #if defined(_MSC_VER)

View file

@ -118,7 +118,7 @@ build_script:
- set CCCL_OPTIONS=--cccl-muffle /W3 /EHsc - set CCCL_OPTIONS=--cccl-muffle /W3 /EHsc
- set CHECK_OPTIONS=CSHARPOPTIONS=-platform:%Platform% - set CHECK_OPTIONS=CSHARPOPTIONS=-platform:%Platform%
# Open dummy file descriptor to fix error on cygwin: ./configure: line 560: 0: Bad file descriptor # Open dummy file descriptor to fix error on cygwin: ./configure: line 560: 0: Bad file descriptor
- if "%BUILDSYSTEM%"=="cmake" cmake -G "Visual Studio 14 2015%VSARCH%" -DCMAKE_INSTALL_PREFIX="%CD:\=/%/install2" -DCMAKE_C_FLAGS="/DPCRE_STATIC" -DPCRE_INCLUDE_DIR=%PCRE_ROOT%/include -DPCRE_LIBRARY=%PCRE_ROOT%/lib/v110/%PCRE_PLATFORM%/Release/static/utf8/pcre8.lib -DBISON_EXECUTABLE=C:/cygwin/bin/bison.exe . && cmake --build . --config Release --target install && ctest --output-on-failure -V -C Release && appveyor exit - if "%BUILDSYSTEM%"=="cmake" cmake -G "Visual Studio 14 2015%VSARCH%" -DCMAKE_INSTALL_PREFIX="%CD:\=/%/install2" -DCMAKE_C_FLAGS="/DPCRE_STATIC" -DCMAKE_CXX_FLAGS="/DPCRE_STATIC" -DPCRE_INCLUDE_DIR=%PCRE_ROOT%/include -DPCRE_LIBRARY=%PCRE_ROOT%/lib/v110/%PCRE_PLATFORM%/Release/static/utf8/pcre8.lib -DBISON_EXECUTABLE=C:/cygwin/bin/bison.exe . && cmake --build . --config Release --target install && ctest --output-on-failure -V -C Release && appveyor exit
- if "%OSVARIANT%"=="" bash -c "exec 0</dev/null && ./autogen.sh && time ./configure --disable-dependency-tracking --disable-ccache CC=$CC CXX=$CXX CFLAGS='-O2' CXXFLAGS='-O2' LDFLAGS='--cccl-link /LTCG' PCRE_CFLAGS='-I%PCRE_ROOT%/include -DPCRE_STATIC' PCRE_LIBS='-L%PCRE_ROOT%/lib/v110/%PCRE_PLATFORM%/Release/static/utf8 -lpcre8' --without-perl5 --without-go --with-boost=C:/Libraries/boost_1_67_0 || cat config.log" - if "%OSVARIANT%"=="" bash -c "exec 0</dev/null && ./autogen.sh && time ./configure --disable-dependency-tracking --disable-ccache CC=$CC CXX=$CXX CFLAGS='-O2' CXXFLAGS='-O2' LDFLAGS='--cccl-link /LTCG' PCRE_CFLAGS='-I%PCRE_ROOT%/include -DPCRE_STATIC' PCRE_LIBS='-L%PCRE_ROOT%/lib/v110/%PCRE_PLATFORM%/Release/static/utf8 -lpcre8' --without-perl5 --without-go --with-boost=C:/Libraries/boost_1_67_0 || cat config.log"
- if not "%OSVARIANT%"=="" bash -c "exec 0</dev/null && ./autogen.sh && time ./configure CC=%CC% CXX=%CXX% --without-alllang --with-$SWIGLANG$PY3$SWIGWITHLANG --enable-cpp11-testing || cat config.log" - if not "%OSVARIANT%"=="" bash -c "exec 0</dev/null && ./autogen.sh && time ./configure CC=%CC% CXX=%CXX% --without-alllang --with-$SWIGLANG$PY3$SWIGWITHLANG --enable-cpp11-testing || cat config.log"
- bash -c "time make -s -j%MAKEJOBS%" - bash -c "time make -s -j%MAKEJOBS%"