Avida

 

root / stable / CMakeLists.txt

Revision 3778, 20.5 kB (checked in by brysonda, 3 weeks ago)

Update Xcode project, CMakeLists.txt, and the Windows README.txt file.

Line 
1PROJECT(AVIDA)
2
3CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
4
5
6IF(COMMAND cmake_policy)
7  CMAKE_POLICY(SET CMP0003 NEW)
8ENDIF(COMMAND cmake_policy)
9
10# The following three variables must be after the PROJECT statement, otherwise
11# newer versions of cmake will (correctly) use an empty value of
12# PROJECT_BINARY_DIR, since the project didn't exist yet.
13
14# Default location for installed software/configs/ docs is the build directory.
15SET(CMAKE_INSTALL_PREFIX
16  "${PROJECT_BINARY_DIR}"
17  CACHE PATH
18  "Install path prefix, prepended onto install directories."
19  FORCE
20)
21
22# Final software is built directly into the work subdirectory.
23SET(EXECUTABLE_OUTPUT_PATH
24  "${PROJECT_BINARY_DIR}/bin"
25  CACHE PATH
26  "Single output directory for building all executables."
27)
28
29SET(LIBRARY_OUTPUT_PATH
30  "${PROJECT_BINARY_DIR}/lib"
31  CACHE PATH
32  "Built libraries are placed here before installation."
33)
34
35
36
37# This section defines default builtin compiler options
38# ------------------------------------------------------------------------------
39IF(UNIX)
40  IF (CMAKE_CXX_COMPILER MATCHES ".*pathCC.*")
41    SET(COMPILER_WARNING_FLAGS "")
42    SET(COMPILER_OPTIMIZATION_FLAGS "-funroll-loops -fstrict-aliasing -OPT:Olimit=0")
43  ELSE (CMAKE_CXX_COMPILER MATCHES ".*pathCC.*")
44    IF (CMAKE_CXX_COMPILER MATCHES ".*icpc.*")
45      SET(COMPILER_WARNING_FLAGS "")
46      SET(COMPILER_OPTIMIZATION_FLAGS "-funroll-loops -mp1 -pc64")
47    ELSE (CMAKE_CXX_COMPILER MATCHES ".*icpc.*")
48      SET(COMPILER_WARNING_FLAGS "-Wextra -Wno-unknown-pragmas -Wno-trigraphs")
49      SET(COMPILER_OPTIMIZATION_FLAGS "-funroll-loops -fstrict-aliasing -ftree-vectorize -fvisibility-inlines-hidden")
50    ENDIF (CMAKE_CXX_COMPILER MATCHES ".*icpc.*")
51  ENDIF (CMAKE_CXX_COMPILER MATCHES ".*pathCC.*")
52
53  INCLUDE(CheckCSourceCompiles)
54  IF (CMAKE_CXX_COMPILER MATCHES ".*icpc.*")
55    SET(HAVE_FUSED_MADD FALSE)
56  ELSE (CMAKE_CXX_COMPILER MATCHES ".*icpc.*")
57    SET(CMAKE_REQUIRED_FLAGS "-mno-fused-madd")
58    CHECK_C_SOURCE_COMPILES("int main() { return 0; }" HAVE_FUSED_MADD)
59  ENDIF (CMAKE_CXX_COMPILER MATCHES ".*icpc.*")
60  SET(CMAKE_REQUIRED_FLAGS "")
61
62  IF(HAVE_FUSED_MADD)
63    SET(COMPILER_OPTIMIZATION_FLAGS "-mno-fused-madd ${COMPILER_OPTIMIZATION_FLAGS}")
64  ENDIF(HAVE_FUSED_MADD)
65
66  # Four types of c++ compilations:
67  # - debug (Debug)
68  # - minimum-size release (MinSizeRel)
69  # - release (Release)
70  # - release with debug info (RelWithDebInfo)
71  SET(CMAKE_CXX_FLAGS_DEBUG
72    "-g ${COMPILER_WARNING_FLAGS} -DDEBUG"
73    CACHE STRING "Flags used by the compiler during debug builds." FORCE)
74  SET(CMAKE_CXX_FLAGS_MINSIZEREL
75    "-Os ${COMPILER_WARNING_FLAGS} -DNDEBUG"
76    CACHE STRING "Flags used by the compiler during release minsize builds." FORCE)
77  SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO
78    "-O2 -g ${COMPILER_OPTIMIZATION_FLAGS} ${COMPILER_WARNING_FLAGS} -DDEBUG"
79    CACHE STRING "Flags used by the compiler during release builds." FORCE)
80  SET(CMAKE_CXX_FLAGS_RELEASE
81    "-O3 ${COMPILER_OPTIMIZATION_FLAGS} ${COMPILER_WARNING_FLAGS} -DNDEBUG"
82    CACHE STRING "Flags used by the compiler during release builds." FORCE)
83ENDIF(UNIX)
84
85
86# Default build mode compiles c++ and c code with debug info and no
87# optimizations.
88IF(NOT CMAKE_BUILD_TYPE)
89  SET(CMAKE_BUILD_TYPE
90    Release
91    CACHE STRING
92    "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
93    FORCE
94  )
95ENDIF(NOT CMAKE_BUILD_TYPE)
96
97
98
99# Build Instructions for the Avida Core functionality
100# - Below are groups of sources, based on directory.  Each appends the source
101# - files to the master AVIDA_CORE_SOURCES list that is used to build a
102# - static library that is linked into relevant targets.
103# ------------------------------------------------------------------------------
104SET(AVIDA_CORE_SOURCES)
105SET(ALL_INC_DIRS
106  ${PROJECT_SOURCE_DIR}/source
107)
108
109
110# The actions directory
111SET(ACTIONS_DIR ${PROJECT_SOURCE_DIR}/source/actions)
112SET(ACTIONS_SOURCES
113  ${ACTIONS_DIR}/cActionLibrary.cc
114  ${ACTIONS_DIR}/DriverActions.cc
115  ${ACTIONS_DIR}/EnvironmentActions.cc
116  ${ACTIONS_DIR}/LandscapeActions.cc
117  ${ACTIONS_DIR}/PopulationActions.cc
118  ${ACTIONS_DIR}/PrintActions.cc
119  ${ACTIONS_DIR}/SaveLoadActions.cc
120)
121SOURCE_GROUP(actions FILES ${ACTIONS_SOURCES})
122LIST(APPEND AVIDA_CORE_SOURCES ${ACTIONS_SOURCES})
123LIST(APPEND ALL_INC_DIRS ${ACTIONS_DIR})
124
125
126# The analyze directory
127SET(ANALYZE_DIR ${PROJECT_SOURCE_DIR}/source/analyze)
128SET(ANALYZE_SOURCES
129  ${ANALYZE_DIR}/cAnalyze.cc
130  ${ANALYZE_DIR}/cAnalyzeGenotype.cc
131  ${ANALYZE_DIR}/cAnalyzeTreeStats_CumulativeStemminess.cc
132  ${ANALYZE_DIR}/cAnalyzeTreeStats_Gamma.cc
133  ${ANALYZE_DIR}/cAnalyzeJobQueue.cc
134  ${ANALYZE_DIR}/cAnalyzeJobWorker.cc
135  ${ANALYZE_DIR}/cGenotypeBatch.cc
136  ${ANALYZE_DIR}/cGenotypeData.cc
137  ${ANALYZE_DIR}/cModularityAnalysis.cc
138  ${ANALYZE_DIR}/cMutationalNeighborhood.cc
139  ${ANALYZE_DIR}/cPhenPlastSummary.h
140)
141SOURCE_GROUP(analyze FILES ${ANALYZE_SOURCES})
142LIST(APPEND AVIDA_CORE_SOURCES ${ANALYZE_SOURCES})
143LIST(APPEND ALL_INC_DIRS ${ANALYZE_DIR})
144
145
146# The classification directory
147SET(CLASSIFICATION_DIR ${PROJECT_SOURCE_DIR}/source/classification)
148SET(CLASSIFICATION_SOURCES
149  ${CLASSIFICATION_DIR}/cClassificationManager.cc
150  ${CLASSIFICATION_DIR}/cGenotype.cc
151  ${CLASSIFICATION_DIR}/cGenotype_BirthData.cc
152  ${CLASSIFICATION_DIR}/cGenotypeControl.cc
153  ${CLASSIFICATION_DIR}/cInjectGenotype.cc
154  ${CLASSIFICATION_DIR}/cInjectGenotypeControl.cc
155  ${CLASSIFICATION_DIR}/cInjectGenotypeQueue.cc
156  ${CLASSIFICATION_DIR}/cLineage.cc
157  ${CLASSIFICATION_DIR}/cMutationSteps.cc
158  ${CLASSIFICATION_DIR}/cSpecies.cc
159  ${CLASSIFICATION_DIR}/cSpeciesControl.cc
160  ${CLASSIFICATION_DIR}/cSpeciesQueue.cc
161)
162SOURCE_GROUP(classification FILES ${CLASSIFICATION_SOURCES})
163LIST(APPEND AVIDA_CORE_SOURCES ${CLASSIFICATION_SOURCES})
164LIST(APPEND ALL_INC_DIRS ${CLASSIFICATION_DIR})
165
166
167# The core viewer directory
168SET(COREVIEW_DIR ${PROJECT_SOURCE_DIR}/source/viewer-core)
169SET(COREVIEW_SOURCES
170  ${COREVIEW_DIR}/cCoreView_Info.cc
171  ${COREVIEW_DIR}/cCoreView_Map.cc
172)
173SOURCE_GROUP(coreview FILES ${COREVIEW_SOURCES})
174LIST(APPEND AVIDA_CORE_SOURCES ${COREVIEW_SOURCES})
175LIST(APPEND ALL_INC_DIRS ${COREVIEW_DIR})
176
177
178# The core GUI  directory
179SET(COREGUI_DIR ${PROJECT_SOURCE_DIR}/source/viewer-coreGUI)
180SET(COREGUI_SOURCES
181  ${COREGUI_DIR}/cColor.cc
182  ${COREGUI_DIR}/cGUIWidget.cc
183)
184SOURCE_GROUP(coregui FILES ${COREGUI_SOURCES})
185LIST(APPEND AVIDA_CORE_SOURCES ${COREGUI_SOURCES})
186LIST(APPEND ALL_INC_DIRS ${COREGUI_DIR})
187
188
189# The cpu directory
190SET(CPU_DIR ${PROJECT_SOURCE_DIR}/source/cpu)
191SET(CPU_SOURCES
192  ${CPU_DIR}/cCodeLabel.cc
193  ${CPU_DIR}/cCPUMemory.cc
194  ${CPU_DIR}/cCPUStack.cc
195  ${CPU_DIR}/cCPUTestInfo.cc
196  ${CPU_DIR}/cHardwareBase.cc
197  ${CPU_DIR}/cHardwareCPU.cc
198  ${CPU_DIR}/cHardwareExperimental.cc
199  ${CPU_DIR}/cHardwareGX.cc
200  ${CPU_DIR}/cHardwareManager.cc
201  ${CPU_DIR}/cHardwareSMT.cc
202  ${CPU_DIR}/cHardwareStatusPrinter.cc
203  ${CPU_DIR}/cHardwareTransSMT.cc
204  ${CPU_DIR}/cHeadCPU.cc
205  ${CPU_DIR}/cInstSet.cc
206  ${CPU_DIR}/cTestCPU.cc
207  ${CPU_DIR}/cTestCPUInterface.cc
208)
209SOURCE_GROUP(cpu FILES ${CPU_SOURCES})
210LIST(APPEND AVIDA_CORE_SOURCES ${CPU_SOURCES})
211LIST(APPEND ALL_INC_DIRS ${CPU_DIR})
212
213
214# The drivers directory
215SET(DRIVERS_DIR ${PROJECT_SOURCE_DIR}/source/drivers)
216SET(DRIVERS_SOURCES
217  ${DRIVERS_DIR}/cDefaultAnalyzeDriver.cc
218  ${DRIVERS_DIR}/cDefaultRunDriver.cc
219  ${DRIVERS_DIR}/cDriverManager.cc
220  ${DRIVERS_DIR}/cDriverStatusConduit.cc
221  ${DRIVERS_DIR}/cFallbackWorldDriver.cc
222)
223SOURCE_GROUP(drivers FILES ${DRIVERS_SOURCES})
224LIST(APPEND AVIDA_CORE_SOURCES ${DRIVERS_SOURCES})
225LIST(APPEND ALL_INC_DIRS ${DRIVERS_DIR})
226
227
228# The main directory
229SET(MAIN_DIR ${PROJECT_SOURCE_DIR}/source/main)
230SET(MAIN_SOURCES
231  ${MAIN_DIR}/avida.cc
232  ${MAIN_DIR}/cAvidaConfig.cc
233  ${MAIN_DIR}/cBirthChamber.cc
234  ${MAIN_DIR}/cBirthDemeHandler.cc
235  ${MAIN_DIR}/cBirthGenomeSizeHandler.cc
236  ${MAIN_DIR}/cBirthGlobalHandler.cc
237  ${MAIN_DIR}/cBirthGridLocalHandler.cc
238  ${MAIN_DIR}/cBirthMateSelectHandler.cc
239  ${MAIN_DIR}/cBirthNeighborhoodHandler.cc
240  ${MAIN_DIR}/cBirthSelectionHandler.cc
241  ${MAIN_DIR}/cDeme.cc
242  ${MAIN_DIR}/cDemeNetwork.cc
243  ${MAIN_DIR}/cDemeTopologyNetwork.cc
244  ${MAIN_DIR}/cDemeCellEvent.cc
245  ${MAIN_DIR}/cEnvironment.cc
246  ${MAIN_DIR}/cEventList.cc
247  ${MAIN_DIR}/cFitnessMatrix.cc
248  ${MAIN_DIR}/cGenome.cc
249  ${MAIN_DIR}/cGenomeUtil.cc
250  ${MAIN_DIR}/cInstruction.cc
251  ${MAIN_DIR}/cLandscape.cc
252  ${MAIN_DIR}/cLocalMutations.cc
253  ${MAIN_DIR}/cMutationLib.cc
254  ${MAIN_DIR}/cMutationRates.cc
255  ${MAIN_DIR}/cMxCodeArray.cc
256  ${MAIN_DIR}/cOrganism.cc
257  ${MAIN_DIR}/cOrgMessage.cc
258  ${MAIN_DIR}/cPhenotype.cc
259  ${MAIN_DIR}/cPhenPlastGenotype.cc
260  ${MAIN_DIR}/cPlasticPhenotype.cc
261  ${MAIN_DIR}/cPopulation.cc
262  ${MAIN_DIR}/cPopulationCell.cc
263  ${MAIN_DIR}/cPopulationInterface.cc
264  ${MAIN_DIR}/cReaction.cc
265  ${MAIN_DIR}/cReactionLib.cc
266  ${MAIN_DIR}/cReactionResult.cc
267  ${MAIN_DIR}/cResource.cc
268  ${MAIN_DIR}/cResourceCount.cc
269  ${MAIN_DIR}/cResourceHistory.cc
270  ${MAIN_DIR}/cResourceLib.cc
271  ${MAIN_DIR}/cSpatialCountElem.cc
272  ${MAIN_DIR}/cSpatialResCount.cc
273  ${MAIN_DIR}/cStats.cc
274  ${MAIN_DIR}/cTaskLib.cc
275  ${MAIN_DIR}/cWorld.cc
276)
277SOURCE_GROUP(main FILES ${MAIN_SOURCES})
278LIST(APPEND AVIDA_CORE_SOURCES ${MAIN_SOURCES})
279LIST(APPEND ALL_INC_DIRS ${MAIN_DIR})
280
281
282# The platform directory
283SET(PLATFORM_DIR ${PROJECT_SOURCE_DIR}/source/platform)
284SET(PLATFORM_SOURCES
285  ${PLATFORM_DIR}/cThread.cc
286  ${PLATFORM_DIR}/PlatformExpert.cc
287)
288LIST(APPEND AVIDA_CORE_SOURCES ${PLATFORM_SOURCES})
289LIST(APPEND ALL_INC_DIRS ${PLATFORM_DIR})
290
291
292# The tools directory
293SET(TOOLS_DIR ${PROJECT_SOURCE_DIR}/source/tools)
294SET(TOOLS_SOURCES
295  ${TOOLS_DIR}/cArgContainer.cc
296  ${TOOLS_DIR}/cArgSchema.cc
297  ${TOOLS_DIR}/cBitArray.cc
298  ${TOOLS_DIR}/cChangeList.cc
299  ${TOOLS_DIR}/cConstBurstSchedule.cc
300  ${TOOLS_DIR}/cConstSchedule.cc
301  ${TOOLS_DIR}/cDataFile.cc
302  ${TOOLS_DIR}/cDataFileManager.cc
303  ${TOOLS_DIR}/cDataManager_Base.cc
304  ${TOOLS_DIR}/cDefaultMessageDisplay.cc
305  ${TOOLS_DIR}/cDemeProbSchedule.cc
306  ${TOOLS_DIR}/cFile.cc
307  ${TOOLS_DIR}/cHelpAlias.cc
308  ${TOOLS_DIR}/cHelpManager.cc
309  ${TOOLS_DIR}/cHelpType.cc
310  ${TOOLS_DIR}/cHistogram.cc
311  ${TOOLS_DIR}/cInitFile.cc
312  ${TOOLS_DIR}/cIntSum.cc
313  ${TOOLS_DIR}/cIntegratedSchedule.cc
314  ${TOOLS_DIR}/cIntegratedScheduleNode.cc
315  ${TOOLS_DIR}/cMerit.cc
316  ${TOOLS_DIR}/cProbDemeProbSchedule.cc
317  ${TOOLS_DIR}/cProbSchedule.cc
318  ${TOOLS_DIR}/cRandom.cc
319  ${TOOLS_DIR}/cRCObject.cc
320  ${TOOLS_DIR}/cRunningAverage.cc
321  ${TOOLS_DIR}/cSchedule.cc
322  ${TOOLS_DIR}/cString.cc
323  ${TOOLS_DIR}/cStringIterator.cc
324  ${TOOLS_DIR}/cStringList.cc
325  ${TOOLS_DIR}/cStringUtil.cc
326  ${TOOLS_DIR}/cTools.cc
327  ${TOOLS_DIR}/cWeightedIndex.cc
328)
329SOURCE_GROUP(tools FILES ${TOOLS_SOURCES})
330LIST(APPEND AVIDA_CORE_SOURCES ${TOOLS_SOURCES})
331LIST(APPEND ALL_INC_DIRS ${TOOLS_DIR})
332
333
334# Create the static library from the master source list
335INCLUDE_DIRECTORIES(${ALL_INC_DIRS})
336ADD_LIBRARY(avidacore ${AVIDA_CORE_SOURCES})
337
338
339
340# Build Instructions for the TCMalloc library
341# ------------------------------------------------------------------------------
342IF(UNIX)
343  IF (CMAKE_CXX_COMPILER MATCHES ".*icpc.*")
344    SET(AVD_ENABLE_TCMALLOC FALSE)
345  ELSE (CMAKE_CXX_COMPILER MATCHES ".*icpc.*")
346    SET(AVD_ENABLE_TCMALLOC TRUE)
347  ENDIF (CMAKE_CXX_COMPILER MATCHES ".*icpc.*")
348ELSE(UNIX)
349  SET(AVD_ENABLE_TCMALLOC FALSE)
350ENDIF(UNIX)
351IF(AVD_ENABLE_TCMALLOC)
352  SET(TCMALLOC_DIR source/platform/tcmalloc-1.4)
353  SET(TCMALLOC_SOURCES
354    ${TCMALLOC_DIR}/atomicops-internals-x86.cc
355    ${TCMALLOC_DIR}/central_freelist.cc
356    ${TCMALLOC_DIR}/common.cc
357    ${TCMALLOC_DIR}/internal_logging.cc
358    ${TCMALLOC_DIR}/malloc_extension.cc
359    ${TCMALLOC_DIR}/page_heap.cc
360    ${TCMALLOC_DIR}/span.cc
361    ${TCMALLOC_DIR}/spinlock.cc
362    ${TCMALLOC_DIR}/static_vars.cc
363    ${TCMALLOC_DIR}/sysinfo.cc
364    ${TCMALLOC_DIR}/system-alloc.cc
365    ${TCMALLOC_DIR}/tcmalloc.cc
366    ${TCMALLOC_DIR}/thread_cache.cc
367  )
368  ADD_LIBRARY(tcmalloc ${TCMALLOC_SOURCES})
369ENDIF(AVD_ENABLE_TCMALLOC)
370
371
372
373# Target Processing
374# - For each enabled target, process its build instructions.  Must occur after
375# - avidacore has been defined.
376# ------------------------------------------------------------------------------
377OPTION(AVD_CMDLINE
378  "Enable building standard command line Avida (fastest version)."
379  ON
380)
381IF(AVD_CMDLINE)
382  SET(AVIDA_CMDLINE_DIR source/targets/avida)
383  SET(AVIDA_CMDLINE_SOURCES ${AVIDA_CMDLINE_DIR}/primitive.cc)
384  SOURCE_GROUP(target\\avida FILES ${AVIDA_CMDLINE_SOURCES})
385  ADD_EXECUTABLE(avida ${AVIDA_CMDLINE_SOURCES})
386
387  SET(AVIDA_CMDLINE_LIBS avidacore) 
388  IF(NOT MSVC)
389    LIST(APPEND AVIDA_CMDLINE_LIBS pthread)
390  ENDIF(NOT MSVC)
391  IF(AVD_ENABLE_TCMALLOC)
392    LIST(APPEND AVIDA_CMDLINE_LIBS tcmalloc)
393  ENDIF(AVD_ENABLE_TCMALLOC) 
394  TARGET_LINK_LIBRARIES(avida ${AVIDA_CMDLINE_LIBS})
395 
396  INSTALL_TARGETS(/work avida)
397ENDIF(AVD_CMDLINE)
398
399
400# By default, do not build the console interface to Avida.
401OPTION(AVD_GUI_NCURSES
402  "Enable building Avida console interface."
403  OFF
404)
405# Make sure requisites are present for build of console interface.  Give
406# user feedback if they're missing.
407IF(AVD_GUI_NCURSES)
408  # Locate the ncurses screen handling package (for Avida's console
409  # interface) and the Qt graphics API (for Avida's graphic interface).
410  INCLUDE(${PROJECT_SOURCE_DIR}/CMakeModules/FindNcurses.cmake)
411  IF(NOT NCURSES_INCLUDE_PATH)
412    MESSAGE("Unable to locate header files for the ncurses CRT screen handling package.  Please set the advanced variable NCURSES_INCLUDE_PATH to their location.")
413  ENDIF(NOT NCURSES_INCLUDE_PATH)
414  IF(NOT NCURSES_LIBRARY)
415    MESSAGE("Unable to locate 'libncurses'.  Please set the advanced variable NCURSES_LIBRARY to its location.")
416  ENDIF(NOT NCURSES_LIBRARY)
417
418  IF(NCURSES_LIBRARY AND NCURSES_INCLUDE_PATH)
419
420    INCLUDE_DIRECTORIES(${NCURSES_INCLUDE_PATH})
421   
422    SET(AVIDA_VIEWER_DIR source/targets/avida-viewer)
423    SET(AVIDA_VIEWER_SOURCES
424      ${AVIDA_VIEWER_DIR}/cAnalyzeScreen.cc
425      ${AVIDA_VIEWER_DIR}/cAnalyzeView.cc
426      ${AVIDA_VIEWER_DIR}/cBarScreen.cc
427      ${AVIDA_VIEWER_DIR}/cEnvironmentScreen.cc
428      ${AVIDA_VIEWER_DIR}/cHistScreen.cc
429      ${AVIDA_VIEWER_DIR}/cMapScreen.cc
430      ${AVIDA_VIEWER_DIR}/cMenuWindow.cc
431      ${AVIDA_VIEWER_DIR}/cOptionsScreen.cc
432      ${AVIDA_VIEWER_DIR}/cScreen.cc
433      ${AVIDA_VIEWER_DIR}/cStatsScreen.cc
434      ${AVIDA_VIEWER_DIR}/cSymbolUtil.cc
435      ${AVIDA_VIEWER_DIR}/cTextViewerAnalyzeDriver.cc
436      ${AVIDA_VIEWER_DIR}/cTextViewerDriver.cc
437      ${AVIDA_VIEWER_DIR}/cTextViewerDriver_Base.cc
438      ${AVIDA_VIEWER_DIR}/cTextWindow.cc
439      ${AVIDA_VIEWER_DIR}/cView.cc
440      ${AVIDA_VIEWER_DIR}/cViewInfo.cc
441      ${AVIDA_VIEWER_DIR}/cZoomScreen.cc
442      ${AVIDA_VIEWER_DIR}/viewer.cc
443    )
444    SOURCE_GROUP(targets\\avida-viewer FILES ${AVIDA_VIEWER_SOURCES})
445    ADD_EXECUTABLE(avida-viewer ${AVIDA_VIEWER_SOURCES})
446   
447    SET(AVIDA_VIEWER_LIBS avidacore ${NCURSES_LIBRARY})
448    IF(NOT MSVC)
449      LIST(APPEND AVIDA_VIEWER_LIBS pthread)
450    ENDIF(NOT MSVC)
451    IF(AVD_ENABLE_TCMALLOC)
452      LIST(APPEND AVIDA_VIEWER_LIBS tcmalloc)
453    ENDIF(AVD_ENABLE_TCMALLOC)
454    TARGET_LINK_LIBRARIES(avida-viewer ${AVIDA_VIEWER_LIBS})
455   
456    INSTALL_TARGETS(/work avida-viewer)
457
458  ENDIF(NCURSES_LIBRARY AND NCURSES_INCLUDE_PATH)
459ENDIF(AVD_GUI_NCURSES)
460
461
462
463# By default, do not build the console interface to Avida.
464OPTION(AVD_GUI_PROTO_TEXT
465  "Enable building new Avida text interface."
466  OFF
467)
468# Make sure requisites are present for build of console interface.  Give
469# user feedback if they're missing.
470IF(AVD_GUI_PROTO_TEXT)
471  # Locate the ncurses screen handling package (for Avida's console
472  # interface) and the Qt graphics API (for Avida's graphic interface).
473  INCLUDE(${PROJECT_SOURCE_DIR}/CMakeModules/FindNcurses.cmake)
474  IF(NOT NCURSES_INCLUDE_PATH)
475    MESSAGE("Unable to locate header files for the ncurses CRT screen handling package.  Please set the advanced variable NCURSES_INCLUDE_PATH to their location.")
476  ENDIF(NOT NCURSES_INCLUDE_PATH)
477  IF(NOT NCURSES_LIBRARY)
478    MESSAGE("Unable to locate 'libncurses'.  Please set the advanced variable NCURSES_LIBRARY to its location.")
479  ENDIF(NOT NCURSES_LIBRARY)
480
481  IF(NCURSES_LIBRARY AND NCURSES_INCLUDE_PATH)
482
483    INCLUDE_DIRECTORIES(${NCURSES_INCLUDE_PATH})
484   
485    SET(AVIDA_TEXT_VIEWER_DIR source/targets/viewer-text)
486    SET(AVIDA_TEXT_VIEWER_SOURCES
487#      ${AVIDA_TEXT_VIEWER_DIR}/cAnalyzeScreen.cc
488#      ${AVIDA_TEXT_VIEWER_DIR}/cEnvironmentScreen.cc
489#      ${AVIDA_TEXT_VIEWER_DIR}/cHistScreen.cc
490#      ${AVIDA_TEXT_VIEWER_DIR}/cMenuWindow.cc
491#      ${AVIDA_TEXT_VIEWER_DIR}/cOptionsScreen.cc
492#      ${AVIDA_TEXT_VIEWER_DIR}/cStatsScreen.cc
493#      ${AVIDA_TEXT_VIEWER_DIR}/cZoomScreen.cc
494      ${AVIDA_TEXT_VIEWER_DIR}/cScreen_Map.cc
495      ${AVIDA_TEXT_VIEWER_DIR}/cTextWindow.cc
496      ${AVIDA_TEXT_VIEWER_DIR}/cDriver_TextViewer.cc
497      ${AVIDA_TEXT_VIEWER_DIR}/viewer-text.cc
498    )
499    SOURCE_GROUP(targets\\viewer-text FILES ${AVIDA_TEXT_VIEWER_SOURCES})
500    ADD_EXECUTABLE(avida-textview ${AVIDA_TEXT_VIEWER_SOURCES})
501   
502    SET(AVIDA_TEXT_VIEWER_LIBS avidacore ${NCURSES_LIBRARY})
503    IF(NOT MSVC)
504      LIST(APPEND AVIDA_TEXT_VIEWER_LIBS pthread)
505    ENDIF(NOT MSVC)
506    IF(AVD_ENABLE_TCMALLOC)
507      LIST(APPEND AVIDA_TEXT_VIEWER_LIBS tcmalloc)
508    ENDIF(AVD_ENABLE_TCMALLOC)
509    TARGET_LINK_LIBRARIES(avida-textview ${AVIDA_TEXT_VIEWER_LIBS})
510   
511    INSTALL_TARGETS(/work avida-textview)
512
513  ENDIF(NCURSES_LIBRARY AND NCURSES_INCLUDE_PATH)
514ENDIF(AVD_GUI_PROTO_TEXT)
515
516
517
518# By default, do not build the console interface to Avida.
519OPTION(AVD_GUI_PROTO_FLTK
520  "Enable building new Avida FLTK graphical interface."
521  OFF
522)
523# Make sure requisites are present for build of console interface.  Give
524# user feedback if they're missing.
525IF(AVD_GUI_PROTO_FLTK)
526  # Locate the fltk GUI package
527  INCLUDE(${PROJECT_SOURCE_DIR}/CMakeModules/FindFLTK.cmake)
528  IF(NOT FLTK_INCLUDE_PATH)
529    MESSAGE("Unable to locate header files for the FLTK graphics package.  Please set the advanced variable FLTK_INCLUDE_PATH to their location.")
530  ENDIF(NOT FLTK_INCLUDE_PATH)
531  IF(NOT FLTK_BASE_LIBRARY)
532    MESSAGE("Unable to locate 'fltk.lib'.  Please set the advanced variable FLTK_BASE_LIBRARY to its location.")
533  ENDIF(NOT FLTK_BASE_LIBRARY)
534
535  IF(FLTK_BASE_LIBRARY AND FLTK_INCLUDE_PATH)
536
537    INCLUDE_DIRECTORIES(${FLTK_INCLUDE_PATH})
538   
539    SET(AVIDA_FLTK_VIEWER_DIR source/targets/viewer-fltk)
540    SET(AVIDA_FLTK_VIEWER_SOURCES
541      ${AVIDA_FLTK_VIEWER_DIR}/cDriver_FLTKViewer.cc
542      ${AVIDA_FLTK_VIEWER_DIR}/viewer-fltk.cc
543      ${AVIDA_FLTK_VIEWER_DIR}/fltk-defs.cc
544      ${AVIDA_FLTK_VIEWER_DIR}/cFLTKGridView.cc
545      ${AVIDA_FLTK_VIEWER_DIR}/cFLTKLegend.cc
546    )
547    SOURCE_GROUP(targets\\viewer-fltk FILES ${AVIDA_FLTK_VIEWER_SOURCES})
548    ADD_EXECUTABLE(avida-fltkview ${AVIDA_FLTK_VIEWER_SOURCES})
549   
550    SET(AVIDA_FLTK_VIEWER_LIBS avidacore ${FLTK_BASE_LIBRARY} ${FLTK_IMAGE_LIBRARY} $(FLTK_JPEG_LIBRARY))
551    IF(NOT MSVC)
552      LIST(APPEND AVIDA_FLTK_VIEWER_LIBS pthread)
553    ENDIF(NOT MSVC)
554    IF(AVD_ENABLE_TCMALLOC)
555      LIST(APPEND AVIDA_FLTK_VIEWER_LIBS tcmalloc)
556    ENDIF(AVD_ENABLE_TCMALLOC)
557    TARGET_LINK_LIBRARIES(avida-fltkview ${AVIDA_FLTK_VIEWER_LIBS})
558    SET_TARGET_PROPERTIES(avida-fltkview PROPERTIES LINK_FLAGS ${FLTK_PLATFORM_DEPENDENT_LIBS})
559
560    IF(APPLE AND NOT FLTK_APPLE_X11)
561       SET( LINK_FLAGS_avida_fltkview ${LINK_FLAGS} "-framework Carbon -framework Cocoa -framework ApplicationServices -lz")
562    ENDIF(APPLE AND NOT FLTK_APPLE_X11)
563
564    INSTALL_TARGETS(/work avida-fltkview)
565
566  ENDIF(FLTK_BASE_LIBRARY AND FLTK_INCLUDE_PATH)
567ENDIF(AVD_GUI_PROTO_FLTK)
568
569
570
571OPTION(AVD_TASK_EVENT_GEN
572  "Enable building the task_event_gen utility"
573  OFF
574)
575IF(AVD_TASK_EVENT_GEN)
576  SET(UTILS_DIR source/utils)
577  SET(TASK_EVENT_GEN_SOURCES
578    ${TOOLS_DIR}/cFile.cc
579    ${TOOLS_DIR}/cRandom.cc
580    ${TOOLS_DIR}/cString.cc
581    ${TOOLS_DIR}/cInitFIle.cc
582    ${TOOLS_DIR}/cStringIterator.cc
583    ${TOOLS_DIR}/cStringList.cc
584    ${UTILS_DIR}/task_events/task_event_gen.cc
585  )
586  ADD_EXECUTABLE(task_event_gen ${TASK_EVENT_GEN_SOURCES})
587  INSTALL_TARGETS(/work task_event_gen)
588ENDIF(AVD_TASK_EVENT_GEN)
589
590
591OPTION(AVD_UNIT_TESTS
592  "Enable the unit-tests executable.  Running this target will test various low level functionality."
593  OFF
594)
595IF(AVD_UNIT_TESTS)
596  SET(UNIT_TESTS_DIR source/targets/unit-tests)
597  SET(UNIT_TESTS_SOURCES
598    ${UNIT_TESTS_DIR}/main.cc
599    ${TOOLS_DIR}/cBitArray.cc
600  )
601  ADD_EXECUTABLE(unit-tests ${UNIT_TESTS_SOURCES})
602  INSTALL_TARGETS(/work unit-tests)
603ENDIF(AVD_UNIT_TESTS)
604
605
606# Default Configuration Files
607# - Installed into the work directory alongside selected targets
608# ------------------------------------------------------------------------------
609SET(CFG_FILES_DIR support/config)
610SET(CFG_FILES
611  ${CFG_FILES_DIR}/analyze.cfg
612  ${CFG_FILES_DIR}/avida.cfg
613  ${CFG_FILES_DIR}/environment.cfg
614  ${CFG_FILES_DIR}/events.cfg
615  ${CFG_FILES_DIR}/instset-heads.cfg
616  ${CFG_FILES_DIR}/instset-heads-sex.cfg
617  ${CFG_FILES_DIR}/instset-transsmt.cfg
618  ${CFG_FILES_DIR}/default-heads.org
619  ${CFG_FILES_DIR}/default-heads-sex.org
620  ${CFG_FILES_DIR}/default-transsmt.org
621)
622INSTALL_FILES(/work FILES ${CFG_FILES})
Note: See TracBrowser for help on using the browser.