From a382ca43fa4c322cc713af955cc5b53fc05deea2 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Fri, 17 Jun 2016 17:19:47 +0100 Subject: [PATCH] cmake code --- CMakeLists.txt | 57 +++++++++++++++++++---------------- OPTYap/CMakeLists.txt | 8 ++--- library/dialect/swi/fli/swi.c | 4 +-- library/system/CMakeLists.txt | 2 +- library/system/sys.c | 13 ++++++-- pl/CMakeLists.txt | 7 ++--- 6 files changed, 50 insertions(+), 41 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0bbcd2abf..4a108e4b7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -261,7 +261,6 @@ else(YAP_SINGLE_FILE) set( UTF8PROC_DL utf8proc) endif(YAP_SINGLE_FILE) - add_library(libYap ${ENGINE_SOURCES} ${C_INTERFACE_SOURCES} @@ -303,18 +302,19 @@ set(CMAKE_TOP_BINARY_DIR ${CMAKE_BINARY_DIR}) set(YAP_PL_SRCDIR ${CMAKE_SOURCE_DIR}/pl) # Compatibility vars with autotols -if (0) -set ( prefix "${CMAKE_SOURCE_DIR}/android/app/build/generated") +if (ANDROID) +set ( prefix ${CMAKE_SOURCE_DIR}/YAPDroid/app/src/main/) set ( exec_prefix "${prefix}") -set ( libdir "${exec_prefix}/jniLibs/${ANDROID_ABI}") -set ( dlls "${libdir}") -set ( includedir "${prefix}/src/include") +set ( libdir "${exec_prefix}/jniLibs/x86") +set ( dlls "${exec_prefix}/jniLibs/x86") +set ( includedir "${prefix}/include") set ( datarootdir "${prefix}/share") -set ( libpl "${datarootdir}/Yap") +set ( libpl "${prefix}/assets/Yap") set ( datadir "${datarootdir}") set ( mandir "${datarootdir}/man") set ( bindir "${exec_prefix}/bin") set ( docdir "${exec_prefix}/share/doc/Yap") + else() set ( prefix "${CMAKE_INSTALL_PREFIX}") set ( exec_prefix "${prefix}") @@ -372,7 +372,7 @@ ENDIF("${isSystemDir}" STREQUAL "-1") # set ( MIN_STACKSPACE 1024*SIZEOF_INT_P ) -set ( MIN_HEAPSPACE 2*1024*SIZEOF_INT_P ) +set ( MIN_HEAPSPACE 32*1024*SIZEOF_INT_P ) set ( MIN_TRAILSPACE 512*SIZEOF_INT_P ) set ( DEF_STACKSPACE 0 ) set ( DEF_HEAPSPACE 0 ) @@ -432,7 +432,7 @@ if (HAVE_GCC) # replace instructions codes by the address of their code option (WITH_THREADED_CODE "threaded code" ON) if (WITH_THREADED_CODE) - set_property( DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS THREADED_CODE=1;USE_SYSTEM_MALLOC=1) + set_property( DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS THREADED_CODE=1) endif (WITH_THREADED_CODE) endif (HAVE_GCC) @@ -472,15 +472,16 @@ if (GMP_FOUND) # GMP_LIBRARIES_DIR - the directory the library we link with is found in. include_directories (${GMP_INCLUDE_DIRS}) #add_executable(test ${SOURCES}) - target_link_libraries(libYap ${GMP_LIBRARIES}) +add_library(libGMP SHARED IMPORTED GLOBAL) +set_target_properties(libGMP PROPERTIES IMPORTED_LOCATION ${GMP_LIBRARIES}) #config.h needs this (TODO: change in code latter) set( CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${GMP_INCLUDE_DIRS} ) - #set( CMAKE_REQUIRED_LIBRARIES ${GMP_LIBRARIES} ${CMAKE_REQUIRED_LIBRARIES} ) -IF (MSVC) -file(COPY ${GMP_LIBRARY_DLL} DESTINATION ${CMAKE_BINARY_DIR} ) -ENDIF(MSVC) + if(ANDROID) +file(COPY ${GMP_LIBRARIES} DESTINATION ${CMAKE_SOURCE_DIR}/YAPDroid/app/build/intermediates/cmake/debug/lib/${ANDROID_ABI}) +ENDIF() - endif (GMP_FOUND) + +endif (GMP_FOUND) macro_optional_find_package (Threads OFF) macro_log_feature (THREADS_FOUND "Threads Support" @@ -659,12 +660,20 @@ option (WITH_YAP_STATIC # modern systems do this. set ( MALLOC_T "void *" ) -CMAKE_DEPENDENT_OPTION (WITH_SYSTEM_MALLOC - "use malloc to allocate memory" ON "NOT WITH_COPY_OR_PARALELISM" OFF) -CMAKE_DEPENDENT_OPTION (WITH_DL_MALLOC - "use malloc to allocate memory" ON "NOT WITH_SYSTEM_MALLOC" OFF) -CMAKE_DEPENDENT_OPTION (WITH_YAP_MALLOC - "use malloc to allocate memory" ON "NOT WITH_SYSTEM_MALLOC;NOT WITH_DL_MALLOC" OFF) +OPTION (WITH_SYSTEM_MALLOC + "use malloc to allocate memory" ON ) +OPTION (WITH_DL_MALLOC + "use malloc to allocate memory" OFF ) +OPTION (WITH_YAP_MALLOC + "use malloc to allocate memory" OFF ) + +if (WITH_SYSTEM_MALLOC) + set_property( DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS USE_SYSTEM_MALLOC=1) +elseif (WITH_DL_MALLOC) + set_property( DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS USE_DL_MALLOC=1) +elseif (WITH_YAP_MALLOC) + set_property( DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS USE_YAP_MALLOC=1) +endif () option(WITH_YAP_CONDOR "allow YAP to be used from condor" OFF) @@ -697,9 +706,9 @@ endif() target_link_libraries(libYap ${UTF8PROC_DL} - ${GMP_LIBRARIES} ${READLINE_LIBS} ${CMAKE_DL_LIBS} + ${GMP_LIBRARIES} ) if(WIN32) @@ -725,7 +734,6 @@ endif() target_link_libraries(yap-bin libYap ) - CMAKE_DEPENDENT_OPTION (WITH_SYSTEM_MMAP "Use MMAP for shared memory allocation" ON "NOT WITH_YAPOR_THOR" OFF) @@ -756,9 +764,6 @@ CMAKE_DEPENDENT_OPTION (WITH_SYSTEM_SHM "Use SHM for shared memory allocation" O ## add_subDIRECTORY(utils) -if (NOT ANDROID) - add_custom_target (main ALL DEPENDS ${YAP_STARTUP} ) # WORKING_DIRECTORY ${CMAKE_BINARY_DIR} ) -endif() # # include subdirectories configuration ## after we have all functionality in diff --git a/OPTYap/CMakeLists.txt b/OPTYap/CMakeLists.txt index 7574d279f..5116358a1 100644 --- a/OPTYap/CMakeLists.txt +++ b/OPTYap/CMakeLists.txt @@ -50,21 +50,21 @@ if (WITH_YAPOR_COPY) OPTION (WITH_YAPOR_THOR "Thread-based Or-parallelism" OFF) if (WITH_YAPOR_THOR) - set_property(DIRECTORY .. APPEND PROPERTY COMPILE_DEFINITIONS YAPOR_THREADS=1;USE_SYSTEM_MALLOC=1) + set_property(DIRECTORY .. APPEND PROPERTY COMPILE_DEFINITIONS YAPOR_THREADS=1) set(WITH_YAPOR ON) set(YAP_SYSTEM_OPTIONS "or_parallelism " ${YAP_SYSTEM_OPTIONS} PARENT_SCOPE) endif (WITH_YAPOR_THOR) OPTION (WITH_YAPOR_ACOW "Process-based Copy-On-Write Or-parallelism" OFF) if (WITH_YAPOR_ACOW) - set_property(DIRECTORY .. APPEND PROPERTY COMPILE_DEFINITIONS YAPOR_COW=1;USE_SYSTEM_MALLOC=1) + set_property(DIRECTORY .. APPEND PROPERTY COMPILE_DEFINITIONS YAPOR_COW=1) set(WITH_YAPOR ON) set(YAP_SYSTEM_OPTIONS "or_parallelism " ${YAP_SYSTEM_OPTIONS} PARENT_SCOPE) endif (WITH_YAPOR_ACOW) OPTION (WITH_YAPOR_SBA "Sparse Bind Array-based Or-parallelism" OFF) if (WITH_YAPOR_SBA) - set_property(DIRECTORY .. APPEND PROPERTY COMPILE_DEFINITIONS YAPOR_SBA=1;USE_SYSTEM_MALLOC=1) + set_property(DIRECTORY .. APPEND PROPERTY COMPILE_DEFINITIONS YAPOR_SBA=1) set(WITH_YAPOR ON) set(YAP_SYSTEM_OPTIONS "or_parallelism, " ${YAP_SYSTEM_OPTIONS} PARENT_SCOPE) endif (WITH_YAPOR_SBA) @@ -73,8 +73,6 @@ endif (WITH_YAPOR_SBA) if (WITH_YAPOR) set_property(DIRECTORY .. APPEND PROPERTY COMPILE_DEFINITIONS YAPOR=1) -else() - set_property(DIRECTORY .. APPEND PROPERTY COMPILE_DEFINITIONS USE_SYSTEM_MALLOC=1) endif () diff --git a/library/dialect/swi/fli/swi.c b/library/dialect/swi/fli/swi.c index bf29773f4..495bb92eb 100755 --- a/library/dialect/swi/fli/swi.c +++ b/library/dialect/swi/fli/swi.c @@ -2163,8 +2163,8 @@ X_API int PL_initialise(int myargc, char **myargv) { GLOBAL_PL_Argc = myargc; GLOBAL_PL_Argv = myargv; - GLOBAL_InitialisedFromPL = TRUE; - int rc = YAP_Init(&init_args) != YAP_BOOT_ERROR; + GLOBAL_InitialisedFromPL = true; + YAP_file_type_t rc = YAP_Init(&init_args) != YAP_FOUND_BOOT_ERROR; ATOM_nil = YAP_SWIAtomFromAtom(AtomNil); return rc; } diff --git a/library/system/CMakeLists.txt b/library/system/CMakeLists.txt index 3361d0b46..0bec4366b 100644 --- a/library/system/CMakeLists.txt +++ b/library/system/CMakeLists.txt @@ -25,7 +25,7 @@ endif (HAVE_LIBCRYPT) target_link_libraries(sys libYap) if (ANDROID) -target_link_libraries(sys android gmp) +target_link_libraries(sys android) endif() set_target_properties (sys PROPERTIES PREFIX "") diff --git a/library/system/sys.c b/library/system/sys.c index 570cceca8..359221e3c 100644 --- a/library/system/sys.c +++ b/library/system/sys.c @@ -15,6 +15,14 @@ #include "config.h" #include "YapInterface.h" +#if __ANDROID__ +#include +#include +#include +#include +#endif +#include "YapStreams.h" +#include "VFS.h" #include "crypto/md5.h" #include #if HAVE_UNISTD_H @@ -230,10 +238,9 @@ list_directory(void) _findclose( hFile ); #else #if __ANDROID__ - { - extern AAssetManager *Yap_assetManager; + { const char *dirName = buf+strlen("/assets/"); - AAssetManager* mgr = Yap_assetManager; + AAssetManager *mgr = GLOBAL_VFS->priv[0].mgr; AAssetDir *de; const char* dp; diff --git a/pl/CMakeLists.txt b/pl/CMakeLists.txt index ed13c9f61..c0e55ddd0 100644 --- a/pl/CMakeLists.txt +++ b/pl/CMakeLists.txt @@ -30,6 +30,7 @@ set(PL_SOURCES messages.yap meta.yap modules.yap + newmod.yap os.yap preddecls.yap preddyns.yap @@ -51,16 +52,14 @@ set(PL_SOURCES swi.yap yapor.yap yio.yap - ../os/chartypes.yap - ../os/edio.yap ) if (NOT ANDROID) -add_custom_target (${YAP_STARTUP} ALL SOURCES ${PL_SOURCES} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} ) +add_custom_target (${YAP_STARTUP} ALL SOURCES ${PL_SOURCES} ${YAPOS_PL_SOURCES} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} ) # Create a startup.yss on the top directory. add_custom_command (TARGET ${YAP_STARTUP} - COMMAND yap-bin -B + COMMAND yap-bin -B VERBATIM WORKING_DIRECTORY ${CMAKE_TOP_BINARY_DIR} DEPENDS yap-bin ${PL_SOURCES}