Improve CMake build script.

pull/1/head
Robert G. Jakabosky 15 years ago
parent 48c39a505a
commit d9f67edb7d

@ -9,7 +9,8 @@ set(BUILD_SHARED_LIBS TRUE)
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
set(INSTALL_CMOD share/lua/cmod CACHE PATH "Directory to install Lua binary modules (configure lua via LUA_CPATH)")
set(INSTALL_CMOD ${CMAKE_INSTALL_PREFIX}/lib/lua/5.1 CACHE PATH
"Directory to install Lua binary modules (configure lua via LUA_CPATH)")
set(LUA_NATIVE_OBJECTS_PATH ../LuaNativeObjects CACHE PATH
"Directory to LuaNativeObjects bindings generator.")
set(USE_PRE_GENERATED_BINDINGS TRUE CACHE BOOL
@ -24,12 +25,17 @@ include(FindLua51)
if(NOT ${LUA51_FOUND})
message(FATAL_ERROR "The FindLua51 module could not find lua :-(")
endif()
set(COMMON_LIBS "${COMMON_LIBS};${LUA_LIBRARIES}")
## MAC OSX needs extra linker flags
if(APPLE)
set(COMMON_LDFLAGS "${COMMON_LDFLAGS} -undefined dynamic_lookup")
endif()
## find threads
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
include(FindThreads)
include(CustomMacros)
## LuaNativeObjects
include(LuaNativeObjects)
@ -52,7 +58,8 @@ endif()
add_library(lua-llthreads MODULE ${LUA_LLTHREADS_SRC})
target_link_libraries(lua-llthreads ${COMMON_LIBS} ${CMAKE_THREAD_LIBS_INIT})
set_target_properties(lua-llthreads PROPERTIES PREFIX "")
set_target_properties(lua-llthreads PROPERTIES COMPILE_FLAGS "${COMMON_CFLAGS}")
add_target_properties(lua-llthreads COMPILE_FLAGS "${COMMON_CFLAGS}")
add_target_properties(lua-llthreads LINK_FLAGS "${LD_FLAGS} ${COMMON_LDFLAGS}")
set_target_properties(lua-llthreads PROPERTIES OUTPUT_NAME llthreads)
install(TARGETS lua-llthreads

@ -0,0 +1,61 @@
## Orignal Macros copied from lighttpd 2.0
## modules are without the "lib" prefix
macro(setup_static_modules TARGET)
file(WRITE ${TARGET}_builtins.h "/* auto-generated by CMake build do not edit */\n\n")
endmacro(setup_static_modules)
macro(add_module TARGET MODNAME)
set(_static_mod ${BUILD_STATIC})
## create list of module source files.
set(_srcfiles)
set(_def_module_src ${CMAKE_CURRENT_SOURCE_DIR}/modules/${MODNAME}.c)
if(EXISTS ${_def_module_src})
set(_srcfiles ${_def_module_src})
endif(EXISTS ${_def_module_src})
foreach(_srcfile ${ARGN})
if(_srcfile STREQUAL "STATIC")
set(_static_mod TRUE)
else(_srcfile STREQUAL "STATIC")
set(_srcfiles ${_srcfiles} ${_srcfile})
endif(_srcfile STREQUAL "STATIC")
endforeach(_srcfile)
if(_static_mod)
set(STATIC_MODULE_SRC ${STATIC_MODULE_SRC} ${_srcfiles})
file(APPEND ${TARGET}_builtins.h "STATIC_MOD(${MODNAME})\n")
else(_static_mod)
add_library(${MODNAME} MODULE ${_srcfiles})
set(MODULE_TARGETS ${MODULE_TARGETS} ${MODNAME})
add_target_properties(${MODNAME} LINK_FLAGS ${COMMON_LDFLAGS})
add_target_properties(${MODNAME} COMPILE_FLAGS ${COMMON_CFLAGS})
set_target_properties(${MODNAME} PROPERTIES CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
## Windows likes to link it this way back to app!
if(WIN32)
set_target_properties(${MODNAME} PROPERTIES LINK_FLAGS ${TARGET}.lib)
endif(WIN32)
if(APPLE)
set_target_properties(${MODNAME} PROPERTIES LINK_FLAGS "-flat_namespace -undefined suppress")
endif(APPLE)
endif(_static_mod)
endmacro(add_module)
macro(add_target_properties _target _name)
set(_properties)
foreach(_prop ${ARGN})
set(_properties "${_properties} ${_prop}")
endforeach(_prop)
get_target_property(_old_properties ${_target} ${_name})
##message(STATUS "adding property to ${_target} ${_name}:" ${_properties})
if(NOT _old_properties)
# in case it's NOTFOUND
set(_old_properties)
endif(NOT _old_properties)
set_target_properties(${_target} PROPERTIES ${_name} "${_old_properties} ${_properties}")
endmacro(add_target_properties)
Loading…
Cancel
Save