@@ -29,10 +29,14 @@ include_directories(utils/randoms)
29
29
include_directories (${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR} )
30
30
include_directories (${MPI_INCLUDE_PATH} )
31
31
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" )
35
34
file (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
+
36
40
37
41
# Compile and include MOD files
38
42
@@ -228,6 +232,7 @@ add_custom_command(OUTPUT "${KINDERIV_H}"
228
232
DEPENDS ${MOD2C_OPTMECH_OUTPUTS} ${MOD2C_STDMECH_OUTPUTS} "${KINDERIV_PY} "
229
233
COMMAND python "${KINDERIV_PY} "
230
234
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} " )
235
+ add_custom_target (kinderiv DEPENDS "${KINDERIV_H} " )
231
236
232
237
if (EXPORT_MECHS_FUNCTIONS)
233
238
# Create C file with all "get function pointers" methods
@@ -242,7 +247,8 @@ if (EXPORT_MECHS_FUNCTIONS)
242
247
endif ()
243
248
244
249
# 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} )
246
252
247
253
# 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
248
254
set (NOACC_MECH_C_FILES
@@ -261,8 +267,6 @@ if(ENABLE_OPENACC)
261
267
endif ()
262
268
endif ()
263
269
264
- set (coreneuron_all_c_files ${coreneuron_all_c_files} ${GENERATED_MECH_C_FILES} )
265
-
266
270
#to indent generated c/cpp files
267
271
if (CLANG_FORMAT_FOUND)
268
272
add_custom_target (formatbuild
@@ -275,8 +279,6 @@ if(CLANG_FORMAT_FOUND)
275
279
endif ()
276
280
277
281
278
- add_library (coreneuron ${COMPILE_LIBRARY_TYPE} ${coreneuron_all_headers} ${coreneuron_all_templates} ${coreneuron_all_c_files} ${KINDERIV_H} )
279
-
280
282
set (link_cudacoreneuron)
281
283
set (link_reportinglib)
282
284
@@ -288,6 +290,7 @@ if(ENABLE_OPENACC AND ENABLE_CUDA_MODULES)
288
290
-gencode=arch=compute_50,code=sm_50
289
291
-gencode=arch=compute_52,code=sm_52
290
292
-gencode=arch=compute_52,code=compute_52
293
+ -Xcompiler -fPIC
291
294
)
292
295
set (link_cudacoreneuron cudacoreneuron)
293
296
endif ()
@@ -297,8 +300,20 @@ if(ENABLE_REPORTINGLIB)
297
300
endif ()
298
301
299
302
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
+
300
315
target_link_libraries (coreneuron ${MPI_CXX_LIBRARIES}
301
- ${link_reportinglib} ${link_cudacoreneuron} ${CUDA_LIBRARIES} )
316
+ ${link_reportinglib} ${link_cudacoreneuron} ${CUDA_LIBRARIES} )
302
317
303
318
set_target_properties (coreneuron PROPERTIES
304
319
VERSION ${VERSION_MAJOR} .${VERSION_MINOR} .${VERSION_PATCH}
@@ -315,31 +330,53 @@ set(CORENRN_LINK_LIBS ${CORENRN_LINK_LIBS} PARENT_SCOPE)
315
330
set (CORENRN_OPTMECH_MODS "${MOD2C_OPTMECH_MODS} " PARENT_SCOPE)
316
331
317
332
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}
319
356
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
320
357
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} )
321
358
322
- install (FILES "engine.h"
359
+ install (FILES "engine.h" "enginemech.h"
323
360
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /coreneuron)
324
361
362
+ install (PROGRAMS ${MOD2C_BINARY}
363
+ DESTINATION ${CMAKE_INSTALL_BINDIR} )
364
+
365
+ install (FILES ${MOD2C_UNITS}
366
+ DESTINATION ${CMAKE_INSTALL_DATADIR} /mod2c)
367
+
368
+
325
369
if (ENABLE_HEADER_INSTALL)
326
370
install (DIRECTORY .
327
371
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /coreneuron
328
372
FILES_MATCHING PATTERN "*.h*" PATTERN "*.ipp" )
329
373
330
- install (FILES ${KINDERIV_PY}
374
+ install (FILES ${KINDERIV_PY} ${MOD_FUNC_C_PL} ${DIMPLIC_C} ${ENGINEMECH_C}
331
375
DESTINATION ${CMAKE_INSTALL_DATADIR} /coreneuron)
332
376
333
- install (FILES ${MOD_FUNC_C_PL}
377
+ install (TARGETS scopmath
334
378
DESTINATION ${CMAKE_INSTALL_DATADIR} /coreneuron)
335
379
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)
339
382
endif ()
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