Skip to content
Snippets Groups Projects
CMakeLists.txt 2.77 KiB
Newer Older
armatusmiles's avatar
armatusmiles committed
cmake_minimum_required(VERSION 3.0)
project (dap_core)
armatusmiles's avatar
armatusmiles committed

# fix implicit declaration warnings
add_definitions ("-D_GNU_SOURCE")

ANTA's avatar
ANTA committed
if(UNIX)
anta999's avatar
anta999 committed
  file(GLOB CORE_SRCS 
      src/*.c 
      src/etc/*.c
      src/rpmalloc/*.c
  )
  file(GLOB CORE_HEADERS 
      include/*.h 
      include/unix/*.h 
      include/unix/linux/*.h 
  )
ANTA's avatar
ANTA committed
endif()
ANTA's avatar
ANTA committed
if(WIN32)
anta999's avatar
anta999 committed
  file(GLOB CORE_SRCS 
      src/*.c 
      src/etc/*.c 
      src/win32/*.c 
      src/rpmalloc/*.c
  )
  file(GLOB CORE_HEADERS 
      include/*.h 
      src/win32/*.h 
      src/win32/*.h 
  )
endif()

if(NOT (${SUBMODULES_NO_BUILD} MATCHES ON))
  set(SUBMODULES_NO_BUILD ON)

  # Check whether we're on a 32-bit or 64-bit system
  if(CMAKE_SIZEOF_VOID_P EQUAL "8")
    set(DEFAULT_BUILD_64 ON)
  else()
    set(DEFAULT_BUILD_64 OFF)
  endif()
  option(BUILD_64 "Build for 64-bit? 'OFF' builds for 32-bit." ${DEFAULT_BUILD_64})

  add_definitions ("-DDAP_SERVER")
  add_definitions ("-DNODE_NETNAME=\"kelvin\"")

	if(WIN32)

	  add_definitions ("-DUNDEBUG")
	  add_definitions ("-DNDEBUG")
	  add_definitions ("-DWIN32")
	  add_definitions ("-D_WINDOWS")
	  add_definitions ("-D__WINDOWS__")
	  add_definitions ("-D_CRT_SECURE_NO_WARNINGS")

#	  if(DAP_RELEASE)
	    set(_CCOPT "-mconsole -static -Wall -O3 -fno-ident -ffast-math -ftree-vectorize -mfpmath=sse -mmmx -msse2 -fno-asynchronous-unwind-tables -ffunction-sections -Wl,--gc-sections -Wl,--strip-all")
#	  else()
#	    set(_CCOPT "-mconsole -static -Wall -pg")
#	    set(_LOPT "-mconsole -static -pg")
#	  endif()

	  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_CCOPT}")
	  set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} ${_LOPT}")
  endif()

	if(UNIX)
	  add_definitions ("-DDAP_OS_LINUX")

	  if(DAP_RELEASE)
	    set(_CCOPT "-Wall -O3 -fPIC -fno-pie -no-pie -fno-ident -ffast-math -ftree-vectorize -mfpmath=sse -mmmx -msse2 -fno-asynchronous-unwind-tables -ffunction-sections -Wl,--gc-sections -Wl,--strip-all")
	  else()
	    set(_CCOPT "-Wall -pg -fPIC -fno-pie -no-pie")
	    set(_LOPT "-pg")
	    SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pg")
	  endif()

	  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_CCOPT}")
	  set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} ${_LOPT}")
	endif()
ANTA's avatar
ANTA committed
endif()

add_library(${PROJECT_NAME} STATIC ${CORE_SRCS} ${CORE_UNIX_SRCS})

#This paths will be used by project-dependent project libraries
anta999's avatar
anta999 committed
target_include_directories(${PROJECT_NAME} INTERFACE include/ src/rpmalloc/)
ANTA's avatar
ANTA committed
if(WIN32)
  include_directories(include/)
endif()

dmitriy.gerasimov's avatar
dmitriy.gerasimov committed
if ( ${CMAKE_SYSTEM_NAME} MATCHES "Linux" )
    set(LINUX "Linux")
endif()

if(UNIX)
    add_subdirectory(src/unix)
    target_link_libraries(${PROJECT_NAME} dap_core_unix)
if(DARWIN)
    add_subdirectory(src/darwin)
    target_link_libraries(${PROJECT_NAME} dap_core_darwin)
if(BUILD_DAP_TESTS)
    enable_testing()
    add_subdirectory(test)
endif()