Skip to content

Commit

Permalink
SBML API package: can now build on Windows (#1306).
Browse files Browse the repository at this point in the history
  • Loading branch information
agarny committed May 22, 2017
1 parent 551e650 commit bdcaaf7
Showing 1 changed file with 50 additions and 1 deletion.
51 changes: 50 additions & 1 deletion src/plugins/api/SBMLAPI/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,47 @@ IF(USE_PREBUILT_SBMLAPI_PACKAGE)
SHA1_VALUES XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)
ENDIF()
ELSE()
# Download some dependencies for Windows, if needed

IF(WIN32)
IF(RELEASE_MODE)
SET(MODE release)
ELSE()
SET(MODE debug)
ENDIF()

SET(DEPENDENCIES_NAME libSBML_dependencies_vs14_${MODE}_x64)
SET(DEPENDENCIES_FILENAME ${DEPENDENCIES_NAME}.zip)
SET(DEPENDENCIES_DIR ${CMAKE_SOURCE_DIR}/src/plugins/api/SBMLAPI/ext/dependencies)
SET(DEPENDENCIES_MODE_DIR ${DEPENDENCIES_DIR}/${MODE})

IF(NOT EXISTS ${DEPENDENCIES_MODE_DIR})
SET(REAL_DEPENDENCIES_FILENAME ${DEPENDENCIES_DIR}/${DEPENDENCIES_FILENAME})

FILE(DOWNLOAD "https://github.com/opencor/libsbml/releases/download/${GIT_TAG}/${DEPENDENCIES_FILENAME}" ${REAL_DEPENDENCIES_FILENAME}
SHOW_PROGRESS STATUS STATUS)

LIST(GET STATUS 0 STATUS_CODE)

IF(${STATUS_CODE} EQUAL 0)
EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E tar -xzf ${REAL_DEPENDENCIES_FILENAME}
WORKING_DIRECTORY ${DEPENDENCIES_DIR}
OUTPUT_QUIET)
EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E rename "libSBML Dependencies-1.0.0-b1-win64" ${MODE}
WORKING_DIRECTORY ${DEPENDENCIES_DIR}
OUTPUT_QUIET)

FILE(REMOVE ${REAL_DEPENDENCIES_FILENAME})
ELSE()
FILE(REMOVE ${REAL_DEPENDENCIES_FILENAME})
# Note: this is in case we had an HTTP error of sorts, in which case we
# would end up with an empty file...

MESSAGE(FATAL_ERROR "The libSBML depencies could not be retrieved...")
ENDIF()
ENDIF()
ENDIF()

# Rely on the ExternalProject module to build our package

INCLUDE(ExternalProject)
Expand Down Expand Up @@ -111,6 +152,7 @@ ELSE()
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
-DCMAKE_MACOSX_RPATH=1
-DLIBSBML_DEPENDENCY_DIR=${DEPENDENCIES_MODE_DIR}
-DWITH_CPP_NAMESPACE=ON
-DWITH_SWIG=OFF
BUILD_BYPRODUCTS
Expand All @@ -119,7 +161,14 @@ ELSE()

# Do some post-processing that is specific to each platform

IF(NOT WIN32)
IF(WIN32)
# We want both our shared and import libraries to be in the same place

ExternalProject_Add_Step(${PACKAGE_BUILD} CopyDLL
COMMAND ${CMAKE_COMMAND} -E copy bin/${SHARED_LIBRARY} lib
WORKING_DIRECTORY ${FULL_LOCAL_EXTERNAL_PACKAGE_DIR}
DEPENDEES install)
ELSE()
# Dereference the symbolic link to the libraries since CMake's tar can't
# do this

Expand Down

0 comments on commit bdcaaf7

Please sign in to comment.