1 # ---------------------------------------------------------------------------
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)
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
20 # Where are the headers?
22 "src/main/headers/jni")
29 add_library(libEmulatorBase SHARED
30 src/main/c/mle_debug.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
41 src/main/c/mle_terminal.c
42 src/main/c/mle_thread.c
44 src/main/c/nativebinding.c
47 # Includes for the build
48 target_include_directories(libEmulatorBase PUBLIC
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}")
67 # Use a more basic name for the library
68 set_target_properties(libEmulatorBase PROPERTIES
76 # Always make this position independent
77 set_property(TARGET libEmulatorBase
78 PROPERTY POSITION_INDEPENDENT_CODE ON)