@@ -29,10 +29,14 @@ include_directories(utils/randoms)
2929include_directories (${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR} )
3030include_directories (${MPI_INCLUDE_PATH} )
3131
32- FILE (GLOB_RECURSE coreneuron_all_headers "*.h*" )
33- FILE (GLOB_RECURSE coreneuron_all_templates "*.ipp" )
34- FILE (GLOB_RECURSE coreneuron_all_c_files "*.c*" )
32+ file (GLOB_RECURSE coreneuron_all_headers "*.h*" )
33+ file (GLOB_RECURSE coreneuron_all_templates "*.ipp" )
3534file (GLOB_RECURSE coreneuron_cuda_files "*.cu" )
35+ file (GLOB_RECURSE coreneuron_all_c_files "nrniv/*.c*" "nrnmpi/*.c*" "nrnoc/*.c*"
36+ "nrnomp/*.c*" "utils/*.c*" )
37+ set (DIMPLIC_C "mech/dimplic.cpp" )
38+ file (GLOB_RECURSE scopmath_c_files "scopmath_core/*.c*" )
39+
3640
3741# Compile and include MOD files
3842
@@ -228,6 +232,7 @@ add_custom_command(OUTPUT "${KINDERIV_H}"
228232 DEPENDS ${MOD2C_OPTMECH_OUTPUTS} ${MOD2C_STDMECH_OUTPUTS} "${KINDERIV_PY} "
229233 COMMAND python "${KINDERIV_PY} "
230234 WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} " )
235+ add_custom_target (kinderiv DEPENDS "${KINDERIV_H} " )
231236
232237if (EXPORT_MECHS_FUNCTIONS)
233238 # Create C file with all "get function pointers" methods
@@ -242,7 +247,8 @@ if (EXPORT_MECHS_FUNCTIONS)
242247endif ()
243248
244249# Add generated sources from MOD files
245- set (GENERATED_MECH_C_FILES ${MOD_FUNC_C} ${MOD_FUNC_PTRS_C} ${MOD2C_STDMECH_OUTPUTS} ${MOD2C_OPTMECH_OUTPUTS} )
250+ set (ADDITIONAL_MECH_C_FILES ${MOD_FUNC_C} ${MOD_FUNC_PTRS_C} ${DIMPLIC_C} ${MOD2C_OPTMECH_OUTPUTS} )
251+ set (GENERATED_MECH_C_FILES ${ADDITIONAL_MECH_C_FILES} ${MOD2C_STDMECH_OUTPUTS} )
246252
247253# artificial cells must be on cpu, defaul nrnran123.c is for cpu, nrn_setup.cpp uses nrnran123 for only memory calculation purpose which should use cpu version of nrnran123
248254set (NOACC_MECH_C_FILES
@@ -261,8 +267,6 @@ if(ENABLE_OPENACC)
261267 endif ()
262268endif ()
263269
264- set (coreneuron_all_c_files ${coreneuron_all_c_files} ${GENERATED_MECH_C_FILES} )
265-
266270#to indent generated c/cpp files
267271if (CLANG_FORMAT_FOUND)
268272 add_custom_target (formatbuild
@@ -275,8 +279,6 @@ if(CLANG_FORMAT_FOUND)
275279endif ()
276280
277281
278- add_library (coreneuron ${COMPILE_LIBRARY_TYPE} ${coreneuron_all_headers} ${coreneuron_all_templates} ${coreneuron_all_c_files} ${KINDERIV_H} )
279-
280282set (link_cudacoreneuron)
281283set (link_reportinglib)
282284
@@ -288,6 +290,7 @@ if(ENABLE_OPENACC AND ENABLE_CUDA_MODULES)
288290 -gencode=arch=compute_50,code=sm_50
289291 -gencode=arch=compute_52,code=sm_52
290292 -gencode=arch=compute_52,code=compute_52
293+ -Xcompiler -fPIC
291294 )
292295 set (link_cudacoreneuron cudacoreneuron)
293296endif ()
@@ -297,8 +300,20 @@ if(ENABLE_REPORTINGLIB)
297300endif ()
298301
299302
303+
304+ ############################################################
305+ # Target libs
306+ ############################################################
307+
308+ #
309+ # The coreneuron lib (only internal mechanisms)
310+ #
311+ add_library (coreneuron ${COMPILE_LIBRARY_TYPE} ${coreneuron_all_headers} ${coreneuron_all_templates}
312+ ${coreneuron_all_c_files} ${cudacorenrn_objs} ${MOD2C_STDMECH_OUTPUTS} )
313+ add_dependencies (coreneuron kinderiv)
314+
300315target_link_libraries (coreneuron ${MPI_CXX_LIBRARIES}
301- ${link_reportinglib} ${link_cudacoreneuron} ${CUDA_LIBRARIES} )
316+ ${link_reportinglib} ${link_cudacoreneuron} ${CUDA_LIBRARIES} )
302317
303318set_target_properties (coreneuron PROPERTIES
304319 VERSION ${VERSION_MAJOR} .${VERSION_MINOR} .${VERSION_PATCH}
@@ -315,31 +330,53 @@ set(CORENRN_LINK_LIBS ${CORENRN_LINK_LIBS} PARENT_SCOPE)
315330set (CORENRN_OPTMECH_MODS "${MOD2C_OPTMECH_MODS} " PARENT_SCOPE)
316331
317332
318- install (TARGETS coreneuron
333+ # The scopmath lib - should not contain dimplic
334+ add_library (scopmath STATIC ${coreneuron_all_headers} ${scopmath_c_files} )
335+ set_target_properties (scopmath PROPERTIES POSITION_INDEPENDENT_CODE ON )
336+
337+ #
338+ # The "complete" lib (coreneuron + opt mechs)
339+ #
340+ set (ENGINEMECH_C "mech/enginemech.cpp" )
341+ add_library (corenrnmech ${COMPILE_LIBRARY_TYPE} ${coreneuron_all_headers} ${ENGINEMECH_C} ${ADDITIONAL_MECH_C_FILES} )
342+ add_dependencies (corenrnmech kinderiv)
343+
344+ # The mechanism registration function will be always defined (at least for halfgap)
345+ target_compile_definitions (corenrnmech PUBLIC -DADDITIONAL_MECHS)
346+
347+ # Public link interface (default), so that end binary links with all, even if they'r static
348+ target_link_libraries (corenrnmech scopmath coreneuron)
349+
350+
351+ #########################################################
352+ # INSTALL
353+ #########################################################
354+
355+ install (TARGETS coreneuron corenrnmech ${link_cudacoreneuron}
319356 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
320357 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} )
321358
322- install (FILES "engine.h"
359+ install (FILES "engine.h" "enginemech.h"
323360 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /coreneuron)
324361
362+ install (PROGRAMS ${MOD2C_BINARY}
363+ DESTINATION ${CMAKE_INSTALL_BINDIR} )
364+
365+ install (FILES ${MOD2C_UNITS}
366+ DESTINATION ${CMAKE_INSTALL_DATADIR} /mod2c)
367+
368+
325369if (ENABLE_HEADER_INSTALL)
326370 install (DIRECTORY .
327371 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /coreneuron
328372 FILES_MATCHING PATTERN "*.h*" PATTERN "*.ipp" )
329373
330- install (FILES ${KINDERIV_PY}
374+ install (FILES ${KINDERIV_PY} ${MOD_FUNC_C_PL} ${DIMPLIC_C} ${ENGINEMECH_C}
331375 DESTINATION ${CMAKE_INSTALL_DATADIR} /coreneuron)
332376
333- install (FILES ${MOD_FUNC_C_PL}
377+ install (TARGETS scopmath
334378 DESTINATION ${CMAKE_INSTALL_DATADIR} /coreneuron)
335379
336- install (DIRECTORY "scopmath_core"
337- DESTINATION ${CMAKE_INSTALL_DATADIR} /coreneuron
338- FILES_MATCHING PATTERN "dimplic.cpp" )
380+ install (FILES ${MOD2C_OPTMECH_OUTPUTS}
381+ DESTINATION ${CMAKE_INSTALL_DATADIR} /mod2c)
339382endif ()
340-
341- install (PROGRAMS ${MOD2C_BINARY}
342- DESTINATION ${CMAKE_INSTALL_BINDIR} )
343-
344- install (FILES ${MOD2C_UNITS}
345- DESTINATION ${CMAKE_INSTALL_DATADIR} /mod2c)
0 commit comments