Skip to content
Snippets Groups Projects
Commit cfc9911a authored by Ben Cumming's avatar Ben Cumming
Browse files

Merge pull request #19 from halfflat/feature/unify-cmake

Use externalproject_add to manage mod->hpp depenedencies.
parents 33eee769 dea7dac1
No related branches found
No related tags found
No related merge requests found
...@@ -4,6 +4,9 @@ cmake_minimum_required (VERSION 2.8) ...@@ -4,6 +4,9 @@ cmake_minimum_required (VERSION 2.8)
project (cell_algorithms) project (cell_algorithms)
enable_language(CXX) enable_language(CXX)
# save incoming CXX flags for forwarding to modparser external project
set(SAVED_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
# compilation flags # compilation flags
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++11 -pthread -Wall") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++11 -pthread -Wall")
...@@ -14,10 +17,25 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS "YES") ...@@ -14,10 +17,25 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS "YES")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
# targets for extermal dependencies
include(ExternalProject)
externalproject_add(modparser
PREFIX ${CMAKE_BINARY_DIR}/external
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/external"
"-DCMAKE_CXX_FLAGS=${SAVED_CXX_FLAGS}"
"-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
BINARY_DIR "${CMAKE_BINARY_DIR}/external/modparser"
STAMP_DIR "${CMAKE_BINARY_DIR}/external/"
TMP_DIR "${CMAKE_BINARY_DIR}/external/tmp"
SOURCE_DIR "${CMAKE_SOURCE_DIR}/external/modparser"
)
include_directories(${CMAKE_SOURCE_DIR}/external) include_directories(${CMAKE_SOURCE_DIR}/external)
include_directories(${CMAKE_SOURCE_DIR}/include) include_directories(${CMAKE_SOURCE_DIR}/include)
include_directories(${CMAKE_SOURCE_DIR}/src) include_directories(${CMAKE_SOURCE_DIR}/src)
include_directories(${CMAKE_SOURCE_DIR}) include_directories(${CMAKE_SOURCE_DIR})
add_subdirectory(mechanisms)
add_subdirectory(src) add_subdirectory(src)
add_subdirectory(tests) add_subdirectory(tests)
Subproject commit d1dd8fa868c0dc7e348093ed4a4b5c6c94e29e34 Subproject commit dcfb69f8cfc435418dfb95348d613c9830e6ad6f
set(mechanisms pas hh)
set(modcc "${CMAKE_BINARY_DIR}/external/bin/modcc")
foreach(mech ${mechanisms})
set(mod "${CMAKE_CURRENT_SOURCE_DIR}/mod/${mech}.mod")
set(hpp "${CMAKE_CURRENT_SOURCE_DIR}/${mech}.hpp")
add_custom_command(OUTPUT "${hpp}"
DEPENDS modparser "${mod}"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMAND "${modcc}" -t cpu -o "${hpp}" "${mod}")
set_source_files_properties("${hpp}" PROPERTIES GENERATED TRUE)
list(APPEND all_mod_hpps "${hpp}")
endforeach()
# Fake target to always trigger .mod -> .hpp dependencies because wtf CMake
add_custom_target(build_all_mods DEPENDS ${all_mod_hpps})
...@@ -9,3 +9,5 @@ set(BASE_SOURCES ...@@ -9,3 +9,5 @@ set(BASE_SOURCES
) )
add_library(cellalgo ${BASE_SOURCES} ${HEADERS}) add_library(cellalgo ${BASE_SOURCES} ${HEADERS})
add_dependencies(cellalgo build_all_mods)
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment