aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoratkawa7 <atkawa7@yahoo.com>2017-06-23 23:27:31 -0700
committeratkawa7 <atkawa7@yahoo.com>2017-06-23 23:27:31 -0700
commit88fd6f14d8a66a20ccdaea06b5a22067a94387e9 (patch)
tree64e5b02acd96af5e8231f2f982ce273efbb0a17b
parentdf3f73d8256e549ad43efd0a84cd3691d91c9c10 (diff)
downloadvcpkg-88fd6f14d8a66a20ccdaea06b5a22067a94387e9.tar.gz
vcpkg-88fd6f14d8a66a20ccdaea06b5a22067a94387e9.zip
[ctemplate] new port #543
-rw-r--r--ports/ctemplate/CMakeLists.txt97
-rw-r--r--ports/ctemplate/CONTROL3
-rw-r--r--ports/ctemplate/fix-msvc.patch17
-rw-r--r--ports/ctemplate/portfile.cmake39
4 files changed, 156 insertions, 0 deletions
diff --git a/ports/ctemplate/CMakeLists.txt b/ports/ctemplate/CMakeLists.txt
new file mode 100644
index 000000000..22869f7c5
--- /dev/null
+++ b/ports/ctemplate/CMakeLists.txt
@@ -0,0 +1,97 @@
+cmake_minimum_required(VERSION 3.5.1)
+project(libctemplate C CXX)
+
+# find_package(PythonInterp)
+
+if(MSVC)
+ add_compile_options(/W3 /wd4005 /wd4996 /wd4018 -D_CRT_SECURE_NO_WARNINGS)
+ add_definitions(-D_VARIADIC_MAX=10)
+endif()
+
+set(SOURCE_PATH ${PROJECT_SOURCE_DIR}/src)
+set(BASE_SOURCE_PATH ${SOURCE_PATH}/base)
+set(WINDOWS_SOURCE_PATH ${SOURCE_PATH}/windows)
+set(HTMLPARSER_SOURCE_PATH ${SOURCE_PATH}/htmlparser)
+
+set(COMMON_INCLUDES ${PROJECT_BINARY_DIR}/include)
+
+set(HTMLPARSER_CONFIG ${HTMLPARSER_SOURCE_PATH}/htmlparser_fsm.config)
+set(JSPASPER_CONFIG ${HTMLPARSER_SOURCE_PATH}/jsparser_fsm.config)
+set(FSM_GENERATOR ${HTMLPARSER_SOURCE_PATH}/generate_fsm.py)
+
+set(BASE_HEADERS
+ "${BASE_SOURCE_PATH}/arena.h"
+ "${BASE_SOURCE_PATH}/manual_constructor.h"
+ "${BASE_SOURCE_PATH}/mutex.h"
+ "${BASE_SOURCE_PATH}/small_map.h"
+ "${BASE_SOURCE_PATH}/thread_annotations.h"
+ "${BASE_SOURCE_PATH}/util.h"
+ "${BASE_SOURCE_PATH}/arena-inl.h"
+)
+
+set(
+ HTMLPARSER_HEADERS
+ "${HTMLPARSER_SOURCE_PATH}/htmlparser.h"
+ "${HTMLPARSER_SOURCE_PATH}/htmlparser_cpp.h"
+ "${HTMLPARSER_SOURCE_PATH}/jsparser.h"
+ "${HTMLPARSER_SOURCE_PATH}/statemachine.h"
+)
+set(SRC_FILES
+ "${SOURCE_PATH}/base/arena.cc"
+ "${SOURCE_PATH}/htmlparser/htmlparser.cc"
+ "${SOURCE_PATH}/htmlparser/jsparser.cc"
+ "${SOURCE_PATH}/htmlparser/statemachine.cc"
+ "${SOURCE_PATH}/per_expand_data.cc"
+ "${SOURCE_PATH}/template.cc"
+ "${SOURCE_PATH}/template_annotator.cc"
+ "${SOURCE_PATH}/template_cache.cc"
+ "${SOURCE_PATH}/template_dictionary.cc"
+ "${SOURCE_PATH}/template_modifiers.cc"
+ "${SOURCE_PATH}/template_namelist.cc"
+ "${SOURCE_PATH}/template_pathops.cc"
+ "${SOURCE_PATH}/template_string.cc"
+ "${SOURCE_PATH}/windows/port.cc"
+)
+
+file(COPY "${WINDOWS_SOURCE_PATH}/" DESTINATION ${COMMON_INCLUDES})
+file(COPY "${WINDOWS_SOURCE_PATH}/config.h" DESTINATION ${COMMON_INCLUDES}/windows)
+file(COPY "${WINDOWS_SOURCE_PATH}/port.h" DESTINATION ${COMMON_INCLUDES}/windows)
+file(COPY ${HTMLPARSER_HEADERS} DESTINATION ${COMMON_INCLUDES}/htmlparser)
+file(COPY ${BASE_HEADERS} DESTINATION ${COMMON_INCLUDES}/base)
+
+execute_process(
+ COMMAND ${PYTHON_EXECUTABLE} ${FSM_GENERATOR} ${HTMLPARSER_CONFIG}
+ WORKING_DIRECTORY ${COMMON_INCLUDES}/htmlparser
+ OUTPUT_VARIABLE HTMLPARSER_CONFIG_H
+)
+execute_process(
+ COMMAND ${PYTHON_EXECUTABLE} ${FSM_GENERATOR} ${JSPASPER_CONFIG}
+ WORKING_DIRECTORY ${COMMON_INCLUDES}/htmlparser
+ OUTPUT_VARIABLE JSPASPER_CONFIG_H
+)
+
+file(WRITE "${COMMON_INCLUDES}/htmlparser/htmlparser_fsm.h" "${HTMLPARSER_CONFIG_H}")
+file(WRITE "${COMMON_INCLUDES}/htmlparser/jsparser_fsm.h" "${JSPASPER_CONFIG_H}")
+
+option(BUILD_SHARED_LIBRARY "Building shared library" ON)
+
+include_directories(${COMMON_INCLUDES})
+
+if(BUILD_SHARED_LIBRARY)
+ add_library(libctemplate SHARED ${SRC_FILES})
+else()
+ add_library(libctemplate STATIC ${SRC_FILES} )
+ # Note: CTEMPLATE_DLL_DECL should be empty to build static file
+ target_compile_definitions(libctemplate PRIVATE -DCTEMPLATE_DLL_DECL=)
+endif()
+
+install(
+ TARGETS libctemplate
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+)
+
+if(NOT DISABLE_INSTALL_HEADERS)
+ install(DIRECTORY "${COMMON_INCLUDES}/" DESTINATION include FILES_MATCHING PATTERN "*.h")
+endif()
diff --git a/ports/ctemplate/CONTROL b/ports/ctemplate/CONTROL
new file mode 100644
index 000000000..eb78d4c0f
--- /dev/null
+++ b/ports/ctemplate/CONTROL
@@ -0,0 +1,3 @@
+Source: ctemplate
+Version: 2017-06-23-44b7c5b918a08ad561c63e9d28beecb40c10ebca
+Description: C++ CTemplate system
diff --git a/ports/ctemplate/fix-msvc.patch b/ports/ctemplate/fix-msvc.patch
new file mode 100644
index 000000000..acfbce4bf
--- /dev/null
+++ b/ports/ctemplate/fix-msvc.patch
@@ -0,0 +1,17 @@
+diff --git a/src/per_expand_data.cc b/src/per_expand_data.cc
+index f8f3025..0a468cf 100644
+--- a/src/per_expand_data.cc
++++ b/src/per_expand_data.cc
+@@ -42,10 +42,12 @@ namespace ctemplate {
+
+ using std::string;
+
++#ifndef _MSC_VER
+ bool PerExpandData::DataEq::operator()(const char* s1, const char* s2) const {
+ return ((s1 == 0 && s2 == 0) ||
+ (s1 && s2 && *s1 == *s2 && strcmp(s1, s2) == 0));
+ }
++#endif
+
+ PerExpandData::~PerExpandData() {
+ delete map_;
diff --git a/ports/ctemplate/portfile.cmake b/ports/ctemplate/portfile.cmake
new file mode 100644
index 000000000..cb1e07b74
--- /dev/null
+++ b/ports/ctemplate/portfile.cmake
@@ -0,0 +1,39 @@
+include(vcpkg_common_functions)
+
+set(GIT_REF 44b7c5b918a08ad561c63e9d28beecb40c10ebca)
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO OlafvdSpek/ctemplate
+ REF 44b7c5b918a08ad561c63e9d28beecb40c10ebca
+ SHA512 b572f6d0d182e977d3a459e68bde6244dad7196c44c16407990dc1fb6a7a93bcd8d6851e515d50b6051c1d011f71695f895f6ab233664baadae0bf6a3d464305
+ HEAD_REF master
+)
+
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
+
+vcpkg_find_acquire_program(PYTHON2)
+
+vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES
+ ${CMAKE_CURRENT_LIST_DIR}/fix-msvc.patch
+)
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
+ set (BUILD_SHARED_LIBRARY ON)
+else()
+ set(BUILD_SHARED_LIBRARY OFF)
+endif()
+
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ OPTIONS -DPYTHON_EXECUTABLE=${PYTHON2} -DBUILD_SHARED_LIBRARY=${BUILD_SHARED_LIBRARY}
+ OPTIONS_DEBUG -DDISABLE_INSTALL_HEADERS=ON
+)
+
+vcpkg_install_cmake()
+
+file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/ctemplate RENAME copyright)
+
+vcpkg_copy_pdbs()