@@ -8,78 +8,56 @@ set(${proj}_DEPENDENCIES "")
88ExternalProject_Include_Dependencies(${proj} PROJECT_VAR proj DEPENDS_VAR ${proj} _DEPENDENCIES)
99
1010if (${CMAKE_PROJECT_NAME} _USE_SYSTEM_${proj} )
11-
11+ message (FATAL_ERROR "Enabling ${CMAKE_PROJECT_NAME} _USE_SYSTEM_ ${proj} is not supported !" )
1212endif ()
1313
1414# Sanity checks
15- if (DEFINED ${proj} _DIR AND NOT EXISTS ${${proj} _DIR})
16- message (FATAL_ERROR "<proj>_DIR variable is defined but corresponds to non-existing directory" )
15+ if (DEFINED LIBXML2_INCLUDE_DIR AND NOT EXISTS ${LIBXML2_INCLUDE_DIR} )
16+ message (FATAL_ERROR "LIBXML2_INCLUDE_DIR variable is defined but corresponds to non-existing directory" )
17+ endif ()
18+ if (DEFINED LIBXML2_LIBRARIES AND NOT EXISTS ${LIBXML2_LIBRARIES} )
19+ message (FATAL_ERROR "LIBXML2_LIBRARIES variable is defined but corresponds to non-existing file" )
1720endif ()
1821
19- if (NOT DEFINED ${proj} _DIR AND NOT ${CMAKE_PROJECT_NAME} _USE_SYSTEM_${proj} )
22+ if (( NOT DEFINED LIBXML2_INCLUDE_DIR OR NOT DEFINED LIBXML2_LIBRARIES) AND NOT ${CMAKE_PROJECT_NAME} _USE_SYSTEM_${proj} )
2023
2124 set (EP_SOURCE_DIR ${CMAKE_BINARY_DIR} /${proj} )
2225 set (EP_BINARY_DIR ${CMAKE_BINARY_DIR} /${proj} -build )
23- set (EP_INSTALL_DIR ${CMAKE_BINARY_DIR} /${proj} -install )
24-
25- include (ExternalProjectForNonCMakeProject)
26-
27- # Adapted from http://mozakai.blogspot.com/2012/03/howto-port-cc-library-to-javascript.html
28-
29- # environment
30- set (_env_script ${CMAKE_BINARY_DIR} /${proj} _Env.cmake)
31- ExternalProject_Write_SetBuildEnv_Commands(${_env_script} )
32- file (APPEND ${_env_script}
33- "#------------------------------------------------------------------------------
34- # Added by '${CMAKE_CURRENT_LIST_FILE} '
35- include(\" ${${CMAKE_PROJECT_NAME} _CMAKE_DIR}/ExternalProjectForNonCMakeProject.cmake\" )
36- set(CMAKE_BINARY_DIR \" ${CMAKE_BINARY_DIR} \" )
37-
38- " )
3926
40- set (_src_dir ${EP_SOURCE_DIR} )
41-
42- # configure step
43- set (_configure_script ${CMAKE_BINARY_DIR} /${proj} _configure_step.cmake)
44- file (WRITE ${_configure_script}
45- "include(\" ${_env_script} \" )
46- set(${proj} _WORKING_DIR \" ${_src_dir} \" )
47- ExternalProject_Execute(${proj} \" configure\" ${EMSCRIPTEN_ROOT_PATH} /emconfigure ./configure
48- --without-python --without-iconv --without-http --without-ftp
49- )
50- " )
51-
52- # build step
53- set (_build_script ${CMAKE_BINARY_DIR} /${proj} _build_step.cmake)
54- file (WRITE ${_build_script}
55- "include(\" ${_env_script} \" )
56- set(${proj} _WORKING_DIR \" ${_src_dir} \" )
57- ExternalProject_Execute(${proj} \" build\" ${EMSCRIPTEN_ROOT_PATH} /emmake make)
58- " )
59-
6027 ExternalProject_Add(${proj}
6128 ${${proj} _EP_ARGS}
6229 URL "ftp://xmlsoft.org/libxml2/libxml2-2.9.8.tar.gz"
6330 URL_MD5 "b786e353e2aa1b872d70d5d1ca0c740d"
6431 DOWNLOAD_DIR ${DOWNLOAD_CACHE_DIR}
6532 DOWNLOAD_NO_PROGRESS 1
6633 SOURCE_DIR ${EP_SOURCE_DIR}
67- BUILD_IN_SOURCE 1
68- CONFIGURE_COMMAND ${CMAKE_COMMAND} -P ${_configure_script}
69- BUILD_COMMAND ${CMAKE_COMMAND} -P ${_build_script}
34+ BINARY_DIR ${EP_BINARY_DIR}
35+ PATCH_COMMAND
36+ ${CMAKE_COMMAND} -E copy
37+ ${CMAKE_SOURCE_DIR} /CMake/Externals/LibXml2-CMakeLists.txt
38+ ${EP_SOURCE_DIR} /CMakeLists.txt
39+ COMMAND ${CMAKE_COMMAND} -E copy
40+ ${CMAKE_SOURCE_DIR} /CMake/Externals/LibXml2-config.h
41+ ${EP_SOURCE_DIR} /include /config.h
42+ COMMAND ${CMAKE_COMMAND} -E copy
43+ ${CMAKE_SOURCE_DIR} /CMake/Externals/LibXml2-xmlversion.h
44+ ${EP_SOURCE_DIR} /include /libxml/xmlversion.h
45+ CMAKE_CACHE_ARGS
46+ ${EMSCRIPTEN_TOOLCHAIN_OPTIONS}
47+ # LibXml2 options
48+ INSTALL_COMMAND ""
7049 USES_TERMINAL_DOWNLOAD 1
7150 USES_TERMINAL_UPDATE 1
7251 USES_TERMINAL_CONFIGURE 1
7352 USES_TERMINAL_BUILD 1
74- INSTALL_COMMAND ""
53+ USES_TERMINAL_INSTALL 1
7554 DEPENDS
7655 ${${proj} _DEPENDENCIES}
7756 )
78- set (${proj} _DIR ${_src_dir} )
79- set (LIBXML2_INCLUDE_DIR ${${proj} _DIR}/include )
80- set (LIBXML2_LIBRARIES ${${proj} _DIR}/.libs/libxml2.a)
57+ set (LIBXML2_INCLUDE_DIR ${EP_SOURCE_DIR} /include )
58+ set (LIBXML2_LIBRARIES ${EP_BINARY_DIR} /libxml2.so)
8159else ()
82- # The project is provided using <proj>_DIR , nevertheless since other project may depend on <proj>,
60+ # The project is provided using LIBXML2_LIBRARIES and LIBXML2_LIBRARIES , nevertheless since other project may depend on <proj>,
8361 # let's add an 'empty' one
8462 ExternalProject_Add_Empty(${proj} DEPENDS ${${proj} _DEPENDENCIES})
8563endif ()
0 commit comments