Initial CMake configuration.
Needs to be tested under OSX and Windows.
This commit is contained in:
parent
7ba19e7586
commit
2981eda00d
3 changed files with 297 additions and 0 deletions
165
CMakeLists.txt
Normal file
165
CMakeLists.txt
Normal file
|
|
@ -0,0 +1,165 @@
|
||||||
|
cmake_minimum_required (VERSION 3.2)
|
||||||
|
|
||||||
|
if (NOT DEFINED CMAKE_BUILD_TYPE)
|
||||||
|
set (CMAKE_BUILD_TYPE Release CACHE STRING "Build type")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
project (swig)
|
||||||
|
|
||||||
|
file (STRINGS configure.ac line LIMIT_COUNT 1 REGEX "AC_INIT\\(.*\\)" )
|
||||||
|
if (line MATCHES "AC_INIT\\(\\[(.*)\\],[ \t]*\\[(.*)\\],[ \t]*\\[(.*)\\]\\)" )
|
||||||
|
set (SWIG_VERSION ${CMAKE_MATCH_2})
|
||||||
|
set (PACKAGE_BUGREPORT ${CMAKE_MATCH_3})
|
||||||
|
else ()
|
||||||
|
message (SEND_ERROR "Could not parse version from configure.ac")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
set(SWIG_ROOT ${PROJECT_SOURCE_DIR})
|
||||||
|
|
||||||
|
set (SWIG_LIB share/swig/${SWIG_VERSION})
|
||||||
|
|
||||||
|
# Project wide configuration variables
|
||||||
|
# ------------------------------------
|
||||||
|
|
||||||
|
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...
|
||||||
|
|
||||||
|
|
||||||
|
# Configure
|
||||||
|
# ---------
|
||||||
|
|
||||||
|
list (APPEND CMAKE_MODULE_PATH ${SWIG_ROOT}/Tools/cmake)
|
||||||
|
|
||||||
|
include(CheckIncludeFiles)
|
||||||
|
include(CheckIncludeFile)
|
||||||
|
include(CheckTypeSize)
|
||||||
|
include(CheckSymbolExists)
|
||||||
|
include(CheckLibraryExists)
|
||||||
|
include(CheckCSourceCompiles)
|
||||||
|
|
||||||
|
# HACK: didn't get the bool check working for Visual Studio 2008
|
||||||
|
if(MSVC)
|
||||||
|
set(HAVE_BOOL 1)
|
||||||
|
else()
|
||||||
|
set(CMAKE_EXTRA_INCLUDE_FILES stdbool.h)
|
||||||
|
check_type_size("bool" HAVE_BOOL)
|
||||||
|
set(CMAKE_EXTRA_INCLUDE_FILES)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
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("stdint.h" HAVE_STDINT_H)
|
||||||
|
check_include_file("stdlib.h" HAVE_STDLIB_H)
|
||||||
|
check_include_file("string.h" HAVE_STRING_H)
|
||||||
|
check_include_file("strings.h" HAVE_STRINGS_H)
|
||||||
|
check_include_file("sys/stat.h" HAVE_SYS_STAT_H)
|
||||||
|
check_include_file("sys/types.h" HAVE_SYS_TYPES_H)
|
||||||
|
check_include_file("unistd.h" HAVE_UNISTD_H)
|
||||||
|
check_include_files( "stdlib.h;stdarg.h;string.h;float.h" HAVE_STDC_HEADERS )
|
||||||
|
|
||||||
|
check_library_exists(dl dlopen "" HAVE_LIBDL)
|
||||||
|
|
||||||
|
find_package (PCRE REQUIRED)
|
||||||
|
if (PCRE_FOUND)
|
||||||
|
add_definitions (-DHAVE_PCRE)
|
||||||
|
include_directories (${PCRE_INCLUDE_DIRS})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
configure_file (${SWIG_ROOT}/Tools/cmake/swigconfig.h.in
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/Source/Include/swigconfig.h)
|
||||||
|
|
||||||
|
find_package (BISON REQUIRED)
|
||||||
|
|
||||||
|
|
||||||
|
# Compiler flags
|
||||||
|
# --------------
|
||||||
|
|
||||||
|
include_directories(
|
||||||
|
${SWIG_SOURCE_DIR}/CParse
|
||||||
|
${SWIG_SOURCE_DIR}/Include
|
||||||
|
${SWIG_SOURCE_DIR}/DOH
|
||||||
|
${SWIG_SOURCE_DIR}/Swig
|
||||||
|
${SWIG_SOURCE_DIR}/Preprocessor
|
||||||
|
${SWIG_SOURCE_DIR}/Modules
|
||||||
|
${PROJECT_BINARY_DIR}/Source/Include
|
||||||
|
${PROJECT_BINARY_DIR}/Source/CParse
|
||||||
|
${PROJECT_SOURCE_DIR}/Source/Doxygen
|
||||||
|
)
|
||||||
|
|
||||||
|
# generate the parser source code (depends on bison)
|
||||||
|
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/Source/CParse)
|
||||||
|
|
||||||
|
BISON_TARGET(swig_parser
|
||||||
|
${SWIG_SOURCE_DIR}/CParse/parser.y
|
||||||
|
${PROJECT_BINARY_DIR}/Source/CParse/parser.c
|
||||||
|
)
|
||||||
|
|
||||||
|
# generate swigwarn.swg
|
||||||
|
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})
|
||||||
|
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/swigwarn.swg ${SWIG_WARN_SWG})
|
||||||
|
set_property(SOURCE ${CMAKE_CURRENT_BINARY_DIR}/swigwarn.swg PROPERTY GENERATED 1)
|
||||||
|
|
||||||
|
# install lib
|
||||||
|
install (DIRECTORY ${SWIG_ROOT}/Lib/ DESTINATION ${SWIG_LIB})
|
||||||
|
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/swigwarn.swg DESTINATION ${SWIG_LIB})
|
||||||
|
|
||||||
|
# Libraries
|
||||||
|
# ---------
|
||||||
|
|
||||||
|
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)
|
||||||
|
add_library (doh ${DOH_SOURCES})
|
||||||
|
|
||||||
|
file (GLOB DOXYGEN_SOURCES ${SWIG_SOURCE_DIR}/Doxygen/*.cxx)
|
||||||
|
add_library (doxygen ${DOXYGEN_SOURCES})
|
||||||
|
|
||||||
|
file (GLOB CORE_SOURCES ${SWIG_SOURCE_DIR}/Swig/*.c)
|
||||||
|
add_library (core ${CORE_SOURCES})
|
||||||
|
if (PCRE_FOUND)
|
||||||
|
target_link_libraries (core ${PCRE_LIBRARIES})
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
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
|
||||||
|
${SWIG_SOURCE_DIR}/Modules/main.cxx
|
||||||
|
${SWIG_SOURCE_DIR}/Modules/swigmain.cxx
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries (swig cparse preprocessor doh core modules)
|
||||||
|
install (TARGETS swig DESTINATION bin)
|
||||||
|
|
||||||
|
|
||||||
|
# 'make package-source' creates tarballs
|
||||||
|
set ( CPACK_PACKAGE_NAME ${PACKAGE_NAME} )
|
||||||
|
set ( CPACK_SOURCE_GENERATOR "TGZ;TBZ2" )
|
||||||
|
set ( CPACK_SOURCE_IGNORE_FILES "/.git;/build;.*~;${CPACK_SOURCE_IGNORE_FILES}" )
|
||||||
|
set ( CPACK_SOURCE_PACKAGE_FILE_NAME ${PACKAGE_NAME}-${PACKAGE_VERSION} )
|
||||||
|
include ( CPack )
|
||||||
|
|
||||||
|
enable_testing()
|
||||||
|
add_test (NAME cmd_version COMMAND swig -version)
|
||||||
|
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")
|
||||||
37
Tools/cmake/FindPCRE.cmake
Normal file
37
Tools/cmake/FindPCRE.cmake
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
# Copyright (C) 2007-2009 LuaDist.
|
||||||
|
# Created by Peter Kapec <kapecp@gmail.com>
|
||||||
|
# Redistribution and use of this file is allowed according to the terms of the MIT license.
|
||||||
|
# For details see the COPYRIGHT file distributed with LuaDist.
|
||||||
|
# Note:
|
||||||
|
# Searching headers and libraries is very simple and is NOT as powerful as scripts
|
||||||
|
# distributed with CMake, because LuaDist defines directories to search for.
|
||||||
|
# Everyone is encouraged to contact the author with improvements. Maybe this file
|
||||||
|
# becomes part of CMake distribution sometimes.
|
||||||
|
|
||||||
|
# - Find pcre
|
||||||
|
# Find the native PCRE headers and libraries.
|
||||||
|
#
|
||||||
|
# PCRE_INCLUDE_DIRS - where to find pcre.h, etc.
|
||||||
|
# PCRE_LIBRARIES - List of libraries when using pcre.
|
||||||
|
# PCRE_FOUND - True if pcre found.
|
||||||
|
|
||||||
|
# Look for the header file.
|
||||||
|
FIND_PATH(PCRE_INCLUDE_DIR NAMES pcre.h)
|
||||||
|
|
||||||
|
# Look for the library.
|
||||||
|
FIND_LIBRARY(PCRE_LIBRARY NAMES pcre)
|
||||||
|
|
||||||
|
# Handle the QUIETLY and REQUIRED arguments and set PCRE_FOUND to TRUE if all listed variables are TRUE.
|
||||||
|
INCLUDE(FindPackageHandleStandardArgs)
|
||||||
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PCRE DEFAULT_MSG PCRE_LIBRARY PCRE_INCLUDE_DIR)
|
||||||
|
|
||||||
|
# Copy the results to the output variables.
|
||||||
|
IF(PCRE_FOUND)
|
||||||
|
SET(PCRE_LIBRARIES ${PCRE_LIBRARY})
|
||||||
|
SET(PCRE_INCLUDE_DIRS ${PCRE_INCLUDE_DIR})
|
||||||
|
ELSE(PCRE_FOUND)
|
||||||
|
SET(PCRE_LIBRARIES)
|
||||||
|
SET(PCRE_INCLUDE_DIRS)
|
||||||
|
ENDIF(PCRE_FOUND)
|
||||||
|
|
||||||
|
MARK_AS_ADVANCED(PCRE_INCLUDE_DIRS PCRE_LIBRARIES)
|
||||||
95
Tools/cmake/swigconfig.h.in
Normal file
95
Tools/cmake/swigconfig.h.in
Normal file
|
|
@ -0,0 +1,95 @@
|
||||||
|
/* Tools/cmake/swigconfig.h.in Generated by cmake. */
|
||||||
|
|
||||||
|
/* define if the Boost library is available */
|
||||||
|
#cmakedefine HAVE_BOOST
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#cmakedefine HAVE_INTTYPES_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `dl' library (-ldl). */
|
||||||
|
#cmakedefine HAVE_LIBDL 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `dld' library (-ldld). */
|
||||||
|
#cmakedefine HAVE_LIBDLD 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
#cmakedefine HAVE_MEMORY_H 1
|
||||||
|
|
||||||
|
/* Define if pcre is available */
|
||||||
|
#cmakedefine HAVE_PCRE 1
|
||||||
|
|
||||||
|
/* Define if popen is available */
|
||||||
|
#cmakedefine HAVE_POPEN 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#cmakedefine HAVE_STDINT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#cmakedefine HAVE_STDLIB_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
#cmakedefine HAVE_STRINGS_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#cmakedefine HAVE_STRING_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#cmakedefine HAVE_SYS_STAT_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#cmakedefine HAVE_SYS_TYPES_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#cmakedefine HAVE_UNISTD_H 1
|
||||||
|
|
||||||
|
/* Name of package */
|
||||||
|
#define PACKAGE "swig"
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#define PACKAGE_BUGREPORT "http://www.swig.org"
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#define PACKAGE_NAME "swig"
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#define PACKAGE_STRING "swig @SWIG_VERSION@"
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#define PACKAGE_TARNAME "swig"
|
||||||
|
|
||||||
|
/* Define to the home page for this package. */
|
||||||
|
#define PACKAGE_URL "http://www.swig.org"
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#define PACKAGE_VERSION "@SWIG_VERSION@"
|
||||||
|
|
||||||
|
/* The size of `void *', as computed by sizeof. */
|
||||||
|
#define SIZEOF_VOID_P @CMAKE_SIZEOF_VOID_P@
|
||||||
|
|
||||||
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#cmakedefine STDC_HEADERS 1
|
||||||
|
|
||||||
|
/* Compiler that built SWIG */
|
||||||
|
#define SWIG_CXX "@SWIG_CXX@"
|
||||||
|
|
||||||
|
/* Directory for SWIG system-independent libraries */
|
||||||
|
#define SWIG_LIB "@CMAKE_INSTALL_PREFIX@/@SWIG_LIB@"
|
||||||
|
|
||||||
|
/* Directory for SWIG system-independent libraries (Unix install on native
|
||||||
|
Windows) */
|
||||||
|
#define SWIG_LIB_WIN_UNIX "C:/cygwin/usr/local/@SWIG_LIB@"
|
||||||
|
|
||||||
|
/* Platform that SWIG is built for */
|
||||||
|
#define SWIG_PLATFORM "i686-pc-cygwin"
|
||||||
|
|
||||||
|
/* Version number of package */
|
||||||
|
#define VERSION "@SWIG_VERSION@"
|
||||||
|
|
||||||
|
/* Default language */
|
||||||
|
#define SWIG_LANG "-tcl"
|
||||||
|
|
||||||
|
/* Deal with attempt by Microsoft to deprecate C standard runtime functions */
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
# define _CRT_SECURE_NO_DEPRECATE
|
||||||
|
#endif
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue