summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOskari Timperi <oskari.timperi@iki.fi>2017-04-09 21:00:53 +0300
committerOskari Timperi <oskari.timperi@iki.fi>2017-04-09 21:00:53 +0300
commitbfa4f5b2df07a717c4c91e781e50b397e8f23fe9 (patch)
tree8450475841f80a86f0c12166b8798740e656bc40
parent6babc4110ebb377ff74d7a2db6d02fc559cf9b1a (diff)
downloadmkpdf-bfa4f5b2df07a717c4c91e781e50b397e8f23fe9.tar.gz
mkpdf-bfa4f5b2df07a717c4c91e781e50b397e8f23fe9.zip
fixup
-rw-r--r--CMakeLists.txt2
-rw-r--r--lib/CMakeLists.txt30
-rw-r--r--lib/lua.cmake38
-rw-r--r--lib/luahpdf.cmake17
-rw-r--r--lib/zlib_clean_dll.cmake6
-rw-r--r--src/CMakeLists.txt13
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)