-
Notifications
You must be signed in to change notification settings - Fork 397
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Initial commit of CMake build system #992
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
############################################################################### | ||
# | ||
# (c) Copyright IBM Corp. 2017 | ||
# | ||
# This program and the accompanying materials are made available | ||
# under the terms of the Eclipse Public License v1.0 and | ||
# Apache License v2.0 which accompanies this distribution. | ||
# | ||
# The Eclipse Public License is available at | ||
# http://www.eclipse.org/legal/epl-v10.html | ||
# | ||
# The Apache License v2.0 is available at | ||
# http://www.opensource.org/licenses/apache2.0.php | ||
# | ||
# Contributors: | ||
# Multiple authors (IBM Corp.) - initial implementation and documentation | ||
############################################################################### | ||
|
||
platform: x64 | ||
configuration: Debug | ||
shallow_clone: true | ||
clone_depth: 1 | ||
|
||
environment: | ||
GTEST_FILTER: '*dump_test_create_dump_*:*NumaSetAffinity:*NumaSetAffinitySuspended' | ||
GTEST_COLOR: '1' | ||
|
||
before_build: | ||
- ps: cmake -Wdev -G "Visual Studio 14 2015 Win64" . | ||
|
||
build: | ||
project: omr.sln | ||
parallel: true | ||
|
||
test_script: | ||
- ps: ctest -V -C Debug |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
############################################################################### | ||
# | ||
# (c) Copyright IBM Corp. 2017 | ||
# | ||
# This program and the accompanying materials are made available | ||
# under the terms of the Eclipse Public License v1.0 and | ||
# Apache License v2.0 which accompanies this distribution. | ||
# | ||
# The Eclipse Public License is available at | ||
# http://www.eclipse.org/legal/epl-v10.html | ||
# | ||
# The Apache License v2.0 is available at | ||
# http://www.opensource.org/licenses/apache2.0.php | ||
# | ||
# Contributors: | ||
# Multiple authors (IBM Corp.) - initial implementation and documentation | ||
############################################################################### | ||
|
||
cmake_minimum_required(VERSION 3.2 FATAL_ERROR) | ||
|
||
#TODO figure out method of sharing version info with makefile build | ||
set(OMR_VERSION_MAJOR 0) | ||
set(OMR_VERSION_MINOR 0) | ||
set(OMR_VERSION_PATCH 1) | ||
set(OMR_VERSION ${OMR_VERSION_MAJOR}.${OMR_VERSION_MINOR}.${OMR_VERSION_PATCH}) | ||
|
||
project(omr VERSION ${OMR_VERSION} LANGUAGES CXX C) | ||
|
||
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules" ${CMAKE_MODULE_PATH}) | ||
|
||
### | ||
### Getting the glue directory | ||
### | ||
|
||
set(OMR_GLUE "./example/glue" CACHE PATH "The glue directory") | ||
|
||
# TODO: OMR_EXAMPLE flag | ||
# TODO: OMR_RTTI flag | ||
|
||
# TODO: Version things | ||
|
||
set(OMR_VERSION_STRING "<Unknown>" CACHE STRING "") # TODO: Set the version | ||
set(OMR_JIT_VERSION_STRING "<Unknown>" CACHE STRING "") # TODO: Set the version | ||
|
||
### | ||
### Versions and stuff | ||
### | ||
|
||
include(cmake/platform.cmake) | ||
include(cmake/config.cmake) | ||
|
||
enable_testing() | ||
|
||
#include current source dir and current bin dir automatically | ||
set(CMAKE_INCLUDE_CURRENT_DIR ON) | ||
|
||
function(VPathResolve inlist dirlist outlist) | ||
set(output "") | ||
foreach(currentFile ${${inlist}}) | ||
set(fileFound False) | ||
foreach(currentDir ${${dirlist}}) | ||
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${currentDir}/${currentFile}") | ||
list(APPEND output "${currentDir}/${currentFile}") | ||
set(fileFound True) | ||
break() | ||
endif() | ||
endforeach() | ||
if(NOT fileFound) | ||
message(FATAL_ERROR "Could not find file ${currentFile}") | ||
endif() | ||
endforeach() | ||
set(${outlist} ${output} PARENT_SCOPE) | ||
endfunction() | ||
|
||
include_directories( | ||
${PROJECT_BINARY_DIR} | ||
./include/ | ||
./include_core/ | ||
./third_party/ | ||
) | ||
|
||
add_definitions( | ||
-DUT_DIRECT_TRACE_REGISTRATION # TODO: Deal with that stupid jni issue in tracegen | ||
) | ||
|
||
configure_file(./omrcfg.CMakeTemplate.h omrcfg.h) | ||
configure_file(./omrversionstrings.CMakeTemplate.h omrversionstrings.h) | ||
|
||
add_subdirectory(tools) | ||
# Yeah, its dumb doing this here. Read note in tools/CMakeLists.txt | ||
if(CMAKE_CROSSCOMPILING) | ||
include(${OMR_TOOLS_IMPORTFILE}) | ||
endif() | ||
add_subdirectory(thread) | ||
add_subdirectory(port) | ||
add_subdirectory(util) | ||
add_subdirectory(omrtrace) | ||
add_subdirectory(omr) | ||
add_subdirectory(third_party) | ||
add_subdirectory(omrsigcompat) | ||
|
||
#TODO should be wrapped in if() | ||
add_subdirectory(fvtest) | ||
|
||
if(OMR_GC) | ||
add_subdirectory(gc) | ||
add_subdirectory("${OMR_GLUE}") | ||
endif(OMR_GC) | ||
|
||
if(OMR_COMPILER) | ||
# TODO: Actually support the compiler | ||
add_subdirectory(compiler) | ||
endif(OMR_COMPILER) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
set(OMR_EXAMPLE ON CACHE BOOL "") | ||
set(OMR_JIT ON CACHE BOOL "") | ||
set(OMR_GC ON CACHE BOOL "") | ||
set(OMR_PORT ON CACHE BOOL "") | ||
set(OMR_THREAD ON CACHE BOOL "") | ||
set(OMR_OMRSIG ON CACHE BOOL "") | ||
set(OMR_FVTEST ON CACHE BOOL "") | ||
set(OMR_GLUE ${CMAKE_SOURCE_DIR}/example/glue) | ||
set(OMR_GC_SEGREGATED_HEAP ON CACHE BOOL "") | ||
set(OMR_GC_MODRON_SCAVENGER ON CACHE BOOL "") | ||
set(OMR_GC_MODRON_CONCURRENT_MARK ON CACHE BOOL "") | ||
set(OMR_THR_CUSTOM_SPIN_OPTIONS ON CACHE BOOL "") | ||
set(OMR_NOTIFY_POLICY_CONTROL ON CACHE BOOL "") | ||
set(OMR_THR_SPIN_WAKE_CONTROL ON CACHE BOOL "") | ||
set(OMR_THR_SPIN_CODE_REFACTOR ON CACHE BOOL "") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
############################################################################### | ||
# | ||
# (c) Copyright IBM Corp. 2017 | ||
# | ||
# This program and the accompanying materials are made available | ||
# under the terms of the Eclipse Public License v1.0 and | ||
# Apache License v2.0 which accompanies this distribution. | ||
# | ||
# The Eclipse Public License is available at | ||
# http://www.eclipse.org/legal/epl-v10.html | ||
# | ||
# The Apache License v2.0 is available at | ||
# http://www.opensource.org/licenses/apache2.0.php | ||
# | ||
# Contributors: | ||
# Multiple authors (IBM Corp.) - initial implementation and documentation | ||
############################################################################### | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. is this a generated file? is that why there is no copyright header? |
||
### | ||
### Major Feature Flags | ||
### | ||
|
||
set(OMR_GC ON CACHE BOOL "Enable the GC") | ||
set(OMR_COMPILER OFF CACHE BOOL "Enable the compiler") | ||
set(OMR_JITBUILDER OFF CACHE BOOL "Enable building JitBuilder") | ||
set(OMR_TEST_COMPILER OFF CACHE BOOL "Enable building the test compiler") | ||
set(OMR_PORT ON CACHE BOOL "Enable portability library") | ||
set(OMR_THREAD ON CACHE BOOL "Enable thread library") | ||
set(OMR_OMRSIG ON CACHE BOOL "Enable the OMR signal compatibility library") | ||
# set(OMR_TOOLS On CACHE BOOL "Enable the build tools") | ||
# TODO: Support building only tools for cross-compilation build | ||
|
||
|
||
|
||
### | ||
### Boolean Feature Flags | ||
### | ||
|
||
# TODO: This is a pretty crazy list, can we move it to their subprojects? | ||
|
||
set(OMR_GC_ALLOCATION_TAX ON CACHE BOOL "TODO: Document") | ||
set(OMR_GC_ARRAYLETS ON CACHE BOOL "TODO: Document") | ||
set(OMR_GC_BATCH_CLEAR_TLH ON CACHE BOOL "TODO: Document") | ||
set(OMR_GC_COMBINATION_SPEC ON CACHE BOOL "TODO: Document") | ||
set(OMR_GC_DEBUG_ASSERTS ON CACHE BOOL "TODO: Document") | ||
set(OMR_GC_HEAP_CARD_TABLE ON CACHE BOOL "TODO: Document") | ||
set(OMR_GC_LARGE_OBJECT_AREA ON CACHE BOOL "TODO: Document") | ||
set(OMR_GC_MINIMUM_OBJECT_SIZE ON CACHE BOOL "TODO: Document") | ||
set(OMR_GC_MODRON_STANDARD ON CACHE BOOL "TODO: Document") | ||
set(OMR_GC_NON_ZERO_TLH ON CACHE BOOL "TODO: Document") | ||
set(OMR_GC_THREAD_LOCAL_HEAP ON CACHE BOOL "TODO: Document") | ||
set(OMR_GC_COMPRESSED_POINTERS OFF CACHE BOOL "TODO: Document") | ||
set(OMR_GC_TLH_PREFETCH_FTA OFF CACHE BOOL "TODO: Document") | ||
set(OMR_GC_OBJECT_MAP OFF CACHE BOOL "TODO: Document") | ||
set(OMR_GC_DYNAMIC_CLASS_UNLOADING OFF CACHE BOOL "TODO: Document") | ||
set(OMR_GC_MODRON_COMPACTION OFF CACHE BOOL "TODO: Document") | ||
set(OMR_GC_MODRON_CONCURRENT_MARK OFF CACHE BOOL "TODO: Document") | ||
set(OMR_GC_MODRON_SCAVENGER OFF CACHE BOOL "TODO: Document") | ||
set(OMR_GC_CONCURRENT_SCAVENGER OFF CACHE BOOL "TODO: Document") | ||
set(OMR_GC_CONCURRENT_SWEEP OFF CACHE BOOL "TODO: Document") | ||
set(OMR_GC_HYBRID_ARRAYLETS OFF CACHE BOOL "TODO: Document") | ||
set(OMR_GC_OBJECT_ALLOCATION_NOTIFY OFF CACHE BOOL "TODO: Document") | ||
set(OMR_GC_REALTIME OFF CACHE BOOL "TODO: Document") | ||
set(OMR_GC_SEGREGATED_HEAP OFF CACHE BOOL "TODO: Document") | ||
set(OMR_GC_STACCATO OFF CACHE BOOL "TODO: Document") | ||
set(OMR_GC_VLHGC OFF CACHE BOOL "TODO: Document") | ||
|
||
set(OMR_INTERP_HAS_SEMAPHORES ON CACHE BOOL "TODO: Document") | ||
set(OMR_INTERP_COMPRESSED_OBJECT_HEADER OFF CACHE BOOL "TODO: Document") | ||
set(OMR_INTERP_SMALL_MONITOR_SLOT OFF CACHE BOOL "TODO: Document") | ||
|
||
set(OMR_RAS_TDF_TRACE ON CACHE BOOL "TODO: Document") | ||
|
||
set(OMR_THR_ADAPTIVE_SPIN ON CACHE BOOL "TODO: Document") | ||
set(OMR_THR_JLM_HOLD_TIMES ON CACHE BOOL "TODO: Document") | ||
set(OMR_THR_LOCK_NURSERY ON CACHE BOOL "TODO: Document") | ||
set(OMR_THR_FORK_SUPPORT OFF CACHE BOOL "TODO: Document") | ||
set(OMR_THR_THREE_TIER_LOCKING OFF CACHE BOOL "TODO: Document") | ||
set(OMR_THR_CUSTOM_SPIN_OPTIONS OFF CACHE BOOL "TODO: Document") | ||
set(OMR_THR_SPIN_WAKE_CONTROL OFF CACHE BOOL "TODO: Document") | ||
set(OMR_THR_YIELD_ALG OFF CACHE BOOL "TODO: Document") | ||
#TODO set to disabled. Stuff fails to compile when its on | ||
set(OMR_THR_TRACING OFF CACHE BOOL "TODO: Document") | ||
|
||
#TODO this should maybe be a OMRTHREAD_LIB string variable? | ||
set(OMRTHREAD_WIN32_DEFAULT OFF) | ||
set(OMRTHREAD_UNIX_DEFAULT OFF) | ||
set(OMRTHREAD_AIX_DEFAULT OFF) | ||
set(OMRTHREAD_ZOS_DEFAULT OFF) | ||
|
||
if(OMR_HOST_OS STREQUAL "win") | ||
set(OMRTHREAD_WIN32_DEFAULT ON) | ||
elseif(OMR_HOST_OS STREQUAL "aix") | ||
set(OMRTHREAD_AIX_DEFAULT ON) | ||
elseif(OMR_HOST_OS STREQUAL "zos") | ||
set(OMRTHREAD_ZOS_DEFAULT ON) | ||
else() | ||
set(OMRTHREAD_UNIX_DEFAULT ON) | ||
endif() | ||
|
||
set(OMRTHREAD_LIB_AIX ${OMRTHREAD_AIX_DEFAULT} CACHE BOOL "TODO: Document") | ||
set(OMRTHREAD_LIB_ZOS ${OMRTHREAD_ZOS_DEFAULT} CACHE BOOL "TODO: Document") | ||
set(OMRTHREAD_LIB_WIN32 ${OMRTHREAD_WIN32_DEFAULT} CACHE BOOL "TODO: Document") | ||
set(OMRTHREAD_LIB_UNIX ${OMRTHREAD_UNIX_DEFAULT} CACHE BOOL "TODO: Document") | ||
|
||
set(OMR_PORT_CAN_RESERVE_SPECIFIC_ADDRESS ON CACHE BOOL "TODO: Document") | ||
set(OMR_PORT_NUMA_SUPPORT OFF CACHE BOOL "TODO: Document") | ||
set(OMR_PORT_ALLOCATE_TOP_DOWN OFF CACHE BOOL "TODO: Document") | ||
set(OMR_PORT_ZOS_CEEHDLRSUPPORT OFF CACHE BOOL "TODO: Document") | ||
set(OMR_PORT_ASYNC_HANDLER OFF CACHE BOOL "TODO: Document") | ||
|
||
|
||
set(OMR_NOTIFY_POLICY_CONTROL OFF CACHE BOOL "TODO: Document") | ||
|
||
set(OMR_ENV_LITTLE_ENDIAN OFF CACHE BOOL "TODO: Document") | ||
set(OMR_ENV_GCC OFF CACHE BOOL "TODO: Document") | ||
|
||
|
||
set(OMR_OPT_CUDA OFF CACHE BOOL "TODO: Document") |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
general comment: modified files should have their "rightmost" copyright date updated to the current year