CMakeLists.txt (3820B)
1 cmake_minimum_required (VERSION 2.6) 2 function(addlib lib) 3 GET_FILENAME_COMPONENT(libn ${lib} NAME) 4 STRING(REPLACE "/" "_" libn ${lib}) 5 add_library("${libn}" "${EGONG_SRCDIR}/${lib}.c") 6 target_link_libraries(EGong "${libn}") 7 endfunction(addlib) 8 macro(absolute_libs dest libs) 9 foreach(lib ${libs}) 10 if(NOT EXISTS ${lib}) 11 find_library(ABS_${lib} ${lib}) 12 if(NOT ABS_${lib} STREQUAL "ABS_${lib}-NOTFOUND") 13 set(${dest} ${${dest}} ${ABS_${lib}}) 14 endif() 15 else(EXISTS ${lib}) 16 set(${dest} ${${dest}} ${lib}) 17 endif() 18 endforeach(lib) 19 endmacro(absolute_libs) 20 21 macro(EGong_link_libs libs) 22 set(EGONG_EXT_LIBS "${EGONG_EXT_LIBS}${libs};") 23 endmacro(EGong_link_libs) 24 25 project(EGong C) 26 set(EGong_VERSION_MAJOR 0) 27 set(EGong_VERSION_MINOR 1) 28 set(EGONG_SRCDIR src/) 29 set(EGONG_DATADIR data/) 30 set(EGONG_EXT_LIBS) 31 include_directories("${PROJECT_SOURCE_DIR}/include") 32 configure_file( 33 "${PROJECT_SOURCE_DIR}/include/EGong/Util/Config_Compiletime.h.in" 34 "${PROJECT_SOURCE_DIR}/include/EGong/Util/Config_Compiletime.h" 35 ) 36 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99") 37 if(CMAKE_FIND_ROOT_PATH) 38 link_directories(${CMAKE_FIND_ROOT_PATH}/usr/lib) 39 endif(CMAKE_FIND_ROOT_PATH) 40 41 option(USE_GTK "Compile an interface for GTK" OFF) 42 option(USE_LIBNOTIFY "Compile an interface for linux libnotify" OFF) 43 option(USE_AO "Compile an interface for Audio" OFF) 44 option(USE_WINGUI "Compile an interface for the Windows GUI-Shell" OFF) 45 46 if(USE_GTK) 47 find_package(GTK2) 48 if(GTK2_FOUND) 49 include_directories(${GTK2_INCLUDE_DIRS}) 50 EGong_link_libs("${GTK2_LIBRARIES}") 51 if(USE_LIBNOTIFY) 52 find_package(PkgConfig) 53 if(PKGCONFIG_FOUND) 54 pkg_check_modules(LIBNOTIFY libnotify) 55 if(LIBNOTIFY_FOUND) 56 include_directories(${LIBNOTIFY_INCLUDE_DIRS}) 57 EGong_link_libs("${LIBNOTIFY_LIBRARIES}") 58 else(NOT LIBNOTIFY_FOUND) 59 set(USE_LIBNOTIFY OFF) 60 endif(LIBNOTIFY_FOUND) 61 endif(PKGCONFIG_FOUND) 62 endif(USE_LIBNOTIFY) 63 else(NOT GTK2_FOUND) 64 set(USE_GTK OFF) 65 endif(GTK2_FOUND) 66 endif(USE_GTK) 67 68 if(USE_AO) 69 find_package(PkgConfig) 70 if(PKGCONFIG_FOUND) 71 pkg_check_modules(LIBAO ao) 72 if(LIBAO_FOUND) 73 include_directories(${LIBAO_INCLUDE_DIRS}) 74 EGong_link_libs("${LIBAO_LIBRARIES} m") 75 else(NOT LIBAO_FOUND) 76 set(USE_AO OFF) 77 endif(LIBAO_FOUND) 78 endif(PKGCONFIG_FOUND) 79 endif(USE_AO) 80 81 if(CMAKE_SYSTEM_NAME STREQUAL "Windows") 82 ENABLE_LANGUAGE(RC) 83 EGong_link_libs("ws2_32") 84 if(USE_WINGUI) 85 set(WIN32_EXECUTABLE ON) 86 EGong_link_libs("gdi32") 87 if(NOT CMAKE_BUILD_TYPE STREQUAL "debug") 88 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -mwindows") 89 endif() 90 endif(USE_WINGUI) 91 endif(CMAKE_SYSTEM_NAME STREQUAL "Windows") 92 93 add_executable(EGong src/EGong.c src/Interfaces/Windows.rc) 94 macro(addlibs libs) 95 set(EGONG_LIBS "${EGONG_LIBS}" "${libs}") 96 endmacro(addlibs) 97 set(EGONG_LIBS ${EGONG_LIBS} 98 Main 99 Util/Waiter 100 Interfaces 101 Interfaces/STDIO 102 Interfaces/CMD) 103 if(USE_WINGUI) 104 set(EGONG_LIBS ${EGONG_LIBS} 105 Interfaces/GUI 106 Interfaces/Windows 107 ) 108 endif() 109 if(USE_GTK) 110 set(EGONG_LIBS ${EGONG_LIBS} 111 Interfaces/GUI 112 Interfaces/GTK 113 ) 114 endif() 115 set(EGONG_LIBS ${EGONG_LIBS} 116 CNC 117 Packet 118 Util/Misc 119 Util/Dependencies 120 Util/Command 121 Util/Socket 122 Util/Hash 123 Util/Array 124 Util/SAlloc 125 Util/Config 126 Util/Log 127 ) 128 message(${EGONG_LIBS}) 129 foreach(lib ${EGONG_LIBS}) 130 addlib(${lib}) 131 endforeach(lib) 132 target_link_libraries(EGong ${EGONG_EXT_LIBS}) 133 134 135 #INSTALL 136 install(TARGETS EGong DESTINATION bin) 137 if(NOT CMAKE_SYSTEM_NAME STREQUAL "Windows") 138 install(FILES ${EGONG_DATADIR}/EGong.ico DESTINATION share/EGong/) 139 endif() 140 #PACKING 141 absolute_libs(ABS_LIBS "${OPENSSL_LIBRARIES};${LIBAO_LIBRARIES}") 142 set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS ${ABS_LIBS}) 143 include (InstallRequiredSystemLibraries) 144 set (CPACK_PACKAGE_VERSION_MAJOR "${EGong_VERSION_MAJOR}") 145 set (CPACK_PACKAGE_VERSION_MINOR "${EGong_VERSION_MINOR}") 146 include (CPack)