# Copyright (C) 2007-2009 LuaDist. # Created by Peter Drahoš # Redistribution and use of this file is allowed according to the terms of the MIT license. # For details see the COPYRIGHT file distributed with LuaDist. # Please note that the package source code is licensed under its own license. PROJECT(luasocket C) CMAKE_MINIMUM_REQUIRED (VERSION 2.6) # Where to install module parts: SET (INSTALL_LMOD share/lua/lmod CACHE PATH "Directory to install Lua modules.") SET (INSTALL_CMOD share/lua/cmod CACHE PATH "Directory to install Lua binary modules.") SET (INSTALL_DATA . CACHE PATH "Directory the package can store documentation, tests or other data in.") SET (INSTALL_DOC ${INSTALL_DATA}/doc CACHE PATH "Recommended directory to install documentation into.") SET (INSTALL_ETC ${INSTALL_DATA}/etc CACHE PATH "Recommended directory to install additional files, configuration or launch scripts.") SET (INSTALL_EXAMPLE ${INSTALL_DATA}/example CACHE PATH "Recommended directory to install examples into.") SET (INSTALL_TEST ${INSTALL_DATA}/test CACHE PATH "Recommended directory to install tests into.") # Find Lua FIND_PACKAGE (Lua51 REQUIRED) INCLUDE_DIRECTORIES( ${LUA_INCLUDE_DIR}) # Set source files ADD_DEFINITIONS(-DLUASOCKET_DEBUG) SET(SRC_SOCKET src/luasocket.c src/timeout.c src/buffer.c src/io.c src/auxiliar.c src/options.c src/inet.c src/tcp.c src/udp.c src/except.c src/select.c) IF (WIN32 AND NOT CYGWIN) SET(SRC_SOCKET ${SRC_SOCKET} src/wsocket.c) SET(LIB_SOCKET ws2_32) ELSE (WIN32 AND NOT CYGWIN) SET(SRC_SOCKET ${SRC_SOCKET} src/usocket.c) ENDIF (WIN32 AND NOT CYGWIN) # Build socket ADD_LIBRARY(socket MODULE ${SRC_SOCKET}) TARGET_LINK_LIBRARIES(socket ${LIB_SOCKET} ${LUA_LIBRARY}) SET_TARGET_PROPERTIES(socket PROPERTIES PREFIX "") # Build mime ADD_LIBRARY(mime MODULE src/mime.c) TARGET_LINK_LIBRARIES(mime ${LUA_LIBRARY}) SET_TARGET_PROPERTIES(mime PROPERTIES PREFIX "") # Add in def files for MSVC compiler IF(MSVC) SET_TARGET_PROPERTIES(mime PROPERTIES LINK_FLAGS "/DEF:${CMAKE_CURRENT_SOURCE_DIR}/src/mime.def") SET_TARGET_PROPERTIES(socket PROPERTIES LINK_FLAGS "/DEF:${CMAKE_CURRENT_SOURCE_DIR}/src/socket.def") ENDIF(MSVC) # Rename targets to core .. bit tricky as we have to avoid name clashes .. hopefully luasocket is the last one to use this madness GET_TARGET_PROPERTY(SOCKET_LOC socket LOCATION) GET_TARGET_PROPERTY(MIME_LOC mime LOCATION) INSTALL (PROGRAMS "${SOCKET_LOC}" DESTINATION ${INSTALL_CMOD}/socket RENAME core${CMAKE_SHARED_MODULE_SUFFIX}) INSTALL (PROGRAMS "${MIME_LOC}" DESTINATION ${INSTALL_CMOD}/mime RENAME core${CMAKE_SHARED_MODULE_SUFFIX}) # Install all files and documentation INSTALL (FILES src/ltn12.lua src/mime.lua src/socket.lua DESTINATION ${INSTALL_LMOD}) INSTALL (FILES src/ftp.lua src/http.lua src/smtp.lua src/tp.lua src/url.lua DESTINATION ${INSTALL_LMOD}/socket) INSTALL (DIRECTORY etc/ DESTINATION ${INSTALL_ETC}) INSTALL (DIRECTORY test/ DESTINATION ${INSTALL_TEST}) INSTALL (DIRECTORY samples/ DESTINATION ${INSTALL_EXAMPLE}) INSTALL (DIRECTORY doc/ DESTINATION ${INSTALL_DOC}) INSTALL (FILES README NEW LICENSE DESTINATION ${INSTALL_DATA})