Skip to content

Commit

Permalink
create shared lib instead of fat bins
Browse files Browse the repository at this point in the history
  • Loading branch information
ashleyj committed Sep 3, 2016
1 parent 364d1e1 commit 64d946d
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 104 deletions.
20 changes: 10 additions & 10 deletions compiler/src/main/java/aura/compiler/target/AbstractTarget.java
Original file line number Diff line number Diff line change
Expand Up @@ -107,23 +107,22 @@ public void build(List<File> objectFiles, boolean dryRun) throws IOException {

String libSuffix = config.isUseDebugLibs() ? "-dbg" : "";

libs.add("-laura-bc" + libSuffix);
libs.add("-laura-bc" + libSuffix);
if (config.getOs().getFamily() == OS.Family.darwin) {
libs.add("-force_load");
libs.add(new File(config.getOsArchDepLibDir(), "libaura-rt" + libSuffix + ".a").getAbsolutePath());
libs.add("-laura-rt" + libSuffix);
} else {
libs.addAll(Arrays.asList("-Wl,--whole-archive", "-laura-rt" + libSuffix, "-Wl,--no-whole-archive"));
}
if (config.isSkipInstall()) {
libs.add("-laura-debug" + libSuffix);
}
if (config.getOs().getFamily() == OS.Family.freebsd) {
libs.addAll(Arrays.asList(
"-laura-core" + libSuffix, "-lgc" + libSuffix, "-lpthread", "-lc","-lm","-lc++", "-lssl", "-lcrypto", "-Wall", "-Wextra", "-Wl"));
} else {
libs.addAll(Arrays.asList(
"-laura-core" + libSuffix, "-lgc" + libSuffix, "-lpthread", "-ldl", "-lm", "-lz"));
}
if (config.getOs().getFamily() == OS.Family.freebsd) {
libs.addAll(Arrays.asList(
"-laura-core" + libSuffix, "-lgc" + libSuffix, "-lpthread", "-lc","-lm","-lc++", "-lssl", "-lcrypto", "-Wall", "-Wextra", "-Wl"));
} else {
libs.addAll(Arrays.asList(
"-laura-core" + libSuffix, "-lgc" + libSuffix, "-lpthread", "-ldl", "-lm", "-lz"));
}
if (config.getOs().getFamily() == OS.Family.linux) {
libs.add("-lrt");
}
Expand All @@ -141,6 +140,7 @@ public void build(List<File> objectFiles, boolean dryRun) throws IOException {
List<String> exportedSymbols = new ArrayList<String>();
exportedSymbols.addAll(getTargetExportedSymbols());
exportedSymbols.add("JNI_OnLoad_*");
exportedSymbols.add("*");
exportedSymbols.addAll(config.getExportedSymbols());

if (config.getOs().getFamily() == OS.Family.linux || config.getOs() == OS.freebsd) {
Expand Down
26 changes: 18 additions & 8 deletions vm/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
# The Mac OS X SDK version required when building the VM libs
set(MACOSX_SDK_VERSION 10.11)
# The minimum Mac OS X version needed by apps built by RoboVM
set(MACOSX_MIN_VERSION 10.6)
set(MACOSX_MIN_VERSION 10.7)

cmake_minimum_required(VERSION 2.8.8)
project(build)
include(CheckCCompilerFlag)
include(ExternalProject)
include(${CMAKE_SOURCE_DIR}/MergeStaticLibObjectFiles.cmake)

enable_testing()

Expand Down Expand Up @@ -128,7 +127,7 @@ if(SYSROOT)
set(LD_FLAGS "${LD_FLAGS} -isysroot ${SYSROOT}")
endif()
if(MACOSX)
set(LD_FLAGS "${LD_FLAGS} -mmacosx-version-min=${MACOSX_MIN_VERSION}")
set(LD_FLAGS "${LD_FLAGS} -mmacosx-version-min=${MACOSX_MIN_VERSION} -Wl,-undefined -Wl,dynamic_lookup -flat_namespace")
endif()

#set(CMAKE_C_FLAGS_RELEASE "-O0 -g -pg")
Expand Down Expand Up @@ -183,9 +182,16 @@ elseif (ARCH STREQUAL "arm64")
add_definitions(-DRVM_ARM64)
endif()

set(LIB_SUFFIX ".a")
set(LIB_SUFFIX ".so")
if (CMAKE_BUILD_TYPE STREQUAL "debug")
set(LIB_SUFFIX "-dbg.a")
set(LIB_SUFFIX "-dbg.so")
endif()

if (OS STREQUAL "macosx")
set(LIB_SUFFIX ".dylib")
if (CMAKE_BUILD_TYPE STREQUAL "debug")
set(LIB_SUFFIX "-dbg.dylib")
endif()
endif()

set(INSTALL_DIR ${CMAKE_SOURCE_DIR}/target/binaries/${OS}/${ARCH})
Expand Down Expand Up @@ -217,9 +223,9 @@ endif()
set(EXTGC_C_FLAGS "${C_CXX_FLAGS} -DGC_DISABLE_INCREMENTAL -DGC_DISCOVER_TASK_THREADS -DGC_FORCE_UNMAP_ON_GCOLLECT -DMARK_DESCR_OFFSET=${EXTGC_MARK_DESCR_OFFSET}")
set(EXTGC_LD_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
if(DARWIN)
set(EXTGC_C_FLAGS "${EXTGC_C_FLAGS} -DNO_DYLD_BIND_FULLY_IMAGE")
set(EXTGC_C_FLAGS "${EXTGC_C_FLAGS}")
endif()
set(EXTGC_PARAMS "--enable-shared=no --enable-munmap=1 --enable-parallel-mark=yes")
set(EXTGC_PARAMS "--enable-static=no --enable-munmap=1 --enable-parallel-mark=yes")
if (CMAKE_BUILD_TYPE STREQUAL "debug")
set(EXTGC_C_FLAGS "${EXTGC_C_FLAGS} -g")
set(EXTGC_PARAMS "${EXTGC_PARAMS} --enable-gc-debug=yes")
Expand All @@ -240,7 +246,11 @@ ExternalProject_Add(extgc
CONFIGURE_COMMAND bash -c "CC=${CMAKE_C_COMPILER} CFLAGS='${EXTGC_C_FLAGS}' LDFLAGS='${EXTGC_LD_FLAGS}' ./configure ${EXT_HOST} ${EXTGC_PARAMS} --prefix=${CMAKE_BINARY_DIR}/gc"
BUILD_IN_SOURCE 1
)
install(FILES ${CMAKE_BINARY_DIR}/gc/lib/libgc.a DESTINATION ${INSTALL_DIR} RENAME libgc${LIB_SUFFIX})
if(OS STREQUAL "macosx")
install(FILES ${CMAKE_BINARY_DIR}/gc/lib/libgc.1.dylib ${CMAKE_BINARY_DIR}/gc/lib/libgc.dylib DESTINATION ${INSTALL_DIR})
else()
install(FILES ${CMAKE_BINARY_DIR}/gc/lib/libgc.so.1 ${CMAKE_BINARY_DIR}/gc/lib/libgc.so DESTINATION ${INSTALL_DIR})
endif()

add_subdirectory(core/src)
add_subdirectory(debug/src)
Expand Down
80 changes: 0 additions & 80 deletions vm/MergeStaticLibObjectFiles.cmake

This file was deleted.

2 changes: 1 addition & 1 deletion vm/bc/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ if (WITH_FPIC)
remove_definitions(-fPIC)
endif()

add_library(aura-bc STATIC
add_library(aura-bc SHARED
bc.c
classinfo.c
MurmurHash3.c
Expand Down
4 changes: 2 additions & 2 deletions vm/core/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,14 +50,14 @@ if(FREEBSD)
set_property(SOURCE proxy.c PROPERTY COMPILE_FLAGS "-I/usr/local/include")
ENDIF()

add_library(aura-core STATIC ${SRC})
add_library(aura-core SHARED ${SRC})
add_dependencies(aura-core extgc)

set_target_properties(aura-core PROPERTIES SUFFIX "${LIB_SUFFIX}")
install(TARGETS aura-core DESTINATION ${INSTALL_DIR})

add_executable(test_call0 test/test_call0.c test/CuTest.c call0-${OS_FAMILY}-${ARCH}.s unwind.c)
add_library(test_call0_lib STATIC test/test_call0.c test/CuTest.c call0-${OS_FAMILY}-${ARCH}.s unwind.c)
add_library(test_call0_lib SHARED test/test_call0.c test/CuTest.c call0-${OS_FAMILY}-${ARCH}.s unwind.c)
set_property(SOURCE test/test_call0.c PROPERTY COMPILE_FLAGS "-O0") # Disable optimizations
add_test(testCall0ReturnByte test_call0 "testCall0ReturnByte")
add_test(testCall0ReturnInt test_call0 "testCall0ReturnInt")
Expand Down
2 changes: 1 addition & 1 deletion vm/debug/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ set(SRC
debug.c
)

add_library(aura-debug STATIC ${SRC})
add_library(aura-debug SHARED ${SRC})

set_target_properties(aura-debug PROPERTIES SUFFIX "${LIB_SUFFIX}")
install(TARGETS aura-debug DESTINATION ${INSTALL_DIR})
3 changes: 1 addition & 2 deletions vm/rt/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ project(rt)
add_subdirectory(aura)
add_subdirectory(android)

add_library(aura-rt STATIC ${AURA_RT_CORE_OBJECTS} ${ANDROID_OBJECTS})
add_library(aura-rt SHARED ${AURA_RT_CORE_OBJECTS} ${ANDROID_OBJECTS})
set_target_properties(aura-rt PROPERTIES SUFFIX "${LIB_SUFFIX}")
merge_static_lib_object_files(aura-rt 'Java_*' 'rvmRT*')
install(TARGETS aura-rt DESTINATION ${INSTALL_DIR})

0 comments on commit 64d946d

Please sign in to comment.