diff --git a/CMakeLists.txt b/CMakeLists.txt index b30bb4f..28a8388 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,106 +5,118 @@ cmake_minimum_required(VERSION 2.8) project(MINETEST_IRC C) -set(MINETEST_IRC_VERSION 0.1.0) +set(MINETEST_IRC_VERSION 0.1.2) + +option(LITE_VERSION "Do not build & package luasocket as part of the mod" OFF) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") -set(LUA_SRCS - src/lua/lapi.c - src/lua/lcode.c - src/lua/ldebug.c - src/lua/ldo.c - src/lua/ldump.c - src/lua/lfunc.c - src/lua/lgc.c - src/lua/llex.c - src/lua/lmem.c - src/lua/lobject.c - src/lua/lopcodes.c - src/lua/lparser.c - src/lua/lstate.c - src/lua/lstring.c - src/lua/ltable.c - src/lua/ltm.c - src/lua/lundump.c - src/lua/lvm.c - src/lua/lzio.c - src/lua/lauxlib.c - src/lua/lbaselib.c - src/lua/ldblib.c - src/lua/liolib.c - src/lua/lmathlib.c - src/lua/loslib.c - src/lua/ltablib.c - src/lua/lstrlib.c - src/lua/loadlib.c - src/lua/linit.c -) +if(NOT LITE_VERSION) -set(LUASOCKET_SRCS - src/luasocket/compat51.c - src/luasocket/luasocket.c - src/luasocket/timeout.c - src/luasocket/buffer.c - src/luasocket/io.c - src/luasocket/auxiliar.c - src/luasocket/options.c - src/luasocket/inet.c - src/luasocket/tcp.c - src/luasocket/udp.c - src/luasocket/except.c - src/luasocket/select.c - src/luasocket/buffer.c - src/luasocket/auxiliar.c - src/luasocket/options.c - src/luasocket/timeout.c - src/luasocket/io.c - src/luasocket/mime.c -) - -if(WIN32) - list(APPEND LUASOCKET_SRCS src/luasocket/wsocket.c) - set(LUASOCKET_EXTRA_LIBS -lwininet) -else() - list(APPEND LUASOCKET_SRCS src/luasocket/usocket.c src/luasocket/unix.c) -endif() - -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src) -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/lua) -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/luasocket) - -add_library(luasocket_lib MODULE ${LUASOCKET_SRCS} ${LUA_SRCS}) - -set_target_properties(luasocket_lib PROPERTIES - OUTPUT_NAME luasocket) - -if(WIN32) - # When using MinGW32, CMake prefixes DLLs with "lib". Force remove - # this prefix regardless of compiler. - set_target_properties(luasocket_lib PROPERTIES - PREFIX "") - if (NOT MSVC) # GCC? - # The `-fPIC' flag generates a warning on MinGW32, which combined - # with `-Werror' makes that an error though `-fPIC' is ignored. - # We use `-fno-PIC' to avoid that. - set_target_properties(luasocket_lib PROPERTIES - COMPILE_FLAGS "-fno-PIC -Wall -Werror") + set(LUA_SRCS + src/lua/lapi.c + src/lua/lcode.c + src/lua/ldebug.c + src/lua/ldo.c + src/lua/ldump.c + src/lua/lfunc.c + src/lua/lgc.c + src/lua/llex.c + src/lua/lmem.c + src/lua/lobject.c + src/lua/lopcodes.c + src/lua/lparser.c + src/lua/lstate.c + src/lua/lstring.c + src/lua/ltable.c + src/lua/ltm.c + src/lua/lundump.c + src/lua/lvm.c + src/lua/lzio.c + src/lua/lauxlib.c + src/lua/lbaselib.c + src/lua/ldblib.c + src/lua/liolib.c + src/lua/lmathlib.c + src/lua/loslib.c + src/lua/ltablib.c + src/lua/lstrlib.c + src/lua/loadlib.c + src/lua/linit.c + ) + + set(LUASOCKET_SRCS + src/luasocket/compat51.c + src/luasocket/luasocket.c + src/luasocket/timeout.c + src/luasocket/buffer.c + src/luasocket/io.c + src/luasocket/auxiliar.c + src/luasocket/options.c + src/luasocket/inet.c + src/luasocket/tcp.c + src/luasocket/udp.c + src/luasocket/except.c + src/luasocket/select.c + src/luasocket/buffer.c + src/luasocket/auxiliar.c + src/luasocket/options.c + src/luasocket/timeout.c + src/luasocket/io.c + src/luasocket/mime.c + ) + + if(WIN32) + list(APPEND LUASOCKET_SRCS src/luasocket/wsocket.c) + set(LUASOCKET_EXTRA_LIBS -lwininet) + else() + list(APPEND LUASOCKET_SRCS src/luasocket/usocket.c src/luasocket/unix.c) endif() - find_library(ws2_32_lib NAMES ws2_32) - target_link_libraries(luasocket_lib ${ws2_32_lib}) -else() # Possibly Unix + + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src) + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/lua) + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/luasocket) + + add_library(luasocket_lib MODULE ${LUASOCKET_SRCS} ${LUA_SRCS}) + set_target_properties(luasocket_lib PROPERTIES - COMPILE_FLAGS "-Wall -Werror") -endif() + OUTPUT_NAME luasocket) + + if(WIN32) + # When using MinGW32, CMake prefixes DLLs with "lib". Force remove + # this prefix regardless of compiler. + set_target_properties(luasocket_lib PROPERTIES + PREFIX "") + if (NOT MSVC) # GCC? + # The `-fPIC' flag generates a warning on MinGW32, which combined + # with `-Werror' makes that an error though `-fPIC' is ignored. + # We use `-fno-PIC' to avoid that. + set_target_properties(luasocket_lib PROPERTIES + COMPILE_FLAGS "-fno-PIC -Wall -Werror") + endif() + find_library(ws2_32_lib NAMES ws2_32) + target_link_libraries(luasocket_lib ${ws2_32_lib}) + else() # Possibly Unix + set_target_properties(luasocket_lib PROPERTIES + COMPILE_FLAGS "-Wall -Werror") + endif() + + if(WIN32) + set(lib "${CMAKE_CURRENT_BINARY_DIR}/luasocket.dll") + else() + set(lib "${CMAKE_CURRENT_BINARY_DIR}/libluasocket.so") + endif() + + set(inst_lib COMMAND ${CMAKE_COMMAND} -E copy ${lib} ${dir}) + +else(NOT LITE_VERSION) + + set(inst_lib) + +endif(NOT LITE_VERSION) set(dir ${CMAKE_CURRENT_BINARY_DIR}/irc/) -if(WIN32) - set(lib "${CMAKE_CURRENT_BINARY_DIR}/luasocket.dll") -else() - set(lib "${CMAKE_CURRENT_BINARY_DIR}/libluasocket.so") -endif() - add_custom_target(pack_mod WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} @@ -125,7 +137,7 @@ add_custom_target(pack_mod COMMAND ${CMAKE_COMMAND} -E copy src/luasocket/tp.lua ${dir} COMMAND ${CMAKE_COMMAND} -E copy src/luasocket/url.lua ${dir} COMMAND ${CMAKE_COMMAND} -E copy doc/LICENSE-luasocket.txt ${dir} - COMMAND ${CMAKE_COMMAND} -E copy ${lib} ${dir} + ${inst_lib} # IRC mod COMMAND ${CMAKE_COMMAND} -E make_directory ${dir}