# Properties
OUTDIR=$SCRIPT_DIR/Artifacts
-# clean
-rm -fr $OUTDIR
-dotnet clean $SCRIPT_DIR/pkg/Tizen.NET.Private.sln
-# build
-dotnet build $SCRIPT_DIR/pkg/Tizen.NET.Private.sln --configuration=Release --output=$OUTDIR/bin
-# pack
-nuget pack pkg/Tizen.NET.Private.nuspec -Symbols -NoPackageAnalysis -BasePath $OUTDIR -OutputDirectory $OUTDIR
-nuget pack pkg/Tizen.NET.nuspec -Symbols -NoPackageAnalysis -BasePath $OUTDIR -OutputDirectory $OUTDIR
+usage() {
+ echo "Usage: $0 [options] [args]"
+ echo " Options:"
+ echo " -h, --help Show this usages message"
+ echo " -b, --build [module] Build a module"
+ echo " -f, --full Build all modules in src/ directory. The module should be added in pkg/Tizen.NET.Private.sln"
+ echo " -d, --dummy Build dummy modules"
+ echo " -c, --clean Clean all artifacts"
+}
+
+cmd_clean() {
+ rm -fr $OUTDIR
+ LIST=$(find $SCRIPT_DIR -type d -a -name bin -o -name obj)
+ for d in $LIST; do
+ rm -fr $d
+ done
+}
+
+cmd_build() {
+ if [ -z "$1" ]; then
+ echo "No module specified."
+ exit 1
+ fi
+ dotnet build $SCRIPT_DIR/src/$1 --configuration=Release --output=$OUTDIR/bin
+}
+
+cmd_full_build() {
+ dotnet build $SCRIPT_DIR/pkg/Tizen.NET.Private.sln --configuration=Release --output=$OUTDIR/bin
+ nuget pack $SCRIPT_DIR/pkg/Tizen.NET.Private.nuspec -Symbols -NoPackageAnalysis -BasePath $OUTDIR -OutputDirectory $OUTDIR
+ nuget pack $SCRIPT_DIR/pkg/Tizen.NET.nuspec -Symbols -NoPackageAnalysis -BasePath $OUTDIR -OutputDirectory $OUTDIR
+}
+
+cmd_dummy_build() {
+ dotnet build $SCRIPT_DIR/pkg/Tizen.NET.Dummy.csproj --configuration=Release
+}
+
+OPTS=`getopt -o hcbfd --long help,clean,build,full,dummy -n 'build' -- "$@"`
+if [ $? != 0 ] ; then echo "Failed parsing options." >&2 ; usage; exit 1 ; fi
+eval set -- "$OPTS"
+
+FLAG_HELP=false
+FLAG_FULL=false
+FLAG_BUILD=false
+FLAG_CLEAN=false
+FLAG_DUMMY=false
+
+while true; do
+ case "$1" in
+ -h|--help) FLAG_HELP=true; shift ;;
+ -b|--build) FLAG_BUILD=true; shift ;;
+ -f|--full) FLAG_FULL=true; shift ;;
+ -d|--dummy) FLAG_DUMMY=true; shift ;;
+ -c|--clean) FLAG_CLEAN=true; shift ;;
+ --) shift; break ;;
+ *) break ;;
+ esac
+done
+
+if $FLAG_HELP; then usage; exit 1; fi
+if $FLAG_CLEAN; then cmd_clean; exit 1; fi
+if $FLAG_FULL; then cmd_full_build; exit 1; fi
+if $FLAG_BUILD; then cmd_build $@; exit 1; fi
+if $FLAG_DUMMY; then cmd_dummy_build; exit 1; fi
+
+usage;
\ No newline at end of file
--- /dev/null
+<Project DefaultTargets="Build">
+
+ <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
+
+ <PropertyGroup>
+ <TargetFramework>netstandard1.6</TargetFramework>
+ <GenerateDependencyFile>false</GenerateDependencyFile>
+ <DummyAssemblyVersion>99.0.0</DummyAssemblyVersion>
+ </PropertyGroup>
+
+ <!-- Properties for directories -->
+ <PropertyGroup>
+ <ToolsDir>$(MSBuildThisFileDirectory)..\tools\</ToolsDir>
+ <GenAPISourceDir>$(MSBuildThisFileDirectory)\..\Artifacts\bin\</GenAPISourceDir>
+ <GenAPILibDir>$(MSBuildThisFileDirectory)obj\_ref_lib\</GenAPILibDir>
+ <GenAPITargetDir>$(MSBuildThisFileDirectory)obj\_ref_api\</GenAPITargetDir>
+ <DummyOutputPath>$(MSBuildThisFileDirectory)\..\Artifacts\bin_dummy</DummyOutputPath>
+ </PropertyGroup>
+
+ <!-- Properties for GenAPI tool -->
+ <PropertyGroup>
+ <GenAPIPath>$(ToolsDir)GenAPI.exe</GenAPIPath>
+ <GenAPICommand>dotnet $(GenAPIPath)</GenAPICommand>
+ </PropertyGroup>
+
+ <!-- Source assemblies -->
+ <ItemGroup>
+ <TizenAssemblies Include="$(GenAPISourceDir)*.dll" />
+ </ItemGroup>
+
+ <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
+
+ <Target Name="Compile" />
+ <Target Name="CopyFilesToOutputDirectory" />
+
+ <!-- Target for preparing reference lib directory -->
+ <Target Name="Prepare">
+ <ItemGroup>
+ <ReferencePath Include="@(TizenAssemblies)" />
+ </ItemGroup>
+ <MakeDir Directories="$(GenAPILibDir);$(GenAPITargetDir)" />
+ <Copy SourceFiles="@(ReferencePath)" DestinationFolder="$(GenAPILibDir)" />
+ </Target>
+
+ <!-- Target for generating *.AssemblyInfo.cs files -->
+ <Target Name="GenerateAsmInfo"
+ Inputs="@(TizenAssemblies)" Outputs="$(GenAPITargetDir)%(Filename).AssemblyInfo.cs">
+
+ <PropertyGroup>
+ <GeneratedAssemblyInfoSource>$(GenAPITargetDir)%(TizenAssemblies.Filename).AssemblyInfo.cs</GeneratedAssemblyInfoSource>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <AssemblyInfoLines Include="[assembly:System.Reflection.AssemblyVersion("$(DummyAssemblyVersion)")]" />
+ </ItemGroup>
+
+ <WriteLinesToFile
+ File="$(GeneratedAssemblyInfoSource)"
+ Lines="@(AssemblyInfoLines)"
+ Overwrite="true" />
+
+ <ItemGroup>
+ <FileWrites Include="$(GeneratedAssemblyInfoSource)" />
+ </ItemGroup>
+
+ </Target>
+
+ <!-- Target for generating reference source files using GenAPI -->
+ <Target Name="GenerateAPI"
+ Inputs="@(TizenAssemblies)" Outputs="$(GenAPITargetDir)%(Filename).cs">
+ <PropertyGroup>
+ <GeneratedReferenceAssemblySource>$(GenAPITargetDir)%(TizenAssemblies.Filename).cs</GeneratedReferenceAssemblySource>
+ </PropertyGroup>
+
+ <Message Text="[GenAPI] %(TizenAssemblies.Filename) -> $(GeneratedReferenceAssemblySource)" Importance="High" />
+
+ <Exec Command='$(GenAPICommand) -assembly:"%(TizenAssemblies.Identity)" -libPath:"$(GenAPILibDir)" -out:"$(GeneratedReferenceAssemblySource)" -throw:"Not Supported Feature" -global' />
+ </Target>
+
+
+ <Target Name="GenerateDummy"
+ DependsOnTargets="GenerateAsmInfo;GenerateAPI"
+ Inputs="@(TizenAssemblies)" Outputs="$(OutputPath)%(TizenAssemblies.Filename).dll">
+ <PropertyGroup>
+ <ThisAssemblyFilename>%(TizenAssemblies.Filename)</ThisAssemblyFilename>
+ <GeneratedAssemblyInfoSource>$(GenAPITargetDir)%(TizenAssemblies.Filename).AssemblyInfo.cs</GeneratedAssemblyInfoSource>
+ <GeneratedReferenceAssemblySource>$(GenAPITargetDir)%(TizenAssemblies.Filename).cs</GeneratedReferenceAssemblySource>
+ <GeneratedReferenceAssembly>$(OutputPath)%(TizenAssemblies.Filename).dll</GeneratedReferenceAssembly>
+ </PropertyGroup>
+
+ <Message Text="[Compile] %(TizenAssemblies.Filename) -> $(GeneratedReferenceAssembly)" Importance="High" />
+
+ <ItemGroup>
+ <FilteredReferencePath Include="@(ReferencePath)" Condition="%(Filename) != $(ThisAssemblyFilename)" />
+ </ItemGroup>
+
+ <Csc
+ Sources="$(GeneratedReferenceAssemblySource);$(GeneratedAssemblyInfoSource)"
+ OutputAssembly="$(GeneratedReferenceAssembly)"
+ AdditionalLibPaths="$(AdditionalLibPaths)"
+ AllowUnsafeBlocks="true"
+ DefineConstants="$(DefineConstants)"
+ DisabledWarnings="$(NoWarn)"
+ TargetType="$(OutputType)"
+ NoStandardLib="$(NoCompilerStandardLib)"
+ References="@(FilteredReferencePath)"
+ ToolExe="$(CscToolExe)"
+ ToolPath="$(CscToolPath)" />
+
+ </Target>
+
+ <Target Name="AfterBuild" DependsOnTargets="Prepare;GenerateDummy">
+ <RemoveDir Directories="$(DummyOutputPath)" />
+ <MakeDir Directories="$(DummyOutputPath)" />
+
+ <ItemGroup>
+ <TizenRefAssemblies Include="$(OutDir)/*.dll" />
+ </ItemGroup>
+
+ <Copy SourceFiles="@(TizenRefAssemblies)" DestinationFolder="$(DummyOutputPath)" />
+ </Target>
+
+</Project>
+