Allow per-lib selection of bundled libs.

This commit is contained in:
Radegast 2012-11-20 17:12:26 +00:00
parent d4ecbb96a8
commit 80aaff0b11

View file

@ -2,48 +2,55 @@ if(WIN32)
#----------------------------------------------------------------- #-----------------------------------------------------------------
# Build bundled JPEG library # Build bundled JPEG library
#----------------------------------------------------------------- #-----------------------------------------------------------------
add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/libs/jpeg/libjpeg.lib if(BUNDLED_JPEG) # static
COMMAND NMAKE /f makefile.vc setup-v10 && NMAKE /f makefile.vc add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/libs/jpeg/libjpeg.lib
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/libs/jpeg COMMAND NMAKE /f makefile.vc setup-v10 && NMAKE /f makefile.vc
) WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/libs/jpeg
)
add_custom_target(bundled_jpeg add_custom_target(bundled_jpeg
DEPENDS ${CMAKE_SOURCE_DIR}/libs/jpeg/libjpeg.lib DEPENDS ${CMAKE_SOURCE_DIR}/libs/jpeg/libjpeg.lib
) )
set(JPEG_BUNDLED_LIBRARIES "${CMAKE_SOURCE_DIR}/libs/jpeg/libjpeg.lib" PARENT_SCOPE)
set(JPEG_BUNDLED_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/libs/jpeg" PARENT_SCOPE)
endif(BUNDLED_JPEG)
#----------------------------------------------------------------- #-----------------------------------------------------------------
# Build bundled cURL library # Build bundled cURL library
#----------------------------------------------------------------- #-----------------------------------------------------------------
add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/libs/curl/lib/release-dll/libcurl_imp.lib if(BUNDLED_CURL) # DLL
COMMAND NMAKE /f Makefile vc-dll add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/libs/curl/lib/release-dll/libcurl_imp.lib
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/libs/curl/lib/release-dll/libcurl.dll ${CMAKE_BINARY_DIR} COMMAND NMAKE /f Makefile vc-dll
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/libs/curl COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/libs/curl/lib/release-dll/libcurl.dll ${CMAKE_BINARY_DIR}
) WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/libs/curl
)
add_custom_target(bundled_curl add_custom_target(bundled_curl
DEPENDS ${CMAKE_SOURCE_DIR}/libs/curl/lib/release-dll/libcurl_imp.lib DEPENDS ${CMAKE_SOURCE_DIR}/libs/curl/lib/release-dll/libcurl_imp.lib
) )
set(CURL_BUNDLED_LIBRARY "${CMAKE_SOURCE_DIR}/libs/curl/lib/release-dll/libcurl_imp.lib" PARENT_SCOPE)
set(CURL_BUNDLED_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/libs/curl/include" PARENT_SCOPE)
endif(BUNDLED_CURL)
#----------------------------------------------------------------- #-----------------------------------------------------------------
# Build bundled Lua 5.1 library # Build bundled Lua 5.1 library
#----------------------------------------------------------------- #-----------------------------------------------------------------
if(BUNDLED_LUA)
# TODO: add lua for Windows # TODO: add lua for Windows
message(FATAL_ERROR "Building bundled Lua on Windows is not yet possible.")
endif(BUNDLED_LUA)
#----------------------------------------------------------------- #-----------------------------------------------------------------
# Copy bundled SDL library to the etl.exe location # Copy bundled SDL library to the etl.exe location
#----------------------------------------------------------------- #-----------------------------------------------------------------
file(COPY ${CMAKE_SOURCE_DIR}/libs/sdl-windows/lib/x86/SDL.dll DESTINATION ${CMAKE_BINARY_DIR}) if(BUNDLED_SDL) # DLL
file(COPY ${CMAKE_SOURCE_DIR}/libs/sdl-windows/lib/x86/SDL.dll DESTINATION ${CMAKE_BINARY_DIR})
set(SDL32_BUNDLED_LIBRARIES
"${CMAKE_SOURCE_DIR}/libs/sdl-windows/lib/x86/SDL.lib"
"${CMAKE_SOURCE_DIR}/libs/sdl-windows/lib/x86/SDLmain.lib" PARENT_SCOPE)
set(SDL32_BUNDLED_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/libs/sdl/include" PARENT_SCOPE)
endif(BUNDLED_SDL)
# return compiled libs to the parent CMakeLists.txt
set(BUNDLED_LIBRARIES "${CMAKE_SOURCE_DIR}/libs/curl/lib/release-dll/libcurl_imp.lib" # DLL
"${CMAKE_SOURCE_DIR}/libs/jpeg/libjpeg.lib" # static
"${CMAKE_SOURCE_DIR}/libs/sdl-windows/lib/x86/SDL.lib" # DLL
"${CMAKE_SOURCE_DIR}/libs/sdl-windows/lib/x86/SDLmain.lib" # DLL
PARENT_SCOPE
)
elseif(UNIX) elseif(UNIX)
if(CROSS_COMPILE32) if(CROSS_COMPILE32)
set(CROSS_COMPILE32_FLAGS CFLAGS=-m32 LDFLAGS=-m32) set(CROSS_COMPILE32_FLAGS CFLAGS=-m32 LDFLAGS=-m32)
else(CROSS_COMPILE32) else(CROSS_COMPILE32)
@ -53,89 +60,88 @@ elseif(UNIX)
#----------------------------------------------------------------- #-----------------------------------------------------------------
# Build bundled cURL library # Build bundled cURL library
#----------------------------------------------------------------- #-----------------------------------------------------------------
add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/libs/curl/lib/.libs/libcurl.a if(BUNDLED_CURL)
COMMAND ${CROSS_COMPILE32_FLAGS} ./configure add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/libs/curl/lib/.libs/libcurl.a
--enable-shared=no --enable-static=yes COMMAND ${CROSS_COMPILE32_FLAGS} ./configure
--without-libssh2 --enable-http --enable-ftp --enable-shared=no --enable-static=yes
--disable-gopher --enable-file --disable-ldap --without-libssh2 --enable-http --enable-ftp
--disable-dict --disable-telnet --disable-manual --disable-gopher --enable-file --disable-ldap
--enable-libgcc --disable-ipv6 --disable-ares --disable-dict --disable-telnet --disable-manual
--without-ssl --without-zlib --without-libidn --enable-libgcc --disable-ipv6 --disable-ares
--without-librtmp && make --without-ssl --without-zlib --without-libidn
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/libs/curl --without-librtmp && make
) WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/libs/curl
)
add_custom_target(bundled_curl add_custom_target(bundled_curl
DEPENDS ${CMAKE_SOURCE_DIR}/libs/curl/lib/.libs/libcurl.a DEPENDS ${CMAKE_SOURCE_DIR}/libs/curl/lib/.libs/libcurl.a
) )
set(CURL_BUNDLED_LIBRARY "${CMAKE_SOURCE_DIR}/libs/curl/lib/.libs/libcurl.a" PARENT_SCOPE)
set(CURL_BUNDLED_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/libs/curl/include" PARENT_SCOPE)
endif(BUNDLED_CURL)
#----------------------------------------------------------------- #-----------------------------------------------------------------
# Build bundled JPEG library # Build bundled JPEG library
#----------------------------------------------------------------- #-----------------------------------------------------------------
add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/libs/jpeg/.libs/libjpeg.a if(BUNDLED_JPEG)
COMMAND ${CROSS_COMPILE32_FLAGS} ./configure && make add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/libs/jpeg/.libs/libjpeg.a
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/libs/jpeg COMMAND ${CROSS_COMPILE32_FLAGS} ./configure && make
) WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/libs/jpeg
)
add_custom_target(bundled_jpeg add_custom_target(bundled_jpeg
DEPENDS ${CMAKE_SOURCE_DIR}/libs/jpeg/.libs/libjpeg.a DEPENDS ${CMAKE_SOURCE_DIR}/libs/jpeg/.libs/libjpeg.a
) )
set(JPEG_BUNDLED_LIBRARIES "${CMAKE_SOURCE_DIR}/libs/jpeg/.libs/libjpeg.a" PARENT_SCOPE)
set(JPEG_BUNDLED_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/libs/jpeg" PARENT_SCOPE)
endif(BUNDLED_JPEG)
#----------------------------------------------------------------- #-----------------------------------------------------------------
# Build bundled SDL library # Build bundled SDL library
#----------------------------------------------------------------- #-----------------------------------------------------------------
add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/libs/sdl/build/.libs/libSDL.a if(BUNDLED_SDL)
# disable svga and directfb modules for cross-compiling on 64bit Debian Squeezy add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/libs/sdl/build/.libs/libSDL.a
COMMAND ${CROSS_COMPILE32_FLAGS} ./configure --disable-video-svga --disable-video-directfb && make # disable svga and directfb modules for cross-compiling on 64bit Debian Squeezy
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/libs/sdl COMMAND ${CROSS_COMPILE32_FLAGS} ./configure --disable-video-svga --disable-video-directfb && make
) WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/libs/sdl
)
add_custom_target(bundled_sdl add_custom_target(bundled_sdl
DEPENDS ${CMAKE_SOURCE_DIR}/libs/sdl/build/.libs/libSDL.a DEPENDS ${CMAKE_SOURCE_DIR}/libs/sdl/build/.libs/libSDL.a
) )
if(CMAKE_SYSTEM MATCHES "Darwin")
set(SDL32_BUNDLED_LIBRARIES ${SDL32_BUNDLED_LIBRARIES} "${CMAKE_SOURCE_DIR}/libs/sdl/build/.libs/libSDLmain.a")
endif(CMAKE_SYSTEM MATCHES "Darwin")
set(SDL32_BUNDLED_LIBRARIES ${SDL32_BUNDLED_LIBRARIES} "${CMAKE_SOURCE_DIR}/libs/sdl/build/.libs/libSDL.a" PARENT_SCOPE)
set(SDL32_BUNDLED_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/libs/sdl/include" PARENT_SCOPE)
endif(BUNDLED_SDL)
#----------------------------------------------------------------- #-----------------------------------------------------------------
# Build bundled Lua 5.1 library # Build bundled Lua 5.1 library
#----------------------------------------------------------------- #-----------------------------------------------------------------
# TODO: clean this up. The *32bit targets were added into the Lua Makefiles # TODO: clean this up. The *32bit targets were added into the Lua Makefiles
if(CMAKE_SYSTEM MATCHES "OpenBSD*") if(BUNDLED_LUA)
set(LUA_MAKE_TARGET "bsd") if(CMAKE_SYSTEM MATCHES "OpenBSD*")
elseif(CMAKE_SYSTEM MATCHES "Darwin") set(LUA_MAKE_TARGET "bsd")
if(NOT CROSS_COMPILE32) elseif(CMAKE_SYSTEM MATCHES "Darwin")
set(LUA_MAKE_TARGET "macosx") if(NOT CROSS_COMPILE32)
set(LUA_MAKE_TARGET "macosx")
else()
set(LUA_MAKE_TARGET "macosx32bit")
endif()
else() else()
set(LUA_MAKE_TARGET "macosx32bit") if(NOT CROSS_COMPILE32)
set(LUA_MAKE_TARGET "linux")
else()
set(LUA_MAKE_TARGET "linux32bit")
endif()
endif() endif()
else() add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/libs/lua/src/liblua.a
if(NOT CROSS_COMPILE32) COMMAND ${CROSS_COMPILE32_FLAGS} make ${LUA_MAKE_TARGET}
set(LUA_MAKE_TARGET "linux") WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/libs/lua
else() )
set(LUA_MAKE_TARGET "linux32bit") set(LUA_BUNDLED_LIBRARIES "${CMAKE_SOURCE_DIR}/libs/lua/src/liblua.a" PARENT_SCOPE)
endif() set(LUA_BUNDLED_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/libs/lua/src" PARENT_SCOPE)
endif()
add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/libs/lua/src/liblua.a
COMMAND ${CROSS_COMPILE32_FLAGS} make ${LUA_MAKE_TARGET}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/libs/lua
)
set(LUA_LIBRARY "${CMAKE_SOURCE_DIR}/libs/lua/src/liblua.a" PARENT_SCOPE)
add_custom_target(bundled_lua add_custom_target(bundled_lua
DEPENDS ${CMAKE_SOURCE_DIR}/libs/lua/src/liblua.a DEPENDS ${CMAKE_SOURCE_DIR}/libs/lua/src/liblua.a
) )
endif(BUNDLED_LUA)
# return compiled libs to the parent CMakeLists.txt
set(BUNDLED_LIBRARIES "${CMAKE_SOURCE_DIR}/libs/curl/lib/.libs/libcurl.a"
"${CMAKE_SOURCE_DIR}/libs/jpeg/.libs/libjpeg.a"
"${CMAKE_SOURCE_DIR}/libs/sdl/build/.libs/libSDL.a"
# Mac OS X: "${CMAKE_SOURCE_DIR}/libs/sdl/build/.libs/libSDLmain.a"
PARENT_SCOPE
)
endif() endif()
# return include dirs to the parent CMakeLists.txt
set(BUNDLED_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/libs/curl/include"
"${CMAKE_SOURCE_DIR}/libs/jpeg"
"${CMAKE_SOURCE_DIR}/libs/sdl/include"
"${CMAKE_SOURCE_DIR}/libs/lua/src"
PARENT_SCOPE
)