File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / miniupnpc / CMakeLists.txt
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:16:22 2012 UTC (12 years, 4 months ago) by misho
Branches: miniupnpc, elwix, MAIN
CVS tags: v1_6, HEAD
miniupnpc

    1: cmake_minimum_required (VERSION 2.6)
    2: 
    3: project (miniupnpc C)
    4: set (MINIUPNPC_VERSION 1.5)
    5: set (MINIUPNPC_API_VERSION 8)
    6: 
    7: if (NOT CMAKE_BUILD_TYPE)
    8:   if (WIN32)
    9:     set (DEFAULT_BUILD_TYPE MinSizeRel)
   10:   else (WIN32)
   11:     set (DEFAULT_BUILD_TYPE RelWithDebInfo)
   12:   endif(WIN32)
   13:     set (CMAKE_BUILD_TYPE ${DEFAULT_BUILD_TYPE} CACHE STRING
   14:         "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
   15:         FORCE)
   16: endif()
   17: 
   18: option (UPNPC_BUILD_STATIC "Build static library" TRUE)
   19: option (UPNPC_BUILD_SHARED "Build shared library" TRUE)
   20: if (NOT WIN32)
   21:   option (UPNPC_BUILD_TESTS "Build test executables" TRUE)
   22: endif (NOT WIN32)
   23: option (NO_GETADDRINFO "Define NO_GETADDRINFO" FALSE)
   24: 
   25: mark_as_advanced (NO_GETADDRINFO)
   26: 
   27: if (NO_GETADDRINFO)
   28:   add_definitions (-DNO_GETADDRINFO)
   29: endif (NO_GETADDRINFO)
   30: 
   31: if (NOT WIN32)
   32:   add_definitions (-DMINIUPNPC_SET_SOCKET_TIMEOUT)
   33: else (NOT WIN32)
   34:   add_definitions (-D_WIN32_WINNT=0x0501) # XP or higher for getnameinfo and friends
   35: endif (NOT WIN32)
   36: 
   37: if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
   38:   add_definitions (-DMACOSX -D_DARWIN_C_SOURCE)
   39: endif ()
   40: 
   41: # Set compiler specific build flags
   42: if (CMAKE_COMPILER_IS_GNUC)
   43:   # Set our own default flags at first run.
   44:   if (NOT CONFIGURED)
   45: 
   46:     if (NOT CMAKE_SYSTEM_NAME STREQUAL "AmigaOS")
   47:       set (_PIC -fPIC)
   48:     endif (CMAKE_SYSTEM_NAME STREQUAL "AmigaOS")
   49: 
   50:     set (CMAKE_C_FLAGS "${_PIC} -Wall $ENV{CFLAGS}" # CMAKE_C_FLAGS gets appended to the other C flags
   51:         CACHE STRING "Flags used by the C compiler during normal builds." FORCE)
   52:     set (CMAKE_C_FLAGS_DEBUG "-g -DDDEBUG"
   53:         CACHE STRING "Flags used by the C compiler during debug builds." FORCE)
   54:     set (CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG"
   55:         CACHE STRING "Flags used by the C compiler during release builds." FORCE)
   56:     set (CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG"
   57:         CACHE STRING "Flags used by the C compiler during release builds." FORCE)
   58:     set (CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG"
   59:         CACHE STRING "Flags used by the C compiler during release builds." FORCE)
   60: 
   61:   endif (NOT CONFIGURED)
   62: endif ()
   63: 
   64: configure_file (${CMAKE_SOURCE_DIR}/miniupnpcstrings.h.cmake ${CMAKE_BINARY_DIR}/miniupnpcstrings.h)
   65: include_directories (${CMAKE_BINARY_DIR})
   66: 
   67: set (MINIUPNPC_SOURCES
   68:   igd_desc_parse.c
   69:   miniupnpc.c
   70:   minixml.c
   71:   minisoap.c
   72:   miniwget.c
   73:   upnpc.c
   74:   upnpcommands.c
   75:   upnpreplyparse.c
   76:   upnperrors.c
   77:   connecthostport.c
   78:   portlistingparse.c
   79: )
   80: 
   81: if (NOT WIN32 AND NOT CMAKE_SYSTEM_NAME STREQUAL "AmigaOS")
   82:   set (MINIUPNPC_SOURCES ${MINIUPNPC_SOURCES} minissdpc.c)
   83: endif (NOT WIN32 AND NOT CMAKE_SYSTEM_NAME STREQUAL "AmigaOS")
   84: 
   85: if (WIN32)
   86:   set_source_files_properties (${MINIUPNPC_SOURCES} PROPERTIES
   87:                                                     COMPILE_DEFINITIONS STATICLIB
   88:                                                     COMPILE_DEFINITIONS MINIUPNP_EXPORTS
   89:   )
   90: endif (WIN32)
   91: 
   92: if (WIN32)
   93:   find_library (WINSOCK2_LIBRARY NAMES ws2_32 WS2_32 Ws2_32)
   94:   find_library (IPHLPAPI_LIBRARY NAMES iphlpapi)
   95:   set (LDLIBS ${WINSOCK2_LIBRARY} ${IPHLPAPI_LIBRARY} ${LDLIBS})
   96: #elseif (CMAKE_SYSTEM_NAME STREQUAL "Solaris")
   97: #  find_library (SOCKET_LIBRARY NAMES socket)
   98: #  find_library (NSL_LIBRARY NAMES nsl)
   99: #  find_library (RESOLV_LIBRARY NAMES resolv)
  100: #  set (LDLIBS ${SOCKET_LIBRARY} ${NSL_LIBRARY} ${RESOLV_LIBRARY} ${LDLIBS})
  101: endif (WIN32)
  102: 
  103: if (NOT UPNPC_BUILD_STATIC AND NOT UPNPC_BUILD_SHARED)
  104:     message (FATAL "Both shared and static libraries are disabled!")
  105: endif (NOT UPNPC_BUILD_STATIC AND NOT UPNPC_BUILD_SHARED)
  106: 
  107: if (UPNPC_BUILD_STATIC)
  108:   add_library (upnpc-static STATIC ${MINIUPNPC_SOURCES})
  109:   set_target_properties (upnpc-static PROPERTIES OUTPUT_NAME "miniupnpc")
  110:   target_link_libraries (upnpc-static ${LDLIBS})
  111:   set (UPNPC_INSTALL_TARGETS ${UPNPC_INSTALL_TARGETS} upnpc-static)
  112:   set (UPNPC_LIBRARY_TARGET upnpc-static)
  113: endif (UPNPC_BUILD_STATIC)
  114: 
  115: if (UPNPC_BUILD_SHARED)
  116:   add_library (upnpc-shared SHARED ${MINIUPNPC_SOURCES})
  117:   set_target_properties (upnpc-shared PROPERTIES OUTPUT_NAME "miniupnpc")
  118:   set_target_properties (upnpc-shared PROPERTIES VERSION ${MINIUPNPC_VERSION})
  119:   set_target_properties (upnpc-shared PROPERTIES SOVERSION ${MINIUPNPC_API_VERSION})
  120:   target_link_libraries (upnpc-shared ${LDLIBS})
  121:   set (UPNPC_INSTALL_TARGETS ${UPNPC_INSTALL_TARGETS} upnpc-shared)
  122:   set (UPNPC_LIBRARY_TARGET upnpc-shared)
  123: endif (UPNPC_BUILD_SHARED)
  124: 
  125: if (UPNPC_BUILD_TESTS)
  126:   add_executable (testminixml testminixml.c minixml.c igd_desc_parse.c)
  127:   target_link_libraries (testminixml ${LDLIBS})
  128: 
  129:   add_executable (minixmlvalid minixmlvalid.c minixml.c)
  130:   target_link_libraries (minixmlvalid ${LDLIBS})
  131: 
  132:   add_executable (testupnpreplyparse testupnpreplyparse.c
  133:                                      minixml.c upnpreplyparse.c)
  134:   target_link_libraries (testupnpreplyparse ${LDLIBS})
  135: 
  136:   add_executable (testigddescparse testigddescparse.c
  137:                                    igd_desc_parse.c minixml.c miniupnpc.c miniwget.c minissdpc.c
  138:                                    upnpcommands.c upnpreplyparse.c minisoap.c connecthostport.c
  139:                                    portlistingparse.c
  140:   )
  141:   target_link_libraries (testigddescparse ${LDLIBS})
  142: 
  143:   add_executable (testminiwget testminiwget.c
  144:                                miniwget.c miniupnpc.c minisoap.c upnpcommands.c minissdpc.c
  145:                                upnpreplyparse.c minixml.c igd_desc_parse.c connecthostport.c
  146:                                portlistingparse.c
  147:   )
  148:   target_link_libraries (testminiwget ${LDLIBS})
  149: 
  150: # set (UPNPC_INSTALL_TARGETS ${UPNPC_INSTALL_TARGETS} testminixml minixmlvalid testupnpreplyparse testigddescparse testminiwget)
  151: endif (UPNPC_BUILD_TESTS)
  152: 
  153: 
  154: install (TARGETS ${UPNPC_INSTALL_TARGETS}
  155:   RUNTIME DESTINATION bin
  156:   LIBRARY DESTINATION lib${LIB_SUFFIX}
  157:   ARCHIVE DESTINATION lib${LIB_SUFFIX}
  158: )
  159: install (FILES
  160: 	miniupnpc.h
  161:   miniwget.h
  162:   upnpcommands.h
  163:   igd_desc_parse.h
  164:   upnpreplyparse.h
  165:   upnperrors.h
  166:   declspec.h
  167:   DESTINATION include/miniupnpc
  168: )
  169: 
  170: set (CONFIGURED YES CACHE INTERNAL "")
  171: 
  172: # vim: ts=2:sw=2

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>