Skip to content

Commit

Permalink
First packaging steps + Java startup code changes
Browse files Browse the repository at this point in the history
  • Loading branch information
grendello committed Dec 3, 2024
1 parent 707cd26 commit c085352
Show file tree
Hide file tree
Showing 16 changed files with 191 additions and 51 deletions.
6 changes: 4 additions & 2 deletions build-tools/create-packs/Microsoft.Android.Runtime.proj
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,10 @@ projects that use the Microsoft.Android framework in .NET 6+.
<_AndroidRuntimePackAssemblies Include="$(_MonoAndroidNETDefaultOutDir)Mono.Android.Runtime.dll" />
<!-- Always include stable Mono.Android.Export.dll -->
<_AndroidRuntimePackAssemblies Include="$(_MonoAndroidNETOutputRoot)$(AndroidLatestStableApiLevel)\Mono.Android.Export.dll" />
<_AndroidRuntimePackAssets Include="$(MicrosoftAndroidSdkOutDir)lib\$(AndroidRID)\libmono-android.debug.so" />
<_AndroidRuntimePackAssets Include="$(MicrosoftAndroidSdkOutDir)lib\$(AndroidRID)\libmono-android.release.so" />
<_AndroidRuntimePackAssets Condition=" Exists('$(MicrosoftAndroidSdkOutDir)lib\$(AndroidRID)\libmono-android.debug.so') " Include="$(MicrosoftAndroidSdkOutDir)lib\$(AndroidRID)\libmono-android.debug.so" />
<_AndroidRuntimePackAssets Condition=" Exists('$(MicrosoftAndroidSdkOutDir)lib\$(AndroidRID)\libmono-android.release.so') " Include="$(MicrosoftAndroidSdkOutDir)lib\$(AndroidRID)\libmono-android.release.so" />
<_AndroidRuntimePackAssets Condition=" Exists('$(MicrosoftAndroidSdkOutDir)lib\$(AndroidRID)\libnet-android.debug.so') " Include="$(MicrosoftAndroidSdkOutDir)lib\$(AndroidRID)\libnet-android.debug.so" />
<_AndroidRuntimePackAssets Condition=" Exists('$(MicrosoftAndroidSdkOutDir)lib\$(AndroidRID)\libnet-android.release.so') " Include="$(MicrosoftAndroidSdkOutDir)lib\$(AndroidRID)\libnet-android.release.so" />
<_AndroidRuntimePackAssets Include="$(MicrosoftAndroidSdkOutDir)lib\$(AndroidRID)\libxamarin-debug-app-helper.so" />
<_AndroidRuntimePackAssets Include="$(MicrosoftAndroidSdkOutDir)lib\$(AndroidRID)\libxamarin-native-tracing.so" />
<_AndroidRuntimePackAssets Include="$(MicrosoftAndroidSdkOutDir)lib\$(AndroidRID)\libunwind_xamarin.a" />
Expand Down
4 changes: 4 additions & 0 deletions build-tools/installers/create-installers.targets
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,10 @@
<_MSBuildFiles Include="$(MicrosoftAndroidSdkOutDir)java_runtime_fastdev_net6.jar" ExcludeFromLegacy="true" />
<_MSBuildFiles Include="$(MicrosoftAndroidSdkOutDir)java_runtime_net6.dex" ExcludeFromLegacy="true" />
<_MSBuildFiles Include="$(MicrosoftAndroidSdkOutDir)java_runtime_fastdev_net6.dex" ExcludeFromLegacy="true" />
<_MSBuildFiles Include="$(MicrosoftAndroidSdkOutDir)java_runtime_clr.jar" ExcludeFromLegacy="true" />
<_MSBuildFiles Include="$(MicrosoftAndroidSdkOutDir)java_runtime_fastdev_clr.jar" ExcludeFromLegacy="true" />
<_MSBuildFiles Include="$(MicrosoftAndroidSdkOutDir)java_runtime_clr.dex" ExcludeFromLegacy="true" />
<_MSBuildFiles Include="$(MicrosoftAndroidSdkOutDir)java_runtime_fastdev_clr.dex" ExcludeFromLegacy="true" />
<_MSBuildFiles Include="$(MicrosoftAndroidSdkOutDir)manifestmerger.jar" />
<_MSBuildFiles Include="$(MicrosoftAndroidSdkOutDir)proguard-android.txt" />
<_MSBuildFiles Include="$(MicrosoftAndroidSdkOutDir)protobuf-net.dll" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,10 @@ _ResolveAssemblies MSBuild target.
<!-- Filename without extension -->
<_ExcludedNativeLibraries Condition=" '$(_AndroidIncludeSystemGlobalizationNative)' != 'true' " Include="libSystem.Globalization.Native" />
<_ExcludedNativeLibraries Condition=" '$(_AndroidEnableNativeStackTracing)' != 'true' " Include="libxamarin-native-tracing" />
<_ExcludedNativeLibraries Condition=" '$(_AndroidUseCLR)' != 'True' " Include="libnet-android.debug" />
<_ExcludedNativeLibraries Condition=" '$(_AndroidUseCLR)' != 'True' " Include="libnet-android.release" />
<_ExcludedNativeLibraries Condition=" '$(_AndroidUseCLR)' == 'True' " Include="libmono-android.debug" />
<_ExcludedNativeLibraries Condition=" '$(_AndroidUseCLR)' == 'True' " Include="libmono-android.release" />
</ItemGroup>
<ProcessNativeLibraries
InputLibraries="@(_ResolvedNativeLibraries)"
Expand Down
15 changes: 9 additions & 6 deletions src/Xamarin.Android.Build.Tasks/Tasks/ProcessNativeLibraries.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,11 +59,16 @@ public override bool RunTask ()
}
continue;
}
// Both libmono-android.debug.so and libmono-android.release.so are in InputLibraries.
// Both lib{mono,net}-android.debug.so and lib{mono,net}-android.release.so are in InputLibraries.
// Use IncludeDebugSymbols to determine which one to include.
// We may eventually have files such as `libmono-android-checked+asan.release.so` as well.
// We may eventually have files such as `lib{mono,net}-android-checked+asan.release.so` as well.
var fileName = Path.GetFileNameWithoutExtension (library.ItemSpec);
if (fileName.StartsWith ("libmono-android", StringComparison.Ordinal)) {
if (ExcludedLibraries != null && ExcludedLibraries.Contains (fileName, StringComparer.OrdinalIgnoreCase)) {
Log.LogDebugMessage ($"Excluding '{library.ItemSpec}'");
continue;
}

if (fileName.StartsWith ("libmono-android", StringComparison.Ordinal) || fileName.StartsWith ("libnet-android", StringComparison.Ordinal)) {
if (fileName.EndsWith (".debug", StringComparison.Ordinal)) {
if (!IncludeDebugSymbols)
continue;
Expand All @@ -73,6 +78,7 @@ public override bool RunTask ()
continue;
library.SetMetadata ("ArchiveFileName", "libmonodroid.so");
}
Log.LogDebugMessage ($"Including runtime: {library}");
} else if (DebugNativeLibraries.Contains (fileName)) {
if (!IncludeDebugSymbols) {
Log.LogDebugMessage ($"Excluding '{library.ItemSpec}' for release builds.");
Expand All @@ -82,9 +88,6 @@ public override bool RunTask ()
if (!wantedComponents.Contains (fileName)) {
continue;
}
} else if (ExcludedLibraries != null && ExcludedLibraries.Contains (fileName, StringComparer.OrdinalIgnoreCase)) {
Log.LogDebugMessage ($"Excluding '{library.ItemSpec}'");
continue;
}

output.Add (library);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<!--
<!--
***********************************************************************************************
Xamarin.Android.Common.targets
Expand Down Expand Up @@ -1338,10 +1338,15 @@ because xbuild doesn't support framework reference assemblies.
</Target>

<Target Name="_CollectRuntimeJarFilenames">
<PropertyGroup>
<PropertyGroup Condition=" '$(_AndroidUseCLR)' != 'True' ">
<_RuntimeJar>$(MSBuildThisFileDirectory)\java_runtime_net6.jar</_RuntimeJar>
<_RuntimeDex>$(MSBuildThisFileDirectory)\java_runtime_net6.dex</_RuntimeDex>
</PropertyGroup>

<PropertyGroup Condition=" '$(_AndroidUseCLR)' == 'True' ">
<_RuntimeJar>$(MSBuildThisFileDirectory)\java_runtime_clr.jar</_RuntimeJar>
<_RuntimeDex>$(MSBuildThisFileDirectory)\java_runtime_clr.dex</_RuntimeDex>
</PropertyGroup>
</Target>

<Target Name="_GetMonoPlatformJarPath">
Expand Down
23 changes: 19 additions & 4 deletions src/java-runtime/java-runtime.targets
Original file line number Diff line number Diff line change
Expand Up @@ -7,29 +7,44 @@
<OutputDex>$(OutputPath)java_runtime.dex</OutputDex>
<IntermediateRuntimeOutputPath>$(IntermediateOutputPath)release</IntermediateRuntimeOutputPath>
<IntermediateRuntimeClassesTxt>$(IntermediateOutputPath)release.txt</IntermediateRuntimeClassesTxt>
<RemoveItems>..\..\src-ThirdParty\bazel\java\mono\android\debug\MultiDexLoader.java;java\mono\android\debug\BuildConfig.java;java\mono\android\debug-net6\BuildConfig.java;java\mono\android\release-net6\BuildConfig.java</RemoveItems>
<RemoveItems>..\..\src-ThirdParty\bazel\java\mono\android\debug\MultiDexLoader.java;java\mono\android\debug\BuildConfig.java;java\mono\android\debug-net6\BuildConfig.java;java\mono\android\release-net6\BuildConfig.java;java\mono\android\clr\MonoPackageManager.java</RemoveItems>
</_RuntimeOutput>
<_RuntimeOutput Include="$(OutputPath)java_runtime_fastdev.jar">
<OutputJar>$(OutputPath)java_runtime_fastdev.jar</OutputJar>
<OutputDex>$(OutputPath)java_runtime_fastdev.dex</OutputDex>
<IntermediateRuntimeOutputPath>$(IntermediateOutputPath)fastdev</IntermediateRuntimeOutputPath>
<IntermediateRuntimeClassesTxt>$(IntermediateOutputPath)fastdev.txt</IntermediateRuntimeClassesTxt>
<RemoveItems>..\..\src-ThirdParty\bazel\java\mono\android\release\MultiDexLoader.java;java\mono\android\release\BuildConfig.java;java\mono\android\release-net6\BuildConfig.java;java\mono\android\debug-net6\BuildConfig.java</RemoveItems>
<RemoveItems>..\..\src-ThirdParty\bazel\java\mono\android\release\MultiDexLoader.java;java\mono\android\release\BuildConfig.java;java\mono\android\release-net6\BuildConfig.java;java\mono\android\debug-net6\BuildConfig.java;java\mono\android\clr\MonoPackageManager.java</RemoveItems>
</_RuntimeOutput>

<_RuntimeOutput Include="$(OutputPath)java_runtime_net6.jar">
<OutputJar>$(OutputPath)java_runtime_net6.jar</OutputJar>
<OutputDex>$(OutputPath)java_runtime_net6.dex</OutputDex>
<IntermediateRuntimeOutputPath>$(IntermediateOutputPath)release-net6</IntermediateRuntimeOutputPath>
<IntermediateRuntimeClassesTxt>$(IntermediateOutputPath)release-net6.txt</IntermediateRuntimeClassesTxt>
<RemoveItems>..\..\src-ThirdParty\bazel\java\mono\android\debug\MultiDexLoader.java;java\mono\android\debug-net6\BuildConfig.java;java\mono\android\debug\BuildConfig.java;java\mono\android\release\BuildConfig.java</RemoveItems>
<RemoveItems>..\..\src-ThirdParty\bazel\java\mono\android\debug\MultiDexLoader.java;java\mono\android\debug-net6\BuildConfig.java;java\mono\android\debug\BuildConfig.java;java\mono\android\release\BuildConfig.java;java\mono\android\clr\MonoPackageManager.java</RemoveItems>
</_RuntimeOutput>
<_RuntimeOutput Include="$(OutputPath)java_runtime_fastdev_net6.jar">
<OutputJar>$(OutputPath)java_runtime_fastdev_net6.jar</OutputJar>
<OutputDex>$(OutputPath)java_runtime_fastdev_net6.dex</OutputDex>
<IntermediateRuntimeOutputPath>$(IntermediateOutputPath)fastdev-net6</IntermediateRuntimeOutputPath>
<IntermediateRuntimeClassesTxt>$(IntermediateOutputPath)fastdev-net6.txt</IntermediateRuntimeClassesTxt>
<RemoveItems>..\..\src-ThirdParty\bazel\java\mono\android\release\MultiDexLoader.java;java\mono\android\release-net6\BuildConfig.java;java\mono\android\release\BuildConfig.java;java\mono\android\debug\BuildConfig.java</RemoveItems>
<RemoveItems>..\..\src-ThirdParty\bazel\java\mono\android\release\MultiDexLoader.java;java\mono\android\release-net6\BuildConfig.java;java\mono\android\release\BuildConfig.java;java\mono\android\debug\BuildConfig.java;java\mono\android\clr\MonoPackageManager.java</RemoveItems>
</_RuntimeOutput>

<_RuntimeOutput Include="$(OutputPath)java_runtime_clr.jar">
<OutputJar>$(OutputPath)java_runtime_clr.jar</OutputJar>
<OutputDex>$(OutputPath)java_runtime_clr.dex</OutputDex>
<IntermediateRuntimeOutputPath>$(IntermediateOutputPath)release-clr</IntermediateRuntimeOutputPath>
<IntermediateRuntimeClassesTxt>$(IntermediateOutputPath)release-clr.txt</IntermediateRuntimeClassesTxt>
<RemoveItems>..\..\src-ThirdParty\bazel\java\mono\android\debug\MultiDexLoader.java;java\mono\android\debug-net6\BuildConfig.java;java\mono\android\debug\BuildConfig.java;java\mono\android\release\BuildConfig.java;java\mono\android\MonoPackageManager.java</RemoveItems>
</_RuntimeOutput>
<_RuntimeOutput Include="$(OutputPath)java_runtime_fastdev_clr.jar">
<OutputJar>$(OutputPath)java_runtime_fastdev_clr.jar</OutputJar>
<OutputDex>$(OutputPath)java_runtime_fastdev_clr.dex</OutputDex>
<IntermediateRuntimeOutputPath>$(IntermediateOutputPath)fastdev-clr</IntermediateRuntimeOutputPath>
<IntermediateRuntimeClassesTxt>$(IntermediateOutputPath)fastdev-clr.txt</IntermediateRuntimeClassesTxt>
<RemoveItems>..\..\src-ThirdParty\bazel\java\mono\android\release\MultiDexLoader.java;java\mono\android\release-net6\BuildConfig.java;java\mono\android\release\BuildConfig.java;java\mono\android\debug\BuildConfig.java;java\mono\android\MonoPackageManager.java</RemoveItems>
</_RuntimeOutput>
</ItemGroup>

Expand Down
2 changes: 1 addition & 1 deletion src/java-runtime/java/mono/android/MonoPackageManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public static void LoadApplication (Context context, ApplicationInfo runtimePack
}

//
// Should the order change here, src/monodroid/jni/SharedConstants.hh must be updated accordingly
// Should the order change here, src/native/runtime-base/shared-constants.hh must be updated accordingly
//
String[] appDirs = new String[] {filesDir, cacheDir, dataDir};
boolean haveSplitApks = runtimePackage.splitSourceDirs != null && runtimePackage.splitSourceDirs.length > 0;
Expand Down
123 changes: 123 additions & 0 deletions src/java-runtime/java/mono/android/clr/MonoPackageManager.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
package mono;

import java.io.*;
import java.lang.String;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.util.Calendar;
import java.util.Locale;
import java.util.HashSet;
import java.util.zip.*;
import java.util.Arrays;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.res.AssetManager;
import android.os.Build;
import android.util.Log;
import mono.android.Runtime;
import mono.android.DebugRuntime;
import mono.android.BuildConfig;

public class MonoPackageManager {

static Object lock = new Object ();
static boolean initialized;

static android.content.Context Context;

public static void LoadApplication (Context context, ApplicationInfo runtimePackage, String[] apks)
{
synchronized (lock) {
if (context instanceof android.app.Application) {
Context = context;
}
if (!initialized) {
android.content.IntentFilter timezoneChangedFilter = new android.content.IntentFilter (
android.content.Intent.ACTION_TIMEZONE_CHANGED
);
context.registerReceiver (new mono.android.app.NotifyTimeZoneChanges (), timezoneChangedFilter);

Locale locale = Locale.getDefault ();
String language = locale.getLanguage () + "-" + locale.getCountry ();
String filesDir = context.getFilesDir ().getAbsolutePath ();
String cacheDir = context.getCacheDir ().getAbsolutePath ();
String dataDir = getNativeLibraryPath (context);
ClassLoader loader = context.getClassLoader ();
String runtimeDir = getNativeLibraryPath (runtimePackage);
int localDateTimeOffset;

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
localDateTimeOffset = OffsetDateTime.now().getOffset().getTotalSeconds();
} else {
localDateTimeOffset = (Calendar.getInstance ().get (Calendar.ZONE_OFFSET) + Calendar.getInstance ().get (Calendar.DST_OFFSET)) / 1000;
}

//
// Should the order change here, src/native-clr/include/constants.hh must be updated accordingly
//
String[] appDirs = new String[] {filesDir, cacheDir, dataDir};
boolean haveSplitApks = runtimePackage.splitSourceDirs != null && runtimePackage.splitSourceDirs.length > 0;

System.loadLibrary("monodroid");

Runtime.initInternal (
language,
apks,
runtimeDir,
appDirs,
localDateTimeOffset,
loader,
MonoPackageManager_Resources.Assemblies,
isEmulator (),
haveSplitApks
);

mono.android.app.ApplicationRegistration.registerApplications ();

initialized = true;
}
}
}

// We need to detect the emulator in order to determine the maximum gref count.
// The official Android emulator requires a much lower maximum than actual
// devices. Hopefully other emulators don't need the treatment. If they do, we
// can add their detection here. We should perform the absolute minimum of
// checking in order to save time.
static boolean isEmulator()
{
String val = Build.HARDWARE;

// This detects the official Android emulator
if (val.contains ("ranchu") || val.contains ("goldfish"))
return true;

return false;
}

public static void setContext (Context context)
{
// Ignore; vestigial
}

static String getNativeLibraryPath (Context context)
{
return getNativeLibraryPath (context.getApplicationInfo ());
}

static String getNativeLibraryPath (ApplicationInfo ainfo)
{
return ainfo.nativeLibraryDir;
}

public static String[] getAssemblies ()
{
return MonoPackageManager_Resources.Assemblies;
}

public static String[] getDependencies ()
{
return MonoPackageManager_Resources.Dependencies;
}
}
8 changes: 4 additions & 4 deletions src/native-clr/host/host-jni.cc
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@ JNICALL Java_mono_android_Runtime_register (JNIEnv *env, [[maybe_unused]] jclass
}

JNIEXPORT void JNICALL
Java_mono_android_Runtime_init (JNIEnv *env, jclass klass, jstring lang, jobjectArray runtimeApksJava,
jstring runtimeNativeLibDir, jobjectArray appDirs, jint localDateTimeOffset, jobject loader,
jobjectArray assembliesJava, jboolean isEmulator,
jboolean haveSplitApks)
Java_mono_android_Runtime_initInternal (JNIEnv *env, jclass klass, jstring lang, jobjectArray runtimeApksJava,
jstring runtimeNativeLibDir, jobjectArray appDirs, jint localDateTimeOffset, jobject loader,
jobjectArray assembliesJava, jboolean isEmulator,
jboolean haveSplitApks)
{
}

Expand Down
4 changes: 2 additions & 2 deletions src/native-clr/include/host/host-jni.hh
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ extern "C" {

/*
* Class: mono_android_Runtime
* Method: init
* Method: initInternal
* Signature: (Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;ILjava/lang/ClassLoader;[Ljava/lang/String;IZZ)V
*/
JNIEXPORT void JNICALL Java_mono_android_Runtime_init (JNIEnv *, jclass, jstring, jobjectArray, jstring, jobjectArray, jint, jobject, jobjectArray, jboolean, jboolean);
JNIEXPORT void JNICALL Java_mono_android_Runtime_initInternal (JNIEnv *, jclass, jstring, jobjectArray, jstring, jobjectArray, jint, jobject, jobjectArray, jboolean, jboolean);

/*
* Class: mono_android_Runtime
Expand Down
2 changes: 1 addition & 1 deletion src/native-clr/java-interop/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
set(LIB_NAME xa-java-interop-clr)
set(LIB_NAME xa-java-interop)
set(LIB_ALIAS xa::java-interop-clr)

set(JAVA_INTEROP_SOURCES
Expand Down
2 changes: 1 addition & 1 deletion src/native-clr/libnet-android.map.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ LIBNET_ANDROID {
global:
JNI_OnLoad;
Java_mono_android_Runtime_dumpTimingData;
Java_mono_android_Runtime_init;
Java_mono_android_Runtime_initInternal;
Java_mono_android_Runtime_notifyTimeZoneChanged;
Java_mono_android_Runtime_propagateUncaughtException;
Java_mono_android_Runtime_register;
Expand Down
10 changes: 1 addition & 9 deletions src/native-clr/runtime-base/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
set(LIB_NAME runtime-base-clr)
set(LIB_NAME runtime-base)
set(LIB_ALIAS xa::runtime-base-clr)

set(XA_RUNTIME_BASE_SOURCES
Expand Down Expand Up @@ -43,13 +43,5 @@ target_link_libraries(
xa::xamarin-app-clr
)

if(DEBUG_BUILD)
set_target_properties(
${LIB_NAME}
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
)
endif()

xa_add_compile_definitions(${LIB_NAME})
xa_add_include_directories(${LIB_NAME})
14 changes: 7 additions & 7 deletions src/native-clr/runtime-base/android-system.cc
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ auto
AndroidSystem::lookup_system_property (std::string_view const& name, size_t &value_len) noexcept -> const char*
{
value_len = 0;
#if defined (DEBUG)
BundledProperty *p = lookup_system_property (name);
if (p != nullptr) {
value_len = p->value_len;
return p->name;
}
#endif // DEBUG || !ANDROID
// #if defined (DEBUG)
// BundledProperty *p = lookup_system_property (name);
// if (p != nullptr) {
// value_len = p->value_len;
// return p->name;
// }
// #endif // DEBUG || !ANDROID

if (application_config.system_property_count == 0) {
return nullptr;
Expand Down
11 changes: 1 addition & 10 deletions src/native-clr/shared/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
set(LIB_NAME xa-shared-bits-clr)
set(LIB_NAME xa-shared-bits)
set(LIB_ALIAS xa::shared-clr)

set(XA_SHARED_SOURCES
Expand All @@ -11,7 +11,6 @@ add_library(
${LIB_NAME}
STATIC
${XA_SHARED_SOURCES}
${XA_SHARED_CXX_ABI_SOURCES}
)
add_library(${LIB_ALIAS} ALIAS ${LIB_NAME})

Expand Down Expand Up @@ -44,14 +43,6 @@ macro(lib_target_options TARGET_NAME)
${XA_COMMON_CXX_ARGS}
)

if(DEBUG_BUILD)
set_target_properties(
${TARGET_NAME}
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
)
endif()

xa_add_compile_definitions(${TARGET_NAME})
xa_add_include_directories(${TARGET_NAME})
endmacro()
Expand Down
Loading

0 comments on commit c085352

Please sign in to comment.