Allow for additional memory pool links to where the next pool will be tried if alloca...
[SquirrelJME.git] / emulators / emulator-base / CMakeLists.txt
blob6d7e38d20f6cf190a1fa7f3505f1b4ae055d37d2
1 # ---------------------------------------------------------------------------
2 # SquirrelJME
3 #     Copyright (C) Stephanie Gawroriski <xer@multiphasicapps.net>
4 # ---------------------------------------------------------------------------
5 # SquirrelJME is under the Mozilla Public License Version 2.0.
6 # See license.mkd for licensing and copyright information.
7 # ---------------------------------------------------------------------------
8 # DESCRIPTION: CMake Helper for project
10 cmake_minimum_required(VERSION 3.5)
12 # Declare project
13 project(libEmulatorBase)
15 # Use standard JNI search
16 find_package(JNI QUIET)
18 # If JNI was not found, use a local copy as a fallback
19 if(NOT JNI_FOUND)
20         # Where are the headers?
21         set(JNI_INCLUDE_DIRS
22                 "src/main/headers/jni")
24         # Set as found
25         set(JNI_FOUND ON)
26 endif()
28 # Declare library
29 add_library(libEmulatorBase SHARED
30         src/main/c/mle_debug.c
31     src/main/c/mle_form.c
32     src/main/c/mle_jar.c
33     src/main/c/mle_math.c
34     src/main/c/mle_midi.c
35     src/main/c/mle_nativearchive.c
36     src/main/c/mle_object.c
37     src/main/c/mle_pencil.c
38     src/main/c/mle_reflection.c
39     src/main/c/mle_runtime.c
40     src/main/c/mle_task.c
41     src/main/c/mle_terminal.c
42     src/main/c/mle_thread.c
43     src/main/c/mle_type.c
44     src/main/c/nativebinding.c
45     src/main/c/utils.c)
47 # Includes for the build
48 target_include_directories(libEmulatorBase PUBLIC
49         "src/main/headers"
50         ${JNI_INCLUDE_DIRS})
52 # It is easier to find this when it is in the build root
53 set_target_properties(libEmulatorBase PROPERTIES
54         RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
55         LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
56         ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
58 foreach(outputConfig ${CMAKE_CONFIGURATION_TYPES})
59         string(TOUPPER "${outputConfig}" outputConfig)
61         set_target_properties(libEmulatorBase PROPERTIES
62                 RUNTIME_OUTPUT_DIRECTORY_${outputConfig} "${CMAKE_BINARY_DIR}"
63                 LIBRARY_OUTPUT_DIRECTORY_${outputConfig} "${CMAKE_BINARY_DIR}"
64                 ARCHIVE_OUTPUT_DIRECTORY_${outputConfig} "${CMAKE_BINARY_DIR}")
65 endforeach()
67 # Use a more basic name for the library
68 set_target_properties(libEmulatorBase PROPERTIES
69         RUNTIME_OUTPUT_NAME
70         "emulator-base"
71         LIBRARY_OUTPUT_NAME
72         "emulator-base"
73         ARCHIVE_OUTPUT_NAME
74         "emulator-base")
76 # Always make this position independent
77 set_property(TARGET libEmulatorBase
78         PROPERTY POSITION_INDEPENDENT_CODE ON)