# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. cmake_minimum_required(VERSION 3.0 FATAL_ERROR) project(struct VERSION 0.2.0 LANGUAGES C) set(CPACK_PACKAGE_NAME luasandbox-${PROJECT_NAME}) set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Lua Struct Module") set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) set(CPACK_PACKAGE_VENDOR "Mozilla Services") set(CPACK_PACKAGE_CONTACT "Mike Trinkala ") set(CPACK_OUTPUT_CONFIG_FILE "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.cpack") set(CPACK_STRIP_FILES TRUE) set(CPACK_DEBIAN_PACKAGE_DEPENDS "luasandbox (>= 1.0)") set(CPACK_RPM_PACKAGE_LICENSE "MIT License") if(MSVC) set(CMAKE_C_FLAGS "/W3") set(CMAKE_C_FLAGS_RELEASE "/MD /O2 /Ob2") else() set(CMAKE_C_FLAGS "-D_POSIX_SOURCE -fPIC") set(CMAKE_C_FLAGS_RELEASE "-O2") set(CMAKE_SHARED_LIBRARY_SUFFIX ".so") endif() set(CMAKE_SHARED_LIBRARY_PREFIX "") if(LUA51) # build against installed lua 5.1 set(CPACK_PACKAGE_NAME lua-${PROJECT_NAME}) find_package(Lua51) find_program(LUA NAMES lua lua.bat) add_test(NAME test COMMAND ${LUA} test.lua) else() # lua_sandbox build find_package(luasandbox 1.0.2 REQUIRED CONFIG) set(LUA_LIBRARIES ${LUASANDBOX_LIBRARIES}) set(LUA_INCLUDE_DIR ${LUASANDBOX_INCLUDE_DIR}/luasandbox) endif() file(WRITE struct.def "EXPORTS\nluaopen_struct") include(CPack) include_directories(${LUA_INCLUDE_DIR}) add_library(struct SHARED struct.c struct.def) target_link_libraries(struct ${LUA_LIBRARIES}) set(DPERMISSION DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) set(EMPTY_DIR ${CMAKE_BINARY_DIR}/empty) file(MAKE_DIRECTORY ${EMPTY_DIR}) install(DIRECTORY ${EMPTY_DIR}/ DESTINATION ${INSTALL_MODULE_PATH} ${DPERMISSION}) install(TARGETS struct DESTINATION ${INSTALL_MODULE_PATH})