diff options
| author | Oskari Timperi <oskari.timperi@iki.fi> | 2017-04-09 21:00:53 +0300 |
|---|---|---|
| committer | Oskari Timperi <oskari.timperi@iki.fi> | 2017-04-09 21:00:53 +0300 |
| commit | bfa4f5b2df07a717c4c91e781e50b397e8f23fe9 (patch) | |
| tree | 8450475841f80a86f0c12166b8798740e656bc40 | |
| parent | 6babc4110ebb377ff74d7a2db6d02fc559cf9b1a (diff) | |
| download | mkpdf-bfa4f5b2df07a717c4c91e781e50b397e8f23fe9.tar.gz mkpdf-bfa4f5b2df07a717c4c91e781e50b397e8f23fe9.zip | |
fixup
| -rw-r--r-- | CMakeLists.txt | 2 | ||||
| -rw-r--r-- | lib/CMakeLists.txt | 30 | ||||
| -rw-r--r-- | lib/lua.cmake | 38 | ||||
| -rw-r--r-- | lib/luahpdf.cmake | 17 | ||||
| -rw-r--r-- | lib/zlib_clean_dll.cmake | 6 | ||||
| -rw-r--r-- | src/CMakeLists.txt | 13 |
6 files changed, 97 insertions, 9 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 50d69e4..2042dda 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,4 +13,6 @@ IF(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/lib/stage) ) ENDIF() +LIST(APPEND CMAKE_PREFIX_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib/stage) + ADD_SUBDIRECTORY(src) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 8cb172a..122ef5e 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -3,17 +3,41 @@ PROJECT(lib) INCLUDE(ExternalProject) +SET(STAGE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/stage) +SET(CMAKE_ARGS + -DCMAKE_INSTALL_PREFIX=${STAGE_DIR} + -DCMAKE_PREFIX_PATH=${STAGE_DIR} +) + +ExternalProject_Add(zlib + URL http://zlib.net/zlib-1.2.11.tar.gz + CMAKE_ARGS ${CMAKE_ARGS} +) + +ExternalProject_Add_Step(zlib clean-dll + COMMAND ${CMAKE_COMMAND} -DSTAGE_DIR=${STAGE_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/zlib_clean_dll.cmake + COMMENT "Removing zlib dynamic libraries from staging directory" + DEPENDEES install +) + +ExternalProject_Add(libpng + URL http://download.sourceforge.net/libpng/libpng-1.6.29.tar.gz + DEPENDS zlib + CMAKE_ARGS -DPNG_SHARED=OFF -DPNG_TESTS=OFF ${CMAKE_ARGS} +) + ExternalProject_Add(lua URL https://www.lua.org/ftp/lua-5.3.4.tar.gz URL_HASH SHA1=79790cfd40e09ba796b01a571d4d63b52b1cd950 PATCH_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/lua.cmake <SOURCE_DIR>/CMakeLists.txt - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_SOURCE_DIR}/stage + CMAKE_ARGS ${CMAKE_ARGS} ) ExternalProject_Add(libharu GIT_REPOSITORY https://github.com/libharu/libharu.git GIT_TAG d84867ebf9f3de6afd661d2cdaff102457fbc371 - CMAKE_ARGS -DLIBHPDF_SHARED=OFF -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_SOURCE_DIR}/stage + DEPENDS zlib libpng + CMAKE_ARGS -DLIBHPDF_SHARED=OFF ${CMAKE_ARGS} ) ExternalProject_Add(luahpdf @@ -21,5 +45,5 @@ ExternalProject_Add(luahpdf GIT_TAG d8c93345d87a96135739017566d98b02774f558a DEPENDS lua libharu PATCH_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/luahpdf.cmake <SOURCE_DIR>/CMakeLists.txt - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_SOURCE_DIR}/stage + CMAKE_ARGS ${CMAKE_ARGS} ) diff --git a/lib/lua.cmake b/lib/lua.cmake new file mode 100644 index 0000000..95825df --- /dev/null +++ b/lib/lua.cmake @@ -0,0 +1,38 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.0) +PROJECT(lua C) + +SET(CORE_SRC + src/lapi.c src/lcode.c src/lctype.c src/ldebug.c src/ldo.c src/ldump.c src/lfunc.c src/lgc.c src/llex.c + src/lmem.c src/lobject.c src/lopcodes.c src/lparser.c src/lstate.c src/lstring.c src/ltable.c + src/ltm.c src/lundump.c src/lvm.c src/lzio.c +) + +SET(LIB_SRC + src/lauxlib.c src/lbaselib.c src/lbitlib.c src/lcorolib.c src/ldblib.c src/liolib.c + src/lmathlib.c src/loslib.c src/lstrlib.c src/ltablib.c src/lutf8lib.c src/loadlib.c src/linit.c +) + +ADD_LIBRARY(lua STATIC ${CORE_SRC} ${LIB_SRC}) + +TARGET_COMPILE_DEFINITIONS(lua PRIVATE -DLUA_COMPAT_5_2) + +IF(CMAKE_COMPILER_IS_GNUCC) + TARGET_COMPILE_OPTIONS(lua PRIVATE -std=gnu99) +ENDIF() + +IF(NOT WIN32) + TARGET_LINK_LIBRARIES(lua PUBLIC m) +ENDIF() + +IF(CMAKE_SYSTEM_NAME STREQUAL Linux) + TARGET_COMPILE_DEFINITIONS(lua PUBLIC -DLUA_USE_LINUX) + TARGET_LINK_LIBRARIES(lua PUBLIC dl) +ELSEIF(CMAKE_SYSTEM_NAME STREQUAL Darwin) + TARGET_COMPILE_DEFINITIONS(lua PUBLIC -DLUA_USE_MACOSX) +ENDIF() + +INSTALL(TARGETS lua EXPORT lua-targets DESTINATION lib) + +INSTALL(FILES src/lua.h src/luaconf.h src/lualib.h src/lauxlib.h src/lua.hpp DESTINATION include) + +INSTALL(EXPORT lua-targets FILE lua-config.cmake DESTINATION lib/cmake/lua) diff --git a/lib/luahpdf.cmake b/lib/luahpdf.cmake new file mode 100644 index 0000000..a7cd7ef --- /dev/null +++ b/lib/luahpdf.cmake @@ -0,0 +1,17 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.0) +PROJECT(luahpdf C) + +FIND_LIBRARY(hpdfs hpdfs) +FIND_PACKAGE(lua REQUIRED) +FIND_PACKAGE(ZLIB REQUIRED) +FIND_PACKAGE(PNG REQUIRED) + +ADD_LIBRARY(luahpdf STATIC hpdf.c) + +TARGET_LINK_LIBRARIES(luahpdf PUBLIC ${hpdfs} lua ZLIB::ZLIB PNG::PNG) + +TARGET_INCLUDE_DIRECTORIES(luahpdf PUBLIC ${CMAKE_INSTALL_PREFIX}/include) + +INSTALL(TARGETS luahpdf EXPORT luahpdf-targets DESTINATION lib) + +INSTALL(EXPORT luahpdf-targets FILE luahpdf-config.cmake DESTINATION lib/cmake/luahpdf) diff --git a/lib/zlib_clean_dll.cmake b/lib/zlib_clean_dll.cmake new file mode 100644 index 0000000..3fb3ed5 --- /dev/null +++ b/lib/zlib_clean_dll.cmake @@ -0,0 +1,6 @@ +FILE(GLOB dll + ${STAGE_DIR}/lib/libz*.so* + ${STAGE_DIR}/lib/zlib*.dll +) + +FILE(REMOVE ${dll}) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2fa12b5..f44a92f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,8 +1,9 @@ -FIND_LIBRARY(hpdfs hpdfs PATHS ${PROJECT_SOURCE_DIR}/lib/stage/lib) -FIND_LIBRARY(lua lua PATHS ${PROJECT_SOURCE_DIR}/lib/stage/lib) -FIND_LIBRARY(luahpdf luahpdf PATHS ${PROJECT_SOURCE_DIR}/lib/stage/lib) -FIND_LIBRARY(z z) -FIND_LIBRARY(png png) +FIND_PACKAGE(lua REQUIRED) +FIND_PACKAGE(ZLIB REQUIRED) +FIND_PACKAGE(PNG REQUIRED) +FIND_PACKAGE(luahpdf REQUIRED) + +FIND_LIBRARY(hpdfs hpdfs) ADD_EXECUTABLE(bin2c bin2c.c) @@ -13,6 +14,6 @@ ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mkpdf.lua.c ADD_EXECUTABLE(mkpdf main.c ${CMAKE_CURRENT_BINARY_DIR}/mkpdf.lua.c) -TARGET_LINK_LIBRARIES(mkpdf PRIVATE ${luahpdf} ${lua} ${hpdfs} ${z} ${png} m) +TARGET_LINK_LIBRARIES(mkpdf PRIVATE luahpdf lua ${hpdfs} ZLIB::ZLIB PNG::PNG) TARGET_INCLUDE_DIRECTORIES(mkpdf PRIVATE ${PROJECT_SOURCE_DIR}/lib/stage/include) |
