diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index fab228dbbab8305d596cd4e5ae706dd322a78162..80acc6068bb68a379cc5633440fff220cb06529e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -2,101 +2,54 @@ project (Synchronet C CXX) cmake_minimum_required(VERSION 2.8.11) -if(NOT PROJECTS) - SET(PROJECTS SyncTERM;SyncDraw;SExPOTS;Tone;SMBLib;SBBS3 CACHE STRING "Choose the projects to build, options are: SyncTERM" FORCE) - if(WIN32) - list(APPEND PROJECTS CIOXtrn) - endif() -endif() - -if(MSVC) - set_property(DIRECTORY APPEND PROPERTY COMPILE_OPTIONS /wd4996) -endif() - -list(FIND PROJECTS SBBS3 BUILD_SBBS3) -if(BUILD_SBBS3 GREATER -1) - if(NOT XPDEV_ADDED) - add_subdirectory(xpdev) - set(XPDEV_ADDED TRUE) - endif() - if(NOT CONIO_ADDED) - add_subdirectory(conio) - set(CONIO_ADDED TRUE) - endif() - if(NOT UIFC_ADDED) - add_subdirectory(uifc) - set(UIFC_ADDED TRUE) - endif() - list(APPEND PROJECTS SMBLib) - add_subdirectory(sbbs3) -endif() - -list(FIND PROJECTS SyncTERM BUILD_SYNCTERM) -if(BUILD_SYNCTERM GREATER -1) - if(NOT XPDEV_ADDED) - add_subdirectory(xpdev) - set(XPDEV_ADDED TRUE) - endif() - if(NOT CONIO_ADDED) - add_subdirectory(conio) - set(CONIO_ADDED TRUE) - endif() - if(NOT UIFC_ADDED) - add_subdirectory(uifc) - set(UIFC_ADDED TRUE) - endif() - add_subdirectory(syncterm) -endif() - -list(FIND PROJECTS SyncDraw BUILD_SYNCDRAW) -if(BUILD_SYNCDRAW GREATER -1) - if(NOT XPDEV_ADDED) - add_subdirectory(xpdev) - set(XPDEV_ADDED TRUE) - endif() - if(NOT CONIO_ADDED) - add_subdirectory(conio) - set(CONIO_ADDED TRUE) - endif() - add_subdirectory(syncdraw) -endif() - -list(FIND PROJECTS SExPOTS BUILD_SEXPOTS) -if(BUILD_SEXPOTS GREATER -1) - if(NOT XPDEV_ADDED) - add_subdirectory(xpdev) - set(XPDEV_ADDED TRUE) - endif() - add_subdirectory(sexpots) -endif() - -list(FIND PROJECTS Tone BUILD_TONE) -if(BUILD_TONE GREATER -1) - if(NOT XPDEV_ADDED) - add_subdirectory(xpdev) - set(XPDEV_ADDED TRUE) - endif() - add_subdirectory(tone) -endif() - -list(FIND PROJECTS SMBLib BUILD_SMBLIB) -if(BUILD_SMBLIB GREATER -1) - if(NOT XPDEV_ADDED) - add_subdirectory(xpdev) - set(XPDEV_ADDED TRUE) - endif() - add_subdirectory(smblib) -endif() +INCLUDE(build/SynchronetMacros.cmake) -list(FIND PROJECTS CIOXtrn BUILD_CIOXTRN) -if(BUILD_CIOXTRN GREATER -1) - if(NOT XPDEV_ADDED) - add_subdirectory(xpdev) - set(XPDEV_ADDED TRUE) - endif() - if(NOT CONIO_ADDED) - add_subdirectory(conio) - set(CONIO_ADDED TRUE) - endif() - add_subdirectory(cioxtrn) -endif() +if(NOT PROJECTS) + SET(PROJECTS SyncTERM;SyncDraw;SExPOTS;Tone;SMBLib;SBBS3;CIOXtrn CACHE STRING "Choose the projects to build, options are: SyncTERM" FORCE) +endif() + +macro(add_subdirs) + foreach(ARG IN ITEMS ${ARGV}) + string(TOUPPER ${ARG} UC_ARG) + list(FIND ADDED ${UC_ARG} FOUND) + if(${FOUND} EQUAL -1) + add_subdirectory(${ARG}) + list(APPEND ADDED ${UC_ARG}) + endif() + endforeach() +endmacro() + +foreach(PROJECT IN ITEMS ${PROJECTS}) + if(${PROJECT} STREQUAL SBBS3) + add_subdirs(xpdev conio uifc) + list(FIND PROJECTS SMBLib FOUND) + if(${FOUND} EQUAL -1) + list(APPEND PROJECTS SMBLib) + endif() + add_subdirectory(sbbs3) + endif() + if(${PROJECT} STREQUAL SyncTERM) + add_subdirs(xpdev conio uifc) + add_subdirectory(syncterm) + endif() + if(${PROJECT} STREQUAL SyncDraw) + add_subdirs(xpdev conio) + add_subdirectory(syncdraw) + endif() + if(${PROJECT} STREQUAL SExPOTS) + add_subdirs(xpdev) + add_subdirectory(sexpots) + endif() + if(${PROJECT} STREQUAL Tone) + add_subdirs(xpdev) + add_subdirectory(tone) + endif() + if(${PROJECT} STREQUAL SMBLib) + add_subdirs(xpdev) + add_subdirectory(smblib) + endif() + if(${PROJECT} STREQUAL CIOXtrn) + add_subdirs(xpdev conio) + add_subdirectory(cioxtrn) + endif() +endforeach()