summaryrefslogtreecommitdiff
path: root/src/modules/CMakeLists.txt
blob: dc7a2f54e869844e4715efc7b819519b19228441 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#if(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})
#  set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR})
#else(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})
#  file(RELATIVE_PATH DIR ${Anope_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
#  set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/${DIR})
#endif(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})

file(GLOB MODULES_SRCS_C RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.c")
file(GLOB MODULES_SRCS_CPP RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cpp")
set(MODULES_SRCS ${MODULES_SRCS_C} ${MODULES_SRCS_CPP})
list(SORT MODULES_SRCS)

#add_custom_target(modules ALL)
#add_custom_target(modules)
#add_dependencies(modules build)

set_source_files_properties(${MODULES_SRCS} PROPERTIES LANGUAGE CXX COMPILE_FLAGS "${MODULE_CXXFLAGS}")

foreach(SRC ${MODULES_SRCS})
  string(REGEX REPLACE "\\.cpp$" ".x" SRC_X ${SRC})
  string(REGEX REPLACE "\\.c$" ".o" SRC_O ${SRC_X})
  string(REGEX REPLACE "\\.x$" ".o" OBJ ${SRC_O})
  #string(REGEX REPLACE "\\." "_" OBJ_TARGET ${OBJ})
  string(REGEX REPLACE "\\.o" ".so" SO ${OBJ})
  #string(REGEX REPLACE "\\.o" "" SO ${OBJ})
  #string(REGEX REPLACE "\\." "_" SO_TARGET ${SO})
  #add_custom_command(OUTPUT ${BUILD_DIR}/${OBJ}
  #  COMMAND ${MY_COMPILER} ${MY_COMP_ARG} ${CMAKE_CXX_CFLAGS} -I${Anope_SOURCE_DIR}/include -c ${SRC} -o ${BUILD_DIR}/${OBJ}
  #  MAIN_DEPENDENCY ${SRC}
  #)
  #add_custom_target(modules_${OBJ_TARGET} DEPENDS ${BUILD_DIR}/${OBJ})
  #add_custom_command(OUTPUT ${BUILD_DIR}/${SO}
  #  COMMAND ${MY_COMPILER} ${MY_COMP_ARG} ${CMAKE_CXX_CFLAGS} ${CMAKE_SHARED_LIBRARY_CXX_FLAGS} ${CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS} ${BUILD_DIR}/${OBJ} -o ${BUILD_DIR}/${SO}
  #  MAIN_DEPENDENCY ${BUILD_DIR}/${OBJ}
  #)
  #add_custom_target(modules_${SO_TARGET} DEPENDS ${BUILD_DIR}/${SO})
  #add_dependencies(modules modules_${SO_TARGET})
  set(HEADERS ${Anope_SOURCE_DIR}/include/module.h)
  if(${SRC}_HEADERS)
    foreach(HEADER ${${SRC}_HEADERS})
      string(SUBSTRING ${HEADER} 0 1 FIRST_CHAR)
      string(SUBSTRING ${HEADER} 1 1 SECOND_CHAR)
      if(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
        set(HEADERS ${HEADERS} ${HEADER})
      else(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
        set(HEADERS ${HEADERS} ${Anope_SOURCE_DIR}/include/${HEADER})
      endif(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
    endforeach(HEADER)
  endif(${SRC}_HEADERS)
  if(HEADERS)
    set_source_files_properties(${SRC} PROPERTIES OBJECT_DEPENDS "${HEADERS}")
  endif(HEADERS)
  add_library(${SO} MODULE ${SRC})
  add_dependencies(${SO} services)
  #set_target_properties(${SO} PROPERTIES PREFIX "" SUFFIX "" COMPILE_FLAGS ${CXXFLAGS})
  set_target_properties(${SO} PROPERTIES PREFIX "" SUFFIX "" LINK_FLAGS "${LDFLAGS}")
  if(WIN32)
    target_link_libraries(${SO} services wsock32)
  endif(WIN32)
  #set_target_properties(${SO} PROPERTIES PREFIX "" SUFFIX "")
  install(TARGETS ${SO}
    DESTINATION "${DATADIR}/modules"
  )
endforeach(SRC)