Skip to content

Commit 5c0178b

Browse files
authored
Merge pull request #1086 from gangliao/swig
Find swig in system first
2 parents d41ac09 + b49745c commit 5c0178b

File tree

2 files changed

+55
-50
lines changed

2 files changed

+55
-50
lines changed

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ addons:
2929
- python-pip
3030
- python2.7-dev
3131
- curl
32+
- swig
3233
- graphviz
3334
- clang-format-3.8
3435
- automake

cmake/external/swig.cmake

Lines changed: 54 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -12,59 +12,63 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
# build swig as an external project
16-
INCLUDE(ExternalProject)
15+
FIND_PACKAGE(SWIG)
1716

18-
SET(SWIG_SOURCES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/swig)
19-
SET(SWIG_INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/install/swig)
20-
SET(SWIG_TARGET_VERSION "3.0.2")
21-
SET(SWIG_DOWNLOAD_SRC_MD5 "62f9b0d010cef36a13a010dc530d0d41")
22-
SET(SWIG_DOWNLOAD_WIN_MD5 "3f18de4fc09ab9abb0d3be37c11fbc8f")
17+
IF(NOT SWIG_FOUND)
18+
# build swig as an external project
19+
INCLUDE(ExternalProject)
2320

24-
IF(WIN32)
25-
# swig.exe available as pre-built binary on Windows:
26-
ExternalProject_Add(swig
27-
URL http://prdownloads.sourceforge.net/swig/swigwin-${SWIG_TARGET_VERSION}.zip
28-
URL_MD5 ${SWIG_DOWNLOAD_WIN_MD5}
29-
SOURCE_DIR ${SWIG_SOURCES_DIR}
30-
CONFIGURE_COMMAND ""
31-
BUILD_COMMAND ""
32-
INSTALL_COMMAND ""
33-
UPDATE_COMMAND ""
34-
)
35-
SET(SWIG_DIR ${SWIG_SOURCES_DIR} CACHE FILEPATH "SWIG Directory" FORCE)
36-
SET(SWIG_EXECUTABLE ${SWIG_SOURCES_DIR}/swig.exe CACHE FILEPATH "SWIG Executable" FORCE)
37-
ELSE(WIN32)
38-
# From PCRE configure
39-
ExternalProject_Add(pcre
40-
${EXTERNAL_PROJECT_LOG_ARGS}
41-
GIT_REPOSITORY https://github.com/svn2github/pcre.git
42-
PREFIX ${SWIG_SOURCES_DIR}/pcre
43-
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${SWIG_INSTALL_DIR}/pcre
44-
)
21+
SET(SWIG_SOURCES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/swig)
22+
SET(SWIG_INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/install/swig)
23+
SET(SWIG_TARGET_VERSION "3.0.2")
24+
SET(SWIG_DOWNLOAD_SRC_MD5 "62f9b0d010cef36a13a010dc530d0d41")
25+
SET(SWIG_DOWNLOAD_WIN_MD5 "3f18de4fc09ab9abb0d3be37c11fbc8f")
4526

46-
# swig uses bison find it by cmake and pass it down
47-
FIND_PACKAGE(BISON)
27+
IF(WIN32)
28+
# swig.exe available as pre-built binary on Windows:
29+
ExternalProject_Add(swig
30+
URL http://prdownloads.sourceforge.net/swig/swigwin-${SWIG_TARGET_VERSION}.zip
31+
URL_MD5 ${SWIG_DOWNLOAD_WIN_MD5}
32+
SOURCE_DIR ${SWIG_SOURCES_DIR}
33+
CONFIGURE_COMMAND ""
34+
BUILD_COMMAND ""
35+
INSTALL_COMMAND ""
36+
UPDATE_COMMAND ""
37+
)
38+
SET(SWIG_DIR ${SWIG_SOURCES_DIR} CACHE FILEPATH "SWIG Directory" FORCE)
39+
SET(SWIG_EXECUTABLE ${SWIG_SOURCES_DIR}/swig.exe CACHE FILEPATH "SWIG Executable" FORCE)
40+
ELSE(WIN32)
41+
# From PCRE configure
42+
ExternalProject_Add(pcre
43+
${EXTERNAL_PROJECT_LOG_ARGS}
44+
GIT_REPOSITORY https://github.com/svn2github/pcre.git
45+
PREFIX ${SWIG_SOURCES_DIR}/pcre
46+
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${SWIG_INSTALL_DIR}/pcre
47+
)
4848

49-
# From SWIG configure
50-
ExternalProject_Add(swig
51-
GIT_REPOSITORY https://github.com/swig/swig.git
52-
GIT_TAG rel-3.0.10
53-
PREFIX ${SWIG_SOURCES_DIR}
54-
CONFIGURE_COMMAND cd ${SWIG_SOURCES_DIR}/src/swig && ./autogen.sh
55-
CONFIGURE_COMMAND cd ${SWIG_SOURCES_DIR}/src/swig &&
56-
env "PCRE_LIBS=${SWIG_INSTALL_DIR}/pcre/lib/libpcre.a ${SWIG_INSTALL_DIR}/pcre/lib/libpcrecpp.a ${SWIG_INSTALL_DIR}/pcre/lib/libpcreposix.a"
57-
./configure
58-
--prefix=${SWIG_INSTALL_DIR}
59-
--with-pcre-prefix=${SWIG_INSTALL_DIR}/pcre
60-
BUILD_COMMAND cd ${SWIG_SOURCES_DIR}/src/swig && make
61-
INSTALL_COMMAND cd ${SWIG_SOURCES_DIR}/src/swig && make install
62-
UPDATE_COMMAND ""
63-
DEPENDS pcre
64-
)
49+
# swig uses bison find it by cmake and pass it down
50+
FIND_PACKAGE(BISON)
6551

66-
SET(SWIG_DIR ${SWIG_INSTALL_DIR}/share/swig/${SWIG_TARGET_VERSION})
67-
SET(SWIG_EXECUTABLE ${SWIG_INSTALL_DIR}/bin/swig)
68-
ENDIF(WIN32)
52+
# From SWIG configure
53+
ExternalProject_Add(swig
54+
GIT_REPOSITORY https://github.com/swig/swig.git
55+
GIT_TAG rel-3.0.10
56+
PREFIX ${SWIG_SOURCES_DIR}
57+
CONFIGURE_COMMAND cd ${SWIG_SOURCES_DIR}/src/swig && ./autogen.sh
58+
CONFIGURE_COMMAND cd ${SWIG_SOURCES_DIR}/src/swig &&
59+
env "PCRE_LIBS=${SWIG_INSTALL_DIR}/pcre/lib/libpcre.a ${SWIG_INSTALL_DIR}/pcre/lib/libpcrecpp.a ${SWIG_INSTALL_DIR}/pcre/lib/libpcreposix.a"
60+
./configure
61+
--prefix=${SWIG_INSTALL_DIR}
62+
--with-pcre-prefix=${SWIG_INSTALL_DIR}/pcre
63+
BUILD_COMMAND cd ${SWIG_SOURCES_DIR}/src/swig && make
64+
INSTALL_COMMAND cd ${SWIG_SOURCES_DIR}/src/swig && make install
65+
UPDATE_COMMAND ""
66+
DEPENDS pcre
67+
)
6968

70-
LIST(APPEND external_project_dependencies swig)
69+
SET(SWIG_DIR ${SWIG_INSTALL_DIR}/share/swig/${SWIG_TARGET_VERSION})
70+
SET(SWIG_EXECUTABLE ${SWIG_INSTALL_DIR}/bin/swig)
71+
ENDIF(WIN32)
72+
73+
LIST(APPEND external_project_dependencies swig)
74+
ENDIF(NOT SWIG_FOUND)

0 commit comments

Comments
 (0)