EGong

git clone git://xatko.vsos.ethz.ch/EGong.git
Log | Files | Refs

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)